From 9600ecd4936b047a7c3f6fc66f3783a4193c6d60 Mon Sep 17 00:00:00 2001 From: Mark Music Date: Sun, 27 Aug 2023 13:54:19 -0600 Subject: [PATCH 1/2] =?UTF-8?q?ft=20=3D>=20=F0=9F=A7=AA=20Make=20major=20u?= =?UTF-8?q?pdates=20to=20widget,=20implement=20deletion=20function,=20chan?= =?UTF-8?q?ge=20to=20org=20account,=20shorten=20SMS=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/images/widget_showcase.png | Bin 0 -> 729406 bytes ios/Runner/AppDelegate.swift | 8 +- ios/Runner/Runner.entitlements | 2 +- lib/models/user/user.model.dart | 18 +++ lib/neuances.dart | 5 +- .../local_widgets/legal_checkmark.widget.dart | 60 ++++++++ .../legal_checkpoint.widget.dart | 71 +++++++++ .../auth/phone_verification.screen.dart | 15 +- lib/screens/home/home.screen.dart | 5 +- .../incident_limit_home_banner.widget.dart | 20 ++- .../widget_showcase_popup.widget.dart | 139 ++++++++++++++++++ .../incident_log_body.widget.dart | 8 +- .../player_progress_indicator.widget.dart | 2 +- .../danger_zone_block.widget.dart | 98 +++++++++++- .../local_widgets/support_block.widget.dart | 8 + .../user_preferences_block.widget.dart | 9 ++ lib/services/auth/auth.service.dart | 4 + .../permissions/permissions.service.dart | 2 +- lib/services/server/erase.service.dart | 40 +++++ lib/state/auth/auth.store.dart | 6 + lib/state/auth/auth.store.g.dart | 28 ++++ lib/state/incident/incident.store.dart | 3 + lib/state/incident/incident.store.g.dart | 18 +++ lib/state/preferences/preferences.store.dart | 12 ++ .../preferences/preferences.store.g.dart | 56 +++++++ lib/utils/capture/capture.util.dart | 2 + lib/utils/capture/messages.capture.dart | 28 +++- lib/utils/constants/constants.util.dart | 14 ++ lib/utils/language/language.util.dart | 32 +++- lib/utils/tutorial/tutorial.util.dart | 10 ++ .../mutable_auth_wrapper.widget.dart | 10 ++ .../gradient_border_painter.widget.dart | 4 +- .../mutable_input_panel.widget.dart | 23 +-- .../mutable_input_popup_action.widget.dart | 6 +- .../local_widgets/non_pannel_body.widget.dart | 64 +++++++- .../mutable_popup/mutable_popup.widget.dart | 3 + shaders.json | 2 +- 37 files changed, 772 insertions(+), 63 deletions(-) create mode 100644 assets/images/widget_showcase.png create mode 100644 lib/screens/auth/local_widgets/legal_checkmark.widget.dart create mode 100644 lib/screens/auth/local_widgets/legal_checkpoint.widget.dart create mode 100644 lib/screens/incident/local_widgets/widget_showcase_popup.widget.dart create mode 100644 lib/services/server/erase.service.dart diff --git a/assets/images/widget_showcase.png b/assets/images/widget_showcase.png new file mode 100644 index 0000000000000000000000000000000000000000..59507da59e01c2b2770e10653bd7446529af88e4 GIT binary patch literal 729406 zcmd>kXIoQIv$hS8u7c7*KkE9B z`1;Gaw#e)22dVojGp`#rl-&PaH{FhGT(3Xg^fFLax&awu-oAdh}LylUOz$!gVO&F{VcVgM(X+o~ho2V~h z0G>HDI1$t!xr+xBnEOl3FF+cH12)b zMKAsy+CKRSYzgL!({_RYSwRJd+o-3qaUkVPvWa&v03$iO<&es`K$tGWKI!^9`q7?^ zmxGGP6RnBChgO>jENrZo!3Tt10tta8NclY1Y5U)5rTG^05`Wc`bMY= zdXMd7zYj9BExh0ZfmM|V={FwFct%?W>-|fcO}DK}TY$ji(Fgl7B%_jVPVf+2%h(*% zWVP}d&e#z#SpJd(J5j=+63Ez1ra3oxN6DY>Hux+TgmeF0&OPn>~RcmD0?CJFOF&P`KK6zqGRar?=y zv$0%iE3Yq2zftKa!CTZmf8bJ0=q2=U?sVWeOTD;()zSEcfBk!w0u)}Wy&ESd)zb2 z7h_%RI%P@2HbY)=<$e`BKPI0bQ{K*NL%tuVN*8Bz^QWXJvTu*rU-%_qbV$EX7luCQ z8~L5Lbb6)QeyPhfLWD|ij1bpatdJ=V^mDC<3{<$x`R%^Cm&)K4<_->bU^9;W8{0<` zw0H1gHdu{;`9hk3F5L?GB3Wc)ZC@_wkRDw)mVGEP`J$7M^_hH0Hq2!jia{|DfvS`v zPBl+82Ebig-{bw|{{_dteFZb%slnscrcr1!lQTTTvdQK~ecc`|_EcpgW?JD~xiNy~ zzd)6FGgJs-gH4jqy(M}-f##>=_JJ7KMnXyp)$jFDOWop%QGpKg?VE^}`0`J_ezwM^ z$r*aqSelEngHsyunNT!O|Hy-N|B~b}d{J&odl%WNmr)LMre5Uk8(yTN`cq&**$~*$ za62C@&1X|IBm(gfmbYRm>-2P>nDf7ZZ$FLQDDRX$P;7V|7^)KPXnQ9%{6@D$1U_mv zw)UrBqo0JhJUqzC$px7r?RUPB2RnE3-GAtR>{_U7tq{ldj&2a{n8c|_>^!8}(zQ3%;M}3}CbqYUZ z=tl4BcUHZm8X42E-CGcs=NC49?|6nz{xy72VkaE`$N2$!LBni3mdj@-HvFzcsRn^d z@&SvJFHE-}0pgl)9GreYFsj{O7}=BjUvt9%On6;T^lkDe&h4B`Il}Yv;GV-|!p47d z5kU6q*F7$lZEm?l+s_J|J?mfz(uC;g_mlDx+d3&qU~DU?F;+i%89V$$*7)OCr!rSG zvWVKy-tFU{vL+=zvz>wi*__m+{O8d0K41o~ia!a02{GDDV((rQk-iq-rsZdMGJY2C zGb}pt#4$HJRvY_UDk!HgDuTB5u$AE%6vc8NFD5w<$W|DkXq$4Mpv4xyX?On*DTAyM+XOQmO0&Dp{jJZw@68k_%3kPV0!466wvol9^cO8KfOp z^{QCP-YKPU_Pf-1uD~~e#0fJ^c?7W)q(|LScqVa*&97xSkp3m2uIu0mdi9BMFk(kK zBA0>c`+f`DOLLh5Nxk}Y5cqLtjy09WPDPapuK)zho_ejHjw5;r$n(t=!m(uV-3Ssw zZfPR+F(F2_k5Dny2%mIhtJC3?E^7D>x^y5{vfk#<4|z7lqU4vgxpNM@Mt<@vInuPJ zEeDtk`o)s{l4PhHdw65o$8C*?d$e}nEPL0M?P07(LB`CVD|!zvh<3eiZsym{u54jh zrqV-P6(m2No_`-IX)W?=H_^|d(~!vdbob*Wlvjaz;&064nlgxfM+Qa^L1!P0y^5$8 zkG1RVR&Qfk6itq%Dy{dtmw?V7Bz}V*GGH{g%5f9T`LQQH z%;6{hpc@{({Z~$lqB=`wmYo`U)RtFIGx_mB4(}se$OGZ~n^QcYV=zNBZNl(hnD$V8 zR4RT@_h{BSmG3aBEc6Wk`=GH+baI!mIR-h<3P)Lu-oF9KS1CdgN_r=a0)x;{wLsrxNneG&13g7hU7cHwO<=_ zu`Z4ZAd2dy(J9ef)*_V_0m~5C3y3tFe>|UWjBrxn2C*b>ID5Ynmq()Dai#kylqJ=9 z7wQYtjDb!;CpU}#vUf>KJi^_|)RqfJ51s{If|{}e4+xRX{}ztMfer{}m)B9i@`q4x zKgD5LgcDX2x`tP7LtPudy{Gw(w40Pxgp+ zv;3>9kTu`=pys%dbI$6MZW7lolhsIPUx`g=F<5bkF_%!x)}@sqX{u zRe?MoB$5#E>jnvgX-v$K9_agz?Z;%%{ayblrsGy0r3Csy}wn{g2uOOP$&L<3WV`cs7q`V}sHN^|w6D$l&aQ z?vo9+NrZ#FgPK^Zb36BEUnKHBMwXy!pi{X*o|SG>W-&sgb-qapN|4RW`#{!XLzatK z5C6*Pl)RAI7Gn77*8kKy5M6J`gp1RYd5Z>5z5mydUJ58f+27!1x!C_kzhoyTu;LUWjq zgHC0JcYSnfJU5RmL7bF7LED2aY8G)h+^%Wr?!tvcDfMUDgRifl@GN(s;2Qb*5q4N= zyrAPYnt2Q^a;ZSyDWV+UFqd;mm6;vyC;hA)=OB$B@9=7FvK-4zfBqjnXhSW_rIk$S zOs7_`u-7K}FdRv-I^hy9c3X;HhD=|4K&ED|$aM(<=^B1Nq21MHDj)PN(>jfWi#_1) zLQK#R+k#MLn4`U4bj~SRYF2r$DQx?&Yc%gbzD#te9}V1sM;bQR`J#WnQ8(IS-XBLs z(89dVa#vGno3`7(42BQ5&N|M}F<}{4Hz=%2HH#Crr8;&(2wtLHm4?u%p{nWvV8&OH z1+P?jA6t=N1zr@k_T_?`6TEVIfN9gO_P%;Y!2NXWk(PIbqeC;hIt$ZO`r2TuV;Zhip3{E7$xn&Xfj=VHCFIKs@EcJ7d2zVM&+4y?h!v|33Eg9Y<vC7JKk!$I_NLrHH{=h6pvypCZhIM<%~@ zLpT?mC+esvuQeoS`N)c%=r)w@Mc^a~=jovyTH65T(L@O~bLs!(CD#rwKrrnj4Zd8` zaCi01h~BXV%SkvW|NNeI>5<9xDP<}Q>Od?R9N$*^d7F!5?~(Wom zCK~MnXsq9Kn+_h5X}<5kgS>hs@wCPU=C_GXLUYZ-J(Bv)8)oLgfZS?;`GU-?j(Db^ zS+JDa2jFgYv7ASn8z&7q*6-}1P5vgNno<+(d(^QBVxR^to0Q0hEHx1#(;dflKZXxEErA;KbT^4!W%^2Y!p}T1l zI{o!9%Ai?CKo|~b=S$Nva6!Ws`0erLRO8Gb+K%!5V5?-OKAqOA15_pOThE23vGpcpWvC9#hClMi~dEkW_wPYK2wK3&#If+R~t`o)(71K+d}i% zJ3s$md}?AAM8?p+d{dIfKRv`bR@dXuU1!{Gdd-G%|aP zv5wu%w@m`|Nb=-?(qCSF#6B+5E#mRuSDr(H8vF^U%%cz4S`z-JC+SQVK1%oIwM9)W zS{EJX$7n!DSo8hu`mREuzY3W7V(q1>JMJt}+xnfbN$rt`aC*4MUi8goa#wI*@!=&? zQd1l#aoEqT@b`i$8440FvRBi>>|s3m<6WJU6yw+!29tlfdQm2H3~C5PZx;oDxEDP3 zu+js zK$*Rut(c)M!j|2kc&vY!yLR*f6Afb|T1Q6sr16Rs;s>RMW*0Jabl*B8&^rEyDF351 z%fP=Y!9jqpdmV?KanZUUkTEi_Y4r%FLL5va$(+HqSMo72))?TuDqKDq(AuJi+t7k# zEjQ=Ig}a&A8mM2)Qd}w~YzWT`$*y;{GfJ>(yEt_k+7btLJHQkkln*mmRH92ff%HTS&mAR)7FRy%Nsu(P$v(GI> zU4L;Vr&Cqc@dwqz#&xzhd@D81FCF}Y?qaJ zfa*0^_PSYc1JS!NJo}g|X6M#M$$P+F74{E8z}6Rq!2gNxo^kvU5hG zozbb9axaV(ck|1tM`cWBDA1ebRdHrCryEFWD-Y88j3UliS0ciuvlh2{M9 zU`?TG0cV`3{#_x^tgfyQy72e^r7yx_3IV#*UaeNwyk{JwFdQ#$K=912_WyY`U4Vy6 zOp#|ET2i8t9K&RZWwNJdBg%MdK~l5)w)6@oq$@kimCr0_bPs%hzd094I*_)Bx4T?I zD7W|=`I6`!sGLDedgLn)JVKjJcwdwa$ybIbsW9{mh@~l;+q~WrSq-Ft{iIE)#%Fpa zCGO+?Ox}3P#LJcZtZ{T?>2dWi&9{Z(Os*|JG}8okyLGqeYH&?866SMwnjLWP0h5(T@Jak_Kb1Cl~mg4`*b&C5pbDtvfB&K`s+*ctF`LSDw(Gj;SbO)#F~+bm%4vTz05bqXJ&#c7Hwq&-R%H)b&Ci z+zO&@oMPt62@mFLKaIN|mTuq;VdLy*vkF$*lfsT!F|j#8=NvoiW^>E}(x+vB=vH52 z`;!lmEi*f&2`gaco%_x7Y4gWOh_R#}DE4j~Cb#l9>w&CwW^bz}W?`mizn0QJCt&+Y z!twrH>Is6BS073((o{2`Br5V%uxXF&tKhVo;xsOZy}qD7cgb0LKC+0AKe@{?-8)Vy zAR4}JYKMK&`4t1zxd-b`_Y^gx2oEgiAjesmGcb)`?#__wRMiAB<;dmH<^bc-Gl=Ht zG>=;h)bOOE@a}BQhpa(F2*ZSOL@kbTW zhrdD6*pD?igC}N*ovU(vZ{M@2o%m5RmoKAV&?gArldy=WzVcdE5>mKxxAd)r?S)-$ z-?q@6p}Ausqk&#R|g!hFIIJfUPJoR;r!l z_k>pbs*`qD5TATku3Dg&I3Lrp94|=1!}R;|nDW7gnO<*2B>)Ot%2DE9UMwo`iTO}C zM2`*cv@s5ZIe$77W*Q{ZWg+3D@*Cmlj2JCsb6o;p{S{mFAn;d2lN@UBkHJlo!~;GK zma@bm>+9?r)m_b9Nf$rYG4!k@`YjrAS~c~7gGbaDm!d@mw28m;DwOQM2`sn^yFx(o z;JcsVYY>3j2qVNpkixm66%cfU+-a;xuqtM4AznDVboeWxdpMwPK1JzI?XP?7kKGY( zQz3F@H50-O0Dn;A*-WCk8=Ik zo&ld$IzpvXH#$QNMIgUmq8FVchUqzNFBPEU25%-gT1=n z1bmw8!(_a3-WZV92VC`kpRO}4JXLDByK!Fb3qu_{aiUhS`OE&)3vr%$O{jKt#+5D+ zdE2rcy_fAZkkm4AXzkj7Xf)DM64`Zpc5?Fe3UV^Eeka3W<*0G*A&C}(r$40DA<#BR zNOxY+2}aj5cS_d7HZ@%qDO|lC_^dzZ&))wj%>;2Ip^{R!Stk_A?5G_Pp!q4Z^!@u> zOTUF!Sc#xgSq|4On(VR27qmF<*kcXo`oEjyQ=hX-keWH&{@a9of6oIHd_ zwO89SSOh#^nDTin%m33nGii@1;MewCbx(c3lZ+i^2<+~WkDVD$Q&ND z9#=*UYsE=VbZBa>&WJ0{T$7q64d?b?V{Sp7SC^o$LwJ<{|C5rU8B)DA+=!ivAINA|1mVj_^C)-7#&My?XHx3o%|Ck1tSu0 zVU5$VvaCqux@GYBeC>YiGAHw8a97v=$Sj#-1k7Seu!9KX?oI^S9GA;UrcY$Tu@HKn>uyBE^VWAsE z!Rv5=nfAUPZ1*ad6C&(g&8hsMz5jwNM4X03rWxLJH?;YqUx~H6Q*QmmdgpTBhnn?i zfo-?`8YTsoA2EFE3AP<$-8IBFWh?Ef&=fyHkUKscFU=(`$C@4Y2OEdOM51ix-kaEF zoed6OL0Lv zlHNP{F?$Vp0rls7kiq4~0GhO zWIurmQ$ox@dQWWrGN9BiSs&_MZX#O*LEhoHR=zN{Kx|dExI+SO6tI|(^+2x6%LLnQ z%*@tzaR!(FV+@6_3uADS#PvwWkcOUG0si)-0WXBjoh}CN_&}Q`xh6B&MSw>3TxxcME0wCr=s@W;?Q-Nm z)QfcwbD6TXx>7&7m^T<~K{ZGY?E469{Ju@bN@hidhDsSHL(g%GQl#0n`K$Ghz}jW{ zPKS=eo28XKJp<V^coJ7$eVKbJ$P z%56pR{pRW!?3lP@U;(N`{nh1hLc*~eJsS?u@UyF>M!(9TVkLq<-&(8qi+x1g+M7?D zTCsLKJtBdUr6)lmv=f6X>`y`ANpviQW;SXYzEwy|kYHtO!KE@ZR`mE?_;A1iOU-`- z`d-3?BQ+k{h7UUYC`J=%@Ph%uk(!10B5~)1GVa$bP_t%VMW2(_30hUzX>j=2N9&VR(rAXax?)< z2!+#i_TnAYfh|?{^Ekd^`q-=LgFm7a4reTJ?KO@aY-^zaqHFQoz4O0Zqg!hctGzwmzTJ~>?+&>IorTvV^Yk}5AwtC$bn6|b*geOv+|X++Z}Q1%n~Do zC%e$48u(OYrMlK%353AW2tQ6K`ge>@8@2X#8$c%#739_Ki`>DWu%_0mHZtFNpJC?P z_l_ZfJvMdw=|_62_O$7Km1on)v1;whz{TMOWxwnL?A&)Dce81^rq!&;faa^N6Hn^S zW9Db8=@GP@g9B${i#-S5C(k&1~ROolTo0{ls|vVtuJKmi6QVg0yAD?_zxaz*%ZVhB|(FAARF(Xshev zO&7kAAGaUNTKy3k_=HK(@bG@vKRju=fcvH|)IgW4H3J#&YV2)>x~MKRpE!#*vR-ap zh^*L2x`*A34|P{0t-UA#DxG^+%DAY&bT!l4DwBx10G~UT*-$|nM|JM4LGzg=soYuS z>O@*XJfZU|e-sn_rwC#Dw{-wpZhifrhQmMkRMP>#O;%LkR7&*y3gHk9v_ary9Oh3> zu-7D{!aH7X@qmnX!ifoX<)A=y$h3!S3*ipP)28s7#KtKMf)5(SsZ5hx92bVsFJ+*; z&i-_$)};eF|M_J9lG6JvomE2C=bbVdm&?(+TV#9SFAF%b370PxIIud@o#{ZU6MXSX zhT%=I@xLc$xI0ZcD0-7V12+6KwoKuRRqWeJx*HcT2BZ zce#>;Zl%lMbeKgaVAE!2r|Z_128JdWd5sf5Q~KW9a6!bJBeoVk2wVtrlVmO36dJYO z6<03Y2=&-|a-X&>RkW-!r}BLHmLcq!oQQ~s#gB?t!PBVW*biH?oYTc=n8-KqAEq=!y2uULbdByBdc_)mO8f4-9a}1 z^%s`h>mF6W+0FY15oWJW;c2;eBKHy3dx_5T43^Qm?qhqZ3|XrZd5kNpNE&7$4V^uR!eD}`I@=3n-O+J~wKs#Ss9gEBo^MW&OiUXwN83=n0*v+W#vN~= z^qYGeRH7!?=t*Jak8xsbB%5Y29cg1N$C8hIsnr+!F5raau20&NInGlaUwkjsRE-58 z#YR_4PLqwQ7h9s<`~HaArGF3f&EAx3bML#Sa|}+HAs`1W?(!?TR6}n~6cz*07==Yr zudGc|DV>OmKACzZ7jM4+53G>r!m+o$cHSLGTzVtVUH6z-LLh0yQA~vEae}==p{&ew%}h;F_&7ZP#jZ z*}kJQUkOtnEaFxgUni>X~5LU&y=CdfU0{64a=zmFXv*MNSkj zDC@kzxYuFhAr{%XSl&62r~D2?GPpaaut^yc-+pjx=`PSKt3(53G+wTJbK-pO~fNua)==28`C&9||@~}s4$IG`R2ix~gVT|3e(216KYzeyMxJ~?$SUc{F zc`;Zb=$ip_-M2|sE0=`udK#Kb-TUA8B5405nBylQ>_U17u`N~NG+~hf!K?EM)7AQC zF*0_sgBUu}&qmqRYSo1VSehK=y^>mok2$regSmL(#0uM4XDWG++ zEx;`_(|^|YqARg29ygFMS>e1W@e3c5-F~yGhUP7(;RvqAdf3%_-vaD8>tQt8EOykX`v!_uIcUuK4_ElBi4_}@W&1NPnX`WyedY9rb^k}E5CNP2h}f~ ziykZ>67)Hoafb%oxf07;`*Rr|2C`4j5PL?YJ>z5eAcMjREMG2 zP}^`fV)TP?fym2T%OaN+PG?{WY?{_9zji_j!k}BBY0JD%lkm;L)?HUpIR#eU2|G@E z2dAqN_`bU9juA)C;Rs!z0P5M?ZV5rQYierq7s4%KMNnxvK=uNv6ep5OAr= zmDv02WJNYVYhYv3jK&~*6B44TGXi4X<&rrjwAGocYYq2QD@4%qfZ)m(?8L10GHW!JVj9IZKUGfqFzPY zFJS6GQ7?{>E%DAaj_c9^O<)t%rg;6>hn|!3`e`%i9nZspsU%O zZq`l|=_Z|&jW(|~F7hi!izh83_6_RxNHzSOXyGg$%5_Hka}{n{&{h z$94BuEB$}8i^VX4gwli{b z_{O+J?WqTIDglxkDM{_}>ch|T*{Qlgk=*+}aE4L4zyt>PD80RW8rPlcg+}wU9-iOr zu;v`fE!`Szb&PO9(lUj6k1i!E>-MxnrC$ks+=fefU}q}Rj--Tmy|1TS zz4-41dEh29*!E@Tt4_gNg0F+MXsEBjVZrBL%p_penXgNu{goBM;LbwxROn4M@RJYL zw@Gt@tA3Ae+mQOT+awSh@?~Apchh~YoEw%A@A$&5jnpA&cpC1#e==NSvj~6b%7SsM zF%j`?F7qC)^Puu^H8bq&M7_8tep@)B6cB0gPWgSy2j>bQP+O8Hkpcv9c3U&kK6_N67j%L8pBRH;GQSAF`NWL3WlyMpH z$<(nUb|(8lqIjri#)p?SxRU$&U*k5G%G>YO+&`Xn^=D3Wh#NfUl%JUV=HLR96x%1t zW0)}BT2I%gFbgUbdnE%nD%wAYz5wvhW9qH#zL3C_HI9&DyuyucS~xqVmS;6o(9R}p zcu=<-H1S58{47iseaWiZ`qyz>=fw6S)J1uD9pq;E3*Cy(CurvvOHY(A>~h>X$zCMy zIm?6AOki-VIv(%8IPEUho4!v!?Oz=6?nQ%L%hDDXy6#+$Z{6}-jCED;Bg0<-bZ*SWsuz#s$_PkD5AubROU_>xx)j%fi^bjj7s7&5 z^xDtGhJrq%o>I;#+EJdIE>^w&7WKAmq{yUl<*XtziSQ|%e;wA%WH;uRd85n%+a0Lt zxMOU0j+(jm$n{r)dST{|fc`t0S?kTDReX_u#5Z_lN@OES+c{W0cvQiLYL{AHDQQ9T&wlN-hElmY}oqn^zE90q@;Ynx4$ z-{x*LZRQ~}Y7=+H{Wam1(+aA&VB;D$>->J{LFv<_gAU9dX+pd@KNj|9Tj<$)*GO}< zi^}0iC{#LJIFN-8O9oh-j&LVOnR1W(iPRmS!S!vZ6A`-xs70F_`d|4;n9#`Pp=*ZI z@zT!^JDaNGr55gCS~-4=*tp6p97s13#43^o-x+b)FyRka848Rpb8zPsQ}=V)vsPS~ z`%U5xR}c(-99M7hnQd|pso|fb#|K(k8woQa0}E#t>={3SAv=yIIkkdfRv58#rf|Du z5(2u0?Z4>{0l#Dm)Dw%8QraVSw{&r-6D)2Q?1W$#ui`N~-$qFXitmJc;DKE^?;fv9 zmqaz6cv!n!jWBuO{ihVv?QqVJ{{2%_YumTE1d_oIwg9$n6V5r)W?iv_@uTic!)@_r zG8#GF_1m-0UK;zHFn(S5Y`PH`lNHfr?f%4P___{6S`_UOoe&tk`5$>#PJG};cTGSWT`a_ee{Z$qXveWr8p1FH+pXUI`q7s z4f;ydriRQc+y4yzW|RE@8NdM&=eu(|tDO)_OP?H7=fvHdp83gPs#8B;Z)8G7T~Mw$ zbcZ2DdjIx<6cDL=6@S!djRssv#W2UZ2Dtjy45=^x^Wtm&IC`wRCeej?`3JjBA|i6q z<<((d(ArL)SLg3ZNlU09S9UL&vGR+_y5lH%V}?WN!kb;EyF>$kzoZ?0%s|MFK(Njk zR&~*1|2&jn(}B1ihzoYWF1Hyy51PJ8brTSRsFC@!RFz<`2vV>D!$!;TM zF5vGuYtdTWmor2Pcn=oneACs(Coof>=Gp#GHJy}_So}hr=)nh-=FSke;ja)qpUn#X z;8cS?-O19B-0(JCNKE^~Y+PXN-p}zmx@m%+ud;QsfqDhD`9Fbrqa*!0PSauI_FT3Z zV+^IEqM!cOp>?G!{9XBK=^u6zKgtuMZ!Synl(`+J0iN;JF)vLO>jJjlJrhMZ=8KY* zm9~1QfSOnndUmY7LZ)*61W7666yGYP&=%i28&8n$pekdWQ8+nC*_fdQ8xim}7d7CM z6gK<{R)GMg#-IJF3;K(HcOHhqB^C=P=%pT!ilO1$KlRMjkuX~k7aNP)OCF4=1Xd33=oDXg{9 z-&n+x(<~o^Wt#Xg1dey+EJ!THR(yI~89WcJ!Iwm5j$u)hJWg?ws*>LQQx7A6~` z-26Me$|mt6CJVEamJ&QdDd=-knvRLE_-l#oCW%MdIJ&4hRD*s1%?XWY1;}{x)TYTY z>bbNy7MuK?#GvZ!AWdO)3cOy@qzB-_t2pZVVQS_=FRZ1tzuakr%8k76UE6e$(^N+J zG6n>C`kva0K9KfAZm5#SRGOVucaw2aC*v%pGWHqEtQX`SBN5Pp82jyqE9xnDI{E&W zt!JBGZv95ZC(Nnwsbp>~w8fc9MELq&S9rx=OU8#E<=XhiSFZ!SsdJ8M`MNTx%xOR_ zxi&oZ^IZ^|c~*jFp<9YzmFgne6^{GdQP|Cn-7$sZfZfd0ciygSK!GghP{QIP_ zZ!ereY+e!AGL-E9B{Y)jxkCWinaRz)NV7e7PI|ZOgGn(x%CU0cBy2Qy+5KYO z#yXYle9J);k#y^w=0K8>j*{Z6!){%jW!rpY4ItO$!KFB|kVUo>`F@#(MI>w1>@A-8PH4(BV&Ud}tu8&~94A-#$X>-Kz#?7zqx zci1erPb{qeG0V%+Be?cZ?35d0xfX8qs{xf?6uq)d(LYjR-_Ty3V``Zl@Z8He4tl{m zGQ#7|S?iPUAG~@;>o#<7?9h_sZVbP-u`S7$Lcu+=iN_lc*Ebq@oqw;E9gJ}Uoey}D z|CmE2JZrmZY##zNx6J!ACTV#52b}AFe52~8q)i3gq^X#sCjr|AZOUlAo#~#zR+C+P zs)Z*sN6IV)`e}?Sn#nLc5LU~3tS(42HU8j1KVt22JoYxPJS${hFol&)xayFeoSmJM z(ax!X>C(srzEE-SJVoq+qLsA6y>r^_{+cbS@NMjf>bfAk;4f#!LI;oyt}RP9n)tqk z^iRzL@U{^Dt>({a^M4CX%q#OZ5otN$s*wtok9H)tCPp9B1tCRB>-M9tj2P{plB1AwbKm4Krn9Tg@-1cB3UV#@o3J6*aK4AkxC>ki@5truK2f3Rf4=#rn|Hvphgw&sw}Fb11~6z(tJ@}_WEak z9==5RdZNy3rB09nmE~>unqp!kR&T(puH_}og0PLotF-rBbK-=*%#APL+vW=;mt9kj zfxpdvGPKhv2~GQOvY^o_hVt@X=(eebp@Xez8 zl=fXm=qo?47NQyd3z!o8&MO0d7GA=38>cl!tHjI8DDROX)bf69YsX%XT{)9`B>&#< zPwShz(NQXaWB#QKjM6+yXiYV)r$u1JwA(Z46x7Am0nNpy7#`7-bU1_F{Zh z&(=5VVf5l}zk#OLY%}V?SuC0`xTi1uw_M!7fOk?(vQdUJ9JTYgPgc~(fbG5d>keLP ztMCz_a6R_JJJVZFeyUjDEAvAQxMKRh6s>byjFQ@DM2&wj4QM5^;9mLi^^C;VZI?HK$K!Jg0=cbvDA!`Iz0Br`w+935ato9tJNEBw3$k zr~oI24lJPA@4MaOZN`B%otzC5%>0-35_{l+0yE_!Ci1|n4GRX15De2iwg7EL3YK^? zRm+=xo_OD_-}YJ?_zYOhYnET#8|5J`fX+Hx>54O+1q1f*mH`*%NIbmzgzXAqKL>O>sjvr0}<0|u8O}7ypUa95|Df^N2b*Edsfvb&+Bi7 zdi3augfEqBKrwgXcIs7woWiW{?wwoW<_E`Ew_~{IQ(~oUgRP$%O(q-L$xU;Hk?XX+ zj!Yu~XKT=_F9{uJXvdM=5uRJ2k+)c(DSvfPqL+|ZyTs#o1Z4a^Mf?r2rdw3|%sHrj zx1jZJ@!QhxFi}X|`%L?<)qK-GCQV;jyUnf|HfQs&dOLSyZhv|}sR;Bvbr)slB>)8Xxq1)k+muNgz;36T$4Q&yim9da19HD;5L z4Y1WTlZ;7*E5ts_>JGC#A@iqMGgg`GbG8iQ01%~Ul6E}ljym{8871Gm^W4uO+KWYD zPemv8%U7E4>_W4F=xW8WdF?69p%cJ>2%j~Z6 zXd<8efjIvs2@4qvGxuNKdZ|0$Xr%!9CiM~x$&6nX-AUiKa#;x|CA<#4V!u+z`P9SD zYZ{N4L_FZ}?2%v=ExNeVT{u{NON3nHHog7HN7TW*f$CiyPw-TzA>sc4Qb4W08;11s z>}T36jD-xovuE#8WJuP&lm`JvNnJj*9k8X}r8G9&*uMYXU;QutMERcOC$=ckU)(zU z6B354xbaDogbow8$YkQ6NjenWOjFxQ9G|?(PWtyo6m-`ydMo*sd~;j-go(0rg;}v) zq;wNB-XS#Er*b9Ho=6w-@9S!jk+LkQa9TrBIilyG9Te&(CTw%^r?Hq(?=%EdCzEtU zxF(?Vu34E0H>IkO#)A&;jwlJ~W1-7otbh+48B4pqb?-*KC5;GbSeL##DslXLv@N=s z1{oUz_6*AOYh6)CD34yM!HW0N*!b;Tl&MIU{k@Z3N}X5+y!$g9XDL_i^jssd(a&CS zRVrzH@(K&q?ylW{nNq4l9ol_Q#Z-dMt!-pXgfX)lM(01PB=AZ~wRmsh!&pSZxa9gu zrlsy8ogpYj7ZM@YKa?Z{URb(H{K+D+58{HCH4t9hvC|wjtB(L^Ve$7>*|_xd*vUSK zjf<_Wdy~n{w$h~A(pd^wL#rRD#3DgQvGjs_rH;FWWL9B(NNz!;UIE4*A9P@+4%lcwnL;}lk7aA)Xh=|=h-TA zE|D{AkcW^(==WYMXwXoPR(5cfs9!ao!~JIbGzqUhZQQF)e6_T5duA0ZgK!*Z z@o_;?HgTLcvY?Fa=K}PhUG)wZe{n9`>szjH2#KUIOfrc&YAu0W+n&3ZHA`Sl_py!g zWr_X+KX}*9lOQBpg35cjv&TQ=Xi40=OiuCSwbEp;>zmSdeh<*$FWTnMU%M#!>-TT3 zzy7hm@^^j>RXqFSFO|1G_|aBNx6611YDiaU;^@-<#U>H;MyyEzAT5X2Kl^u_7m77AANgzlxSZ6XsAddxK^Ftk9&tGo*R4(VUvvYYL4N zm4g~ZNtp5OG=3?{*Xk;vOe?LiEn}a@iEDz3s83QMl;}Pt={+VA?S&@9>=+x>Yz)Tp z(&Iy8@+8BjX%5oWBm4~AZ_%wT%C4f*&gP2;yR?JFl}RX&932sMO5{M={ca!$r!r_- z?IlGD_CTVnb8C9gR0#0UbBU^7#+=QZuygAa8BF>fZska-V-4xHZ- zr}=RH%+9e9yQ9Goe*=_4k?2Vs9bFaaoG2k9xGXhSV_c{~j2j)>TQb7C107Kj9qbJ_ z*~=z8t&)bt0z&2r>8Glva8tblCc}_uea#ICyIQqx1B}<$z>&p@^vx+t*20#+|U3MRd;=aW2@_Qxrq05qY||5g*6)0ocX!LrBEau zSI7m@-bXo9B%D?-4V)BQq%ii*KsPb(@v`y27q&P5n!f$~?|kX+|K|VWYrpzCU+#_t zv$fTVH3QPk!?xZY-ZRQ~9*d z7!~@gYo^5~!BO+CK0+R@iK6BKPkIK0n>a}-tKs5CAgM)fxy7CGSS29H2vEp&0A z**;GjLv(8!5NXCa&@qF7w$;z5JK2TGP}N|L=Wkpt`ZXBQC%=!gp_}o%F?u^l-i_#6 zGn$c>(o(jEbie&L zIKuNf|TUE>j)jZQUYX@-n3C)4+>lcWVj zvC*aMpHWVG2degTw)*>0>S@wg@VF)({d;o~Xv(jAy~~aEoJ~Y#fR`AO`U|w*K4WPL z25gPC78l$F??l@q<$eiXAzXT&D=pSMrA7MtXxH}T6PvvHw0!V=|G`I}{@LI8)Bnr= z%I!b?H-GZef9B`@LR-?;(!8N_!ie5<%=rvj>S8A*%52?wJDAbdQ^p zeKxqFW2^ut*{5^Yf56bZ7TV!%7LmrT+#(r`##w!KHHz~2f4KG<&K7KfZa90{*S-AS z|Nfu-iRJwlpO%Y@pR7hRZue0ZmCgX|luL?2b&AY@))Kc!anSB%?cWSlr!wEllqkv@ z!E|0g?fuL<)YV$u<5yJvEHW-lwG#X*PMP4udP`L1A0$f=C5 zEg*zGu5O0{JjlIQSEQ7pltcd+KZKOfOE@Avb}7ojFbaH#=uj-jKl=oIf2CpX#}3$9 zCN*a3L^9%tXZx%Bdsc-;lvYq%45eQqF~U*(GPKq-t&&ZP*9}pX9b(F4tcd~JN2YOd z70QN`?`XVt^dxO|ZSdc5^o)?6P?B0klAn^_IN(f1@Zw8P!y_8F-JQY>f|9=P-FpX6 ziuiFGk(L>eTkz?Gm#ppij#2LQ{IhQpN6K3no}1cuB?V~?bCwx>^3hjnc$shn4K-@H zXa06&KR4?17neN__?73zxNBNGw?r8o9%>v}cPcJprio;~!kU0kfPuGrwZJ&;5I`qB zpd(DjQ8fu_$cvOZvLn)hXXDLTgyrjqDr7?uS9Nk}l&x?8rxZ(R*vWCcW5Rdm+QQGV zmW6s^zk|th>wxAdBQn9z{o?&f+!lA#_HtSwNz-MhZ}?EaY9lkAsbil==0{zo@{?V2|#LyM~6Y&Wys&X$Pj0g}sp zk92Xs*98YQzd@j?JuWvwz1fKTx_;+%4zwP+_)cV0iQSLw?R|VsQkimNs2h28^JHB; zrQHDmC)qLN_I`mk>|E42yl#^-q5Cz^mn}8McG|v^aSb#KXck)asDfu#m&>cSckAm_ zXnEPM{Nhjk*!>5VpOW`o{7gN=846U2)5FX#L2p zHh<@26BBA0n%RVy_DimVgYtpNGuEO+7 z^);&sA64XyAE#aK#+P_i5+62{3$<86hU0>zhdXVB(d*+RiMM1GqGJ&=zcQ6V-qogN)at|6W|@VDEO^TdrES@@qO9x7~ULZod`!KWzwS#?{WDT zj^_}1!p&=_5++-6k~qB^&Qd6)!$V|rWCa~Ds-p5WI#*bh33L{Aa3POOn05jA1UAO8j2k7u3$8ri_b8ujGm7;pMl0CCznh<`}vOC z5rsZ^S^o6DNZ)oZ7}h_d`kgU7GXKPgzUHMLB+?Ryp1e5#7&Zo#>|HF@^B!3$qwyG8+H}(6iShu^Mo*y zHTNA_$a`*1hmyPx#Bd|VK8fMm&I8xzS7CLAET>Kx8xi2|v92&bq0%#L>0l(*5k_qH zDj=`%?NwI|y!UT_0xU7bvr^kOZUg<7 zYrm<~k#t(BF#nyC5NXiDK(&&)b#$8a4}&hHDpvoOqz}pdCF?865WiQFE@N0iK5I7| zX@*OTnLV4l5S34fivh;G?1>S^^iV|+84)Q1F`!q0D^Zd0bchiY_#sj)59wcLjOeHg zGFEfleT-Wap%x7yGR9JT9J&k-b#~0ei8__OH*Dt&K-Jq05R;1P)z~8z5fW|;mT1RF^a$Jaa(!)nZb+CLsf(-a{z;ONIL(8qxE<28gJC^|JC3lL0iX3; zp&k)XAGkCjfpyR=;=IY9n(hJtQvp%t@eDv1)StY5?FZiZ(f{JVQat(`LbN~$mR=zf z4W+V>fN1~uGi_po(WP$4_;V2aqpk(_+#j@JhE>{{wjjq%ut%g8zf4RJ~{GbNwh1 zwfC-4c6|$aLft`MMRcd&4MalNvM(i@O~b%=YHceLJ139Xum9s!n zHUt}cqga7nhJok|(ownLccD@q&saB*l;;_ifq&FuHfk9do0@njs!FkmYS2%K9 zeJ4jn34HeaY_R0B7^?VEcI}GZ#d-;mILAAbL~D}{T`FXdb({MEuknHbHzn~_cp_L< z-?e&g=()0)l;2g!=28DDZZF=sbo57e)%Y}$f0w;X=-S1KvKL!iUSgMdg^Z@1#CCn# zf%B-kQ;3br$vhXLUvgY9CxM(w86werbyLW8rjCH$I?NYcRV3%;v1_3-x$S|~+bF^g zl3vc``vSudemR7Vcg0DUd1T*;Si&TIe_QP&Z#%i~(iEF2uJm+m`2`r6X}*+hF3U$& zqm7H&t3Iy{ZqCk$JMhz}Tact`g1iqnB>yfEmG7wteK(zYk>spB!PvR$7cv9ZaeO}h zg1-Iy=kCA!_OJhE9;L3pXI4W`MXGm{shj3f5Gk`U9q!)HyURSi=ApBwd3SGI%T0gl z4&R?zBSrfpwp{bpQ@~FW`v1+Q|6h-Rws9Vr8Plr!`NuFCoQVyd6n4!4F9k&ocy}-} zpesC-LQyE4o6mr&Ms@|HY*ZMJv;x3uMW45w-z(v)@l4Q!fP33M+}4GB{45i7>z^fs z(K9}-%Ha=w;V*q+{r>O!v_4sy0iA0bdH&H(>FBkrypqD5z>9^4)W!EoURq2@y$2p& zG!zA;N+Ug7q09SQsCS+516_<#tu)#@tn-yrvJt5=uX#?o-TW)0-wp+!8z;&p!xkjj zd$utRmoSLE#-3V-c9c{^T`BMD^~O*cv>mrO#gy|o(z9N=^=_T9*(n12DmWi(?4eAF zjEayD?g~xSIWGks{3S+vR%bQ9pBEU;LdX{;DyKo|l!?Hdrm_aQF5b^jJpJaX{2ppo z(B!^<+M|a@#SLl=NK3%f- zZsiu`HJlMas8IA!rt*dPavWn|OuLqM@thvnB3;{Zr}2Eg875MwrV_dj2A;8`fmpAT zTG96=-;%qr_od2!i{1FqwT#9at+c2a(wAdbj7T5lU%IJ$4y?8>KGhJkF(3>hs$O=JE|X=Xba7gefIjYez7y zK77_s-&9I^Y_r@ZIRyF#zC-U{21<7aALzKDt$6CPyHl|wEMG?R(ZoGoaR-|fSu|+x zFb}Y!V=dXE&d?0`OV40@aYUx?X5R%KQYh>hdm8ygdB`_7mM^^A+TF*PU_&xKQ3M2} z)-j{kqLL;woDG_?Ec)KJQ+3?;qBzg2(mB^-LWA( zSvAOZx~@O8TMF9nP-JI72VVN?#jka8=rE$+6)bYV%R!rz$cP33-;m+!yK+aF3K{V; z=~0QFiF`AnO~tMC)W7Tgy(h85-N9_zXNyE%k#}o=TmHLsR<6t~z9aYcSB>Y~jhl`L z0Qk<@G8obP$wu_oe&N6Qi7)@kf9r2N|G^Lc|MW@u%qC(#l4wFC&~d1~RdF!0?;u$q z*gf$~*IodN)s>TpO>i)xH6{R?3{X=Vx;~kxBFo9^F=IG38BxhH4pzU0!V^kFp~=Nd z#<38CLf07$cu4zAsae^BV#+VT#1Df!P@;IYL@lNiiQ{?gP?#^#G;Yi23w9NAwZ8@O zIg|+XcB(~d$uMS|tYXpRP$1Ce#oD=W8J7PtI8jPApD0IQ$oPi&);(l4fF251vhQQp z2glMXiT~$nN1gzW*x9=W!}&A-rTN|PoxwV5Z=LZkZW0_z*+5 zgw#nqm;+Ffk-IjFq{T#+q&R=~E=jbH`hP^WquRzYTu*Ws2?d&GB(*VXxE zHO#6POc6vhO?WKC@N6_e#!9rm$3wqA`v@w?oWZl?ehIR~on{bVED49|<7FIrVLLm! z5Ne}avff&sk!n0Q5nWzqYi#ez0?%tpTv#Q)BnV*iaLF`ez*B1%_6qG{svqPhAMyYw$(C zL@4zNC0XEUOp-_I(e+aHPT^IfpHVfENs0%e~$w4S79nXLw_H zYX{vEFKQVr+Qu4`W!YlB-?suEIbuvbdA$gnP_;d)XGN{P$>4qaUbi4zNsjQ+ET;@L z*=#lXcZB|z^6BS)>U%!_rCZO|U-8S-myn8PU*t$%w9iOwIVc z1*5`7maNuK9rt}Y;4B=7dO--Hnt6JxfOLlSSe6a$YDBk)^eH8xuZ5oN z;K$!%{qyG0VrIlycDKX#c5wVw?v=|+OFy9v#IPe_q;G%HjtGc#BM>D1$>}hh#$5%{ zKlV#kKXU((@B7T=J^ge^m$XPsg2fDHpk6SYR_VF&q?br#9hFkYduOXg zP3q(8$}9$!=_PnUgRT^g3t7|oQ>ZPHGC>@d4c`baYrfkY3`8%WtKx^mLb;`eV-uV( zT8W;epy#~+z-d?GdAh-ead9CX#T`_|qHC;j1dXh|zSu{}YFwiQi>se`9&lZfqJajb zmSDrH(nS{6th-w?VEFGdZd6E6B$|O#vA$qsZc~s~4WqHuNaG*r=AipdCKgF{fCIv~ zx!nsoq$YtR@@YvLPvq7)#MXoI93vxDd0C2f5s}A|o{}`zxTxqr8HVdd*P7#QW2Vto zum-z*m6x64jHB@Uu1lMydN}?RjB$Kri506}9;%nm1HqyLA!VNT} z)&iNUsPsp!Enx^FDVXa|9QzzRIMLd@tAPK<(2@IAAbAoxAu@${ zxq=CYh1wt_8odvgZ{ZjY1KiuRGB=dqMaW}yr|G>rOv}z;A=E!>K*)?DS&|v1&^wLg zNoGrqXTzsC-^#K`mvK=?q2o&lo(*}{@K{IszE!-G#oMD^gKbWkRFPqcXzsoK%Jbj+ z^3T2USAXp{aEbNW?zmPmqOru0&!Wb?OBuG|9n!uz#T)v2EW?zHTJHj5C)q=dNVgcZ zNVf@Dg&|5^au{S9vDQKAl`@Lb10I1Q2fPq8l2cwy=)}nc>>eMT;dMu_M5mos=vrcZ zG>*2qrCqvDzNy$?NYB!^aUVvs8O<{ot|EQZ$z8Pj*G9UvPwYB0OGJcYv14o6wUK&N!uUti zQVy4FpW|RH!~5bTKKYXp&EsD>JS1MYh zY*Tvs2ujdZVS&{3qGw&@{_%z4N*y~qdKm(Tj#CHKti3ENqid|k>&id8UJ>G-)=#QC z{>5*zK7!&EOkBeFFj{eHEG(ln?XZ?cznJraae@}Z>8N4;q-+>vTS;{`yHlJFB*s-j z-ns*45t3;_3`0F`mW~;lF)os_ka4LU-+DuKLPW?hnl#*FnjM-W9cjwRGStbxy*+|W z-3oq-a@0VJ8QjTO_&Cv3odPMqw!L{_|TdUnsUEqoI zm)LOW&}W-Fg4bo>#Plxm*JyY2op2%4x30Br#evpi1JOnV=^PbrXWO@g=Fu1q?Z=-1 z^ew>$Rww3(n8!db;4_iV;mYmWy#}&a;vt%YVKm)-7H0C_KF2DTF zo3_*UsN1$2?_c~?-NMbWtnoEZ1CL$5>)PoreQB)$s=Mv?<=tj9U)uKy=hje1kW2cY zSQyxKL$WjazrnTJ3D<*)RC0cCrc-pDbv6DShzXZtl1?jD_5^=G2SpBe6l_(qt!|FZ z!En$W6XQsr<9#mE%K4`q#xA=J#sK{L)Nd{}8qmD47#O%e#;V@9tHPn=HvgAlJU79x zna$6>^xNIpdmMq5*FUdc{OqSc`u;!vLqBt|EI+e(H9yjy;uVbCI;lQE#g2?L!NcR* zCTC&qcR!D$I!03gP4FpzM}sWy#*?8(=44lR@(3j@jh?8f3=IpB4<(Oobw`PixuFAz z;JJxThY4K9x>Y)nS31#$x=9TyMfMH=?U8~G7M?=6K8bsLKPFiBxHA+&%*@S!ij@?m zd=`<#bgaa?wMPouNLg<-bUdyjUy^7rdZLIXQ4+n%>gage%PCjs{}x)YtEsSsLqtX) zoJv5K1Oq%!d!e8fs$(svV^;Ur@6z#=^0+G_F(1k(bJBfRCI99zA@bs*au8)pLz<{G z=sP1ejKhv;)}9*YF15Wu%}$KoaVNDBj z!uLk4aDhrFuB7!*r z;1TsUdP7%@c`?e)c*FY~&H!I$oqRnYfr$y(a?2Xt9NcXUhkj(!o}~t{R`jko03g~M;@WB zyL-2d$=c?-`*W!4zn3DrRn!k{NOm`FMs`b4>67eF=@A)hgzKKce9QvKHi=+gchqjP zYeq`48p}E6IRJ31kv;=hBfx70+6^PN(h09Yu`XCxOJ1R(G?P>U##~YVPWAfD^hm2+ zT8ICxjMf>^erDY(zV^9(N6L1;o@4v|(?7kK5&iMpfx8;fHJ!UkkWElj!SSI#{!%;p zIRwh~yZ(Lkjeq@L`M{6=@aLC{MDQe2LPgL-xPIM6e z4I@02Q+0uiX{YyRieJ~3`hym5-I%hlNe0&L**aP;T}+UeuBfSiz}QCnvJqC#n)INU zAUyn6y6C7YPCij${to31ukcFBn)O?os|VfJ$U=Dui~&`iCXdB$QQz9yf~fn_Zu?5f zTCY${yXE5Fx2R9?{^L{q{bt|zbGX0e^VsA?Vr_h`kuR~fT768cEp2VDuUxhIR!f-$ zJNas6^>!4|_=Cb(?=L=XOE^g^+W_xfyuEA~B}I8XE6T_1z$Mnhq5Tb?aSzJF5_G2E z1>lKPC^$V9;9>PNNJ)Nx@d+vd=4&*itznP8igQj0dJ(Uu1fS%!pgZbfh&MG4KNQ;> zPtA#1Rl?-+zB7*)T?p~Y>N3FjrKlTDlJZp2ECdf*rlgMrAI&Bd*FfU|EU3H$(&4;QP<2hN^RdKIj83Ld6N>h{8B;-h=aTZQ_&X5AEG20xx>HguL;(LH+9uHs zWtpgn1m2-N)bl#dCEuZe56k5)fme+>3dx_uD*C9w=U5Ld&e!%n)IUD&-`ACJ=rY6C z{{}v)tne`_9ScJ;rksmCBSf0)L>txT7nY^<1$|0yUPlZ~X+DTC6UL9_leDqWB)qcb zII%;l)lo{cyAW@cdv$MFiOiCiBiG#3VJ$fi5RxRq*_hlg#sxGC-1*Mknj1itj;@RJ z%YE`$@Hk|av35R}@}mfQ@3NngG+A7Z5W^NBeiOeR!pmrCWl!ZI()E@darONk#qakL zaaxHNdRf|!BIQofSZjf|9daxp-jX!Q^3rgNj#F*m&DG{MLqVY-ELo3~?j!M6x-@Y@ zpoHFG$hY6!ZsK0HB;GMO<4NgcQSs#`G=vRL)(0WJ6M?ctlU zeaAWnK0l8Cr2k!+>+1GaZ|kmqVqUDv(`m)dfDC;U8r%5WFE0^iLUYXW*q%1Z@JuG90dq^JK}9$+Q9s*J zQ&QYXQDRcZ{-jCU#mUFkGOpn~Lc?-xEatt?x!gMsgEO)$)%FvBRbLPS01tR4yG@03 z!V`tYM5Qx$g^V(zAMeXJnPXetI$!pc~?bWxIdn8*2onj!`HVz|wbDMh=nEb**G z46Pj!v|EY@NiI>@Z+fUqo2p$@bu61#5joA#2Ohv5K?~0Q9SKnFC0Z7H<#ulpUr+3m zWV)90xW&6zR*=LIm7dqMyYBt)bW-aI$!F5LkQLI}%5*dE6}bj-{5=X7jsZtZlX6j) zKMC0r5v#;j$T~@*5Q;nMf@?%wUh0xYYZzIQV}iXMf|s1n@SghrLUMd1?6vjYMLQht zHqG}zS32(+qCjFClczZ%*vVRI7j~+Kv|6xi#rvP~LtTCnZ>UJO&YkKO;^}N?G*WUc zFtUxjjPpRB5W&=5h&hqmlv16u1h>8^Qh^3Q}w->q-OD={0_m zfJT-=k=Rw-38d9cK?WGwSTwVU5D)px3>jQRmO-NUP{bT=?I*W3Taez$wqt@AfE!}V0} zo_f&@1eDpFT%S8d$!e#>I{bkTk5unH6gl85OpR!}(K8+i_&DBbXKXvMIupFQ8P8X@ zdH8x`iZ^b{Y&`@HagUA0gtsP;jv*VvUS0;{##zvJ+x_8e=nA{FA499F5&g>l_Ah_p z$q#++zqMiGCn31oguE=mJFbpKb!o!V`|g6Vl`A&sRGjrkMhPj9Dl?S}*xEMj>yU$Qj*ly{ng4A@))n{nwzevO=LXVm-{*+djwV_%9;Y_#R4}MwgW8T zc`0f70YjzkzN)FThj-V{M+PlN>Y=2fFX&fO;IMzO#(;*}UHa!^ENgS_J59^iI+lsT z=HnNWY>DS>kA{Y_=9AVU8jcRMRugNU7sZYJr_%F!W4e53bkv~mGkUKnDeGBN{Xr*R1 zu(2bM$z}2M&xPcnh7#IvvbbXbyR1QBYKCK#1&epe>B{?^r(qQ#vEJ%hBeJ_mlXC9{ zH0DHd7&O9l1z1y7FJ*Csd5v+f&8jezn0cBO9uca=acp=s#M$Oj8pd%Ox9#?Y<{k$t zSuTZ_vuNcuqB9>SK|NyYgD;paNR6t^ST?y^3$GqUtTbk_X7RBqF;B(*3z`z5wIizx z{KII##&b5#5_mQ~xHp-h5}SQpwDqG#ocCT~T~oTcC#=aEONVGZD)*&rHrIlQF}Gyv zd_QNA!5vt~qHfr>x?En|ShxKP(g7n+GP4TfgL!oEa#CPK7NMhF6X&5 zHrw>)OITrxJH~Uc3prbwtZTZ(g-a)s1rTK6tU_vcYvAHK&)UlolJ(fb0TFLYlc!(; z0uoh@R{4D)M%Qc73fc-2W~FH~<&8%4dBNB@AFYuh?Yy*R_EQAg#l?Y2>R3)*<>LL; zv-iE<@p{p|m*t6EJo&)Z=J#)}-mX3QkPthxKCPI`mv}{|1%!WCvkf*iF2P4OCi%4W zkDNl#r(B+N2Whe%DJjEwvpDD*_}*mZz5dGjyMOR=|JlF#YrlaAbw_OvK7%@r z$Pzc0H~o8r@wlwe(LLR}1;wQ4`Z{R$y)j(@fj9oW*$uZ>n@!QKUvJ^L8`%PNdLw33 zpXzc{9+?3r9OUDB-DaEZ)?q}?pvVDJKng>XJ2e%;qsykxB33;ym`fQeYSCxDbbYGc zA3EUbN(fU4SKw!i?-?Ss*%7Hn|nREp^qs z_>0f{P^ipYpuUM_wnD)HN8C<(CUy`FBg6+*U}#AwL8~h-a7eB0$E$TTBOpf6qk1KO zi5rsl;yW!@gEla0NjQsTWuu*TcU+)KvU7RTNy*p0s`wunNT(X~>v z-Oa=cb>qd`W}X`}gqwk!aZyF&KvG$%KNjZ~bN-|e5lRsHY+f42PKgn(x@PRUtVs`u zbgZH=W-_|^H1TN7?Bhf*8dt?2Vs#^rBB>Y6 zn5E2%lF?wx1Xh8Qr|H{n(BX`0OC1+_m!tu$#JdIUk?31-X#h!ZU)HP>{w7JeCz7s} zR9-KlUN}#nC@((nYk`7~sl}9GQ?y6<$2@)^NH5Qbpc_W5>LoHca)Sbw2Tx z#P^HI_~2tY;LYjkLQ7;*L`G9Pl5S}-p*aWIJJvJ?HCvp~c{o)ivtGnxn7BMaD@>Lr zzr#^bk2=DR_BnqfeoA~X8C0cS>s9M!3Hma*4>?%^udK2a!mEoqB70zKHyg+u8i?mi_=kg`TLet-r=fE$; zcRLrC4U%dc9F`)TgMYm+TqBbxqUp8On?b#N;Cp0w^1)_cKiQ1y<^A8Y6}k|bp1bkn zo#03(u1IIk5pVchmz6>W2#fIUolr5fYgxh zle{*DoqD5s1U9Cp>!m$14MRG1_^!KnyRqD5t6sf24ZPimoj1KjrscXuuo=6=0PS0~ zZ7T4N-}QS*oenY~PpW|Ra~RctA_sJ!s@dZyNQ;eB6MUmNI?_EMmHcNmQBHFLN45f||;?NonT4{k~(I)&hV45LV= z%4ke9rl6=tV+%P>@*9)^7^p0q#SIAa^4t2$JYy8PNu)oj_Rfcb2{QW=n~DW4O3bHF zdSReSsKlD-rtRvzT`wit-zo5m8E~b;g}rTcO~bM_Dm|=Ck#9=fY5@b4(%~oSrco^J zD6xpl{ia))0?KaX7AY=pK|tA9B@$`sn5-~tbL6q(yWzp`z6uVBfwp83NhsH?7jCrG z1cE0;JqoNjP=ce0gm6=7IV1a8H1OTVwv~a=;ZOQ?ZP8P!83tlI<2NX^*cqq-W5&|A zVI0=TYdu!Wl>hpa9hqVVn(x`*G$74^fHdf&pX|T-WUzQ$?o{yp*jQOM0Qh2cd|9;F z9S5|DPAR=cw~}kBEdzk^t8UCy!@3y05H+%B(;97WksEUIH8Z1NYWZ6`2mV_9Qvfbs7q<+iq7Y&b6p z+FqjF_suZ`nME=;@K!7v3H9P%%#Yr!3!evrHC>*s{v7D2tUgJhEv*7KR6V*c#d_P? zMtv$VU%5fu7#6%?<54{7zxwqHID6EhvTO0R?3e^K-2fU+ArVgNj;w-`xG_gB(s=`0 z?LL<7_g~PD}2HYQ7nv8NP4=b{i>hd|Y4N_n{WOUf%zGn~}YJ|G@Xzcm&ee zSyYA*re>&i*V9=nvMWs3f}Rl$E$~j1@@t&qzeKw}_xyLha`nmK2*q zj)a{YmsJ5-pzV`(^^RyX?dm-qmvtrm2Eu|($WH#74Qz)S@gQAnKsMl{+8?9+0)TBJ ziM^9YtHDlU|d9Be>4K(1^FCt9SF)FC?MV&I?}2}pxIm0uHoj%*FHO| z)Tpz4yRvQXeGB}%r_Z{xp&P?-dPuB^z7+Vrz`XT;Y>-f4??Uc!kvl9ScNVDm@9Z&?f1w%Gy^bg7PaD0}7ii?6wBKUU$)tx$XmMQREu z9U{Kb)qN^Xp2YTCN(8Hf6f#6S8EyQTJF%jbt8j$YRFR8p0S}3g=IYT7M6RIJC?Ww+ zd`ddwF+S<_&%RpQ)p1;695Kl$+HPu?6rod~p(sZ~(r`w^Xm#T+(&WUP2e#aRXs|UM z#%Hc;_JxyzXm!yXCF@73e?d{8w}M8Zwsc^$)X&(hSA))tE(WpVN?}G3ftQF$y6yvo z&gd@`Pp$~d3gI^D47&#v0f@13$1 zoRC-YEZf9*qeYtZLF3#Oq)d~0fp{$=fhDm?d|kRF+l59Nu|Dy!!1`otN*0EoG#$4^ z{KD8@CEr_?OdnN^mQ-`(3DVaM0m53blYB%3&9GZV$w*HH-=47a_|l2l7IAHg`Gs^x zAC;7gXh5#=&%Q%mM*5|cJXhQ04(689QH@Y+8)K@T(czK7*3Om2$=_X)B8-ogNY9RC zC5|9Fs;Q(LDB@B6>=`3fy-&@SXikL`6-&qp&{<-dvjSWvZv+za-C@QSX@y!ok#VQO2kjmzU`XPJXx4 z=Eat*5PnrH%8d*sa=AH&J2nf>gIn9)l$YxZ3 zxEa?;8X9wDZzz|%&tqOf$e#ha(b!?2U3@Rh$e7c>2d#TQ_gh#0ho7%T^zIeaklrHI zY+UC(TQiNQ^yT>MrCq7|Jbt%mbQeOqHADL3KgSgB8Ek<&ru4uQKUJ?`eKhuP;#6;u zkRn#R&8=EWkpm14OeDmyYo58?iRK0oalVFxGXjLM?GJzm+lFF#+CGg)!=OG9>5s2%}pi>lAV0uTZj@bc#CGF4~4CzUGpIbptm!)}BCDa;w+@dB>Dq_l83k7Rc;;9%qi!x$;DHLkVb}*!2EG};FS{i5x zRJSvV3nJ&fF5Wl9T6p|JJCRiOFz!Cas~ZkWSdM6^q<=alHy>A;81uIb4p;L=tGDsO zl^#|+9oyYAO^;Q>nMJLacvp*vdfTCVAhHd<5yF9l1H{`SDK>VDgKIi6RIf;6ukD_O zAqtJ9D`84i!8%l7eZksR5NUUJPo=@Sp01Hdrb(_|huLw6*o1qtkB7 zZBV9TskD%h-{h^!-5?=je(dzE!g6~_(*+qHDztkvL~H&lB=gmAS_Yb5WsUZutxIG= z^oDdA9GUKWAI?jr2h^=W9hSi$&8ZQ*vjCSyv&|{D@|tL;i`w4>9mf0sS>O@Fd_;1< zT~0WUWOOr)f`vA?LW~b$aW6a4;9z|@@ZZwDljc^QFI6&|r{p|nFT1z-2({y%Y(R7d zG-UFncZwlBG%>DX%Zgk=cz>JIq=*MOQ?fc0cRh{LvT6|f9>j*ARY`mbrEG{S2W&ctlVjmmChk&Jdy&*^$gAfJ=mwsmQr7@jK&QWbeByJb|G~xkmcPDr^yzDoX`I;Fu-vy|~^8H(1k>`K(`y%iBu}4X&w{<0h z&egLuC+j#)#3$rJ0sw1JZL(iuK0wp&V~8~jb&e{V5@M4PHnKtrb|Ik+Wxb_BsYGEd|t-Fc=AuPE#k9HP@q-f_D@*^lV~@b6Hy(J*BD+ksH`%@RXR?6b5p8 zVC^JADn3QJ3CUCY@@!NM`Tz~&j*pqv7LjMCADX+Y?eLb1nW*@db*5=*>kgad<;tH3 zg&t++sS)0>-0HxQDYhQH#QN@qX_@=1*6(UWF7Wd~yCH zz2tl0nt8D<;#&_}XN0WEObtabxg|b9Ivk?@~m|N0$p7{vjlvnB6V8aE@@@$)h_XH`i z`B-hDi%7xRrTXOiKlo8us!_fDmE|JmffzP&Jb=hz&MO^1>>~WS=H$zOIzSgBEn{Ge zVZLzjeEqo}_#ggXepv=+oA%aq)H3MZ)tKgGm14Q0Eg1IkEn1Cew8JHqYmV!wpFUNY z!AbfcT}$5vI&O;X>J7p#mg2qHH)R%H*34xYjp>@HTQ@Hg1RM`TdZeQ79*E7vBF7_= zRFZJE&t^>5`!J}x_0cXp8bMz7mO(4K#iae~HC}v@{%EVsh=u_@TMIpd%3KzS-XhJP z{H+#|e%&L}?VE~y@qhjoKJvb&KlGVR@%fq2khKX>Nu#sQEp9ks0}7PI z7DSFj7tC&eqa3g-y|Nje>^2!~qW5cGm9PEb?})tpmZ&S3@xE1af^(%J)_WC=vwmHd zY-`NWzF5Z`9kj3hT5pTEBAZ9Gpf2{Av>j1diFGu!sMNY9{)8jb`E1)QRm?|jDcegJ z#TbkG>RDFX*|+GuL}Zs1%PKp0C{hP^u~Leiy=_TlO=!Hm&$wpME=2#b3{NgRshXl+ z*U~+aRC6q&MDwHO5<)&oIVgs>IBgEIxLEBT;aWtF>A~bon^u;yCuPJM;Tq%?i zpDcB?=&U{IDWkB$paeNBL2+%ZREu1?iJACYCC&j3*Gyr@P7+vgWV*hJ7BpkVmKv(} z!OFw%t?I;cOoX{bOpcF_42~CRk2kz=3i&XOVbmCY>$=TYCLu*Q4SZdpfVt7+%Dk40 z?SO95__KA8wzG34Qdj&UGZ`b_#>9n6Y%nG!7aFz}TfZw21MUMrC7cAlckc@2T|7GM zxZc`#@6qCjXuv@uU@fON7}w5wbyGDF6>J&iFP25+c%7puoznjI1uvz8y^_G_pYF~ zjjpO=tkO|aqFq)r=U08_`+N*xh^}d?s_nWR-7jklh4rmEQeCzbNDdA5Z!*|f7nugF z^a8pl%^S7)d;_OZGZ2x#?TUVNj39lt;%R}gmmxc8ewX4ub5<5`1g|YESeNd7 z1)Z-pS3VEgCx^A;1oR0f7-VwD>m(|}OUooGGPu)xLW%@RFMvB1zncddr&L>94o;p%_ z37Iu91KY768(C-DtAx`qkc-=np6ycaS9!Boe+zcfHv#8PQEeUmFHb)7F}e8AM>`6!ewIOMV_t)ILnMuR z3EeU37>w_@UnhN{WDMO$q8Ty*BH?uM zbgaXWjw$xL8&o}EfxI%QBg_P@PdGkZ%0%vBr|xUMc#_Uz6vtWl(N=th+-!3(e76k? zhC|&qgBlxeS0;V^tDl^Y?N;bRPk*%Cd*y%gmp`%mnGgNPTl+r|f~NIZL}lOa!h%Ky zT}pcIdMb8(6r{r^dAgeTd*_d~pz{`e{=+w0bS53pK7ngSBg7Rbu<(j#AU1a?{XBq4 zZE=e^QWsrnLV>}iPNq+-sboni+%Z?X5^HIn#T5+eF_f(6wortvNEoN)dA6yIH_-t8 zuzHPgm(TYoW!cwn3c(|QNm1x`38lK1pQXb+D_`q68An(C(l{<*T&OE(Q2u#sAH)#9 zLyH?d#Relb&vC84jTbT@O0MKK15yOaedjRHoHyEYD{||^qIN}6K~_ZBF}asi8eLgg zd>mH4xA^$kdPo@31D?H0wcZs`9#R5eP+Ei+MpEz05Z^$o?Ka=~)sk4JbWj}cvA#5$ zBJ82}5eV8Zg7GAezZ(UyrdNQMwU@@Ch)k1f_cBuUy)qjx;ia7-(YN6Vk6qlbiM=<1?(QX|2hq5G^vE6 z6$XJVbyzK3wG+bjtVL6obPy4ZloG_}V_Uoro^_%oX%WFQdePWOGLR|cqGdjIIxupo z&zS~a+{v}JRBq1{!ifhy$EZ8V7C-7Ou&CNOAHYulJda}tlQPMP$xR2jVRNjYqk=@B z<_zwPL4UB()xG00HrEn&d|M$lP5>ngX-VHtflM@6y>|11J#Ue1&{7fUBHS+HOUgCs z9g6veWyljQF+SpQr$pN|jPb&ClH-B#tsO@FZE&oL#E$olSxRQgd2Q7(^4bU?_Nj}~ zEIjC^p(J&L#qqqlld9F|^o!@iG-ijt7_B2cJ^JApB*<_Qca#+$c#W|wF?WRn)Qx9# zK^jYJ7L2cEC%k;)_|C7l7ClUs1)KQ{L3Hr&Q0p75=q^#X7AAqg(^_Z>q zf1kYX!#^w+Pd*rwlrvbo#(v|qIVwqgL2{1s($_&9kg@ViMrdRAg^U0E5B}-z|Es_D z8*&C-AAUne@6Vuia05Dw>M=4sq9@;UTeSH@!}^Wa$%y`;zxC-)FCV!0>l=rCWE3D! z5St33sTeFFNPr`u2(7ZniGs1)s^l~A#p|s*ZNL2oUu>I)dB8E^nZfr(a+5C(l88l_ zu?s1pE@*#?ysVbu*`g(EzdeR&+MCllqJc597>*FxW<>yqr!hdA`!YFU z$EIPf+!)P7tT4wsYlz>8Ul`I$BR1^f9F7CmB(ZzSLJ`l6J<7_ikBw{16?xPSf7eG7uyk7-3cy-^H~(<7%jy zLEM}MnqwFn;E=H$n-V$xq0q&S?DRG+slHwf>-M@KBjqHNH;kVlSXz9OvrQw4<#@!q z8fj!oZSIOIq~kb^sISR(ddJzp7>`)e=UD|%bXpRm-n+63W6zP#3WYe`N>Y9LZ15)I zZLGajw4tO)B%nD>j6!uYMeV|N-Y;;Lxe>AbxTq=b8$GXt#tqgv~|m)s1@`I<+) z_?V#sj{W9{X&FhL{*5SMSu;`!*%!3yZjVA3Z1ag{y;Q?yO`Ifu(o|QxWiv+tfqLCV z(0=I*A{x+`qn4pAb4L05k*4fpigrL=My*Z{u|8Nq10LP?=fVjbayoep23+!ozq9Kd z984~)MWx4KdL|fe$V$+NZhG^)|Al^dHQv8;sCw%ltGjV= zK4tm9v^SKE>dJr?;!#Y0&7VYFYT{Lrrb7P+yk`6JIvipWdPK}|&fhUV#vEV_i{0DX z`~0ZScGkB-_mCLpaM}nBhvYm5XCcNI$2AJcqvFfZgzB~~dS*{4G9FjQs1)wM+L&Yg zH)M1D_T&TK+oIG@zV~BJ3#A(vql<1Pal9n&sQ(tFd9W+2#MC|SwlPpEzv-P{Uhkj( z{1^ZEzx@lZzWP+Kt9LEiqSKo${+8?F)p&mPiY)vaeYOnK+>{J3Jua()N2b$;@DSV> zrLKSzgQ~%N&Ty_UJC(==L^@mPFrovBe3yaovyXka)kMx2(IlRwvw~n)hu6})HPwiI zwh?bLpaCcPyTak=XEqm`!BdYu-woI6dJ8cF`5bg>qU*+D8*~5O-~7pcyF9u08Iz9b z@r`am({h26sv3k23!_ZU3Tah!7T?%}*V@1kH)Zi&-uc7dmFNHHcSY}?M-xMaMRU4Y zDpKjnLW+b+L?ro~(6mmr&wEoaEKNL>HJfYHg?_QLL(S`pr(Htvh@HHpYoxd;WD0kS zkoaLX9#w&__`=_{dQ{P(w`)vIW?vLnM9t`H`y;o;b9_2IsL_tXlRpe;8rMKa@klC^ z5o?)^XsfYz> zuhJ`x>KoQ&drcKb6g_$nEaN=dj0Iokx|C3|T?Lb%m$tzRv;`=fUZ&*Ex+~K8BzN_; z0Hh{O)qbF@=G720pnM#KcY4oVmZ31NNOsgTW;N0;t#|dzVpC{Lsk{Kc`A+h1@Ca}$ zMe+=5dvkgQy6{TUOR$-S5^M%*;;HqZAp6=JH68u<#%pD917D!jip1J_T?JbaX(-jM z;3~#Ivc1LAvNau^e48Wh6}XA)E7tD(1|@YRDuJy2hC)J}$ztuym+{Y_;>)p-YH_@vd2W>`54BJ{oVp z9gb|F>g|ZWL#9h{XH1dK7=)exBMkFmkzxK!W4UcyVW^_QY;UHE>2doqC%Bb*vw{7+$?6jw)Lg0n8N346)4tx9ji! zphc)Z@B?iv^+=PQ6C)cR zpDSHr`5p_2_b?RsE&(-7(SF#(;c~c0=V1YV@ebYf9(!qGtN4>yIHxTdT@ODOKEq8q zBCfk~S0d-#x!HJ*NOU!t`Ln{Ce(oHne@Jd5_MyqnfmjdC%=|ll?VtSU`~ORyxZV2j z6Dp%0m?9oLsRnhbwDDl41$ybf` z7M_J%vB`dV50*k{;67dj_2;!Nby=M57I!VUQ$Z*S>;w{%v4})UboQkrYd3}6CiH^5 zx1kn{W|6BeJbF+vW9XcpVh!v(2QZO z;F!;@epiQRoJD%(C44PKcKeoFGbEf6B_q{Hhf9BicJDDmx`=DGt~6!8>R8-MI%>+9 z=}2R&OMlH?Cb?_AcP9*(>l{+MmH=Db_4W>>O@>5ctm?m< zUakViQr^FCo^4JUqFeHIIqp+AjQ;5;OR!0hbmP?>MFoDtzN9& zd(twbeWNr|qQR!&SPFS6VYt=e7rm9~nsa7hz^U0D-xOuNME3z_5+_*x+)cwK=G*Gj|Sm zx;58XNpToXD>%MEc5PXKV1g&bF>r=l|M=(~WjO46%p ziXRh>KvFtAq(fPW_m`4wDBku$V+n@qrU{Xh_pA0!rkD$eS4|j8$a&B{8UVUwsqd3e z(14JWJLVS~&JGrqRBIlH$(dZHJ?LOUGNrBFXD%LAt>fQFmnE-MHhL%+H9fk?248cdvfr{!e}H-`)ECiBO6~Xliv7=y0{OE+pih$&}I=Pk3Ir zY$%m$Goau8M{m;3wXWDw_HU%kDNXjOk&_Dfigc+kuKj3+#h;5cjK!iu4F=;iJoY4{ zZTD-M{3KH`ZT(`2GeFISX`6vzg1KlLhRx)Tb`yhY=_X?sK;iK$KDjCml@Tcg8w8>C zj&rjV!{ZBefA8){Pcvs4boGdYS3J%k#nj29Fe(a?3W=eb*GMG_LaB+CB_1^BWo?SF za`UD1iaa}R5~)PlxNT}D`dpQjg;E#GniHq6ilk_=857p7G)iFQC_3ggn4{8g~QUqqdJ92AV?Ol`q}1p_F+W-BYX z+#$QHv6+yFuaBi&l?#*%A|Ye;g-Jp@zDwMogB@EUDwr6PFyO`CBd)}%8x$OGccKYJ z$@ZNpBEiQ{YEznJ6EdRXh%g!9&K*mk)L8qdq;Q1{!=pg?Vse8wl`2Z~eBa_WDUlyXz+CVkDL$^bmn*C=sfq%P)=^*-OIzrg~5pBBARV#PxxB)$EGVK5nFRLvYu>>|$Bbn>(+Yy`7S1^F~;~0{>IVjgio0lSSDuH883h^e>0ZT51$R6{#Z=ns# z+8AoiSW;vU(VxEVvb(}}7C&N7C9${ADHJ)Mg?uJ{XL^J>XJ??NF>9NJDkYng#P32a zG(ns^No$vxR_sZoizQwT+Jgf+H`x?FJSzcvEyS^tm39}6XlToCE7-9=Q?^@^EA8Fe z(zAQX=$AUXu z-5r(XaG7UJpG)(`-b%N0E%sk}O6#WUUtKqSx@nESiEGttxejR==K-hkC1E2C$72!a zhf(eFWX}5UF(~p~1d8zB$b`7Ie<1HM@tiZB0a%;B$68%k{JExK?9#YL0~*&F<6KT( zQJJcpPgj3bZ`LpVs>*AV4aPPj`YXTk-~Ea8gYVxW(ee@4hwu=ape!*tSn8v=CLhzL zp+iUs6`Irw8HHYd+}wnDP2YZd`&&JQTRkNQbym1=WldeEm;1zh+n@&yBr#OPhSW|;QOaXR$V`HV3+GgXF23K(--jty*o;_IhCLgiFDA_47Y{@??#iifoz=A6x<=Dyx?s2P`He?*@=a;-IjtVMbdBK z3RMTwv*B{hb_S0)FSlK;8;+2QZ}?lV zJjZForE9ElSLca>_l10Mr-jpVuygSaIeo7MXOX*dFXE~3>gSd(eTG3JeNPug`%CWj zFI3dk`Vc;qZh}@7PO2sDV>3!b6k#MsyIrPbmImWK4L8V!hR=&7jRto(^ll?!$B=(M zAE7eoX#ts6hz5gMa1F~r*1}Y623yYc60|xlzga9?-ac(vk(bnb2I%PG5#BzW_>@OS zS-E@PtE9;!+sZk1l7_#;1DwgjPFt-@bZlS9bvAr?Jm|h%bH@-6?uN4Z_n1{lzlk~o zyJTm5V-kfoD)j=wJa|GdE{%?tz;`a^Un9aRo)RC9v$e_!qnt&uBgjKjdL{`IPLVYn z*cs2ZvAl4t1AnnQyIb05L!&bfBG^WtOV9vl-G<5L9>$F=aa$uR$eaV#NVv&>uo9|) z?K@*eJ_QX(pQvrRN9JA3A1NQ}#$@mN-jB(X@B1OCOO}!yk|&s+b0fagtHx*O!Bk^d z<}1})$`|wx-?{qOU->_MPF{U#&+?u{Lec2WfNsB$<~;2YeWcuVrH2rRdv>VtBI67UCGOn!#N=iDL`BNGj?KtH<2k-eFYUb9q!9CUV zg;~0`6-L1%8bqSm_-^I5XZ4g(XZ*p4mhB!=z-1qe4r6*^M7I=E^45n0`ZHogj@p;<8{6l_*3EKcDDX45KGPf=PUQejHG_tn?cTqu-R7Nn`X zN0POA+^;}P<|M9cEZSA+(B=JDHTKC&eXvem3Ilx+K3XJ%cB|j(G$gnp)GKZIP(L_H zs)(enalLrdJ;+}AsRf36^a_eV$#Jl0*72u39TcJi7%}as#heL|y6UfNN*07~eY*A2 z3_u(y)sY}6Pmw9_&KZBJjHDY;A@9!)Wlk%MJc~*d$sQ~IkMnh*lyN#?vvVca(nog0 zQb-BPO@Xi$8ue2E-c*=9imgLi+(5ZsLwPAg@3AHq_goRS0WQ(T zPX4Jyc$)F$4k$cp3WQ|(q~JY3yRRuXm8*^W;{2ZaU%snbS4fVGqDcn};mc1ha@-hl zuu+rAKVMV2B)-MlihUN~ILWp4PB!X>yyF0SKn!9aXoZ(dfTN)FEq)BldO>odMdnt) zj@O#Vw>s2Q2}98nK~y}55p?OaYeh7kcLYluO%|LFBg*-aoPW9KB&9@KLydL>U1oF9 zYEHq$UKHSg+)OXW9sE!Pkwwf`a3tE(&moQk&P`I@6~+SAbAvu4`WV8;s32rQ`&e!5 zv2ql%0}Yzd;c}x<&FqQRU(Isigc6p!H0LV0Yn|q-|As^G`Kmde#tzW#RD3QOC9hA{ z!`kk_1Cq~UT!rw`WOPY~WbI3JDqlE{->ata!!oo;mkkm29AzNEv6P~;#Cq@x$xXM^ z+wK|PAy^x=77L;(kvAq=JF6J7$gmsPFhx@*5Rp-*>rMj!QTGU<5z`pBE&?6pDJvqo z-vO4AH7?Y|D<)+~g{%j1l(G<k(vI}VnP9}4ri>i_HqKlQi%-7zX%;Th@h46~?o zHKyx{J$IL$;?1_h_WjPw)hyQ*oo*YEc_8nW)=o2=Y&mK~q}xBIL~83U@ya>7$?vmB zV3@3Tc3{to8`kYut4c^PqU+~Ll0ctgBe7E_La!u^ z=Pn}s#{R50Y%X91^kr@;R@1qMsB>Kd{UJXSI{qrdZr6YRGyl}jE+4%3B@?kWksxif z_?FTZfyHdCf_1^vaYIW?Bs}%{@1hcGv#JpMcizDiu#9oRwzS~pQ|ecbts$fNBhMU^vV#STBBJAvm1p`j+KGx93e1LH#dvV;N%@^8JlJRW}fjP)l5ng8> zo87oVhqG1Jk_NL%{~2_Eu~qfG4tj$Gq6L&#*5r$hHzj3JL4DC~mosawX1{l&8g7!0 zv4)SMg6WGH!O*}!rm`AAv? z$u`%l632Ym9Blex-8|DyYO!Hy`~du_&7P!Et*ISBr-GuCF*nkY+-`mMTn+F{0xi+pRtbaCwu(8I*Vhk>1TzPEI#9D&7FuxknHFf*uw0jn5 z6fFwvpSSV?P?@6s)s*f}lEGXzAMiENNC&BZ*kG)#!KloLzh*@L>Zd;=7Z;zw4z;aI zVUYAhoslGs%_mCXvWU~T@m5u#NZ+C9g6SrjzW`tHRuFu`C1jJ z;Ko^_^vs1vxS;^Gb4cCYiZr%RnVRqsv6Mu5C%UX0ol88R?{**U%2DW0CYZcc*a?XG z*uPpx=r=`j&1hPQcNfXlLh*7Vzw|5+#uK&NoCRI6&Us*^(lG!}c4v~f(hg@z;r9vp zDk;H*oD)zOaQ3t-F>8TxzB&S^AA$)Pwb{F|$;+bTKypR1m2(9LiX`;QIbVW)m#3r>{g^ab?ug`39v^LjQnfp{Z;u zqE>5M3x`iLRyUKdo_E`fWH(;5pM-Obnh<|zrkc8Jx>q>bR!=+h=7a)n<7znaJ}eQx zaYfVD@hK@s%6(Q5Qk;~$IAvry21ckRRRtd`9s$?foqP?27Ce;7TM#SW&#j z4ZU!eIeuFdT+_gcr3GyKXgZA)Yh$#Kk?4G;;)a$I9x~djB^@_~uCoaThowTc5WmA| znQQVjM&Bsx`lAp3VVNJqc0j}7zhjY7H~Y; z_@Ym1q}pm2M#<;KlZF#u3QdNnk8y~1r!0i*>yDgMIMkfBOvnqOyX|vHA_Z<^Gd@+H z@90^l`33S=avm?iE80DaPAza0x?%vj7tv0Zz|r4!XCfw(_T4_8S0`lsyRc*M>NC~h*_O$atfS2b7h;)1 z+kekD{q&E1|L@CNU;d5F!T5G8`%{wB8vkn0M9A9UgXF_xPSAMoB**&e^~uF&e*fS9 z@BM83{wmQGZw3s#zMaD3#&ZMG|0`63x*5=uARM5kd$%YwcJw~U-jLo5=j%2`r)H-C96 zNh=89V<~m&lfeQ7stnJ%f>P78Z7&R^iKmvJ)TX=74|R>)AJ+U;vrx_-NY*ycG*Wd1HF5<@#u0GSeLbE2{~)qN@1EE&_l)!&~(=+bd?OcAn8aKQb+ATe425I#j(C*81P2#<8%7a~- zg9BC40i>Ey27x?Gn)cy~cf;wEGAEe^{AqmSO@a|15|LWa_&tmeC0Xu~rIq&q=mbKv z%8a#QL;|IL?b<&+H-S>ZXyWux@bbO$N^zRvD8D_PQTCKG66DjKbh@-ibV>bm!5B;M z0{)F76$LYtRcad`X|x&X$lkwIx6<6YmoRk~UxoykY5(xV#O#I~~MQ zi~tRsT$IG4)wKkT7w`x@W=`fb%T_p&8+-9)l&E$-p52^6^hj$PI~rZEcSF|D;RFrL zWl!2E&|I&<6PwEv89Evf(s()e#hkFJUB{)iA2X&{~{9{bEad>bPewD zdg&8Yw0*zbY?o(GpXoKyyAddKJE$;+V7+wh_prP7Fp~r_j@0h&KtL2a7;)x7Vd3r9 z8lkAR2y{#37GFD1AFYISs!`@wOGk`Ii>TjkKc&?hbWMx@J0p5Cu;Y8|%+2QWopeyo zmwWy5%0@KOL108z1G;*;KK5_^GrzP6?4NPRVKTIeK!Hw1_sP3Z5!^}5K!lX804VU! z-n9*Y0ZYsqP@15CYCq+;vcc~XffARr1sq_V7$$E-O#>g*adM9|E=Ly> z8K*U)C0i#2`fhYYi~1tkq0t1%NP7u|d-0_L5p@vTE%;)Uh*HIx=Knu?{};1scHM_z zYwh=&AxARBAw^Q8Wr&7K(Z)<06rj-Jt6s(hdaA~ z)_%Tkq+A5x454S{JMa5GfA+KY+Ux&Xdu>GVfRTyWG~zRIW3>i1z)AR2zYeSUs5QbE z(YTolJ+!JvwL1MMbFajD-h3GRHg3Nh*$vPN!Pt-Hl}cnub)+@(s=< zKENp!+olBq(cmgQN>iCkkmH_Fw`4Sb8CwH12}Uh@tb_XWsFCjd8n!fWP zpU{YW+dyYJK1<&b#w{p$zc`=|2#H@|Y#Vc*&3jV+i7cSA|N z7&zLO5p3aU>K1vJBm-Xfa?xM@_CNTmf44`aA3C<(cdq*XTUY(RTi1^ma=RMQUd{W} zNcp~3(ff@z_TLW~(KMQ6Rr!wlJ>z!SI_ugw676HwicnkOJ3p=e?uh*(di+Qa(9Hh$ z@pVCRMg|hGKi9Qz<<8L>l9|_~peN*;_wzy&{ z$a!7GBFu08gD?I)9hWa+Kysd5%7Xm}(kSD)rP$d6Es;ZAzr4G)v--|IEw3UNPNjPl zdon1c1H2|(|KQS5C`HhhP*Sw@u>?<3yI|P%=1TVAt|jCU%2^)FIk{PcbqGMYj&*^A zR;=MhT4KV7sM7GoD)PzR=Gc{LMXUktYf4SKkcwlJj#>&@H zTg`^DDmGzcEcBt3=4KT|2$y zNHLrAw%1&Gv=w}Yp8B3G6VJ~y{Kllw-INcaomAv@eJn*Y3zm^8BHR=2W*^pGqaN?a z8N568$z4%oRF`*ee@!?QJElo`l+WpR2Aq74TkH$3WyI6q5p6Vky}n#-H^i6OvKTas z?R9z?MR$nNO`IEmP0&(p3lmlL13)+9;!2xHkK(dW8Q?D?qx4Y_F#0+PP{4ZifeK*2 zq=2HB6Q&?@MyiTDH;l6dnWERZ95)VjdwTTIzcz^@EypyAb**S{|Vt_ z>`g_kyaInL?%mrJk@NakIsu6TJU>$|CYuk3i`ce@Ej>814XdJB-qHq3_GW#%AnPal zxvC3WD{7}z!$1N12|SN^I?Bu+?_KW#76l z<*_EeC4H_-hiYcTMZ}x^2s~uQ7m=P$RLyl&k+PK15WL>nbocCoj`iHmF+?h!;4&N4 z6PP-WD5$vu(48F!h&E{&2~LdQALtlm>gCUTN?!cPpOq%D>N(yE-pjU= zR~m}1fj=dF;r$Pd=SrKu_Vs`HKlmThpzaasR~{%zc8*Z<`?;F;`8khBpN;8t+_t~h zP$2ng<2?O^FAtAM5)FN-$z-0#eFYdKTp&e3#9j>dep?%JKYaK>ufQ zyz^E*!aLL0Y{J+-xLp!Dwxb1UU~{vDCyQf-dovKq%>-B3ot6QP>7VuU!^KvIA;<-p|GV= zllYwiw$fE8*r{B0qha;LQ>s1ky2GoZ&+2oe3lnx2Q=bDNOq+7I)Eq4j_K>zWH0CK= z(}p*z&)AoiI9BnEX4b$M_qMf1fa1dytU0qkBm*i$0=Q6JVB6B1SFw$fRvQKMx~ zJ;K!4E+dr!TXbWMM@AnM zG^>eTJYNSLKk=TVn|uygTg%}%wA#u(NE+0>JgBuD!>3~)BAi({U#zv&I3*sRXqePQ zCkh2Sd5b$jTgCaNdz$xq z9=-V3`dd+F)_kH(LWj zl!p*Pg1&B_-0F%xcQ4ID3-`P6+>h5DI=LCp>v**PT!jW&fdP+5voiPflk1_^u?XfpbVZcRuq&t{D3YYRHRgnYH#J@)(p9V0zD5XDJD4l-r>zacwT*Tgf1zlew0$;ECN;H5$Cyyso=v;B?xAP07w| zi+0Ry4s6GVPFHOVBDF_y!bs#^_Kg6ReVeu5FF+@o^}H583O>$%uzxdn6Dy9Z7A_S3 zD?^&FNjiOiH^-DtIU7m++lG6I^956$&pH=+hTSe#ef*GtRX9_nI~n^r*!XtR4FcMU z7X%e4Zh((9atuBvlFoPXcsjj;r%GEF+~`G0K5!^J*ZDFXPnkK^=(^S@R|9UWHz4)w z4)!ZP*r?(qpSxf%VZ}WlQXd*c|Pa1CbS_`*MI#xGQVc$d$9y= zwYB;Xv=&k6KDWh)P3{p;JM1(!LQv|)_%?o*w2=5i!&Vapq>VYPwb%71=&6crL<=H# z1$Rcdkr!Y7b8>m<<6FNsY%<;OCuym^W`7boDpI2We_MS$?AJc_i(yRDkY39*<~| zN{PPv-q+>st#71JRNTa(O4JR+4;XQ*0j#Z|GR+Bwhrf3023Wq6%yh134K_&Ha)7Ok zQDxVOHBz`C94PQY*pC#ZtyWsTn`w`wR6rR9BR;=96-qvDmg!0*Vw$2PD)icS!`KbG zCIsvL5rY z5K9RaMu%ipl-m^|W)GMpzPX`gRBk2ry={mS5%At$)h&Xj=$E#%x($H}MEIlKml>STy6BX{KOBiwfi7&ZNsI+u^lTz4qhjXn3EpdKN@@;w(ggEZ&hDolw zxBC%8j@jWc*eA;w^r$TNLpMfcbi*zG&H`xyrA>CFfFE=578j=;n&`>#_;u&G2 zGZDnH7+fEhp2ncPFREJ|fX>rWCVA7N53~0w25F7DXdD^RjEPHuQ0NEfX+4^TbS)dY zXw9`|rD-(khV)4JQ2ZR%IV1EkG^1)CADu9mudJ@D;HQNLXTHU`vo`<5Udit;^GQo% zXQ5{IWXXNQXb6|toX6KNui1Ku__5poZa|U0q4k*iP{Rk4%PUOCi)$qrhry*nT+T7t zN@DBFplgTIF)jZ0+ugetOGJFd0+!d81A(P z_XUB0T3Wz42duhty&o3I+KRTRqpe#8!|0%J|X!o)5E`TS{3 zIIZuf&g};DZ5Yu{yusVJkw)~bY(_Npj&{R&MWJ&~w_aFGuee-LSt6wpiInNSc1QqX3tc`YS9?&r2R$(n|?A|P>3vUn67Sz8_) z=!$P~ptbLCboC-x<$DQ(sYvz4c2y!U0E)2rJ}U^sH?93~nRdshIB+Weq}`XYlFzi> z3E>ZA!;Q(74(DK=5%p$)AS&2=Ck_U(XpY<>Ry^2qNXS|m7-AzdK#T>VqK`~lk2WP?JF!1J`^9U% zUcbTa&}&>>*WU8a#aGZTN7dTwa~Yl2&$*mt1I2LG8rxN=R}WuryPorV%*zkSTG43s z{QCR3ta5(~mM!a0x-F=UIV$$lPQ8*yqgo2UEaS$=Kt(nqdL(`o4KkXu{yip&5?SFK zl|#~aeGmK)tHOlSS3Mv3Ct1L-3KyE=Ou)%-O~=IiOsB)?*Mly-@E7nt-f;jIX3|5Z zWaqtsbDo{UKH6RU-HGRP>X|4boF{EA_(i3sRP*Rc82Ii8BZKe==VrX0#U2TV zpz@Y%M#6-lld{bsr9X7>z%fNz-loJDg}>K3$qOv{ewlP`j>LT-O;Rxj-=A0(QOhwv zKhyFzk%WDpSSFEC${y|O_$k(48-Lw#Gm;s=fJvD~oG%?gF@J5Eny%0SP#h;@avOpaRV`&xeG&gFmaz_JiIj7z6;aCmY3i}kxQ`#6< zSd4oYTkHEpHf1WZ2w+IAcGh0qtHwiYDVI~7y3shOd4LC_hunHD=kN$U%K03(&*D5u zWb%cx0V(oRYBvNH3zf)nsE`E;3QF}WerWE2o)?q1VU|!Iq-UQ|z^GpEeT1%OFyt+; z(5sdcFHQQJ8z0Uc#X)=VeTX!90$NJ5yz*Jfh<2`5#yN4lWlv=~zp)@E@quaKvVAx3 z>-F5qx_tZVZ@BI&*%z&MA+qmhQ1pztZoMDlY5|~Hp44b;j9>n#fBzSMW&M5yf6IvW zfSH8;zl`X$YY%M$|KOImFrvSJfZQ_%>8|$2vvc^h4{WA3D4c*^@%Z{wMvj z@on8-Nyj`6ki?IU5xowTAE9G2p5uf(`1`%iNmS{6Y>$IAKDpJWEGpL5L9gRfXv`0< z-2K3g(M0BDJU@GOMf}g}7rxrONo|j~^IGWKXAUXdi^#tAGoRLv|J(oFzo|EuU%6*L zk>+WX+9u-ebuB!XMFd28dIpald{=((o&W5rw;cX_M3Dn*T+8N$&zZ28BBWK?i~J`% zxB})=5yArkf$4ePe<<$5^xj;>>qZLGHmZuI?Kh{P5^S-&rtvw_o14bTj7sENR0&&a zC>K;h!SeNB*4no|9foyCWxD74<)nxJHs!gmqt>PF&vfC-XSjZ>dw}m57h(+tb1$v~ zA-htBZzOA+0|p#{>}z#fo8DjIlXqyO2VDT?Q0OCClML6awqr|}Si+GC--=lKKF?6- zY}Q=%^sT{^+!%D+Z&C`Qgi_%12!*%O;01AJCTs-T_%wwO?=@Vj!bt)5dw9PoOTYt!E0n3>UZAH}oNdp~a9lV{rc~8b zm0Y4gT8QbiTsqM4n&X+HjDu892GcnAs6OYRbTVrTnM)DT>Z(LFeuaV-QHt6pxA4a~ zhnAylA97Q`G&bsSQv&qpPL`?J?s4L)>$w|GlRPjCZ7ME|7|#FDEv1#T6~MBcuMcT( zJ*#)cW4#VQqAVSs0;0~2WM6ypsq<+l$y-{eXl}Pv83D4POhuITcZ@Mm8QFk7Sf-&x zPJ3#xwjpbNt0fvVXu)r!6k9JUY2nP{d`FRA;G?q5z^BAIR5Rx`Ty$`7X+lQ4K}*ih znMI@0it9<@f-pwiNU} z$Fd8BZm7_Wm;Hg9W>yJ{J4NUFH2k+r}~ zD=#A!#$e98HXIj6GS#Daa7=c>tJi+;u1*+lW`$?uIa=@~yISmRCF;S`fYV za9fD{Z2fg3`k6d*ynZSu#tPls;%XVupZH(@{QvYy;J;EtYQZQ|IFad|Dv4$hEzSSP z2-Kv6ibkx!y>j3Bt!o7IE+SC`C%5_m!%%CRH)!>T!s38{$w;&rwpWQYrz~*8?Pyq- zDYnECuOuw@JO)s%EK;wPTi6JhW_i#+S1x!NV1QMx%y{Q@)dA3GHkOn z;22%-YP*Jhpx^GjM`YIpo$W$5XA(wFkD&EyU9n|<&MDZ&cQ-{gwm-2n-q?oV`3a#E zTc%BbSN-n-VMxKV?x_`08Iz4IN(f6T)EejSH10oaW)#*9G)AjNVsa|Q2WJi$2a}2s z@X9^l#I+;t_1Kt7DpuC#mj-~(6QV3$W?M>Wq|*U-Q_hl@--s|6MJkd(>+Q|~VfFCR143=0hGiIm2fdvs1#>rLHfcr+nvtujI< zVH{fH3tYR3{6%>3HR}XKks*wKN^O&bXvAUC>~@vNNr-B(PJuJ3Q%|(-zRx2*J*Cx1 z*GuWp_`M8>8U6O{>*l&|IA3tp3iS`xeN5r!T;+EWL{VZz;>F+?(54t+ZkW9h{AZ@I zIWVvRT5=qk5q)48>%DPp!S@pF;F`C+zOObs zao`5e#2oo|jo;Cq>m2yA>V4u1V;NwLwHq7hAZp6=;U-9d1IKX64LsatW z+`KqUBMR+V8rSG?WXQ}|m%SpJphZC@$1;Y-Fi-&;!-%x6h~UMuZ|*$HCbu@!5JKy| zi#C3|hBqUMil0937euvuUT0-^I2l1+2``!utQ*gIk%*9s z%=|1PS|n5HrDT0PYne?(StHUMPT9YZ%bt-%{zLeH`?DAu`4;)C$Up&FOGp%;b-$qvqU`R|ns{ z%+R?8aE)>%Xx|*q4LCl~KR1BA{TW3z8;vE*@yvqpCGkvf-YOHolWhVY6PK?6q<8<| zH|6>Fem7tQ(Mp=_e>o?zTZ^1A8qvfZ>fL~*=#75qyZ?*-#uwY8Rl$21*DIKIGNRYf z199uvjA&-Q@;GJ4?)ytGyXH2G=59o(fF|5>$<#l=kpX+??7cJqT`sx4U|KOiFKK9aow2x1Alx)9yv~7c# zq`yvRMq~tO#vXfjZ+|P8DU)9)6hfMLR7OTcJQ$-0AS2NQugLV7_0O!xlc9K0R+0@3 zyo^Ju2vQ7a>r1xj}qRWHSy`%sByk$VZjUbnwa4u+hcYStY zSq(JAxy~XjBAKo)c}`mo!yr$S&K12`>$|Mdpxv9#bhccFHSXas2eoD+kW zQA~)m^<{D|tE0~W$121LlMS%B-H?jNT* zed&>UEi{+nW`Lit!Z+3rn`{m!>ut2Ts`(S}C@Ef|BE3jo_G@!^N#ayQ;f{pe=x{yJ z^LjkiV~&mg6b}?c{E5HPNWFM6X^a^?)HQkSVp>bFEojO6iW^L-O=&dGh?e)09b}X# zkWS!%leWwhFsNrch^!G+{I1A_vLC*uER0equm9pbOySJosMHuVpfboKAVUmUA%?Bp zHc5a`o@R(i=}Q6-FOmZ^K~cQfdPVv&Y)=)Z+(&Omj=dtqTCh*BM<-cHf)}bT0=9co z%2^Y^vJsWY&M~d`35;b?Sd4IcbPBMBXiB}Mr&BE55y*`1%D;f=@U>?TfF z<4L1clW(jh5!fLB-ZpzrmHhCM*E~~c9BEL_><&0gtB;|;y+isIkxjagUo_b~v7}A8 z4G1IQL9Ag6dZtnIlupZ-MHYwCfU>d9L6fn{sIfL<%P_yYj*|zna8lM3`EApXY_Ag~ z52I|TmN%XZzEN;VHxb5WDG#?A1;jNjd%}1K8_qGeGV>@t=Li3gril|1j!e%G$c!q& zJRI~)=g*)$^aBP$lBY=Tq>^bjz^J_NXFe$}{={dl=WnD4)1+pn@vaUq^sF+q>X!Vj z_5JdP&wu`-|D&h>&n+S?VN^54`)o|Fs5C2ha|_*P4+QJpGdjHtYB#1|t?NBd__U>h zuZ&%{nQl!Q&xir3JfyVxSw#+HDfIfM5$X5IaW9=an4;x6=(s69t{xHPjQ91?x#76^ z9?|R1jc6W3D4xso?x*3&;dj6HWJLS#5YR74>=s)+r`U5y*KPA~2`pe@o%P2o&s;R0p{ho*D` zri=xH9u(l8Y5YO87-Hk6vP1SbPycL@8 zzW3%%yCTnLAkzK8@G8f>7i1f79S{c*_s6?aB>-+P(!sT78BMSP!X6RP+%_qd2CeNa za{ZK9MJN-;qtTAn(Ke!rIp0?EC(Yw;8)%?(6%eTq(x|XLnIfY10UTa$izw3S!;M9% z7?!SbiE2e%W<)10Tz7~2FNkh>TgPh0GLj*<=LL)PdPVo@1!p1>3U55d%}6VwKC%2Y zz8e%nk2XzKB{0--LF7(DT?qV{`JD=FFE$g(5#~lJ8pErp)N%>{duw!L4e6&;#3$3P z?KDromu;IY%y(uA0tD^<*(9qF2?Lq$6hMVuowh%R(LT4RuUXeA0`#V@ch{dyuC;0u~ zdqV;zhZG)XHXNv+i*AFlenJdbr3tRw)C~D?% z5%(&?sPm-EddsoY+);-}8ElZ3{#<3ySn4W`r?P=r*OG_wcDeuZHQH9%#G>w`}+CFqjw@7xd!j(ajbyurkIeaytTcSoO$! zx~7|S!@ z;$p7jPIwkR9&OJ3*#W@foIz;`*rpiA8Z}7;HkBLnp9T1Gc|%&smVF}55_bX)OkuAI z;5rMoL5b0cUP+khXJ=kJ^wGwwC^sWKno%g(=EBnml~JislpKe=HN+@a5iT2P7ey3J za)}8K-|_{c^Hlm(^sI?~;xV7g8P-BmYl>cy#|FP@FDofqIhHb+D4#Dr5mOO!)~n&u z2sf#SdB6xY8VGWqqgiHv*1VDB+#@Gp#Jg~kk+Wb4bj-F0I>u2zF$~ih&`KYhr*}%S z$ii^~nlMn*4hWczP5#wdP?4_Cv+atH(GaRC$oX*2aX9m0f9S+uG-LHHe|c^3m;KCc zX!WDfdg6{1t}qiLaIpAwbPtXth@sBAw~UJi;Qiot_KtiZ7(c`h_9FLXRJ&u*X-@CA z%Qf0%$koNp7o0jRvX8pHqEd7&BF*@&EFRWGAg@$fPMQ6JXQZ*o){6<*y4qRUEJtKV zdksXd!?A2fZFAe0z{Y=sv}WECen!zj4Y<)Mc^umGi|CtgdDxJDwSDPp&sB0;Ft(j^ z4-}nApM5T@WNh-?M$7G}O5){sJ+hw-hjl}m%qk*@59wP47S1j*J=&wz+i1!Kd72*% zHdgEpDJ@t=RWcuX4bycjmUqo!smTY6_DPwR@JQ&-rdO&+#+%pwmlx%wPyF0`35CTkrJEqw1s7s`5_WO-~}osMY>x9#3rIi+`B|5=sq z{#YTVtLG_HA>)k-K2m5|Zopk>8{3(UdBIu{mJa zL35J_qaWy(Z)xGhgX(-Homj>`CclQSSmt(rSe4@x$@o8@BoSw z-n(G3s(w>{646?}*Pfdx{52x6L(8aa*kJAF1%=9pHxsy<3ah`L^*SXLKML*jeHn8! z$cQfq2h3$xQdDKf8rz)}ciMpzM9$(eG&*|=n<6Pi8&!}7uxo}u?T*v59xWq{>G4z; zdNm)P_i5R_KMLM(?hmt5HlxeRp&(jLpHx(EcNBN2zQvpeWT_RTs7{SGF6b}QO&2ek%FGACyQ(u(lo|LTQfa${lbq-X(K&8&bN1F4%F=u~@?tjET6#bH;a`58|9OzG-c5 z5|r%&%&I}xzTf6}Hu*Ov1n9tU*jhvSyIT(Xo3w6?iz zuK-nrK`}ndO2-bH=}Z1$ZyD{kkj5s z6t$Fe!6!b7mBTHeZw+9~yfdbsOBMZW2E5ke(I2gVO#`%$8%gfyup65r_0MYSoFZ$= zd+{!@mg+8vr{VbsIqHrO%mFhW3_CUSZl=zM*38#+7kmbu=eB$4I9v~1Ubq_5pT8;| zFGx9QnkLckPN9I)F`c$I`7U5X{K-eB{rWfmm(PCwb64Ye{amTu++(_Dt8#m+zSlGj z>J^!O3p)ex$nCNIxHRuue1Gk<-ETkEJzkjkbUb8l^=l$ccEtA&x>2q20Y2=#_KEIm zp1UF4Khw~b!0fek(*KmG-W` ziTp2}(zv}kHw@{IeffX#rOStIzQlB{9)Sr!h;$yk``M%n6bdr@qfoq#=ik3ZqQ54q zD95y}bjQEJOfQ-CMUmWbAo zr({)2S8uc!tS2M3>afzrAM1@uV2ET#qo=d>qwMKk7af>0$t_?Q-L5oOsmueukFO9D zE-yGJTrdsv(8oU4+Kg36LG9QByDJ5x684yg+4`OR3S}b|Rs3GpZZJQgJdDzr;9SsV zl*J1zqBuQ-g!vCAQgik|!RzZ>$GGI$#9WU^Nr)roOa)5}1UTR3h03>J%@^h&i`P-O zHrza-qq3#@Y8l3%3|Z3C(cs*bd%^dZ56ijnD&jc^PH-qbRIFxq7AWXRC*VnPgu>Vi z0>?Kkp5b%3&Rw|1)}+@L@co#jjE#XT7Jt7RCwLdiRIfr-Uj08Tn<&-Ka=pgZ06fDb(gsgl%(_qYfz1h4n;tQw8kmL=l!i`xHu3co*bMdu1w@0iW8H2}kW zU-DneOq&6jAsMM}ycV=cTBbA7uVK!HHitRpCuKj37RtE8jlE0KIl8^Q8>fMaU;xvy z_LUoXFiyR4vov*$#xxuQImgs7=8jJUl{G>RnkWfAPT%t;tt^wwDq>rLJ}Mkrprcg? z(U(nh#I+0PR|?OSMq2eX8o&5EFU{$3SinKjdC}wt_={rhDVx;F@QpR!#SeVEO{T>f z|8>J9_($H0iL$meU6N-Y+WN^IO6XKH3Mr#%S2#obWP8pVdz}K@JEX)-Rv)13<~%Co z1^8}Su&`JBRlz7@F_h34n-%B+gq=X7ou(cAIrt8Pqt6#Cf}K_9)U zj6ko;To1jaWJufQYE|f#GNeE8<-hSu_TuGl(@UmZut^D!#Y$YU2gA>ZK=Yud(I|`t zUHQZFAIQ7k_zj8uGb{SD$pmQ;K#)Ni^eUTiAAH~(Ibmc)IdPKa8ySnpXTy8x{5fg#S*_7@ZYxZBuP3idta zjYe#}z_LH1MbamWaHUeFEd^Loe54Wq!PJFHN>`P{hI{Zor|?U`mH5T2HFy^VUp677 z-YA6sELl-fQ|cy}M_Dz;b6&5T z83NiAS=ni+qC^pmsl*dYc=5fVpajKoomyn0cS9?1+6|XkN@5t%D%;Wsv3qHARIr(5 z913H^RTxbm_@gcG9~PQoKvJx%IRQzuEBCun_O#jMLh97&XPlGA@lY;z$ z>GEdXfe=eUxE<9>$-dxyCiN#`341zNh&cpC6kCo-rc=0&W5_PEQdUSgj7Sp);G1%) z^~G@!j$gur?@XgdYHo!0DB%YDqw}DTi_eeF%S(B;O<&dJUQ)458+KXIuQ4&3CgKgQ)L=os@LtZ<^grXS;E_;ozG z1jlWG1Cc%J)>1|XEmvmQwuPV7HKcGB}e7eNn|@k3-u-3UNz>KudY4vUvQ z^?4aD{J11?fNst@h&2Az;hFE`q;+Ijt-L$`)sO!xU;e-N&#(MrlUIM%A7L>v-`S@b z(+?FQq$LXr>}OGwG{4BAacMQx^8-(C7d4a&j;Wb@Pe$}l{U842&&rE8Um~*&!>=@x(8q!;L^@;;p|dDzKoXy&(3Y|= z-~EC7;LWdX-m#44N-;_b_0G_k{u}Ruu$xrcP15&@dvfcK6jn3)MzcDFyS1ojY0oj9 z*_0%U8o|NnN~Ey!mf{(r#-b2O_BZ=kMr(F@T1hDs(a316*Tg9WXmBXKfS5?WBO*Q% z*U3quaW9S%d7+|e_1$lb@p%~@GwD7|v#wCZ*cjRN$iQr)hcIC(*~~&FeQv5Pt{LN4 z4DIoOGJ+8yVxQ>s&1uuKw9joQSdhmt+xlM##aI_eoTj2%Vn?I1nc5ay+EOVnz+w{a zvqj&mcRWro1(;FJizSaw4|dYV>faHKoH8S^b;nF09_=xjErlayEz3jl8IFevK+ZXF z70rGzT`gKvw+2?!jj1Gdf7cMY`*$grEcmeA+s1#q0u4q2zB|%ln*+^af zG;iq~$zI~}tcaWAvsN1Mk+jdElkvx*ieoZD4sO8y&YCO5JIL3B_kgcwAu#-1in$=& zy~}>`-k_oNcku#q!83ddKNOq`EWUv5M)EdhjIdCqiKRj3*o${?i@TIdChZT6G+7Wc zais*sA0((D%ZJ%Mz6`@D=D_(whX2hp=DV|z_&or#K{yMe^Oib8;z!3vYjT!&W0LZR zvM9%;kwM2D94_F2G~RE(S6o9)o05Tz!XvRgk{c>l>nHd>@8J8xwQesX`Xm3FfAOPtpZ@rNcdt-y`_znFiW-61@hdC`ZW0DBzWVYV&ZHXZu%II-QZtrT0}Rt z&F;0|THl?quTx`e3bZriNkuj~ms2w-oY8UcBNot{6y7<5@oBU5&PYZyJT3{jRJ1V~ zh0@J=^7$}H12Oi2oKdM7c*uQ4#cCgI?zhdiP|!0XNgSjw&-;j*ZB(3d;;^+gRJw9# z*dKhBp=W(gFuTc9sBF*xN0Ae$d6)hiohix{wcV4g4JTyt#z*4~2NxLT-oN%L$@TkM z%5>>$@!s^_Zvc=@&~?X;wsG9SfUT5s@Cd6nB)I{Ou~QL@7q9+JV;xGSNGjEpoRX$o z;*h5#YT+FBs7>C*=yQTKzA<&v_bpDQq;5>!$iRQ#T}SQbJ@7X{P&B;M3QtH{$?TBL zKpLRah7mcYUy|Z37&rMB=SCaecuFz%c{b1?QnGzdZHc{=S?nozfcn^c8$s&b5^`Zc zO-%Rhk1o%Q$Ag1u*cfON2hIyt;&80k(`-=Db z>V7LiI~nzs{U$FB{zsi9S|jfpz%k-fMe!xq`|{u9E#%RvSkfSg^VV>(jI3xQ9k)pB zUbK=+Iq(MW=0%hDr%?|%9CDFoB_q*J59B{uMjqSAoeWn00o!4<69S{c>W;RWyP{>n zt7S$gd4$F2EcPDvnkV=!_-^jXg1chrM#eu&_8q(+z8tw99F~TN?Yv1U;E-pmIjp33 zx3v4tESr2bovv1=*T0dG6-M>y#YM#0yA??2*X`oiS)IO=2=>&52wy^91`t z^WK$?@DzsgYfn#Q-rMo?`k(y5FYM>rngSLRa}N(wx)=UF3Zt6qqF=|~+d%S#@Nc7N z04sB^KQA!$bDxu&pZ)Z&T>JgmB&E)cjfPw|{p!$rzk^(~P4bkicvpb=A9g(tN>=(dpO93)gmL%!{ekDbuD@;2?ReEZ& zwMQzo*4p}{-C5BO|2;?ox}R@7ku;Rf$9>*5`@_mESTpt{>;DYk1`F5peZvWJYg>10 zZ%(v-s9)6q6KM_=$u4tkS~RU#8!b6#8m{?{j@XR8LNQ?fWav6?d!Ls^+1;>bnqeBt?R{ZeK|#<5U;~(#oaQO7A-ZlbszxbNTXfmNNkOHH>FJ9V zd$E=o(aww_SoL-?^0^+so}yHgh1~~CxE{8zVWe?I2c0zdmouRhMv7^U)s@}!k`)d! z%GZrRM)|1Jj9IWE%b6|uq^&PIuscsFohl4FI3Kj;igPj(XUe%E8_89M1`89i?H+Xr zCMgw-v`i+=z8QE5BY9KnJgYE7G<$j~_%ebIJDdY1&n1grzHKc7-DgUJUt99a`0OhF zM7x-=#2+AGL8pNtokg-|$IQeX74kFF%B0}gIZh5IUW21rni0`?kDE-h2uNGXZAJzk z;N5)-x9(U>R8h_>@vM!z&3ro4>kL3oo@$vTIvSs4AG(u={KNZ>{vA*X()p1z4vcCz zuZ@v}q0#1t^I(E?$AME3xsQjq!baLu_bu0w@9-Zh91*j7Jo%on+0Ky{g7}N)T8yI` zWRz)y)kNb?4HiHccxjC3PK15R;h1z$pT;L(QM0J@1O?w|Iv1a3b`}eg<@mS;UgK?{ z<6v&wXdLZ5g$v2gFd>;`GV|3r2J%vWuE3K#C;}DC;IMn?%nber9dB)5na*#VV@szU z=_9t21dS^lqUv=B(kPZ%A~4~&zhfJy`$2r-_W^-J-oH6`wb2Ik8Iw|rE<1@^{9f&&*IwBS>19Vf#!pZ2z6L0tEW0c0F9WV&a4!3)gt~F9 z-DA>G?gMtHe87&xt!^;?ao_pbw!C_>w!FgexHrBg{+Ir}YbZfDG8qhcv zqCWckU)ALiTIm&UeEauu-NK%15ndxt!Ds~V-Cz5~FU}V(e~&_rjJK3>K*Fe4cg41) zdzH7RjKsTl56q<}80vjScd2o$Vw zx?r9RN}elX&d7$0)~VIn@HKsRxSt+FY>nVW%!okDpI-ellE8$+$Tf5n5}L0m*kLp|#2ltYD!OPI9la`YDG%{0YSY9T{vL&_qwuUS zC0?5A7gLzk^Q)H^DvcJ(5hJ}UGDf=T3L&57+QZCDPAy5c_21HP$vyc}#-PtMls^{F zI~pugd}^g!hG5^J%jFW$hndE>-wS%ms8Z57=tx4D@YG5#fCKYg6>~k4MKeHmw8 zDmICt!kj7I#OInLraA^#qpe5bblA4!~SJU_E`IOPqeorfu_`Zv62 zvIb98U$l!KO}9aNPN)amywa{y)d<@4hWACfalqz*2j73k2PGn%;r{esa1xr~yPY@NKd(lzPxf_Q z9~EUI`ZEe7Q21wG4+Vi38ig>8H#xfBuTatlbYUd& zAqqGwBFwHBx-io8*wY~K;UkARqAiuO$#upNQM9U}EJ%fFahrIKXk&bk=3XHq~U7F4wk@Aj%WTl)xow(K- z)rxjBHmVO0O??$fia}g!!zBL(V&Ucb4kU*4m{V_(;|Z-`^P?rVMzt=2fr|>^h~2J zry35m6Z;t54s2!>c}adMIe(noF@gtBQ#u6mC!|5isH_1;f+xhMub17b zvC_dfq}IY$M1C?`1xquygoF`lrn7TxAPdS3B@cFuBi5w)d_}r+RHj{cUwu*XO({4o zN5!2M-5pwU8aN1g%(UE!z-N|E+dMeZ_=Ddtl5D8Tb4+p-N!ab#CkiK+2n(K(r#W7l zv`iDs1?Ejt309;@Ys{;`Nn&t3kd9Rnrd~Oo&QPf=jFPP;JsV@|uQkQnif^z61^Xsi z_n6UH%aLIaaYKvl0;bZU!l&44$bmjRR4lV1l+ z?%cr~Erp2)yxeg9@C);Gf9V&dyyFS}(amx+v) zHc#9&gv-KQPP>=!&gpysX6ls(>EVF{rhHGVRUQ@_NXc;*PR&U)J05#gGl_Ju3%`92S=4bFvw$xYx!*r03SjrFEGEqQ-&}oVuN9@os zO1~m4jl^5Z&C-kqoPLxW*}rSQZh(&i#nM8zx;jYdl(9w&x@Y^Sm0=rVN{dHnO~cZc zzkk)S=iNJbviN?@lZkCSqk=8Ea|Nx;PY3gdZhrNxtBoK(^XY8uMSNcdv>Vaw@J!g2 z;=LV@UcI+9)`D-q zPrdwiuO~js=R@IwaFX&Y@(3oBumZEglgaqRjp(=E{F)rk-$6m2Vv6ZmrlQdz5V>~B zB)zbG-D#{rF&O&w=gP{A?MF;XL5TG`#ViD)ic~L6B_N6dU9N3J1gX+yrx?OT-ts6$ zBh5fdW1h;%;(3Y950B-=zDee*CK>U+q*7ApcPz~0j2=ozdh`uSl#hohkH9l8n_(3~lk+%T zG4Z`9Av_roG|2Bvk38{6gRw|lb+OX~sld=UY;MAsiodn7(KnDn#zbbrf2Oa6vnNhY z-0zAQ`$gq04VEy(OiP%Bj={)3=LgRcKHm8WAk54Trej8C8L?3rhzbmyG(zO4tcW=i z_StSK+r&9T^r7D?iHm34bOm^ZF)rOO5=F$Eb6t8^OpT_In9<*b1KQrn0$@#H^~kU^ z{6e2DSW-bp)aw27wpKdlQ1&6Y(hE2RZ=!LIeoF{vZFnm=V^F5jIB3R&AQBBjFjgLy z9u$hFNH~?^7_Ch%J;{_@5!uiKeWs&nf*-_hDtcD)B(~vp)T($Mrp8r~Us}11rQ|Pz zWu=TR6Xf}|-RBanp{tpEy*_nai+jxO;$DmU*Z0WYxeGC0y3_6hgsC9-0Wz>Q@&@ywxc*eZ<+^PV3TE->;28oR{3RD6ww zH)RuPrWAK>GnLO7^Fr! ze2yJmBrCuN4qR#u#%`?U>y`G<$bJG!f;_M6%a$#9IuoGSf0G7NKgf20``PYJj9EZb z3Kj+#oBRnnP#w)t*&U41qP`7x;+iBZ!Ux5k7```}lE7EjAy?MtDnNF;v*}18#Y1Y2 ztq(07*gY_luZ(Xm-+k&MfA?$aTQjEDvC_NOpVwc4t-%0Z)@Q;}Qy!1--wFn1G@3=n zuE!_a_jRN({R>|nS$OOkkbEK$o%U4k+sD{rntw)RP98k2=O3?%-)7PSL?5K%ecxv@ zM){f3>c2q$x=#}KkLI;#Kx&w{=T_vs{uZLVaW$ToF}+f|7a}bqI=8i2$hMGcoqO|o zP9h>rW7?0;e?~Kv;`OiE>sP}%5&3%lrB{De-E*{%z8&BCKmX#d=!eFax^kBEq_PQH zGXBn*cH>l}^#40~=gr^r^&5_;FeLa)cnD`I?wc_xMc}!<2V#QCtTh8BJZMvxLba}Q z&&**WU8U6Oq90vxmFxu*T)VOimWXy4!H9@-6ZvF5nX+lwx^F`R79IETHzTN$>B!K6 z(qW*@BW^tSIwO?VneomQb_5yl4|Wz1;;c57@$Q=C02LM1_@ z3=}Cr$B0!|qI~ZC;p#_@iE{%0jb;Sqovr|B78w(~yKf!TmA*btXU{%aRe7*mgr7Ll zg^i}Ejkzl2ito#agVy=H*Q!scM9)r{0c>kgdS-+$n#^>5<}UO;81~#`i%b|4v#oCh zP|Md&;%}Ridw6rAfx@3ULLr&eFAZQQmS7P540n-7m2*;sid!jwx2=ydckNo>Jm9bP8)6x(R8&yQ~W&-=c? zpZrO;Hd1O4R#t5#Kh`~cl;?9CT8`O=6mUJ^1~W45kLh%nWJ>;d?P|T(@;y5R?Q;=V z$y0UHBerAXrHx~1&9xEs_Xep+K@cVP;X!$f?y^Pzmmy>=33NVF_+d!<9QLtwR%Bea zJs?vg6|KJ9hZ%Coi&H*wj1Kss4GJ8^5*P}}LD<*0lLnMoU&T{62b3|+&)BD-bvOB= z6m9ETQg#UG0_?{=O1%f#-n+Yn7fCpo^3q%ipB z^Sgij6MyZ?|IW6zG!8$vw$feSPupRA;ekD-eJSdBE36ejeC+^eK$pL@jq09U&%JUz z_uAT9dL3)MG}lcdDESn-9liGD*MefW9hNv_wMxn{< zR|>#mMxnd$d?tv~q^!fAU0<-7cwV@btV;J3$=t8KM}M~U(TG4V!+BNb?%p0ZoUcZ- zT#e}51)mfuo6;#I6yE*r@5=K( ze6y|@nONNCMzq1}iHqsE6)UEnEm*!=TU%s|5vA6qY^Ep)Vb_G?#@3smoA25fI1Rv~ z#!tp-JA>|u4_ez;G8iR&pJxu*ffULm*Ky`Lw5BxW?G{c2iac&#LfGf{M3Cw(S%@dn zpYZxwUgaFS$tL`%@au-qk_z6m63)a%NyRj~l&P^Pm`$3<)>_Be=Z*Y9cbKVG6nu0= z_e3M?zid6nznGwINLObiZ?YHpT{ak;!Eow3&$qo|dp1l#q577N54>Yj0Cndc zeZ2Rq0qIT%+iuT!)dZHb+hoUHk#pg={XLSpa!{b%yC&A02E8ram99dKq8sV`kT!0W zlK_D+k$o=bLmGz3)Z_%n0-=!KO3~Qn5VPvZxQvrws2kw?opYWdS(<#D@bLa28gw2j zaWdP>-fm59M@?s6XD_)odAxt5H>I{Lv-Ad$rnFd|{|J5!ctdVR{e-xW>xRo2V##aH zcqN@@V4ec}O_nt{<#^lRi3-6tMN~Vzw&^1MskA-X!CdrwGjNYM)ZU#=_BM!)^K=%- zb`S1rYsxn+dk-M>y>+R72?rF%Z;?@z4mYthrddOxqr8tDYpN~x)gC3M=FIoI0}=Hu zs$Z+UqYsTP`kFO3xB7SPu52>f_!6ShrH?6USpWwqk4R^X&Qj*419=(ts2-oVo6jX0 z=fP#$$-gycOG1~ktlA#M1U2911G@Wve2+ zLVD>wmN3dLs($DA#vlIWPyF)#?VosLy4e!4ijJZ9m>;KorTuuopq5X5<^H+r@r=Pl ziN&tDZu)9GdmX7)U%mg_?c-~-`ibUu0MSR?J)7-V*KVIY8Mn8$v)O$Q_UZk0sJxGl zQ#6`JK*}%ahVt2w*4FZn{92M6co@#8JeZ+RD{YI z^=O5gqy#R7*gYi!uo67KzIm~nE~*W4!$MJ7hDf$OxQ-li3l6*+R9^LruPV}MiVjb? zAr1I3nwW*U@KA4KkG!V5j&*QuRg6@^W*aY62o?}Y{2oJSNP0Vf71!BOL5d|4xGwziHHpGB?C2-gh6&H1`?ItSUz2}m?szQOp%L4b zD551f*PeQe2)H(S5KV)N85e$@v`R(7N)gEv>smaU5hEHgy(kdry3KOpL@LSAV2*~{ zvst5WNnH*10nfZR+FIM!=)_PwFm2n#PewT$sOZjAph!o$DRg0gA?1~tt+gVLaE!3< z97oLznq>Qs3(}U+BylG9wwjL?$sCB98$e{oOt`Wj50{1n@WA`ps{puSEEor~nku4= zeqL~s-&4wRI)YTNel>VRr0ZX{d671?ReNG;@PKqAaz0>4c>)ya%eo;0+yvvI z{LDz7MuyI$!B2UV3V*a6#n@uto+hol$H1p8)3{mDc)us+=LpuEQFQh#aM-~6B>Rzu zk;#@CTU|TkoRL7-r_q-55bK6R{4i=6#ln()OW3B|U@G(kE_C|ZF2;56z(>fHZsxIH6a5b77a4>~M2u@34I*)FjGV4=_G<(x8eF%`fGe)rD0oHy zq9juUB`!XOcn6UTx|;-V_HFZ$Co9q4$>(5CE$}h7ZnH`B3w}8+nT}65te+Rs(q%LU zgynsHuS6Ci!FA*LebMe}^GFua$PAdPS(YuQaygy>~p4Z40cvJJC9x zKJbV~rx}^%aocWKM)dh@#QhbSMzlJBW~bZ!G$Q?9$&m)MbOOV%ey@q>=>Y=L+BKxS zaGl`m#65}Mw~|Km^06!ri+^4bmjF7)@Y>f^At;hmfJcxJ1{5 zW6Zr)rPhWfFu}w|?|_^jUT`D>yFVNE4=NcB18qu%QP(o*WOok!WU8%Is`7IbKAR1G zso;@9C_K;@jc*om>1m|Ov7vLBlAGg|P1$i??{hnITemT-DQx7 zFcTpkBXk#U9F`c<0WwOB|^-ZaaiwSyiM}%+x)Fu_ZVRl4MVb+J}2z|5J z7Ur02nH1W1iQjIPmG~9%$WBUB;_iTg-VJH;B9k;4t6*U7m5Qmb`Q7Ah$tCW}(cQE2a!FpdGxX8}KJ~D37DK5MyFXJ?za8O=@Z_R6^-uc+>yR;I=G3sJYYyKFAt*8E0tT|1?u~{oukkT z=|A;9`^!Hwf9l8o;T2OpyQc_pNbs5ml?Okhu%RN!{a$fx{a!`I-ue1(2rF6#b879^ zUP6*lX;)lHtkDT7tEr46g8);d0!iX_0W!j~IV7uHh760gv>6}DD2G8(Y6(RumrUV2 zl*0ayu9$IKB}U4$ELp$F?K(s$RkSIjQbH6_qS6y~p0Vqi^&H9IoAP$Sum~9WDSBuuF;rhEW;Z6bg!zcn`hsi~T91k=?wcG_aWQx$} zU?VC~F_#%6EZ*bY(@;{qH4G>Efb*m9&K*`_=@f`#U@RnbDc(S&#VaR2KAI>83R65KSAB{-Y!pI|GFB=Ymr=X3#l%O(E zY*U~Mu6Q5t%iu{(*_LA`EMr{$9Pv#W{h(l3I;2ckI6bpI+?fVE8aa>UAO~`m0|w7d z&FTeNdxH+EMXjSPA>x>JnHKN#2nN=va-QziK)@>~|G3N{aEi2M$RgL&8%(Tdj4*E* zR8{n{9L3i7eXeIt9&D}3IrcpU{$zmFEM-<%@ggk`C&$aQWG~E#REChj;>Gi#-H}bO zkCf4&KV0B2H_WMl&n+OV3gXLK(^KAwXBdlBlrkN;1@@-iGW3P^vHgW zO+H_ga#NC?7+6`dXm~<<@h#5s1g{JjVDbPr0q2gn3mmGB_UsD@QC z#Ra3wju+@xMCI3*VuME2s?vQ3=bn6MhdXiK0J~${pvya*bbJ|?8~O03{-Wp$AIkZ1 zy4WUWKe%P!*6#X;4pVhq>pM5!e&?V4`oHy$ew+7vZvC@@bWHJHhBPu`w-+p9df6;n zn)kE%+Sg6{p3=8-t(#8UXhoxMWw))qQtPGrmRPV}0i);13|v~3>ayy zsfjcAi9WF-hpn(UyC`Pb}w8PTC&HdEE2L#HVzgVbgtBr3nM9ZYAW(l@ub zeLa^7)#;e+ox0Jk3g!D&JOnW7Mr3YrN8^cUz_Za@4NuZwmcqxVRvztLX5ksPO$kzn z9x59&Dw@MJW-7t{ZaYP5RE2w_y5Z`Y_C;cAv(?DRRKGNm+g~{is+xM@CZbNcU6K^( zW+Z>=rj$5sfL}1O!e^onMoljjcumEv-XH0Omd-(PwQN5p8u$i2dC+B+?4@`a4QfVf zlFumcA4arcB(cOqOCb$n^!G$1LVfwLbGD|luRhb=42tZEK+2OltBwYaFcH%qeNAO|v5vul||(# z{(Orp-v*Q0U!r~t`N+zM!nRC&nH$0r<2M$l8Ze@Psa8?Ua0p!-A6dPg5@bCysHwP- z7aomr9$E1iV|#+}SWa{P3)m$L9lbf;l4^(R5mCf7Wq-=0AmGD_kaPP{sX)&m*4b|I zLpp@gXjdB5bP|JynQU^jM_#GpZNVlYkV*2o*>sG7d2t;CdJNg)#Wa`7r>3*?4rz0yvTGTA$s6^mB-W%Ad-?c@ z7k;%pCST*1WkmBkjcDu`o^~4!?0szVK0Z|5e}|sd#ROfhf8V1jcj%F-nd;p=8of$)Kl-`#`M~<< zd&lz1V2!k!(+l~&`e!o|ogN+uBl?d^=U(4Gdi&4+i&=|qmDc5Jr$o{ylh&4|^ckgi@dgdUv?`aX3!c7SNt)V|-f#3r zn}RI(rtCLgAx%JtW|W4}86|fH4ALoJwxyN}yx}y5$Ov75S|=FYQV0S$N3viD)WAeK z6HgFRU=$Fyxe8BVDg<%53AqN7G0Pa_x|%BK9q*c8)&@?S>F&@RQW49dS9l!5V00qW zj5T0EMop#0lT($;k z(aHTZFWKIEZ(iOj8l8i-%xc)%trRw%>rSsQEaP|LvLFJWF(Rhcm;0e$VAANk&9$`A zdwarEH|;~s?_F6J?bx_SfVrP3X@P4lxppisWUlz(oYo) zw=&>Fb4?`E#0ldp7PY_xgjfC+OE$^WafJqCTKyGIT2#O=(gZUlRTYXas`_ig^QH{l zfu@q5p&jy*pqnxt*7ZpvTEmGmbfXU8THNj6_;v;^84Wfo{*m_qmyF%E)CoPEHU))( zXGh<-FF0Qk~%TooV9>K#77=7?0Y-z4^d^SE}17NQfU*-k8C!-dES6)%?>p_2cY*$y z(L!3NzR^h6?0ff9Cd`c_O2A3%eP3)Xo!Hv=OyYppJw5lK6x#Jn?5`YcSYty?aF(pW z98~%{d50uka;ZlYOvL++nQhUrnwdS*q!(+l3uMTws5_lxnF&G~O1`PcnyQrZaN@>2 z)mx5_m}>6yF1&3^9V8rAbIg?En!I;J`n>M|LfP+_pkk@*QoT*iLe0K8@T7e6z{ce8f&Im z=P9Goh)Azxt*fdxKjUH)9$Qgq&*ohP#~6)XM)TT7TA1FwI{0|E%e?z-E?CKX9k;i> z=dq>m(j7GK!{dDykK;UK#h+Ji2d0uY=!Lm2L@RdR6CkuMmvrWk53;efjYC)kecPTx{GR z$yp#UCWLBw;R0YqR?CR~{`Tk2 z?mB;g=X-d&6@_ zDt|8}`^Ew`!)n~Z&j$O%UmuIWq0p$rJL`bFXeqO=_+Dw0;`JN82}fb?sU0bhmgvchg-Q|A72D+(d9wMrXhm=RG|W zQ9pIq$Fr+#Pl;X577czGeb}SBs^tt0nFhLVFe=#ud{&dqRW=LlGg=4Um+Q`xh9qfb zfHsFQ>fW9;7}f+G>HS!^2Ht!${(KZJlBVN&Jfolu;(5nO;sxb_>;JfSu-`dW%RQJc zM@YFynI&%l-FW-uFn4*wcUj|Y)FC=jie#3ENb$Lp%a{~KCUeWdhGzo4V}MWeBJeci zc;hc@Qvw;LG<*F`F`h{;DaE0 z%Gbwp|4hs>Gnxz;J(XQk@8dX=H)5PxtTgo@scxn05L|ort#8O3cF-yEXgWMGnQ{w# z$VoJ7bX9X8FI{49>8p*gjA-sN?Q5i8d37_QvzF7^Rp_+akRP;hX!qdQw#a(=3$_w? zS)keNsCC?~4&Un2*IwBJn5)QhjHRN>mIxGfn%io(2427Ssp)?2$K!pO+6@IjH7a(4 zuL0N#YtPlW(@3z5lAf^q`l`_VT1z$H@$?OQjh>Z$aH0J|qG!+GpLrx}-)J|UR~q-i z#g2eXnOMh4qqrjOLg05^Zhhwaq(+e%e%{^agny&ApcorE-oA=#N{<#j z@SLic?35bqYZ~ypK`}oZtI+8%wIaU6Kkx*nt*O+-3g_y^bF( z&DaPl&QnuU7#s3mm=6JeWQrmCMnfPSKG36lOyC{qR1ix(Yfa(qnKj0DL(wFWy3#dD zk@fZwp-YE?G~R+SQL{*u4d;7b^S5w3`0F%D7)|(@X;}h1gl>yQe*9rc6lni3@ z%bQft4jd}MJH#CVg3Ju2$WJPMIdy~;XlqcJuk*v`{6axJjIU>$WTdsuNU_E?KF&Sv zVkU$4StJ$UUaJ5F0;)wVe%*O%H#TDJyOyyAewE8&RHR3p62~?0*2g%lmKP;&-sza^ zbf!E-4P(p&YcX)HlE34YCP|!N6x`nhoq=iSlrMB570=f? zZ8B}pMn#KC$1r7#TQr{KLHf$6( z_7w1eO64hOrPL}dEKcdo|t z8(-O$nSKG)yI=pp=QF*#qS4pmt6$BRJ(CBHWglglcO-iI(pcJ2S6k~fqWn;!fuUjztb0@;K#fc`)&_YhQbvX>g(Hphd0;&mBA}_x8Pi~90aF(239ZKP3BOH5rCLPV3*P`~ z?u2w7_jAlcX;H_Fe&I{%^ zjr*B87930prw#rlc$&}GfMI-X?Z}u+%->N4Hf9n^sDcMXHf)R+>)}@cp7rVLG-GMP z;+H<|%F5b=<@##cwiu*VNF`q2vI@Vd?iQ9OkD)@wa>{ z429(wm`DpU_h}an*jbW(@G@L z>Vu~RH}m<_FkI%Klr!O){dMhb5bi~5K0X+;DWe!AcKp>e*3v--r=zd81+Vh<+gO=8 z>*LEJB5}hVV6<@3v)RzsT5oPi!|p5toO=ckZCNkGsKx6IG#U;?&3Sab3tS}cPN!FM zYy`e&WcaPV!$S0~QQwF(BIlnLqSbW+?_*mO@45i!dn6)~FKY7AFx+N1xnlytp>&7( z33UE?#v8Od$ScLT`##O-Fao?7?N($pc&0@QO8F2c@R(J)DPw>wi`Rs+1IFL=`Bi|F z8p?p|pd(iMALPB?>pTcEZr~8$u~9c>CaoxBQORf;zq5FWMTSP!-pGC!Xa}FE>l~@G zq*0!{NrW244`tK{Bedk-h74n42&P2vaKuvl;CJ)2>sHEHz z-nGW|;^lAt*x&f+kIK)55&h8Nwh4lM%bb3_U8~6SBmei=_3tCs==4XhW;%B+y4pvp zig)cQ9g%6@3d?`IVfU(d`}V`@@y7s{Zl7AIf>h%pU>bO8?{|ax{b)!Btpl#NE7Z@B z3;>&+3SNsFuTypX4{NAjxq3w~Wmj*>bz;}wFMQd@yV4Mztl9Ongr~dV+@sO!c=To= z*Q4vT&;PEj)Cfnq<=I((D@CF&;{THd__3e(fApUKq~BRt@pzeLHT#fS=bnxx2XvjjQlF zR&+Pgrz4$pdhw}?r<_LG>H583c9|iJFVC;AJ;M3o=Z?5%wQ)1~7yDG|QSD^pNXm=r z`UnJ|r;E?n=3_9G6;a8UQ!6pC<_yLe4IKY}(ZEq9zz#$)gW1-8(UqDReS%KspDX(9 z#bF?DS5p^E!$9#N$5KP2R0IXJiW(;bx?;Z8{R4_tr4di0gi3BXwf-(hWp|_)l`dJ% zB=gkXthfw#xR=>l!4fD1!&8KxU*Gqx!_3W@dAN$MSK1gJAz7byvZ_q4HOWJsUt$0J zdf)XKd-wYOt2cao&Q(^N|#@;4&ob-`$*KF<*jCKioxSlj`=ZuCt!D1x6X z9u*t4EbVSpQ@#EzkhEg%tJh#$jgT3t) zzb~`QZNq76iX8WKyckGRiq8@PKpfUE2L6;Ce56{oK9WgP48I(yHb$C8zawC=;e zi%niMsM#oLctMnVfF530e~X6PKnNbb_>J?RLwtLt3mtz4o}28G<{rhlukzHEof3vu z;Z!NozE&1|=SZ$1X#mo|iS@HeQk0U=F^fLOQ}*2fghtnqiahrZ59jKYT86oiaR)5$ zrx6wQ3gW;KhZ&jw5l)UVF!oWriS;x%bZ*-eI2*2aZs8O)LL?1NU-ke4684|t;lL79 z1us9^_!RW%a79Eg4RaqS4NlThSeYt_oWq$!9v!fT5w>LOUGVQ^{4Xb~j>WJkT z0~sw`mSOm#k>}@Ed(S7H4gPvVc-Fkg~7NoZnpJiF#e*$cUvhj$xuXlEV@S`+99Y42J72Pz7D$NYQ0h>I;FC7c~) zkdEGejEBYh(xspHN@qW$naxT#5rIP*xDGkvg&^q&RVm|^H0{q-NTj0a*8TwN$!9cm z0|LDG4rxvp3<%NQnqPCb00GQ{uu5*3oYhJM5I?r!CL74%2y)IfI0lH zadEtFB>t5s<$l_HoSv6Q*JyMY(vSSSr$4mC`SQsteXK|{O3RlY@KhGu>5KP{wBfd}S?h>(~3Knf$#ifP6H7BaeMb1w>nRO#qE4CZ3B z1OUh783U2mF5IHZ-=|gNh|>{@H2O9bMo4)rGyMv*GGO#?R8BgwP~wHg0&pk2)}l~U zt91$|zQ)diS{bQJ0A~S`(V9temcsv7hd!Wul^}6gjw*J?IpjXsG*C)_;XB)vGHg1Y zvl4tC9pRA}Qp5w=DmeG$7fB-p5h6*$`QkIO?6KZi7ZvZDA}FMIIlh8cBj?S0dIj-#@#w(QMvru4V) zx3%$ejEYaE>4ZBCJOdo7PZ(tKLF+He7XgQcB|qHhPxG1Cl+Ud_+u>wz_WA$rbPA)1 zMH=sI*V1W(a}xyD;3tT*s<74@oh-4v;VArT<71|VpiNCf`1JmOLU3&IM~MjVKuUU% zh<1*hd`$o^%I<#uY{pq;V3-!Ijd1Dq$VC%MJ9@UXm@1WSpeo*^$t|V`BVAj>mE~cJZOoX?A;KzOvuzXa?FVz*yagoAnao zC$B2dM^;YI59OzAvf2GF#(-GO(T{!R)oZ&iZnKbzz5o^v%0hB9%R52b-+B9Y-~P+* z{@cI#+jlR0(`2Q2e<=2qUdJnKORQcH`R!97vbR3+Ra=qhFMKsJZ`T6XZH@H3<28>? zd(p9e+@8KahEaX}&OM`3Cp~}W_Qkgrat>EvAL{#PJFNF(L|W2_zJl#ZPv7RzE4<}H z3z6ddW1M=tjA*~#jb#ht`4y!xy)M1>^r<~$MEh|yqF-lP1FCg18vO>1XdK;$=0PKR zrCO}Rx4Zhphri@MsEp)6v-ZRoogks45C;A8`nOWLL#R->5qPA7w-0*Il#I0*0T#)+ z{ma!lR3Q9>t2z)-n{tA_xF!uZQJ6_Z!jjGu9(?>H( zVdL6OzCR;ZfRBO%V_l)`$}3u#+V;YqdDVQ|3<(m@2+S4tJniwL&jarTIcodXeFdcIv5MVpDQP>L1zlm`Vu z%UHas`sP$cTu3?)>1l%5-#P1?<#eVX-BQ8aqh9UOKo+aW58Lqb7;pBNUTn)dpzJl_ z%n5Y-jhqHjP`c7#)b(xKv~@pjDflx|7j%w7P|NTgeb5+(fVPANUnwbqOozwhYbwmG0KSv&84dZkKF}s%xfivX`CFvpl_ajxIcg8!8ga-$qndoAA5I5> zO1@9*AiuVngMMT&MbBFW&l9c})|$`cy~W?z7imhX0XB2%|BkC$fP#E8`^WEEY1`zl z)-!%2vr@=UBEv&6-8cVmPps<~tm%(;5JN`0pE%EGa>xeo#iI(_4HmgWKbftPeVr$q z2fce%QR6kE-R}{7WDJeYCrw)6JJu>`a07fpKWK#x2_I%qwe~74-csIr=7?zWc}aTZ zxO&mDw(JDFpq$?FI(?*_vOp&%F zWELEha$HI7za7p^Lwg42Lo6qWzvxi#X{HD_uATZ=mn%N|Lo4c^d?x@$onVtEthQq4kgf78#WB(2=iN zfA4(jw^JucAT|9ooS98NHonSSPJ!G;Loa{mr(XJ-ZbYx+=VFJT71;A-rpt(4#`MWv z>5=L6`y+2%jcCDI>Z`r;2*JdA#|lC&8|oUYeC@SUe41Net%x)WI>U%w#&M!Ux91jc zxRo)BkKwur%@>pR+oAG4I2f|0hoKwN5*H-5w&L%&QIY~lkX~Ty@%p^K#T7oEwymzt zsR`YXj)-)mdf%&TCxLXYAQIiTy5g}ac1v5U@bcgJOP{^@b1(mfG~vUv^+L>r8#!#0;QHmibb z@m9*_CAv_`8==Isakb6wTG3%`0FL>*97D8g0<&Nn-tby2w2WLURs^QZ$^9@S#Dlywp4Fr8--(euQgtz z_pmvh;(VXB6)|~lhTKJmrlk!zxfymOcE{KRodd0PRM8k=2 z^c4A-bmnskvW*B-&4IPSYHM>FXF&{j&NXtt&r#p|9^=H2Y{v)2-3O?s+@thu-V__j2IvLofD)cdS(x-x!hp1O=`P!?tq6%6x%fCXOF zadV$4jL)o`OdZ!w^D5T)U?JM{>gyHN-YP|RSStKHP3A25#XWhQ{ouZyi5K)-8pz&v z;%dpADO2cZuOT!#w9bzKw^q0=c!g}ns^NL%Sgh!j-5H=u_BWSqNYovGF!YAQkxeAf zG+1Lo!MpK(E?<*)G>fhg=4s3#=-?^&x{sOiuR$)Sn>4`li^kJwtl-z)uaYCihi6fU zGGhU>Xd9fH&YJW|@GzPzCm9AO4{*mAu~g7Hdws)@=wdp<~%b~{;Y%nxSt(vbdz zU$|b6WwhK^db7p6R+Ux6nRXq=XNibGjrxF;4Sw}-|9%L^jr@?0mdc$5wLCyvelV@O zJQ%>x>(3`G-)QCG-wO7JzIsB|`e+<9qCa_^{71JtLePk2O2e~9&-5eBfM!}Zjq0~s zM0y>WHgWy_wU*ND6}zuS^>=>yC%%-*iI20qn3_Zrib&Kfnd#LFFE}bSDvCHA@5=M< z{a#8%C#b77cF|Hibwq4wv5~dLbhLM-vL#J%mJmR}r)Ki4@@i7>RBDvBwHVI4DG+)EgV(b|B5XsHM@`jJWol{2*xo>`ztqW6pG&dc@OT_{?HHDMag z2K36;7;|fmRA?o>``TDtt3<(Y4fn+>DjKjN#@w)bFv1l@Uj_u#&{D7|$X8S$)@Uoz z9KpOfQ`Qa3nT(Ul_@sj6;I-TuMK*=e5{IbxWttMkDtWKu82sym+A(M1OL?p#4`HCs z$=H!&Z%r9aBa5g&GPW2)Jd%EOq|9L)1jeETz}EF#6q}l0!sV&egdJb93iu?(O{sKh z@*S*gG+`urN>AO_L{*hS1Sth2?UAnBG(l@@scDlVqB>I>Ezd}4O**3>AC>+ax`PSR z;;C5l_vcF)K%tOoNWRt{4AWDbt2|9G7xPG8J^q$7LXmuZ_hT z4s#J6rUt$PE36p}f20ghZPY0nf3?m5gixnbj8QeK3uQdBe_i)Nhu3%x*$*0ir7%mq z*K(y!w5<{0J7@&K0I@fBc*@M zG=3|})uK`o?&t%~=ANy9$?zv~Imx0!&_U-TJmw~63Wo?k$Nm}X{k>ubaX?AqA#Vrh zRzcIdtI(2H`hR+!CoO}XW6@HwWe8mGjIQo@8jj*R=X2KRFxVpbPLiKHh1XZ-*)6)h zz6_Ea=VB+n__5aD^4MpEXc1IFm7JEbwX}!PWP z3~-&#cfly5Us~G>qDzM#FTE_6n->!om=$3KHMBk@4Sy4^z!WY5%7UIBf9Xq~6Zu#D z5fnLIb_kc8u7g|jvfp2TQN0Xmu9x17=}%sb+9#tJA?O9BjMa8=ELXW01&-EUOwAXSP6-s&E+n9LO5LU`F z9Iq<_ifi#SdyqqLW^uPM6AomoqG?NEo>Y$D(;Xq?gUzp1$1cuR7B!k6zmcy zZ6lcBKsviuk%bZzMhqCSj|EE4s5R1dlp!LiFlib_WY|{Th7{cUiGb-U0G0-!mG?EF zinKlxOJS4>NfUSixUc!SAkTDtuLy+HyqazOqOv<+T#UrGl^T43Ght>#kRD{$73M4j z9F2O!nz`Yc>Q!Qr8D8;zroim7qrBk}S-{!N;gg^QKu4uY1 z1DArAwu%bmAF~t;H^3}lSM5a+G*)vZZfSQks#LVdn(2jkis#TG41`Nka~He1$)%(3 zE`Xv}Jpz*=MA^2aF2F)s|P;o|Z7HG4FKc>srxI z=dE=`dL4+0*tUVG?6OT2PVjiw-ElZmV(p7fzPHX~G;Q}bZ5a#4WX%lAcW`LTU~(=4 z{9rLM!`kC?upoLz!xNV=2I3_q`b54d z#kK+SHF<$^6{-R2&Ip`LJKoaRRUIjhi>9G(CYzwsqPd0=ucR@c{+jr*3e*nhU*k%- zqm>aX9V<9m7}1(MIS(qTaJqDrOF`##D!vVEke_v){LEV9zjel+SuJ zx8F%felYys1lj_$QIg%pR#(f2e#N)BdJ^}o^nu&y<5Bzi`M;{m zfOgN!>tD6CV&D}bST-9*^g6zVEv|CQtDobS-;(3wANmprAhr_lPM(NO;7uJ#D3Shx ziy|2{m_PWg+GwERj#~*OFF=ZKSr3peqB-%W3T&r={=Q7To`=?>+4Mp27INkew#C9-v zdot0<^|aBJ8hp^Pj3vE*nZ9izJuatw7UNUGszr@gC0dVevnUS6mfIMi+E!ohtb}2K#W+ugK)exbQWJ zpq*9O8ztub&$loVk=p0;x&Mh*dVhYs{%%bAfvU2RzaIE*SQp2+Zcqy^y{{UM@9y~? z?rop`S$}J*Ag@X4_bhnFihEzuC~ebi{TMhZWT*&T<8s7!gY(0ah@W4LY z@xDmQ)mc#|rsz-1p&1OvwpCa~H7sd0oJU&Yml&62za%4du^Q)saaM$nPQPw&rOPns zt{9jr+dAN&QqVzE#dqu-z#FBTMKO19Od4^#6wOtjW>ptYK08fVG>Vnyi|<9pN!s0D zUX_E({ilgHGb^nMStO;?raboZsSE+d#u7jmEF9dv4C1;zMu%j_Tp297-5&v4xrn)#QOpBAc2%mOwL0T5{)`)%~I7$NfG( zM>rrImo0FfPSX5+XF>S<8^3+k%0BfQJGmq)Ae}fag~&e#pTDJh8Si4M2vC z_$}LEHp7rqcaUw^Y6%JNDHCeTI7q!7x}LUvaJtB6S2o|<-<9K?KWxZSU)f>Hu}JE6 zP3*)_;OX?OZ$JH#*JD}+^h4WWW#I1`5ZnqSUu_(&ncj~_A|LzM@MtvuVo&M3!#BfP zM)dl;<;gcOC!6P+d%PP-cqN#+lBDHQzCH;@aw87*sXfo(a zkv7g4bFibfiU`6$m1od420PeShJ@*Y@5D=m1cFd8U~3v|D7WyC>*?89km}KXG!(FD zuK%vc3dYz4O*)jenLytK3>^D(3xsQrl5SBFoQ!RHq?CPcNW-w8phCZ=l`0`p3YA$u zXVQmB4>ISMQK8&_RLJ}-@uUHx@E7o)l;f>^Ty?(|%MiQA8zlQxb4dECmnRRBZ9p~D z_vDmCQ+kSanbi73Y5l5qBwe*W_msJgqJ!z?PV2K^DSe!EKgTOrx33#q8eGNtspJFx z{tgG+RKnaRNvLYtNf3r4RH-V*RsEMUTb0zRxkS?irbl{LJ7 zRJKbfI8=pT+JG&bk6>LURK5(#lx;fzB=(f^tkE~eml^fAm(NC2*Rle=uP4+RPlEa$ z&gRta^V4OgSj$3@gkw*sRXjspHJfp$b8OiNBk`CDUHo%)f=luVOM1?Cwb|y+8m?~i z+iAz(_&X0bhpLjPmUik>e-W_09E6m!)=1PI;2~B#y=QSS`pe%Q{XX*`qr9R_uxyLV zHu{v`V>?-C-iTCjy({}|UJ@rLN~BV{IlRk1wm;*rsS)4C7-D&b-cJ~am^KL^I3aDFAfpsXW&iLbUTJ>fD3 zN&3f|beD%cV=aC4C$jB?pyQIX*N98VSI*2OX-P_V*yg42W4p)aTKi_FelOTwk_VA4 zyelufBp?3NUu+GXIsSQUod%QW8n3zH!0&$lFZ|)J{*&Li`_H5JSS~ef$9diKIxps1lBovg^6X6MUeW2b2H@GL zch8>P+qirk^x`a|d8Kg^8EHgwk^idHefi8!e97P~q!Jp$3BjSPAdE)HbV$5r%@Jkt z?)SeX_WYf^-o1apP&I`gD;l5I^`%F0mK5&1gkC~H7toFT;S5a5gTCnwVDMxw_dcl% z@E^Yy9Ji%13i|*hqJw9o?=jk7KTzvgc*eg$lSoCV-OG-6<kksT!{3Ja&EDu(xGsFzfr_d+4Y~uD-R=^!esjsvZjSh2crxYnG*Oez>CC3@ULyl zGU5)ZVRZtus!3EJ+W{%3;QifUhdX#4YNA zW-5!rj6qjMJ>v06-b?)MIG@N~(V<}#o#%7RAVGK9hzd?g_f`t&NZPDxVvWafu29`t z&p3yOSe!fX*XU7VzjLQK&}!r!#l2b4J)>**)ZS;v4Id{Xdpkdr#Q%VK;2-aiyf-6^ z5{4T2ZWh8n(;+g8<}CVgUOdsiS#)MTp7`x^Hw$;PwJ%AF;w&w`-wCp2OU zhXd`xt~iMhiQ6jN}0``|SOlHNR~o6J)Jy z{3i-~!`Up9p_cSjRmuat4ik~&ITJ9w(;AOj>${b%bZ4crbUttwR(jyVQG9|rSi(4u zIP2iFLOot`<6dJa$Q@uQ7*RQuN@EF6??eX#!MG{eX8XDIi{1>s zL34{NpPJiMP%QS27X0?(%dhxkzgLy+wMUw7I^J`;S6a8!y68NQeWU$5jOpGcqtfg1 zt-tf%|MSm(@&!brC)9~}bXZvei@CU06j;^$kF%iR0_O)`|Nmcw;&X?^ZWcSDP$E4u0u_ZS?!pTxT0#+IKENC|Lr;p? zlIRaDM!uAti+6uCxM&G33Pa^uF-<|leg{KWFYeNXzTdwDgu+WW3#>PXCBvRfd4(c2 zEg}a|M2wzndPGHP-KSv9>PnSf_qgb*F;9)8Y@PI5&JLYObb`pRzIvWM8jCakystzh_$8a zYvBf7Q@2VYplr$q)guT!zMJzdjXzUqh}6Vtn2w?DU6%GOs1^yvCfhyfs9_-!PGnuv}T`d|r*f=fy&EZCYgQ_Uq|Q|~1VkQ5>rg_od3U&_IK zY6Xh54Mf7G6q@M0dFK+5b?Rc2`<7#Ol18*9q9gaS1XL=*#ab7f=P9N5F!Dwm9qFA{ z>~^M5@`464l0kf6|C6xG2msg0%Q?Oz45V*Qu5X3m0lX==7hW-a*Vp#vJ(}-LK5wY) zp>5tph1I=zPlzRqk&esJ@u7K9lIB(RHPqEtHv*aI!}ql+!jcYD*PKC}8IOc_oNXLM)%TH6R zp)6XCdA97EiZ-LAMQc-N^B>T58oI?-xGm=7+%vryO=Nb1({!Zb3V7SLw%&PhL=dC+ z;s8%0ft}*v?rfE1)TL(R=E)`){ z;+3(@apl?bB+K^a15Q?1bux$$Mu#`oK=mWBG==l{uf{=%nz?f?57-jiwGSL6C!1pHPoaDCs_ zOCuY1eSNU_*orzndK6!;fk?NXJWBnVJbU#GFXsI8wbvqmc^ieE`91&aaWR;+eKCKt zuypbtZSz#~Lw)a0BhnJ|5u_E^p)DL_XDyR!rq@&J`}N!^HujkJ+^)T$VMKo=qSI>v z-^++z6aNUvz|TCcNVC>PuZ8z-V1G3~mJz*vuXP1i56-#7yc^N$%QCQEe&Mfp#mEtc zCkfv92eizo6ADShtR{r5uX9SHAcV->TUU?O-E-fQ)rG?qa*O1A)uN&(kA%0;R~at@ zYlIgy9GS7-ou~c4C=0#J(#To=t@nDt1gGs$(Pz_A#u3I^(WN=d%k18F3orS)=6hUT zIow)bbOX=rFi8j0n40@uUQk7nrfjSSW1*=^-;>FrE)af=!8n6+hB_TiW38jRyMBLu z{k!((<_hS`vHCK+O85F(g}YpEqd=C!_fCT2%13Qh=~lwxVAUQwU-Ci z>{?!@Am|a9UiCB$XN!uD0tHs#1$Ct(^3B?aome6=zP2oxA@DPzg`{|o_8{C4&WW`? z`%V}EUP|K}`*q7mDk8Gd6l#pY`z|eQyOS-nOG^V>q$0$cV}MQ)?HLTAu2M9^!SRvB zTBM>}(I-YKCEqd1YY+$&()%RB^gsj75oZUZ%^A6yl2!7Xqjo~8&qN4=;UW`;&B)+yD8rXD z266`g;Lyxn#v=mg>${|IW&pw$VH)R1g^Jr%F~xWy`ZA@Z9GhjtjD_z(?p60;20qr_ zu9C)yie)6oVKpzCL9d{_Wnhn%N{SH&%{6WwODF;lCX75gH>}1NTX%b~2)cQo!eG&HJ6j_JD?SxpRSNEpd^k*%1x|e#Y9}jEG4Yi82fz z4w(Ad&Ut|L782cD@#V$q_nYgpmn&qKA-uMfSqkb+T))oy;={hM)Xy*Yzu*Na<@&j# z<~SD2ZUSDD5_Y%|=XC}&e!p;aih4gJ>K8--rAuDt9}7=;1&2u-D1Mf7j`1E)d&7Zf zWIaL~foaAt{enJMHF*}XR2WvEPF8$&96l`hq=|Gc8&PjCGCF4tmCa!h0q&A9F~=s< z513MH)ok(hyiZbUNT*de%!cbl>*RE!j1Zx*E%G~c;+<1#wg*8s8QdT`>_im0-} zim0Z6Nyom+zd6hK1D#^a^1(33?-euax{Y3vkHorJ(38fyBeFZa()Xc|$XCX|%HOqz zbb>9mlRPYCsY&~ed0zaI(SL^$cW;xI+lsKOP`S~x5-9a5KrL!*`w0znwqkkTn83~CmSn}b#5Q}Fsm9hT`AA(ezt zf9es`V=!Ji1A8=?pTUbF%ZCLf@lPU(O37iTvlS@Of=5m$@yH~M=t8s_cc4CW0W9m8 z&*ix4_#r1Nz%ZpmddR*eq&Qq5^|W`WeDuZ7zx+!po%^@m{>e?vdAHdupZmr;vtL^Q z#5X=EgG*W;+Wz<1`ezx?&z^-Xb+w;7FnKki-}LRUzO1iZtu98SU+Wf_uZzC^t$n4l z4%Xw-pltt+OytaHNhj40*N9%n58aSHZrV5P_S|}lvSO6#>$p9Ao{p7# z@QkV45>e>&xe(#?wTS*%yLlnb=Rc#%0)<{z$F;gjW9Z( zsa*PV(%@!b;+f(V7Y79~jKcJcS&3%8D-4G)c3gnd=z&g8gNWNf*ZMaqY>Y@q?jPv) zdmG_FUILgEmDwMG&@Zp8Aw6#T-}B{ASZUCU5nq)MTi(B$WjL?Dt138VZaK7!=>rPi zb3H-`%`m2U-i6|FmJh7?MEYM`p)hX3RN^yIi$nxQsX;m$()pl2A{A@;_SqrmBjx z5~wY`Ez%q{4WSF&G*$*|m>mj(jOlg;gA}Ukw051eBEnS68$8dn$_oU!KXX9gPdIAP zoM{=zm+0wW1j0g@UPZx*J}I**5=SSP0WK5sP_rXyh-% zLpMSJOBj4^czO!uaKT+<*FoZ8Cy5|lF8|mzbC^u*TDo=pBl6qrmYhHRf zEw{Bh!2rb zf%%Yfod_}{6oVi=P)>KJk{5D=6J;P65!rO0Gtv%WHjB3mBx3k>VwAC<(FT{UgNM+goVv`yb4jd@Py z1heRMTD+w>b8qd1s|R2-^IlC{ihh;jC@Z|16n;*V7N?WcWg!>xz?^FSv`Rx4%L0R% zBWT}J=5-vxy9iTZVMXG!N+`#dYq0DOuKm1AXS(|iT3~{FiKBN%gwVJ?%Go^*cNp6X z_Dd_M$92*?UVP`%`XW-iS!|4-EUf&xRMD|58hy2m9?7H1=)L~8jB2;3uAgo)zqV{H zq1u5GTkcl0{dy)WsJdHr=S z1-}sO?XUb}`@*X~>(S^mu-ErL{N@JFZ{0rn;`q?`yRO_BkzPfOt2*%6n9%v?gnIYg z-;;O0_xsyNvd5F%Qdds;vtoR-X9kt!L{DkGZ#Gp!Ww5MES(m^??+DFZT?8wA!6 zL^Te#JF9Va(UO4)mFG6*geZ-T=#(4k#z-i_2PtM)@z$CbmY?Jw0%qU3qf{1nyVbQ& z3=i~iwq*i}aZK5hISMv~6_{76E6U2PoSue5>;U0U&@s)wTCoj3c`nbW-W#a3b*p@e zZHJ;I1t=cCCn{sxHIo!tS+qn84m3K($XN=3hqqgs7_Wlr-=}mH&=u&GPT3%psoULQ zv=`^8h!5vAWNj3)I#MBz>jO?Cra0&Q*lV+DEF`cbD~g)Qw!}gUqq&UVhJ5s@8U8csht)2Jdu`l^KCocLD#)cRVfq=9@A+qGCz9rk~TzwsVwh{daX83)OE zfCpgo#YZ}}24oqXBMyq~5Oq+v>< zYbM+zAv~qeeH+U*dO_MMaDcc9gC*w!h@y>NDYFztRTijB`Jw52*>Fw@FFH?8ToFm9 z4ExUBPOG(?24_pqON(k*;no;M#{^Dag3?}5#*G7SRzC<>#n>3>OjuPzgm26f=K=4R z#-@|D2EK!~tY*KDtqQXh{`ua^1g}_Ircy7;c|ar*udcLuEB?*domkRFxiQ7E8gtiU zteOlyqqQwqs%7q{h$UFs`c%hA*z;`AS(gcj9;=X1Y;)qz8zaF?SCt*F+89gRYZ`{B zli-s{Da+W7B{i0P$wv7*gijdwV{ZW2*5lB|HSY_lL6B$sn( zs+DtCxchnaJlcR03fW@rC~;Rz&l|7?IDY=4 zPyXM(zFJ{w_gXjo#wnYY$F@#dunpEaaw{xs54@t#*Fa=0jeU;-WV!9|(^u{O*2K5h zXKpnMk%2x`HkG#yUZoxokEZu2JJGy3*PJ##DfHvsqa z?xzpG{LNLV`)XJ}swj1?3E=)|pS)syTOa*K+dJBg=x#tSq`Z25e(M^M{_|h|rhWHs z{qz6fwcmdw31A&s!Z6_<%P2mec(FUEBEIe&@Nh%WG&kU8cqyXFaZ99&##$q! ze1UN&n9|Xd)eDpY-IM}NrbMshNX4Tu{05^?A|=;eg+j0d@sWG<5#GB3Wy!bLJY+8f zV;P(|&z52K6`?oVTrQYqZI5OobA7oW^_uc&s3twdz2(?A8aGkQ4V}>B$Ggqe zh)9ChWCpb~!^YZrR`4zFTH`GdN$*AumT4d=XxdBwD!v$3zK847&5}pZQAp#RY3u?# zAYIcGyCkh!^5LlYF`Ar;@w&mK8!IVT6;k=X5jiFtM#5!dfYGVa2ZVFnbdrQwwN6qs z&~5bDHW@^r#Ch|%h65xWK!RXHpJXdp<&ItpC#-h)xZXA3002IdpS^H}(g9wtkSl@n zvdI!{?}>K+Zi2nIK|_7}wfs6duE~CbcG!Y`nAMVkEHZ_{NIwz|EO19>-QnA$MTSKf z+g&c~JTPU7(3!D*Q(_dpxkiAo`g_k!ZgMGu*Uq*9+B~n0F zJS0%40ie1>?!qxi)7?(RZM(~MxvI{8FV0@;_gic2^L^Ec(p9#|zv|rYJpPZp*Is+Q zA2(n8te!uPD&C*$iu5b;#zmK5$TyW~SEOJ2hGjnViq!pce`$8T$&b(7(@r>V4F&pf zb9CNHRq?K&#v68QYOrfeKjEch2R~(nTIHvF*mc#lUPz2b2Of@RUw<}Upvkv;q@T6L z>0ap-pWi*u*9Y5P$=y5vSEgUv>vb*C_#!Y1rd)YVIrulJ$SrXX(Ekv-UbatyN z&n+UGzbS+&7mS0!MPaVy%@N&%%x-Zj@dJb$jFG>e#<(I)?hZ^6~%j$J#2E)yznQdCPdQrg$J}=`};&EuvRMnI~xT=t|uqg`&QuJg)aD?vdxxQi^+)2Vfi2J&M!5H~P=H zBG&GkzxBP)=TZ#vE_ClZIzyE^aMU|vm0XoH8nroG+w<$d?-r36#YaLI2=E?~5f=ud zO5YPwhAQ4Yz<#w(+Ze)HZmp#n3C1oY;%x0uG1NFy2&D~Ps(C+O>v_n%5eak3^`WZ2 z@8>cch?D|YIf3(P^_eR@8?0FPC{7r8uRhnrX%Gvg03=uRqK4IFm~H%BF4)fJ*o}&D zgff;4VNEeB?6J(X*Az~rjfq1WU8rgVS#j^a&aq}A_jWt|4qQqh)x<&D=4PEd*7t2; z0<7B6A+HS?9?uxMqxlZJL}}84ZNKt#k@SLJU!#o=Z~=Gfkq>SAJ_jqk&>>HV(Ej2x z+r6v+K;;*AuK^AWh2zTg==0X(5#$FO0&;93&EQ>g$;od+n}IXKI){_lfK#1c^!)IB7O8fZ}n*iH9TFXdH}rdp$|LO90~wrC;sRE+R=i_ra)h4D1f z6g(z#7Pm=57VcdxBW|@*lel<60}*z#6v?CMyG^wOtZzek~7 zy{1=X@9VBfOIQ2#ug|+ww)RvO9$UwC8|0$1??0}ez%k^fa2U##Tk9R2TaN%+2V>(2 zOnmng?;oE~pk{zZv? zqsL0%I6nW$eXD1<8M|(pNvJsat=(xIkjO#fiN;g-ekHE?aan=22sh{W}dV8j7d|a zA66mi{Kl;Ep3E{YslJmaT!gXG%1ux?xHt)tcaB{RVLKUwU&0H*xH%je0Wt*6>Xt=N z8_{gBv9`^SOF2_m$|gniz1ISrMXb7WDvzNex{qgJ7$ zQ9_&6a&8KtLg;er%QXhha7+VoZq6?7AO08Y6@x-<+YI=hds1i1L!6ek=cA0{GCCqF zuT~Qn;F~#ke#iaWfS5)qj5=|Yv|I{@aQ)HtshPHYiByJ64?qrVGLnW&+9oD^&wVqq zNTXb>xpu<4Awr|ojXQ07qn;);gLV^xXOcj+hV%ubwy$l2XW|U_V@yBl7trHbDLqw( zg)ziE{F_Q(pAGpsTQT*PV#bglOm6g=1)cXbUY~SA8?=&MDij^M3ifeO28tRmf|Rid z`66nX7^4AAN--mTVeUpE56^tiM&00km%sGAU=igvrDVBD*b&9zd)6`JvnRo=xwMkh zw4rMl6KeiZpi&@11bo+?a4#~Jli|;-MDJ@o`5fkHD@jMKJDz*uDwt+*S+7@OH{Mld zU>v6zdp#?Wtip&hiqdw4{3NyIR;?5->6iQ%^X8sk9(BNKjqc<{abUJk2A+d9)n>Zq zu*g*w!G1m^-SVe+eVm9A@VTls!y0(x)g2X3&Ema{KC_<2dcS!1`K{kUHE$`RiNECi zObey4Q3)3y867?T+owMAwRQC>gzQT6<;@#SiC*uiM6Zb3mBLELVIFigF0b_UvDB{D zp-iuXf0q*d;zhI`eu#Ehx4fqHn%1X9=+MsFrMO zouN$>ScWDvqEafdLs+aZ#%AfkPfwi&3@d6LuyuH_44&;_fw7ZaDDgIU4&%sS?l|c= z+oQr7DM0&Oh6*eE`jX|nwFg|twTDqdcFMf|wEkoCQ##-^-&62NnaL{0Ha+wUSCLqL zP2-#{X%&Z~$DR8e*iN^-8%zIajIrEExEb9h{EL17B&She%^#O8ged z0(yd?Zd%R;$GK7QT`>~Q*>F|SM|PATUngx6leYftJ@E~6(BU*lm0==H1|`)tP-+?Z zW`ZtlQ4EbVr7YP(39PNrCOVJ_kclUpMn)p^VzXR#u8ZdW8$u7O!_DjY@EM9!kl>4M z?rtkLs3ECfjpK ziwGNSa)b#x#N2%9=Pq99Uw|Q#I75#-B`xm3idqt39STU-frQ`xy+898zHt8d%eIv1 zH!zarm0n7;cOQDVRHi*g+Ur8~wpch`eeJtbe(jHs%$t4`4$16()I8HYx%Tlhc%^Ug z+lnZD<*{9qIICJ%Qbd%xAqgeJz5%PoY#V#~$$F?&ehNp+i{8i3r4PFEX@#I5a=Xrd z8o*!YA-vm<_4neXes+};9fim$dC(r-u#{-zMYBir z%8y<-1xuOszqsyqZ~w_Zr7y{^Ycf?$u0=sLh@rY7aP3J;f)C;2$G`J`$@%;aEPnyA zR8}&F4}|AJ1a6GpV{UX1O9MdwF{WbeLO3WRl`SlYu#f}CR6RQ>&{!$vP}te`c?ohS zO4(9^3%33hS%D(1A}kzZ5JdPahCJQ5f4fTvd6J>?*nu024=@g!6{=GO)*#4n!esD- zBc!G-p!pI^gsv^(e$32OTe|lN*5+pWjAfjmnky@t|hCzi( zF(y;4-vl_3%)ZD@u12Rz45bs>4I&Y4S8JKXJq45o8zZ|2LEK@3`?Q+5fj@3Ez;IkC zZvq%-C=2z(-eEey{>(y$5=@jtd11|f=a7YNp!9}4sOQ1~4kIUysFF}qT$H0U!F@i- zWM>LA&MKEcs-bvl;u2uj@`kCzDTI=lCL?$}T;e;Y0+~#{F=7gjH$tUk$el1};9vyH zfkN`5dtaI!_}m1(;FDEQ=s&kBHo8#OSz_g50=wUDFei443o7 zGlXL-n%1Du&J8>WgGAeZTB!${$AP0wyt?nGiOsCzVA~jSulf6od)e&AW_OKURN%Iu z5GH{DkZalgC%kM*8c%$ON4Bdvj$2wGwNY@)9}r=U;6aNhx-m$ia(duu(IwAyoqfy{ zLkl{iEsFuhY!9^f)fvX7P$UIw48tjUQxD<^_pEB>*)qbx1?~yDCH1U;@e#Y3xuh5p zl~r;90WJp>0iUCB3;SX10mALO&9>Q4D6~S;cNZAjSnZS zZFE9CWB=mKUNZ?x0DMMH%eQTEO;l1lSpNW-_tH+VZ zDCXxh?sAWh|H4}MM+)&OVXfyhsW@MzJc~nZ2{WcE4_}}b?&WsBkx;*m-<#7t|s8Cf0^9h zJDTrbe(NiN3@c3GVpZuL>5rqR*g8^??l*!*I;}dF7mJL2@8A0;{)>x{|Eu&$#hf@J zYaxWgh3E|N05PeWP3G;cmN%NYeWUGoxB3f<p1`*!H zo76dJRZc;sJSQSWq%9SS^6bQT>dZUb&L3UbbJrogJrC3Xmolzc3Bj-&m*>!e0d(94 zgDFPOpJ5RuAr$^F{T?t-r;^4ZR{2ANgj~VJ%+i||-@x0u*1idbE<{LUQfZ0ioizUo ziTdWwTKU*a)6VY07k9P%W8cRo`;C+igAKM4D||fP>FNgla`YW zfrd)ya3rdlfUa#MPu6q2kw0yWz=i?55ne1 zW1+xP)$X+v1?KAGx`N*b!4!Bwk69P8?o(`kzhlmMb-pHjAa1$%jVOfh9FknvCh(?G zFp2`uh`@BmZZsI93@yg>(1NL$ZGtNX4nrg&)X zBPn?66m+Tz!Q;-323Cg9(Z|KXA_$|HG;AR?u&he>hvGDwc3y9yp>O-^Y1uff}rNRpm~!jeV%Sfos>Ho1WJ zBx01YPM{1&8%xRgX^u@?F+Raa?(M^Lp!I0bK*~Y}TxCSaGCZvIO)Ma&P443w7Ys2w z(sRIvUVdU4jZw~z#z{6lZr$q~=U34=y-S;vv`x$JqUE>%coMZ|r{e>h-imKj(M+s6 z2M+ukca)oW-f|j^S!^uvRtxtz2YOOfnmnPBX+bf>lSKNKfliQ@?X)&v8D8e712WuL zd{U&YDB7M99M}&5##7>zp}lCpD-1>HO%^y&Fky}}48SmjH+o1sNkYekN{T9I31;%K zpZjGwee`D~mF0UBNE*}hYAuQ15gFn){V%`wul~2c_Tb``=C!HATvzbEI0|3Dk+?o) zgf4z|-RY`W^Yhk2_}&WMOMzYrb|9h zddN@dSo6Io(ScjJ8QZ)`;INCHUXAR-ytNmFUay?D6aR3-A<%lg@pB(dIK8<1w~lKo4wdM?@vC3`^kw(_>c%co zVX{n_PER7Omz_A8Wr)`Khu;aNOoE4VL)f9RTQKeSTE|G@5ZlZ^?2~9p2(+T~*`}x+ z7>wLFh+*!TpkO>9G{vbTfn==l9SJ1`K(pw{%mNASIk;N;3Rwl?As3Qr#4! zjd@D#lg68cDFtz#FdId&kBRsE4f)6X&yIqJbXa2W6MKSNiul66)1-2bq$#Ih!0`G- zE+4;RL<9{?6Z?6VQE7el1)mK`n@5Nt|4?$G?=186X5@zv6*hWdTvX}p#0>XOWhCju zf&Ru5-!Tb}Mxb`C(8$o{kdUEQkQ;W%Ra*DC$o=-X_S+BsOjAp?gI*(APYx`?*-r?zww6icY zr#yp`dzJsy2fJvMZU4nynMqVhOOi)xjMEJ`y36Sb#lB3T8~e*Z=jwfoHO2?Gk;9u3-}LWcrYKsd zWyGqe0QKB$UmMZnu>*J->lTVQ>Ch>09_!GsR$!1LzD>Et@7~Qqk`_+jmtp^`*ZF(D zBO7mNN33D-5dkghbeD7YVV(4AKl5w<=%;x7N<(EN?F#FrgV2u_jk^ktz1p6;Qe9nV zf)c&-sIEk>qdP5mJfjkQD{|ci>%~Qhe(LXU>EFVPBxbmxldlfz2GxL#!hvD(6FgLY z8pqmX5!{^~v>1(YQ${?z@0R#(x&5EqK9R6pwBuIpentpE_Kjv(_bU;;&5-VFb#+mw z8P?sAt_{38F~loP9@mK9`EE zq}=*Aib?jlfvrmko-x*IFB6aYz2+|!6 z1S;-jSthIzvS!6pW@|Tc&m*N9j7Z8NA=n7Z25qshg!BaP}BFZ?13@Im&NPWK@TL`+PFws5aG`Mb_ zVA591T^c@U-oMi;Em(;bEz$;a%ynp`6s31cwZf}0jz(JWK8bjnm?d53UZa6R8uT@l zxHFcznFzEz|5-^=DeGPssk|3P=%Ll#0ajNkLAw3E81>yk8G>U%z+VMtf+9GQ!ic)`B+JA(krS zU>h}0>vS8qg$^42ywM07QJFjl+q22xPKGS@U z)LQQ;eO!elC?4Efwp(UXOn5PkT|ZM3So^ zKYaaT_Qo&1ac2d;+}V&cF9#;dMz|cjg5@Ske^iqS1`8ec{L1I6pV|?$8~F) zIB#4Dp;lpWQvCo~%xN7g@{$a<6E+3WUtWMy8}raqw3CP%lr{lDpW;^8;7Uyp_PYU?iqPlNWj5!8_{ejDVMoy^Cy)#?!rF^*4Vs`Ql1#S*=Ds0km`oAgMBgt{3g>cdiW#=10ByZ2|Kw#h8vHN^1)hM>Rp`5-pb++v zhGpH;9a?&V7EyS`nvx{pC6}G|yNM&$N5T6mq|Juy zbHMueBk^o&G&G}yJG`y`sr4>ng0-!ifQ}Gt&Y6OJM6oxK@8Swx(XLaX%ue_g#Zs5Y+k8F(W zC(QK{ksW5n^;+~dN)j<`NQH$XL4THTs~mUSCuutAZWhzC+;gdtC?8%lym&4fAvNJv z*7zgGc6J6X-~$$uOq!jL1`J@xJOKAosFV}uz&47slkE7Eo z+;tFlObRDQM>dRO-D`$dGgFiNclg*)J3*oRoyL%kgYAZ%ZLSz|^e(Rb!F=Myzr4PQ zMZwNA`X4h{&k6KnNb&vX3p}e>SR(=ocoT5^+4m)_!JyX@`zAg8K#M3&T83XYa3-1- z4+^vb#%mRDt9*YgIw7QY!HXNJyUtX(*n7RF;(Ua<3QNlWsT}zQZMj4)Vuajd;5)I}tD@tV^}8ZKG%kr=?} z0MdNYmqX3|C0bs&yk7TryF>A=Zsa=EH^g51is-9#jo6h5v`tDIH!%l_z_iGsbT5EN+5T#pS z*74$%FKJhsmpA%bpMR?m=HiY1+`sZCK6Rl$Un48>YLG@HBmM~mpxP=>0Bk^$zo|WR zO8FBYsJ!z7$WL0EL*_^eI|@0_2_6JqV7Uxyl!tP%1qw>{Zy`3Yu1#>@h;-5v zlsp8;H*bYru47tx)qI?24Gj4U>XrZh>)gJ6r@@tOL73SQ>pA%s`@yP{#`&c zA?XXZ7cCsf_0#6nB{=Z6Af-*Ivo;@s7Q(nm3i2WdtDRGN`=&{JTk4Y*ppHy`U^sO6 z93xH0631dpnshQF9Sqf+rP5hgA0#*>3?;#QtCf#vdj1vOLkiA(V({en%?pGHif7@x znFUY`W8Yz5z>!EDC^|lhy$B5|Ys`a13}uJ&I+9KR?*3HlooOXUc(rQo8>zG-f#U7_ z`ZUTD+h9%tOy$%XG6YGZXs3xNXWZi$miy5aMTjo~LosokQDy@A;04_h{BZ6p0u<@Mb2 z*tfGn&q+hM7jjQf@x-1^nnM0F7;T~md6$qE572E#=o!7WVI=VBc{(7>!(L_G5)Twc znWT>>&=u3xb6D;*&IWY98|4Q8O&dtaD4R>|I#1*^g91RtKjX?wO?Rp z_v=Vv{e6yBQ;Nq@qUo&6G}?8r71q+l?&~MLQgrDYMH{TAgh$th8;|DeDcU5{;rf$S zqJ22>Q#h$!!0UEb z9TAoqy>g@9{^oDltCzo-WRLeee&&yU!sU_kw^vxi8*=mcKjyj7^7+r|_kZn`ugS+w zzurUPI2n??000RJ!>^I6g!9)A$B(`z?|kR4I$LM8UlQJ=@M;@#x2OabP@7@7%>oz* z+auE-P&9m0s79^H)hO(ANeL{}sCLEkC)-~^N>(tWJ=|5AyjwzT7u;AC zdd=yKeG+{L4a&sKs-9UrT)USm?%Sj6VqkM7*nt|;yA=r&gpfz3!!HDpm5Q5Bc!mzH3DP_1H6?Bm@ zXgG7?m{tLm8wd?9u~M(fj@PuxC!B@gn|VEj__Wlw zb72>QP#MMXn6qIbn_;C%5fc1Tfe*8-MhSM(SBXs7*V;D5P+@tRYrQF*>$*{uuCdbf zum)%rsViD2avkp7*ODix=qA+4J@YUCw})F27bkK}3%;0(8VWt}=H+b`u7^<++4mg{ zT(a%ohJX7&69!zj4C};mM6D@hg|oR1qT4g+(aC+3&*3wxl76lkh=jKS6L|bEKg;2O zj!#R0u(%kOmJv>kkOps{DZ}nQm+O+AYK8%;R2w*J^v4=3X=uhs8f>?*wROtjwQ;h@ zoMC?mXhKiz@hNKI=*f26Tj!rz^no<6ucO+|z^g49ZNgNG78>`N-kC>6Mt}eWJ!E@6 z!Je}S8zrn5y4B$}1dpKGR@;A^3Ak0TsX>zW({Fr2c3X{w}0n&}SKDw&h^WlN{T zNlm)pYvkmAL~VFOyCaL@SF;5y4{1>m7)u#Rxx5U$-o2j*uXS(LYqHcuY^>49ebi~M zj|D*ATQe37PCUh$X@*uKp2GLu$h~KsUQq>)MJ3QbzUV`mGe82qQa zZ(@?x!}E`RH-(7EnVGj_xhDu=tKyUKO6_gaeeA9_?Vz;fa~) zy&{Zz!41i=V|J1N5le3v=Ok8hp~s-FwQW?b;dU|;z`zEqi-PfBOh>co`g+a{-eG07 zu=3K=DUxCE17zF_(p=sxBf~hWKiq|8W1Yx=$$&@R1*bFdXSlK*Fb~B!zrVs`7Q-4+ zLU~x0!v{LZ~Ez*@W)>;vFZEM-}%c`p|966||1dJP$!VTl7|#H0jV6W_NREol4?_oQDW zt|`x)gCfTK2kNX8sPc=r&zyTfFP_WsQ@BP+HX+tfh>w2W zP-v~MZ+sV^+kcPG?R%-;Hv^Se3Bp?Yj*@RgQ#4~k?$aGcM((ukF`6*R|8QLvN^4+` zsRWXCPdA6se;W|C#?Vr}xE}2}dCT=l8&A=Cd{HPZ`Xg1$1wGlhQMQ@8m^z8zuw^2n;?fxH35A@w{-Xfz}7%kvv8eh*=H zxUj$O6D@w?cb>!d`7FEwr|{ccYjet?RPj5;gmb2azgF!eS)fz2@k+^cOx`>Tu3fnX zD4h!B<-|*P?6a_1MmiL|OMF4pNaFG|(e_oP3;Bm!jiP6kUNep%<%POy4Km3Q=UFF~ zK@*g0CmYRpZEdg5;=_%WW_WbJUf4lEH$JcJjFC7|^nz4L8}2)QlHe&P=c$c)S=b#G z|Ds1aX@S)K@HLt&NX7zO%)||Xl<*G~AZfO3`@H04dOGPWD5Hs_Q6WQ)EXj*lGm807 zL7eejDbCljTqk3UBI3ezk7rSvx#3UTW7N%sg|%=$1z#h+Ny8_=m8P_**63PQ0&ggj zqZ-oHe*SL#M2vIYqZM^qG{RQqYZWZr_KyH{tYpUG*KJpD14|Tj%P5%q9=u@NNW|^< za)5}w`~BZe`rPHOl&?f6g<+qTtmU8Ze&NAffok3;yu427 zIupAdQHfqf$JTq-xw_ufkH?RrjuqQs-AXCaO^IF}W{*fFPH4lz_5P~(Sb!7ej=$SI z(ze&8mpjTd8Lj9}VcBDBx&Psbb|qTS;Cub{5T5D?9Z*_B`r{t8LSwJK_6?I)zoPDq zM$_@F?Umd;mQ`jc)ZXq2IR-bM`;4C7{H}faKmC(`I3Y>D6I)yv~FQ*?(0R1 zVPj@Rcr^v7PK>$&pS)M4a*RX@N>^s$UC6M_BgY(TGL91L!?nyYSz0-BNY3cGSB~>z zl~PNlZspD0)>k&cor6xphku-yzb1;O7-=={{VvO*J#!w`=C)buI|Bi8Vh+=6u(dWe zEgm3tMUuwVcWxQCgP^WEk@4q<>-W5}-{*?F?e|FXA2>M!Ud)l}^ne~c%hC0nw2veH zMv*ejC#eg(b=@I7uT}AknZ}g4J)3`b5$-O%ukY;+EPCY1^?C7q-Ls%o=l6RiMX^p< zG+}F-aB{VGt`2QuNl#r9?6Tla!x3lBTYUk`XKdqD-O0TLZ10XmrEjqJgKN&8!h$yX zqxG9pD()F;*y$%Asn^=G^Sqtbc09;$w{`04ch|dKHe|gz-?nuO{I?W3s|X=*Uy4;W zF);<;4KH#6cIQu$vKj{F(xVP){vghQ)8ps<8u(OG>cLbpV}iLN~qA9oy4`FZ)Kxxi^4X zr+xi|PRrWlcD^V=<4xk6)xPa&a$n0fq^n)ZlM3#eceSm1$pcq3&Uc%nMA7v}HCT-oh|F5G$M9TwDI#R!B!pc;xco%RnZ&&-zP{+dyovHFvAwJUB zxsK?@*6J7VVF?NBi-G74uF0uKvs7!Y(?EpCB>pslW|Gz2Z8Sx5MJWwnxk?(a{dtIz z^XLf-&Ow3RzLdlf28)S z?1rN3engyu&XFhVc>ev*{MrBc^Zo&al2_-U^NOy;kzQzi!3bRmr(-3km#a3 z_m)>TS4#BHKK*BYWqk6bznCF!Qp^vZgw(hTwZ$w-a5;YPyYkL={+}RdD852vcZhAm zb_eAIX_=YH6I*S0HoUmRETZg09-t0_Q4G^b1qq5s5_aG079_>NBk3o`#44%*nO=Q4gHb5F2$@n3ZIWWxnAe)YG=|W{357ew zAY#(@(UJz=HvU=+MGn?X=IHlrh-@%gOd{T< z%)$GdYh9FqtV3MCpbH ziRt+M&~206OaA#jhbcS!1NRH3O7WO~TO7^o8vps4#eV9H8bmusAj*Z3ruW`^8;lkY z=(v1+UEL}J`s;TPIp+S|9b4Y5&4W)R6^!5SXq0uSq`*=_2}hpK-3>@EF_Uh_m|ck! z-tUSS0fyXDGxr$_j%gZ8n75vOZId)ihN2Cg7|Whv;vIB_q6lDaM5<(mK2C{{aunZ7 zG%sK$-J>i-@)DO~W@?4+Z5_8h(!94eJiwUyXAw$cM?h6WQq`oTQbpv%GM!Pf?VUu><@X=ZtL%#zizL6wjZDAw)zd>TCf{fewa{cxlo~ ze@3jmw*U6uJl5N-uDr7~MoKF*QM`zU6`TQw!|I$2|AqmevK?g;a*b=U_CS=Uitsm! zyG~T`?N)M!iB+5j3;K98b&5e8l}YW4>9D%Fe19_ZK1HZEasH0NMNnH=|_&7t_C-$YGNE^TBy|NHiJT2BP2U?zDZTQrOs(GE@TJ9Qc1-2>_S#z@lV)b+S zUXUi`Eb#dof?t z*yoG?v3I?tda$igty{dJr)`~MD8;49{P|Ro*D>4wwi7VO>zu50oQ_- z!9?P(*;uXO`9)Lq>p0e+s{z3n#==jOB1C~thV{mJN1t-Ro-QTRgw4Q&J?|%Rk@!>N zBL)ecBb^V5AS7L+k3LRmjtR&YUBMWjYiR!DSG!!ROF3Woeuj6}LQYeK1W?aoxV_61 zh$7-%*W~ng-_V|^jN}ijmmwHw$jm*o+-mi>w=mI-n_CN+ZXtZ>TmqOwR@S0{{`?t^ zvUSP~nsaJ&YJi4JI7Zxo@q_P(mDCV;(}u%&voKw!vl#}CIoU_XulPmqM$|K!CREx*#knYih~phQK?yv0W{U%;a_%OP+7_5TCC9V5@weP#x4w7^1V zyTv{j;Pm2B*_y~D%TWZwt=E>UeV~dWpFeVwOBLGCu&$0tFSbQX9EqFEAzMgzg?PvL zrxax9zX^iIO0o$bLtz^z%(U_jt8;-vq4Z>|JDw%Mf2}dUBJ%9V+C84}uZx)e-0tPl zB$|uBjpk7mJeKU4)zGJ&rE^QR8=DZYvPW`SmFcIUp(EA+!3QWX7L3FYszg>{;L?@` znHWRnX&EUv6iIp)Okj|1q*wc!#xSiQNFjD==~cxrN5VPc+UaGjy5Fg{AjTfcaHraDRE~td^|UpX$cA{ zERzGF0kmDQX8aCl)L^TL_xT3+-;E0SJJu}Y6kJh8g>)^1%qWZ8@7S-+D_7^0^*s;3 zaS%aPd7YngU#gG-nYZWz-ymiyAWf zbkY-QD9|UEgI7M55aQ-QfjOmc!N`si#xpl~^z;j_H!*4*c3M+=EH7_LH4xu##v)7o zJg$27Q*Zl#9=HCC9;HCn$2Xz z>ww2%(jzhCdMt7cmwN8?Z~VFcRxRpG?%RK3j5J^ne+6?68)k%35}x$TDL0{L(a`oR zewX9seKy|A0)@?BB^60j<6cMchB$v@WJ!M(7lL%@n$8FhjNV4nh4RrPQ^C;2Hg3@q6!UJ~iktK|=XvY@-Yi9iX}0^G~{{P^g*yH>LQ2q6L&f zzBAxpcE&cV=!cCiXd3XtCfC=q?R8GLf1ja>mMEDiff5GU(>O^PM1e!L@9B!atMAxV zg3lVDDU^#Qi1WJkga|@KeqZ7~Sl678vpTC9HP-~b6)gz7!ahW&oP-tl(`*i>W$1B? zV(JfM3_wkyMViL={W%_sCvGJ3g0d6Li7<~fJH{y4$oChEumO8U;4BF<<1d$^=cS*2 zC3%(*l6_oVSxM>2n%kEKli zxxX}7y_HTAQ{uCzr@>7~H6!qMK5>9%h9R91-hlbv-X?YTPk?{nH8wpUu^ zCveN6RZ7U5Wn0zwk#t{gFTN`QNVPO9?Cw)l$x+2`O0^0_#67-srdA z{Hy*e`-x`1!{CUx^0XroLcrGHt#b^mh7=(_1BEF#HX|93z5n6)^3BbNjdldlTh|>L zY+@-JOQ0N7qGwlrs+y#LNDMZl$4L`{mY=R=Bp|b^nZ`w7NMLCk*@Z-DVWSY%Ci-ED z^*t5J4cU3KZ;GVSLjff26G|HfZV@8Owl$;m(HvliIw@rL{=Hz<^jb850wPk34W6)2 za8It3tKB36@_Zw2H8q6V)~c4yf+?{ESW8j#2gf>esepLLin3!Derg#F(9xD#Rs?xm zo$F^)`AKH8|E*AJD?AadO)yker46A9a3ce=F5Pe>6v!%n%r83x!k~ETv?#VF2|J$; z5IBRCT`)4tv?_ET5NNV5WCy1YV@PvdR1`^LV3OByoWM27uZ3PLOR_xK zD*?xG7I>8Op)UZ(DOnsZgu}6)<^r`M{X^5>!CSh}H)jf<17U;Q+VwQxUAwcYzrDNwSvdw8AHXc z5Ier%d(w^Vb|g^J@wFDP&v_4}q`)IN*CP4aL-uDV29^TkzV=FZK;i1hQ>sU-@hLVS zwkdsTotJ^wnKVVT&Bxb&NEepV_#peS+T7?>583O`c~T z-TYGo^gij1qY4&SQ9cFxo))4o>`NQF85Nn+{m+#h{-nuw)>zP4qkWq+rLR-_4P+tY z2Nl`VE3kLl1?km1EJK#Z>9pgdMQb(QYtSg^%qbq422Bn53W3W0{Yf-^yp$|X34;-Q z9I^#zMVg68`)zlS5C(n!5%-SG*rY_qz#$c(u_yC?#jaOGXdv2*{op$Rx1u|J%Mr#R zjbCkKw2V?-6l@$52lqVbXYC$aq3Bz=H~KhwO1HJY zgOGu!9lw84;oU=iQU@nZZ}aj#<8LX^>*rf_q`F1Rt6PyMEcQ^Z^P~M(3G0{F^VR5E z{?^Abm@Ka}UtNjz+g%Xl?bp9)tDqRGb>Dpc^SYGiH{R!-r(gWkR|UeCHK9SR>WUgd zu}T>Z)X&2r4ClSKzYi5`NEc3ViiAgM$QHu2-pt1Itc8ImftKA+qcy(Hg!B}Oi&r$( zVsiZMP)njaj_471LP+dlBscK%c}>*yJcN2uDLrvaZl=AQ=Y0Yt1o>uV19`ukc(V&H zB8_1f-$c*Rmd8vYW&F>mY+4eZ%+Y~>ptz{+U+W^1)xN=1Scy5`#sy(5KGnKu1$YHB zM_|~5rP4jKtQLu=f*GE;5V|J9*kfHYWJfe{ic0#8(CIK?m5oq9yC~i9IwUI!i)E!{ zGiiSl9iu0%g(d&6sxZs*+2=Jp3HUyRCfN?NF5>p^D8SbO4>LRyF<9Y!JtV>#4`GOF z7u-TVfmq@~Z@_&qv?29A!(@HUqLzRgo!0AwJ)u%z+fvrWo1^{_rOlmqz6=Jkt!Ud;CuLNL#{V}wWjH`V{XQPxrN^6#svodB(mKY*HznbZ34XPl6}tKt(cOy>PN((Av)5;d5Y( zk6gn!i+4jq5vEDSa2xMeK4&%~G~qNGJUhGofaFDOBJ|Sw)UD3h&0+ERnBds6$qrWgoT0c*GkmGRpC#zlY3|QY zT8hDsln(>;H{^jLNmowz&EG4f!WhR1_tM5R44WS_l;UJaX;ayt8E{5#mxRYmTEi_G z_&|9AU;7<KT?0+&#>E&N~qjKr5va)KFTtq}|#36lQnS3t7fjg<$0VWJhql0 z$+Mb)mUC-v9-{zbk~BkdjSHSRxW2vuBM+`0 zNF6cTFUxTzj!E6m?pTq1Owlhjo|D2W*F_+hh3mQPP65tZt&MaVr9{i11rzrhH0Xrq zld#JjgMHZrmd)dFHPPC`0%0a8rQD;#`Y{1}_ODdLe7VBk4Tx z+1j&n%w;5lZ#i!ka~lwx0)>TAtWZ##>V?aYCSg@puVNZ88jX-$Im$Hyu8f2MLaNil-6EL8Dw@tD4X`rzxu#*?y73pd z=rm08`h+zB0R_{?+19nESyklOPMLFkL2!M|tT5vQWj1M>S*}U0F44lQeQ)hF?7fx} zpo2!MC0i5)&-SEvZsZY11VF$V;m&@KmFIp=7_hZ@%rRo`ifKvHsZ_e+=xIpWB3q;} zUD@}BVINC=7xPVdXp&w?!rDm#_>c#=EpRR)(x9x!v5*I23?|z~@YErV+Ai_4X1ygv zf9?RqtYy}E*_L2T1T44#oy_W+0 zvCoLG*w|~R;k`W3NS9razb}8~EBgE!&rRNx>?QrE!n^hH3h{o?B8&a|i+;BYc6B_vD9(?2 z+f&XU}K%O0!}&m1rKJLgVvqyde*M z`O78?@!tHdeP8ESONr7X%%cIIL@5$ilH?*<_TJkUsrx--M~!6aNvws8p@q4iSb^YI z4+keQX?Xy6hr+ISg40o_b(+L)1;gWWHCbA%IJfVD z$3Z66aovez2{2|-y8edsnuSNg!fJVWuE#WlVb(oqKnX9mHfck5*qU68ya;}L!L|~$ zN>L;v#-fO2r!ZPKMTpsg?X2*3SPv3k;#=kfi6r;n#=tcc6pMh&4My%Q0t25=@&#iI zraq8Qt?uQo!IrwrO6m-&^RRdkc;`Zpnp$3Sj+}dJq-2KcTp@^j_qDcXi=rroGaSbn z$VL-JVp?HDVAMf)#YdMGQ=sd`a5&CTAd8u>vh6Iizj)t=Q~@ZHy^aEv5<=XP+Kgt+ zw!T*VXwSamLBw3;+DNSBJBif(0CaPf?SjnEeEx#f1Yuxg1Vb^?D2VlOZ_gYN8G=p* z{tH;r&H62olEHoAxz%BqQ+R-P@02SN6Q7gD0Pif4N@Cms`kXV`_D^kvQjCcCX+*&L zCW8sJm!v|lqEHc{LOVKrY%8ElsoB01?D@KapkXMvf<7JCT2$gZB4pM>Ol%Y8QfX_S zNvA7}SzsI_E>&vIHVIKFLyX=1`HD7|0Busa|K!!`Mlbfhr*Yay$J4-r4AoSw83sM^ z6o!D(t0hD!A&E9=h6*d%(uYjlh5m=+bAl)fCC(TWK*`@zDZ)KA+S+)K$i9uU5;%Tc zwL@kyN+BYq3>!UsEw#GHHJ&gujLo>svK_2VLH40o1L~P!BtXrO`XUS(1WtGMbzYtG zQqz*Q2+>6*qhowOd;~K8#9zsJr3VaEa#y%IoF7RS(qpQTYHUCo?9RS?$ zg0IJ}D5yhFD=udgq3`oTha;+qh2~t6sPFS_DUwtLk%D$z`wr)8xn(KoB2-Q~3q>y3*NEx&yE zty^z&{7QyWbB@O9!Kkk6Uoq6s&n! z9x^J0Bu0{lYW}TYSA^OLgMidIjUx1tA(?L38;VfImb;ysR1pe9rGkWfK(NF0VC3!y zlJG)Mfk}lM@vEl{{SjfVoZi7&lIBLVKwuVmXAw1?yNBCLgl$_XLW+>IE?gP}0@bSD z-P-}3Y-AW~4^yQem4dLrB8wkrq==yJ#sZp>>hqY0IDi0m5{mPZIXqdJ7&yorbZ3(q zL1nIZl)NY;jj)+sTYW3>ZxWbwgi!P zQg~rl3*6&)*4i!MOwJ1iCug`f!uqTyyaE$L@g2acz+W$dd%&BFwKa=;HP6)23|NPu z1)*aKhKdy+7`Xbh(9bMdgUFC|)`0>fz_q-mivy@sI#En##BO!?!6JpNgy@n5qo~vx zQG1#=>%u3=ri2pWcp?#govm1MuNAI%*ftc2RdjG{`L)vp9LEmqHHIB`axVE@;Rwev zoA-t30gbI=1xrX73{ysW9{Gj;*IfXF=P|KwX5ueHB&``^fND_<)rFiYT}NR@05?HM zYlI};nPY&by;>A7=(vr%c=_ku6atk*dz_j;HpL->8nvvT64!s|W#Mm1^Gn5E>dYaCXf zH*sEsuzOhQy6=Ipf~Ey+YDFbMP9|W74}h^?4g>eBR39I|1zqOzPO^u&`u(k z3Mm=yks+@+R_~fre6Hh*Z_5LDSAE!_P97mSxX+&{7kKSfL|BV*_ zI*=}KpmMeI`l+c*GE~`syG*gE2mr}_)pL_`N6`Q<1#~{D%O8}N00W-qcxEanm6SBC ziYT@e27JfxdLIKlp^FDE96tj0Po8RY!MWoMyo~RMf4BC=+3887eDRt?ZakbR?qk?D zC#(-Pb#|MBmFv8d%?c~G<}o%H$`r1MZt z{hk_fP4<-5h<*yeszS~~DQ&z5;3J#Xe3h4(1?8qReoCGd7L%eQR=<-4`n?AFM1z0U z&AHEKD&PvkYp`+9vdNUGKn6D|E>HC2vosAi4*z%F&WMP@Ca#SY%JUPhjqytI?aQP7 zL21Y4mA)Lkuk=!)m-DfAFOrroy)>t#SG{)8p?YT|Z-ezn!m+tt?{_e~`<NgA(2M zfvmz~B25SpuiX6v#j1B*^8Fw8K^`B9B5h#>&@D8nAIy*LO7!~173`;ui%%{}w6PpI zUvaTt%b0r4i++4JJ34zvr&oGKAB2*;7JDhv>r*xrXA=D@U-IiZvi#^Tzdj!Tp}zdf zP_Q37@IT-GcmMdWgy1MC{8wQSGOiLBN#Ixix`F)RFhX6J;*WpNiJMz=FO2G#EM+0- zxeVbt1i%o4g6N;7!r8-T!Nv%oBn4@)VhTQnnKs;ID8XHN$dQ7V5g=fI?n&}Fov^0JA3j33T`+OAaUKrC0|JvW&s?uP%=p^~ zp0B8Bd4~W;3Z>4lFMn^qM`jkN2u)luohv(=KRX%%`Bu)Q1pDHkRcc0)YldF^mi*U>>}gs@!KR#I0BZwU)DSa6nIwz0*{va`b0?b z@e|dir$K0}(DD`b5bcR@Q9=<8ygT_ikxm?jHNM>c?ECMf%QHT5`R?-fd_hS2 zh`%Q2yB#M`*M;X$#unnvft>u8LbskL7({N|I5d20iq14cO1EH0pBAlbu-*$;O`$iV zD<2a|SM@8-tA*jtvD87ACIw14a{b~NGm9;TQov_TKkw}OCDzUrW(&d4D12g{U}uC8 zQmcSt)IX3uyYx_2{`AcGG6$DqJkR>QYCr6Xjn51WN?U*0j|><)AordwxO8(_sGAE6 zmO<$>Bl2aiR>e{fp%jb@pSH{Er3IfO6beO-vOob{d(`1^l!0bUwkm{>4*ci$Az07w zl+D29Wk6iUja93_n?|*Jo**H6fhh(Ir_ns@T2bG3WMCr|T1%2&rH$=|l z>58?WBEsd$+65YX%%b{NYA-Z5XKT|%q7x;Hkw5W8xsb{v zBTho;E8lM_gp5)XIE%79Vi@u$dni0D^yV%(K*6QMGYV4}BM@LrA9x=$abRtNR*KVS zNm(=~8Tl908f&=IWN^TNjuOg@Zp*#E@0g{mGg1+E&)Y;HN=y-a=ms*^GN5@;yZ6@j zC&%R!!$6;7uWQ4vkZGfEEa==Un(lKz)i>YQZ+|bx#7-96r@5c4u1#Z_wS6dF_vBMA z|69M}%5?We^XPie@V!8Re(At$}84++#{+d>+$@$~sFL|LcCwpWD4CfI^Yq=skG%QV_Sh=-x6nUCIe%lo~59&_3Y!DzPtl?3_ zf)><+-fZ+u)|PX^&DFz@a>F%(Dj0!#Q_(Lnl{{Cj#g)e8J)BBUd)y=Pti#iGrgw-! z4RU0HXonzvOcGBht*LnNd6)YvB4jAQ1!0ZWz9I{dvS?wD=DAwGpAhas?{|j6X&M&% zOf4qO=WK;^#F9D4ag?Bw!lxCpv{ryCQM;I$2tu$RIMJiSdoi51K|=)ia)MC6yecYL z)PjS#8E`JVT^U5;71e$g?SF=!Dv?n>`x>1O5CMm(PrZQ(P{3Tl;r8%rgC1~)f=rWbf7?2q#~ zXs;Bj2qP2BApAizy}Bjil*~ieuD{1-*qBgSDT!DaumP({`K7HN7vTU-5GQHaL~NET zlOBM8&%x?|;f*H6bIaJ6sUjLmcKjgeeGME6gK32L(s5Dv%uQrLoFf{Bp3j_w!dNPq z4no>p#ZrUcL>d)&y0-D#PHZuLFIG0ldo-OW5&04CZyGEGIFWJ^J`4EGp?&{Z!b%%W zE?L4SB$9^IBO(?oUMC|L#H~EKBMcRc!t|VKgX||jHVa-j@o%hV(9zM5W5CE9sZqgi zV$HFq{InwsASsW|5{CfC>~httdO@AI4#4lDeKyjR8Es;x)t(R_gEVYffhOi-CHs@^lQ!JE{Lz2>!8(@}yK#8K-*;Nq zqQADc!&=9EO7wD4daElQ{Vl%Vlfe4MD|GM z07&fB4>_!R9UqD!-3LyDT=DBUX}aLo(K%y3o~S*%0Mx5?x4h|#``*3L>$R%CEpPOr zhY#((;O^&Li(bcDcZ-Z=?`T=AuD);=X;#s(%b(?ub|kwf&^`R&7%Rtsii}Svm6|@I zpn(vQ1h%AB-S>Fs2O=n>6ve1UhW|nRa&Mv{TsOi=q%4jGrO6;*;d#YCgbo7`5&=_Z zJ_ybcNk)Ld#P_NhmKzMbO>RsO8)Y<4Fq9M~tpviWbyg|sGzGI^Wg#Sk$}r2s8*NuN z;}e)rOq8?2{H#I+b3FLFzVvFm3Zn;w%-QbCSX;uDLQIZb%3CNU8e&l3~?+!2y$MmZ3y){c~y}oiO_!h8shGVPKbg!5BP8LWKKl1~J|^=CK6M z0}PLX_(^EQ!2IDgP~KM-V?PxPgce$fVsD7JI6>fW#*2{XF{zA}<=U^GP+VY7Mvn7N0!=9Q;cd}J7-7`SJpwqcIFXo}xwHm{7dXJEW+ zX%zHP#8Mb$exv1I(qg-_Ub5pB_l;TJcWmcL!m8HZ_WSXfv+hx_*L+68h|xJxdxta@ zSxcQXp%(V#`Sr&_v68M!>VWH#C`fo{OR8NepqU}i#tdg49zhZIezVvN93<=TO! z_^$8Ji?hQ$(%+H@?d~r@1gR=m~KVxYj<^BCVd5U_x{lg>0Z_1 z*uU)2SN?RAWM^r1DAe~^Qy%u%g)dx?<_#p>FHiJ!iTKO$v;W~g{l8u;m|vyEr}mP0 zeiTCp_en}_Izza|@q@o1@BQv?OBOHiJkE1^ROT?`4%Vhy$MOsws5*2)F%I`mYbmev z^tFhWT=@<3xl7}_6RqwV3QRmU2zd8GIkUyJW=-61rcj}(9J}SFFNQ?IOb^B({dwm+ znqWf|UjSJ^roY#X0Ed8?Jti#_pWM^Yp_ZT z&|uQq?b91l<9Zin@OKh^4xH;vAk1gtKY{HgWN;KLVqHewE4L4n=3YQ&UvMQrLx7~p z?LN)Wn@{GK%%}v9fX4tX z0ERIDC_X4i*#60J#r=s(cz*V}RpjxG67WTEPws&j|IGQ;9`U=nmQZw_HNDnXCyc-D zVM&A2Kt?!g@gh7dD$om8QF9GQL#;z~Kz zdn^*~XymRe}wf?}?kwd{JI{`SWcYz}MvQg)zQe zz_WS;Q_v~--#`6t{KbD{ee*4j6-*3m z*PP*{^*i^af1BP1gs;1BafmU59RIOM4RORn_56M@?%)v7owmdXGCPx2bO@|@xM+M7ph%_&<3P|yTCQh;l;%J&P_#`pChTQq}M z3HTE0vhcrpNRv$m?s=u^BYMq8J&H1Wl&D#Ai%|RMQC|@oq~9WptMTGu_$H$s$ahRL z96lqCuy?wLKNTB#sHNs85R)V5fT5+j?HPK;u8j>{h>cVgtu;^hjJ8Jmy2d?@T$A|y zkP0hj`0ydkQrgZ9FZP_X=mqv>nE{TRS9+}cflv=jC3}BQj>E8yGrV*tST`Fl=qVqZ zz|iXdUgj-Jh$MYOer`g7#zWtyntU=md%#)F5njOxubpiz5skz#DU8%+sDDxN3oEI! z2$W$r`ty|M)cSS zdaP9{?(O-LbH|yaEt0>9B)u}Oy1EH>Zyw|?ax44y%e&Qkmh9G$5?-%)Zz z%DTHgp5KdNNMhNRz&Afb#bhMW^Jg8w2nD%xpkx^WRRWdK#2*ISNITgN3U^wB(x9M+ zo}3%5Jj+S%Sj6jaA&j|+G#D6!g1obprIF#CIh;|1oK`@F$2!Y`H*RPr6Ou3_p*F+; z8;OfW-c<-3@I*zNPmINX3+yT)`hVkQV% zir*MYm6NS`sq~BdH4G(Ja2_r2BO4P3lL~$jiZBIVD(S8`0&W$8coeIkg0+;!IiUDx z6wx4~a0VQ3^MW%HLa`u>YQ0@WIMR1Bfc09;$%P{dR>&DNqaYJ_?|263fr1iU33Ydf zS9c^Q2tH$H_?ByD`J%CB!g#A!i3Obb)Hh3x4NXVmTj#qd#$#CCQu+So+Ltw}VapsWp7&0br ziFS#e2HGybFL<09vvh+Eg8Pmc&y2Qm2a!ZV`6HbA{+Ff*09rnkQ%)<5H&CL5bQ_+% z6!K?MY>8Gj8g#*8Q%CB=3H&MctU>u)w0h-psfg^k~ zt{nk?AMHs>-BYY96cNmgo^nIJ=CJaplYfw2)Qbdo)cuXHMgorRiZ*J7OZF+wg$S5< zfkPcd-+*tLQnmz5aB1MC;bP#J2_n`O=Qpk^(!V4O5Rt=9h5ig&n8oLh zZXoHEigZ4Zo&#K`BDtUHy(CPMS3191zZ{@@#0x6gVG7+sd126uaAK%PWDITl#`&Q7 zCc-Mu9AnK#k`)q!J)~WVe5S#lcaP_3J~L_6Y&2U+S(RNZb1t3MDDFKjUoRv0OA^NLmsG(bKgF3K|%>c_qC*zNlK!j@9)dD2O^a&|>4dgbouFU>u; zs$W|-$b688%7<`ln*W;2#fsotam~ox@K0(sN+h5l+-`IWg?a&pmIeuHg?phdi|||| zmWS4jH!q8`zIgsVgQGJ2rC-q1O#C{$dxdtt!Di(6j$Ua;tpDkMwVN+~UT-eeo1giQ zzV;{OqaXQo7vv^4t3yCgX`(UHB8nMKi4d{H@P7Q)|4)*ius}Iem{pX_#H$l4g)fF$ z1Agw!R`oi@8R~}D1Y)reMS6Lie?$3^R&UwD!mMaR#6ln*rZo}9t8cTWH+|wIX%o6{p*G9;A7#18-@YeXP5_L!%Ds0j{WvYAri-=U!NX!*7 z7pI`KZj<|-9D4CPm$ZdQ@_QGolOY9@V;|xOxu%dbYF(5DmjP>d!r?VTG4`CLDsd8{_gmvxyf>KM3Wr;TLKX~%F^qH-yMd(Q;d18? z>IZ~yLEleBq{W1SFA!EVLiY}=kx+5OI%o=|F&fsnG7x%aoSHTv3>fQ(eWu)BD4dlc ztEMfAV!Ex`r0A_Atic-fT^F`9w^;yltDsI=?b&`}LP(>3m+hjmXRv9)IG8HEq#7w4 zWXtIx9)Z7J9aM#djx@tAqqnh(^B&F@MFCwgr#H&u6}*nW=%hcobPCJlD+ z-A>SlDF8CGP@?iX3bqaO{Y(WEw8NEM)ubv4oQtK2HFg{uH=uJdvDNM_`kA6=4B!={ zB*KJGFqYAPpyL$d88Ea=NqA+kAB(*PiU@gaT^lfR8iZnRMbK(Z80sA2)s)OOwGxYl z)@&ucH3qs-YZ2HPilrzG8$~@!>*bYsHsz%a4OT3b$V9?$|#L)w{rp(oYS1M?xnQ`hL)bwq;!81 zp<^XzoA(5W-r_n(w*!?b##1S^8%!SUn1B$`4QIJ}Tv* z0=6cv(V7&28IutjS)E=X+LN?A)(`X&sZ52`r+h}?4IdA=6YtL!tzjA3t*V*6qisyp zMisO#nOsK&{;RZ2M^*MQl4gJ8@A>NG^9^u9u8d+k9`N5D2A+lW-krbp*1z^&{rRO# zry_khwo2X?CFqSeLXln{m&0)>(eGZo)m?#panY^3wJ;QE9?LVm{w~k-3hQ3^(hTo@ z`s|rKTt&xlRG9beru#*7@{_u6i}InaDc48t^Zu3IJ?{^2sC)Z9;v) ziInTNrepxMEpr`azuC!Y>mNNb3`}ZkZp$5Ism@CurdLl&s$&>3P za-$j6ecfa2Q~&;-__KO5{vAxHHmXS~NA&cB?9gpdMI@JH>Bnz=!v(}C<#BRrnjq6; zTIh8dLe!Y{u=EDFAUrJlLPLLrKqa|>POk7$$b*)kt*}qq+Y`!L3Ok%BgyLjuV0bP- z*n~pP%{!W)Az6Vig

RdYYk)2R}z4=n8i&_Bcfowk5U+1et=f|Ek?cAe(3YLbf1EU3BF2;mw;*xj}h3YV9@RS-Cy(hkEvxs&G7IBhx{2&ml2xBoL{Jz4X z{Td3JBU=3^F7>~M&_k2qkJK<#O30-=(-}U^z`XwyurizwDcx5vvz_>1tsHM4D7YHg z7*JU5d5LED>+-rXZ@AMFn@!*lNntiUZ2p6$@ZfE~Fdj{Oh6hrRvy4TCFH2Hn*O^|k zRFZ}JSEZv(GBsC_PpJsXh8yAOJ0R#p-GG2X-ozy8(&YAJ z%cX<~y_O1(dXw<+xoyzZ)M01c!bZ`4Shky+0Nq z!^&P1fH{r`Y2JBguD=Kjp<35)9kFbAzS3yd3|9>g98VOHHRzBr6SJjoPup||2Ol2+ zJLLV2JP&xA{3iE%7^cYHyTJt1!`JmllaD69m^L?~McTr|_Qg=y6-}$VJI_r7oo#JP z31%u|@QL2U>7EG~(-K`B)E9wAxVy-|_iN3|TFJ8R=Z<`%$&DV5=f2nTXo$<6i%qpncvOGbz(6CZ%u+{dcLAyv*I%gkhX`ppSw`LVP)Nmd5?r=>>n6v%(60lpt@$>>k!S9in%dHDM)f{8f+)# zuWcj6Y)*-j(d)9p$YnAtR2u{+7zEsz))2~)Wp&k>x17@WRg0|G>h<1G}DP8wEW=M z5aNvdKsPugt>pP5YbD$mdzK68N&rUd{lWB|2w6VaOQOifk37j6VO4!W-f_;@@N(;w z;v6)XXhMP zd&L@H6HNt7!6(=HPb6Ek?hR~Nh0w9^&>5@P14f4Sg%~ek9CK`Qn&3zN-zn!eu>RFD z57?Ob=CR*KuF^@u4n2~7XD@QrfB;npxs!NA>KyRt`R36I&63_vi56~_v_f-#DGU@s z>Odp4cCtmKKWKYKSR3ga1%Q$CvYtaD0*pK`c!seaBIis2CTJ~kv$fSjS+wVvjX!{H zNu$ZK(OZdb4V>C+ba`SdjzFhQRcG%X;fq#IIR*TzJWW(MuC1`qA*1+PYHFwTGr z*S*11r1gKd=ht=`eX?BJW+-5#bSBN{}^g8G?M7!U0c!>8G zc8BAN;PnE{Un(Vf9j77E z?+Qv!ao+BQSNWii8~HGgZW-YFYiq&U0n5T5&IHZTWQBC=ZTx;K1;FKnX8&k6#!= zY7DonlM+Ho!VXKL7965bR8;lsp-vfA3~yMkg~v#MMBn^}o0Uan=DuN#WRjLo-bWLr zSOVYxW=TR}mZ7=ptCip9_><`auo%x$t+`$iUItv4@MZx{*=tk_z8p<5ajD-3Crr4Q zBbb(ZP+>HqFv;9M1@q*BsTACDWmWcp5FWX(7EA^a4=G&1y(4u*Jv?`WGZMmUd4Erm)G3LI!YHVXPB*b; z1}zx5URX6da{aig)B7q#gB;EpMfSXyoK#pi$)?ZGx5nTVk}d|JKbChJDR7nKPj3_V z?7)~#qS!00v@!V*G&1(SNeP7*lQOg%ryKqmC9n(dD~%KuI7yzv?-}YzT&5u*=?8Hu zc?tN1dtlKL(rO3ShO%6#jN;J-7tl)~wiq$A(;ALd(=bd}#G{Z$Jz2H9XjR3!;9mG` zfCij4-V_lJlw}j9eyz6gF>89AI1!a7<=S3$v$H_VbO@@*7mgDi-8e?qN`a7Vz z|p2YJm zJ0`UQf8lL&fpQP!_O$j_C{q>q%AnFt%DH_}MeBd9}WOT>4$1+wB_k?dAJlAFfzGSzkV}eR8tzgII*iS!PR_ zzP-H_g%tE*DAOP8-Ef#^Ltn;wdpkU4oz?@!uWt&rNZZSi7wuKpp6b^Aitn#Ox_R6a z+U=p-7Z3D{&&lxKW`eTpuf0~+T`VbXW%-?p7aF1klSstWns75PM_Qs40=kBEJ_IL|cfS1_VsHPT;5Vpvs&8OHs8{43hBv?ll{^X# zp-8~K8_HiJn3UA~9_#$Wa+6a4i=4_sHim2>=?phCJaGda7LDE{gsU-ckA;&eggTg* zgJssR1eLFswRnk`Cm$!p=71Z+NatXz5Y`C?Ki!nz6>VhQF7?*?3!jC0@xl1l| zEq{W6I@p$ni!G6WTr^x{o*@iLfqzIIVkv838AEg6sV?1hIR$sml5IR!{f-rePXk6x) zNU4M*Pbw5TLP?|`Ll@Rk&QfKy7()yr!tNDx#FA>DRhYLBv=UIUza>Se39%Z{C)zVY zE%&;>D{(@5tQ3%}2`bnQ)ninOc1Rf+lzrb)!|LlBbE2V?p`t?1U~;38aznK9!;Ly# zf&Q+&HLQ%4J%BNAz$*QQv&MbH=u~a;D1603a5pGsnLEwvB!oIDUAwPKr6jwUeEv#9 zte5^aU@z7LapbVK!<2(3Izcf$Dje+FRZ!HS}}SkIj}1U6tR&TBH$G?hN0wafo6?< zO754Sw`p3y9Dx&7m_RvT_ucTk;vY0Z@_J3!iZJY*aKv)p{E$g{PO!6Kz>(fhdUk#5 zXwQ!&ahJsXe1wtimQt8xVjB~$2!2vNf5->z9-KtJZ#Mj-M%vfE?O6pagj_U6=PR|e z-MFJ+d4r*-oF=B49%90Wb08vi^8&YT8m}ECG!4aNw1w=eW4l{I8Z?CC2*vs)_O=E+ z3Z%Y~ke6vRQpnDu;L*lIb8gbx+_yE39EEaii*$0Wb2e?Z<~;(-xEL@HGz2Q3WOzr4Qx>3{PtePKBWm!nV~JP5}jLcAHF z`-a>-T%rEv-u~*ft8?yahvg1W9@mc1rAYTw-dns}hur6od}Qg4>-VlC+kT#d_gdlp z0FEIa{1KwVQl?kCt97h|asQ=JIUd&jUJ&Q0pZ_#YyuIh{-BQsHD$$Qb{3Tet%kl6t zKkwJ9Pp?6V-inO<&K~!FMo#p-c>=%rZU63vj~{;evSOdEt%Hy$7ocY&s+MxMA&xJ+ zNNmJ@dA<8%5qviXLgM`VC`9G~xoWV8UhY34L^r$~0zrWusu?MmQy}DH9AS$ICDBTF z_OT#*j)FmNrBR+W^-x%U0zyM3@@<{{8bc?-Gq+lv+)T33AcRX<^z+71q!X=ACYb8s z_pGquIg+Kq4-*v|$Ao}Lz71uQ+d?( z&RMjFLx}a7UU<(LNHA_aio}YW1zlB8R7AzNNr{+4y zDl&q0A0g}q&PMh1Xm?Xpa@nG2&{!=fG%Y3OA+#F8W(ed+C5cUev1#(IkdJ4C;QHwY zaA^7%!blMh%feB{wdC5C7a!%q0!L>Vl^mzx87{hdB>%9p#qX=2;pKHqMfwGzuuUKkIW0sl8n*d!LlgEww4jS3 zcMNY=G3;%DvN^osu0vm!7;pY}NVM(qR(>NwQ?mj+WIRQCxya!?3tOy($Nvy|%+~pA zy-34c@WiO59{dCXv-6yjM9BX@xHdX%2s;OGzt;Y~@g-l+xbgWheBJA?%!rOUX&Cc7 zT>TgsGS4vl2zf(ggI(b9elC5Asy-1tNSJsl^J<5WOyR4QWe0j9K)CV^!3Mw>meTgLy9efE*Sr5d&Xtgi#Ga8wE0=rz)%>kO$fkLW!n- zlyVl8YA>AE>e&>;Hc0&41zHr`I`4na(I&9A8ES z?{&P3R#;#DYk`Fd-hs*=tP;JB4@8kR^ytD%=uNnN`gCvtKFKvfPRfsZzsj1g zrrS?0e*35Ei(6@m^lbt8+U?&CZ+i9odBxx_3&{H1lxJ71xyajMzvBO9yQ|-LBXgry z-oUr;^>6+|f4{@*#}EGSFChap7}{lHkD$&V7EqF9;5~%DBuN6#szk3vzjU|&QvGzb za+|@B{63Q*;~oqnET=P|2(1$jD)2141VLb;Kc^<4X`6~f1ZzXV+P$usFI6+hC=!8J z1kXriJ*Mt(xv`PfHYfdxA0nAMi03@PQ4`k0sT5?P7#$=JC!7;^J7_?Ffk3U@9^;I5 z3kqgF(6c)Z3Zc=nF+5-loe_-JbD$J0dju#R4RwX2F2rF8Wm6@Iz85pHApS8~=D;mN zeTuQnP-b17cS8Z54Pnu}3V^LbaS~LoJlsncjOu8)L-a15Xqr_jq?Tg~1`1_Uir6jz zYn;jaAoN2}aiP&dd5m^NWMrC%Pp_v}T80uwD{;VjWM1G21l=phPQ*mG=SD)gJsXTV z>*6zTD%wUl<4OC3hEYSp&b%F2`4wv-;pL2;&?gr*5}Dx%nnLr~aKYBc;>&wZ<<1QQ zfrVgXAhk)u9cq|#)fiXWa>Lx6_IA!1Nz!CbJ;eCT4 zEtFbJ%|hjNELdNj>8Z2a2O)5uk(0@`XT%jjlgkjG4LyV-|Cxd-HoZ^tf-`4LV~ovC z7%hbmU~_p?xUB$J7f6?22jh^4rGn~h4c$Z{f1{Y)0E8H$F}55ynE8 zpd$@($Jbw<>yfw)D(h?36=0Xymr>?8!w_SL*a)0pRx0Ztu*OBuD{uoVL4QJ_aYfHB z#(S(&^yZx~e32f+>bn`%mCpAhJc#DwuwgLDmPb;7lB;x_*`FOAPEW(;KC`&a1=Gpg+hrs;VNoc!Q<)Egp=uZK z>HRL@$uNgBR2W(i`YGXs$^ux9cSv;rJ)Bu&a0+vag?!bQEa=n;v?|EFVJ@-8^$W$02BuRO)i_pM6IQ(m#ne(@kI>T-qyrciu;-?d{*nKWjNb5d z_4R!ZdotE6DaLM9@Wl4P-l^w8s^zylZxMG7Y-nLzV80ykp+hofOYzU`4k z0tF?N6wx$Z_?Se?v7wO@?);hxpanfl@(5XKT{9Z&$){N`RIJvW|0t;k@ajnF2t%RL zSwPIk9AiTPa^}W^?6jvPGlWrb0=_d10+MtM_n6=>*n?p_G~jfM6Y&ZjcoGhm@Cz{e zUN|J7(I1@?OaO^xOnymL)2N|0u~&@7o_Ga)2kuScxd>a~#WsR6Z1n1v@hzMwA&Bu|M?5Pp!XSM8PpX7?lg>;yPHVJ3hUVr+VvPw!uOK@SWo;KOfG{ zSKhxU^mg3hFAGlJ;$`crr~cIwI%@s*+we+Td;Izi=Xe9G522s*2X?~@=k7^F_j#c6 zu~u(od7=wYtNHfhXD@7l$s2Otcii5}^GA;c%c!qoy?^buBB|XMY$?#IxY$+y=oP;& zFJ7024_~?e-aq)xc77HcTi)m|eqNVX`uqR+Kle}Q&))n+ptbBomsf(IYXT&cKhSIU zyuS0cyz^UsB|V5?h2_;jn5If9Mg9Z}MS#RvM|oy@UtM~`$>6;W0>d|6%u-g7!E6BD)b-_A|TcZYp^z| zAe3`R%|m$~m@LK9AWSNn^M=<0g1$8-x`a*D-Etg&3JPx|Rte})V@S81CL9F!pkpU; z*)@qD!z@G4X=tQUgk2fx)WVvepvtVwA65_5wiMy5DtIwJkI(UEz;$HOlpNj&>z>M& zq8N;HkIE1N%p)meWMspdAT8F>CPGrFWG=0efnq$?aUY%}$7dJ@G#RgCes(bmu8joS zhT@ky(kh#DGFqfDdr`?EK|zVbu#^I6wl-n7E%yXhu|ljON75=>FDtOl6lMZd;Jt7k z77G^{=1^g0K7OPQ7E-))MT+#vF z&u2~NmPYWae_!!zz@w2~iwfD6G8*R=3K;sIK`*4jgNZy^7u0W(HYwJJx#Yxque452 zL=#?Xn_BcLP9O=+MM$nh*eu~e9!45kdpm+1E39!MiB-gMVEwpM_2`TYX^;0MgFeXS_mm!63qxIZ1u`-@wUBXbqQ0#z1M4OIOuqs@+?e`T` zl;O0N=X-?S^6J}Yunhe0J1_>Cu*8BZ_Dx$9jC07f7`@4BBT@l4#%26=g-}kV*!V&Y zx!SPOBfPE;-KuSyRAp~G_iFriiFh1i)UK+6ZjRi0g>mfr_+kwAMj_ZMjp@3U{^tNopK>~l)6gZ9;Ztl@CVJyy^C*cbnS z3)_1s&N#sj__{=aU+^1jmRIDhK5H*7Iu(zlOkan0ujAET?0I>msZd|#O5e$mzO8#aZQnn!C$^lht|#`?;RPVJ z!|DPse%Jdp*B{{cpghui+qu*}czU6=E$`Dff4SzLtb${=tFrm6t>)Vfq}zKQhQ{3s z;NH~xvHTpvEXl9Da@`wx9^q$?Fsh}9>|0B#YKt! z%~jQIDbpX5U$Q0+(5p+&q)(q#OOxg`hR^_IN{)-wPiR#RMI*yUCcT%Vlr3uvj2jaK zjErUz9+F^b75os6DHcpe^914k+=<~CE^qgV#MdktBRRSgAvF}VRq2XjM8w4eOqvh~ zlwsQg|KuLpnV#VroaG*~2`f6rN(&vsl){5=xYr&X(9a_ZW)7(}!H;W%?<<^#)M;QI zAbLrSM93DRGVN@YRwX@;gM`_oxPbQxzdjJ_55JNSzv$%iFlt4ZIT$@F7!$_lw3chm zjSP;gG?ok@-h9R+NMg|ytcK@!-o8fs!-RD=D+L>1X5noJxQ5>%D(A-gF;5kOlwRpdp$uG6LQc&XI*-7#6MY7Nv(^8gNR>1MCU|!l0GW9pM2OX)y=R zYS`ahV9oat)*d0)2NAN~OTo01XDNe7hUnEkNX}^`uvlL|OGw1&Q{*~_F7mtzWqEK! z+#Jqy`U(aPGKHQe?11H6xlLa>%1#6#Rhn2}TmOJ`7v{Zh}U*Jw<1u zsS}DSae5Z6dh`Okin(_V+z!;%!T_KtmRO>2%s)Kp#+Snr^LGz3CWd%o-?IbfDbu0i zcmM3Y!v%X^lApPvO5O>)5Junt7bc$>KFOy2&o>#Ll0Gl`~dnI@7ZxeL6pRCh*2yNA}%#s3m)Ln4$ik`(FrS<1inV(Swz+p zPt#nJ14g#kx30E%1PbH<3)lw)&UjzA86m|-i(awvEOJlq>_)>Ar=;X48c9gQ!Ij)o zJM*Ra*E!4>?K`P)IsO#S6p=gs8h0UB4f$o4bI_}z?E&-oS|=pf4FpTU&-}OKh%V_>Kv=p9w1+u@BS$Brc1UE+^^=6IiJ3= zLAyFO9OL*jpY$y$CEAbQc*B)xD$xm%*Q z()HGHi_iG$dLds62J3InjqZJ?MZoYvcmcYbe89&CQnkAmM0lSQ*1s#XyMGpN3O6w< zH~quM5B0WJ>-N95_U!RvrwU%tjb+i>@%+s$8Rj}sbjOv&Zolh<6ZZ#Uakg!<2}RO8@0RG6K1ZH| zp&n_%ECyi4;dB8pevB~j_;gG`F4n|ifH5hn{fcBn356tQFwHw)!7;2cf^D3{0c%S9 zfhYowDMzQR5X|NL6I7AeQ9j6uX%SQQ-CUngGDnhiwXmm9eB&u*gMv(e;cP>hHJ9d2HUQsEbPNjt|i}YeMX(%Xjs)Qi} z_w$@~6M6|jl*B`Lsbq|oFm^^4V68CsiR*$6o(R}nK{psKMMp!C3xi?Nr%Y4uv5lO2 zltO^OX;%2y3RNX8GNl8>924hEC3D01RCwS9c)%n=B=+H$gq7x(S@9mmJJARq9;D3c z`R-jE?U}?o?0*Hrl_A~eHrQKSO<3_ga>s)XC$ST70DoJNZ4M_1L!ysQLBo}}tQ%c2 zeCJX@3NZ)Z2E|W97@tV{3VL|t+Q$E*{YBb<-+RD|J`;OLPI3T71KKHZ)(U%L?ckB! zC>p(zR7x7oOY(H`I^Zq&Eof<=Dd~I+Xc~>zNBbVQX;Q`v$Zx70W9a4PI)mp-)>UbAcYIHZFx*7Z@A{EU@BI0nh%L{)`Y?vpbW~d(2`S7E1Lx}1%1fq6@mp?FPa{}PAvy)R0FHS^u}(|=l0|a?EVjlh zu&}_~4BkEv>A-#1*2<;x8GBkc0Bd`Z|IE!O%>@~WpOWA4yn%66Bm(9%&qZ2sUB1;m ze~~Qws@&t)R|{yT(=W9f%L6H8`er!~-+n8;U$vv?aD)!El<4k}e*5B){`ia6_2Um; z(N*aAx>J&;-+nIMKDy4ArZ<{7(zpAiPy2g@d}H40ShcwfN+}`RWE7ReL+tbqpr`Z) z<&kDs_eKQP;fdhubHu50mq=gSWnow@`W4RoM0P-}YnB4NUe7L`=x6Ucibo<{iCzc# zNB5j)kKgZ>lgr}2apj5b`2Y)nZs3J}aQVDE(kmJNq&J^p0gV*%G?*S!0m;xH6$ve7 z2G4>kdGEd(R#$~DZ$`N6`rSXX3b2KBH0ocB6j+8L56O>HRao}tBiBkw`3zwV!lR&& z3=8NSXJ>LJjP<2u6u<_ZCwe3?pB3J=n95no8z`1c6{jHlF#=|i09qAQka=_o1z{&D z3^h|@L7SELM{gv>78EM;c`Ck-^j<0ZWaS#aT7R4aA@+f3bj)(o)Egca7qiEp4`5i z5B6RPzy3AwebR#@z`dC;J8Xin6Spzv6*8E)V}T#xjhVF`P)b6uXa1M9*O1Dn8BJM$ zfx-cY0#_(p;JAF0vPt4MDXAbFnqp%($x(#N?Hm+0X6DP;VUoqUbml&au*ee(9C((( zXrqDeCwlL+_IO6;`14|2z2ZKKBUWy?mCCqIbs1=7P@(52}TM)tBIK1D$|oyO+j+I7(=W zuqNzx@E_qlMFdr61rZ~@{>~>N<|PWTq2Dr$qwZU0dqO=BO{6}bi9%nFS@3S2jY?&# zF`RS$*>T7Ob28L5I6zBLi+0kZ7IyuCP||@&7FWf($5IT@CBs8+Qw&=7!MX~BWzUHx zp(8)aIwT`Jnxu3nd_}yC!dkIEq8EZFC?RmEcU*8QY9jgxNn1oio^P(BXY1^j+p6{3`4*W zrV;TV-yHc|>`3tIKpp0u*JlqKXDGP-8v4tC9kNWB z<@t-&>Yo(g_6fbZwaf79h$O}rNv zNyxJ$>mN1#EQe%TlbA5fo;4WwO6LTe9cduHIOBxNk$5B3WX346Qg+9>59n(!=3RL9 zr;1sY1UE6^8ZnR?aIv6kZeHu_4t68-WoSQZ?66ngaY zH($~9VtDuSH}A=tzP-F&e~1oFw|>9wkzNtZPrS>MX4G@`lXjTtc2A9;?e}&3{v8}D zAHZR7KUDZ)?1I(5>j~Rm!S$|~fpt^cdUyL&pWe1`?psMq#Ix4&>hbz~d3|mH|2eD~ zm-h@0c+>~hbE8|BLARW+XEaN@e_8fpg?67W-e^~-S2a5vpZHJy)Snxtn|~hj&oC#4 zLjWT;N(g$91GEAB^80(={eR_n>u)B}aS@FIIIQ&nrm+4B7!`|6R89`6rE;@fGZ~Yz z+)qKP9B3FSu)@Q-J@78+dzC=oD;2-${^ zp#pDXgwz-qJ3Y=Y-GNSbA6rbEl@N!JS46=9uR^E<&&}vXUptG4gTs|?!@vjf zyjh`A;e@X?JvJx+8t!9K$RXq}9T4~(7G@#ggcrk!Y#2ot79B;44LAZgJ6HyogKUbu zZp^7cOGC&~D}^o)x{9a;jB3eP1aHEt=X15B+rok`;`-q<9{*VxaCPXpYmL}Wm5P0ErOF2+_ z-&)B%#@yOc(5b9a{Gd0{m707Wyd$_I1q6vXdm+Hl5fD*d5IX$d`MnbYe4 zQ9!Q0Q65q~M^6*9ip2{h6hSIMhIMk^@VX}*d=Omd(Ov@jp;gt?X~hWRfD23TM$jWl zGA0)F{$23YBB2@lF~|i3o;(UWCA@ zA>o^N2*p6cz!4qZhUedh&C{BPZF*rY8k=LEto?gJgjosF&bQclOFOfqjIj3p8TBbn z*t0QL%aJR1fRZH!?rPA=Qj|%1(2fekA={bRgrmOk6eUs{h6V$q2-#!a8R~Y(EQ}UQ zVkxo{*!ah50(2N($up#73WYH$%0m{&+aPVo&pR^E?CfDTah5}1APPZXjK_VsrX2rF zCMDS9Q=(-UZahfq*Acn>^qOZ!k5PPztpHExIT@8 z_~Npd>`FB4WP@;N+r^+*Ptcm=Vo*lCW(xRSq`eOhFQojnOG<-`A#QPkp;v=$&V*<2 z-*m1y=?VFLf(vGig|_zxoD_zAKbt(@pvXE$lKR%^lb@B3eD(pPj@)fsEC9WQygpb5 zNrg3uW(YHX{)d0&zxg$hFJ3PC&C8!J%9#$(qcgv6N z$HR}cwpdp!u%6>@dZgI`>%Lyny%p9vE()}Jqi@3rTg!wAFP(E07~`IR4oaPrUT8Xj zaCyyW2_qXxq*;U_YD$$Q_Z|7P7 zw_;qCPJhlfE3tho-g>Pj;a7`IC3+qADbYNxmFRU`NZ>Eh(o2sH{|(s)OceW$UbgUY zP_(%q@UkYwl1h53A(1(;yKE#{__ZPZiBBA(jj4n<_zEK*2_Zyb!Hf-rELW+Fv}n!Y zi*w*UhoXwLB5zdOg6y>tVR2uhISu3|&JeIYuVqGyg~*eVXjc`w0<6o?6WXoMCebFu zD8gv)x2f=mgGm|lUu4S#qaJA#L@~Fh@Tx`YMRumF5T;1D=!~Q=#Y@*XCzLn#{6hut z@aO~yTgvl-#afdA@0r0Uv5u(bi}R76oB5Uq^OXf*=-v6{tm;K(W?qU>{p!&`QA>Larbeei{rpp^Pj= z;3fsk8EZHh*>FHfI1)xkgblnHagJf1dj!O^wjV4ilUsNRRE09W};Pg?Hc? zVap$baCc0!E`;zpC)yB65c>o0bQ&67aRJcrquWj64nMi5OEe(Iy01m`Gjl?ht)dB9*l?L$CqicK}&k#x@&zS>` z2!o4~xD-W1OL70O%C1)>0DoY+7n$^319uojI}wg*A@t76+|64*l_Ktu2^v|N1`oE2 z#Sw;q^CWV2X>|3XY?eFQw}%IN9H@#LK3Ly-o)7QHA*}9CA!yDsXg`c*&UcDmqXH+1 zTGD?C(Iqe&XcJF8@*d3O4mgNV^QefHh%^YLBcjt%p%3De1=DU<<5ldszg`?-ewr^4=A|d5oRTO!5)y5yF6lI9-s%YJe0kt ztfouD=*4FJaz?@xU3aO=K(ncA8lVA1D7vbgAWgB3NmLe(Tdh5EBncCa6>|&EujV#l zPJC9d2d;4*#Ju$0`V=aLCi81~=Fn6)JracqI`)s>S0y6_Kykd5Mc5b6#xcRt70iAh zWePaC3@jsgA;!$>DK~L{ixeHDA`AsTWIGtHg|bVnA=k;m8Yq33A#;wb3$UVCT>iY= z?Pj&nTD9L5DH&5XY2NovqU{0F9C95~23g(TkbV-eO>lc$u04-XvRNfQ9AQCs5n?K+ z;1IHr#P<`jjl+%WPkQJw%*;KUaPfbpREAmb|Li;om>Hse(ufoC?k_GS`t*lG*P#-< zywb}X&33@9M5Ai=8*ltZu6&R5-4tjZS4#BDD_VFRufQw4^ti{5x6Vwd|3Qgf&Q|}c zx1mH!6dQYb`KACMl9jtL-={ztDA5AvueSGppyPwek@mH)9^;+15FEXF8l-$(-LlfN z^fbP_Dy02*tKN1i&sLGK0Ju+nDbufg=8un;KZA2Fi}i@-vvPMkUI>)whnLq6_Geuy z)2!Cbi-BbQAMY3w)&6%8w4Jq{w_Ck;W7 zkl4aJS#eDo%nYA#Ej?A$h9};zAWeGKz|1TP)7BiQtA*4V1jKc1B+NLcZW$#Ls3%5L0(K3&GfF`n0#<}r&m@Gk z1`IpnT1r~{6^o);_{71PG|Owl84B?QiGlC90cS$5+Ny9o#D{hFlh9`$<7u=G!cc{% z$%gX=Mw(V~?vs>NMy)uJ(?~OL4RJl^ML~Py8WF#XnKn52khq6KC=Wx8);SvRk%nUo zZB<0u&@)n=M_vl$m)->s6AFE-#EKGI86pZ%KHldvG0r4R5uw4983WGkaR8d0a7{SY ze&OEC0dpK8!ibgds3M#e%6kOdSSpygw-U5*5{-9kN0!eMJ`(GmdDB>{r17}k5*sCb zWyX0nE@b_#wF&`y&~GU^b#)d#LD-_`OMGTEU#`mxXUBa`}0c#AH(ZPpzJtFzHp-vDgtsb>^sLBuSZh4}+1*tms@riW*yn>ncEDiPJ%Y zu;)!0ts`7&o)x2J#aoH7N?t&`u*7f4oNwII_Sz%GGYelDG>a}KE)dR|>y^A%2|J!; z2}92r)4wvUJTI?Nh2r(4MaPPqN@dq zz@Z7bfQkj-=*A~yEduQmCnBe#@ap0Z#D9{d<8NLR=!-Y{<~M)SuROnb zIr-x+$B)bTxN1n@puV)6k{3tihDxqjfAhEG`grZ4m#w?Kb z8h_K|pmBN_j*tAUR6r0& z5M08;VbEpaE47-#=@i~llfcgcvfK)x8iBgir$m_vIn2k-&kOv+0;JuGW}%Gb@akW0Nwz_|wrxJhx)v5EKM0 zoR);?lrB_d`bQEMj5!}-fn&Tkt1?>5I~5C+68h43y6+C@^ez7wN84tfgsxAne*6E3 z`-yYhLS%-rvH3Lp!J)~@=_ zd)t?_a^=eVWt=Vn8kh2%{7$B%7N{@sS+s)OH^TFlDdhXOTvN89@des3in_#Q9x%_{ z1|0P^`q9FpWo)%Zz9dDoAI9^qMz?FKk6&Tv4{+JXttiA;Ywb&WP-eX0$B_NzDx4CH zgXys4UU0&{7kP}uz;BS+aGGD}oX;B%8QF`k_gMExX1P#n;hH#T#S{80ZO?w5^5YfG zO=We|8v!hjb`BJ5!c=ubbhhbZj5WhQsPh7hKeKQ3KJixRJgvlbn7q;GR(Yi>nkRDk z5FY+SXM&g2WHp-5c&A3mmU*xWD|fERrO0C$Z&!JL%a})am^IzF>dC8&py4BxA)@JX ztwvCO;GQi*%%BQlG#hJQT_Kf@|HP3?}54(ezRGg+sw&QZN5+|Kfl5hyQ+tbsHRqHV%2D^Z1p&6|?Kn?khd}ORM-;dZxemok%_G zSJ9SuyEdgnzyJOJ*V_79D$);;#i{FU5B1gqA49u!q=R-W-kkr`MIVmRS96=Y{jA5& z#Us5B4K-U?bw0GJr@i~+I_~Fx_|bheN0qiW1lrvS@!`HgO7#BjL5Ws~_eF`$uz?Tu z!dZExzrH=v-%qIh*#4yM@uk1`%~YZ@Pg=46sM_6L=}$jR^9_jn!eyu{Jj2?;? z3_hCa#1wG6`StT>?@*%Mmc z7RKUwra%_70n*@-tAr-8)CXj3)iv;vqyUkga1rCU2(1z>yc8Nui%4m9S+~aFkY(3oCUIJ6Fad0fbi9Kytl!POkz=@^(X+ZIlCI=`O=g#teBS)N9%p;1XK+U{vwZ9&)TLD){i&@|rRS;T+M zWc5G`o{oLzH8jHM5G=Xof(>_Ws6zJYeGJ8FpHGA_SvoPIfqO-#h`2}rEVP+kuj)!Z8s<3LVs`3CgJOqo`BvB zxYf25OqTh;H`l&1z&vSJ=5jmb5d=Z!sE0vT1}GEFv>13Qn%8@wjOvUq(me_fN_Mce zk#g{zcW$-6u-Dt5iYO99CitOL3%kHyJjBNSILK%eof8aUm+XXX3tU6>=Q9hjA>SW{ z3>XoujUGPsyjjUbO61XcHh&R5O=bFuI)gYdBtMD$+?0V3+cU9&aX~$QET7F$tznpDq zuPB34@E*PW8;3c8{?5(X$h*Iw%Vij1QK;r65ZWK;yZ&C_C)1?(@$qJ<|5Q@7s19W+d(|I`$XO zO^kl?-*x-$zpjsuj>#-O_KOS?mNS!~+@+)4Uq3b$8vA%h7x(2VD*e$%A8p5}y-=dx z?0;TII$?K?bWT+pZXgNw{m6|rg~LC-|5=X1eolvT*S;Ph-0}7;xv#(Tf;=KyU%7oG z#rfg9?dE6OtPkJu+-=E_NBaH8c31n568+8ZTz=ci^L*8zP=)Fty(`sy`lmoFgOw&j zAJ$=A!P&r^0rD&&o}P{a#x>%nc|sacAx;3tL1}N6M2jW zEsj$|+<(i5V4-<7*5Hum6--&V z=K^xod(C`R=UOg{31gGMg`DBc**a-4PlO_RmwPR)qL)CK_;XmxCL=V8#7f1dkcY-C zL-d;}c+c0kUzoR8LRavo8~GlT00=zRxF5nf=Pa27e*kuI*s$8K%#B9gk(qL}g1y}H zKJ00VG2A#mV#}p)m;@5!J+n|Y$0)HZ z#j==QA!8NqfxSh9UdYZeRT<`9Pzxoc5CMx(dAgNP=FS;BI){`X@BA(7<)$+^hvj9| zJKQ>&Wg+q*jVdSi=8C3M3CH$wBQ<;}1O@P2ybq@re2+@q8ViJ#R9a*Rs9TUm_)tDg zbbAO<%s(EaocVy-*APHw%Q?z4jr62(@-R9pau@ycrd^%8>9sXTX@Co*SkWj@L(^U| zu8mi1jTZ_d=N)6-TbNemSPYVJEG`ez(JXK59USNhuOfOr{)O>LfX7<2AREM0E2Bp3 zNgD^RkGU3g!k{7go!`ZkkdoFqJ5Uk7W$X|Q5pJJRHA8ZInPcuSwyK7}xpUSdEorHM z$_;pF`g`MZq-Y!UVD8lwRm2q2^1_S40xuw3j9;7%=Lv7J(f}k+C_mFoF+g$kQWt=& z_iYtkGd{1q(fO}nmj`K-_UAILkqdcqFDmiH*4;3HYDW2u_UnOgZ|(uoJlrUa^%%P&7xl_ zP%AHR?MoWI56UnHy&%Ys*ACT|^u_}kHF8D$tbA>^o#3jSk8OQi_Z1*iwjrO3 zwhy|NqS9Xq=DTk0?U)(1FxFF)RedMU%Xo4v+l6hGVXb5o>4=E}0vjIpWh z)!Q-g`{_GL+}@hMuJiahi;n%YN|f9Jzlu? zjZ9XI2L$eEJ{??Wj9kXj@|x4iaT&~(F;T7 zM&Tl%a(MP3-&Jq@*pPZkK?6l*_V0=)V8NjMmtoVG&k?uUW69K(ERhG4=b(q(ASg;9 zU)(p@LT$G_ar#tfaaI8;$fSENkY<9olvpdFk!+~X#~ws6r^VuWRstG|1m4F^A@N`V zEzq0DB41l@KTa0D+WDg=;OZyvfB#kjf*Be9%EDcK>Ul7W>}u!-@#>(!5cDKN(27(H zPyl7`8z=q~9|Q9)^?oSEF_c`?rDB8u_p#(8*JfD?e_L1OR)(yyBxBn>bI)trpIkEl zYtr6}F9zc}X7RcqB*s{)==uOyI~we4dfBXKjAU08qbgbuV&0_+_b;&-0Lq=SF(E2W{?j4iYbNPO~jp%C7CAwwDY@3Jx?2wRdKBr!nB zP}GK?JmLCNq0@sjoqU@70ozjPB!K0?wmk>=x2k5ZEL?QQtvkWkRod6_j7s*tta|X4 zp#Zp$?Ty&}2)MT^C2O8WizC^Xl((o{CDY*7F-m;$?=FM_QTvdLPEPrYwW*m z<9HhFuO90~>3ANkg7=}&?kenj_e|H14DH@;KNx?~s6YPT&G9i?VO^Z2U!O&&-?)8) zPS@9O@G8AhXYJ3L^jPO~@+JuK0Ok4_J<&RTE{gQ$mJes;wA~;(KPy+7gyi*`*V`Ly zAE{5+hkTWH`mqH1yAJgt8^=X~z8~M7RuLXQ{*^xoDb!zMKeR`rP(SHU?B%gHrb}3h zCW=5-5Sh}pJW4T0f&^*7`l3b4zNo$OX3Z*8i^w0=f?l$r=g1C*Ig&WKxWQ)L3#IqL z7$w+YJn~WnnJkp|V?68H_YaKDYga~yd@~4zjQ4OU^Hu_Empufd6+zDmuInf$$QlTc z0j>gJ5;iLOi*6kS)fyj>RmBZn^{l?Tz@em&sKW2AEc`46#L$~vmGV~kE9k|#PdyU2 z6ef-9M&m&Vxu+Cv8$#ng`!h?g{8s+W8UDqJ!BR|1V6tLn$3o$%R3nEXgi6+)MEsVD zISBHiH#91YC@2^l6bdn#HH5~^#-8P|bLfN6{p=xUOmtAc35NP)W$BWk3 zYTZ)FUP=}4ssapShQmO>s=-l0BW=+#IQTa3D12X@QloYMp!NKK5kibP;Rdbr;ClFZ zWHsZ>{8EA2`}Y~u#kb-K_54hj@6tB!?W*(1(D7YncAn05W>jE9Rh#jg8$-4B{Ssey zMe9X{c3YyedNuaYdrO7mKs&%Fqm&{k+VT{)N``9J@~XQ+SeR=i3jk08Fvu2Dt8v;~ zbO0e?haxiee!nC9^X-H&i|*{j>fe4iBTbBM?y$C|TN*-CbrhA2`Dt&W{r*4;DtP{$ zIUcUPS7VsM4U4P51pCm+>ZuuCUa#2aP~;(G9xh@0WTo`OR2~ZVTvQSnvTC3W_-^HO z*>m)SVz6=fEae$g>LAWeaVXU+N;vZDM9q_eofHnz{#5?cu(+S6YQsY~D#elDX8i=* z6MJ}8CkE=v%fd*92M*Xy^8TUCl}v5Pp1JyFjY5Z|`SX(-I8gsVK~Y6+R&h^d;F-TK z&V6M#BMgntST8?mL|ss97}~wJ<8yRtEkV4-FNMDL69jA)iKamAG{`BW@gTpR#@q$P z+FI#~!VM_zU@eT0S}+cFnv5r|LV;hVc8kwkAE+*8;r{;ad3bxXqWGrKiy^Pin-A^Z zKQp6pv_uONyzr36^DSxXv6%XG$KPW+lAiCMH{E%Lyx`BIQQLTy_c-tusF1&nWa$|u z9nl}i0QUmnc4L1HBH?CEx{D#yK zC|7xf?;0IYGc)2V=W}1{Q^tDqqIV^A)Cn~>#{zVxwGZKx; zZbnMba3eWvdY2`)+KQrS$U~-o3>MU)ptXh`C6|_{8|1R9m-EsP}=IM%b3A3(X0mGemlKPnUkfS1_vTMU6 z$xbMe)}(_dgmY2fJNGM9N_(gdm&arKt66C5ryaW%Rejh>^gbSY^zW%k)7S<7FAt>wU-O7;D3ryoOJ$->w_7ft%-;E0z==Zf~JbpN=B2~5feth>gku3kom+ko4 zzx#Zc&$K)+Jm#?6(9Wo6WCRpgV!!7W*F}^q$<^<8=cPAfys49`Khski3s& z(Uj%Ts1Ruh7x~E11Pi~|^x(jIr*=^A7K5#y+1AGw7%8>@#r7qyN-)jNQ&@zMg1 zV)&#(#FMR7PV=&H$DtM!tL)NXcw0uI0tS;a6cL8$dKoXUqIypsE%hxhlVo0}Jdqkl zAP;OX)F*mIZ+GeFU<)Hr^E3qPzg_Gln!<0zybD#CsgO#q#8G=GN}vrYX6?=DmJqsz z0quk>&`BYIvdX)4n-^?IFg@=FLjl%u%GBiQ(IPiIYf6}6T;=6oQ!kl@z0enuO_?g1~zWo_31S)L3 z?r-p@o%H69@g=rEwkYLu4LJnkJz!K?q!Rb_hcJjp0hoV|!sv~oNB-?LThG}l3t`;A zR~Rbbxsb6X0e^B`Wf`b~eoAMd_sAI;#C?J`B~hW{*rPJ`n8~B2P`Si6=1VT(lCcW^ zO5u-mDH<1_L*8G~Fts)F5w=O3RhTdE=cq7Fc;=pXkE8aAnd&#Jz6Zy3*kHZZ9D$rGu47?axu{!xtt&`a*C zb&hAPy0&qg#sv7$tn=^9pv-kDi&k}+(u9J>aA%asG3K@i`}s$jO~cD`jgz=xUf#Go z|B!dp7~Qi{0Z8vy%HDW(K5s3~l}nlx%1@@Vpf9na)nHH#k(s3V*|zAeai{0l&<-%$ z7o{=lOd}V`NgA|riEcP=LQ5T&FZd$ve zLyh;0Vm;h%J{QLMCI$+)XC%xRqkc~=9GZVv_Y+&?*l66*^`bX^(Kj(2a(YH{SoGL& zqLYxu3z`KG3|KBi1Hy~mkvcH4A!-iB5UiPCcu>wnYGK$j|BW~)U&9F0?PtwKv8odGyc&BI8IUP^Ti{9@u zM|%90%Jlts{^Re*|K$JiAOEo1fJo7N0g@uBmmFd1aFoCLmw%X6DrXKZHrGjkW0UY_ z5XP+>QZ$ly7<>qXQZFJdF9?YIBtvmwRF_;ozMU-@P|QSwrq|Oh^=(bX6SS&%-)O9s zG7e*cykjl<9${6iA}y;sB==}RN!$n#)+A~2dW7nw(81qtHmr67 z6PyAOuoOxd+I29Tmm!0iYbpmh5Qf5A6jn%3!uM-H#aehPJEU0e*gxLvIH8|&SSegl z?Zn}(a_nwOMY zU~o3_n|l2QF8bn%0$~=tI;c@JpTQGO5@R8m_3>Bj)E<-&Sf-ZQIE=Zd)Aq#sS&>1BYmh7jM1=CQU!k%vI!57SR7bs$lE4Z2UG6w|N5wFkUq{7D;p zz;OWyOJR3~by6u6?yLN>@yvXy2*IJXq2lt97T`3Sw`JIj;S_i{|&r}-j8_B zmWgkLiD^6_j)U(s54c=A?uq--QFM9M71)#R;`UgNYH?aPN!EG@zQ6=U3u6Brxjt2G zUPQhQ$P+UB%TTG}tOs#3TyqPq|FU2F?cX2k)O>HsFvXX-yK>9~l)m}l|LXt!utTxknch$8vwAYTy6FFXH}@(ejZ1Z9S+AA)WqJ?#?QWiJ7l3^I zTVMBYfAsCxy}>e({Qmy!{l~8pnC~hwwi|eVyi2{=UV{&=zwHw1qkr`KkJtW3|BJ)^ zTVLsAGbeCK9sgg|YAn_+nOPfrpEd`P84Ah%($8^57Qm7cE699C^F zY?U$=^w40z7a7PZ#DtX}&jwrKV~4hy9TRRo1n1p;zXa4R8DlZYnX zH+m!>_wV^2{0ZJ*&A|v`T6q0v0iO&vNP%y0atzy}@(k~`wRZpn4TSS1=1HXzRXyP? zfu{@4lT4WwNS8O&;8BO&vIMJ~x8Yh@d{yZ(LB8mn_C?5$c*phwpp*0(*y)5-%yk(I zbIIE!MlU7Zt%_k~4xFP<&=E8b_ybem-dHpunMtrB1J(K;Wb`IHLj~?*p-5NWh8~zH zJ_{04O;8?f8MuTR5(5a+i{Q#RrlCv2CX-uIbZh)x`$Cf~L2w9oZmph#q?5XiqA?9R z2k#lBkYn6gjM{jeSyhJR)di3J%`L0a$~!58*V*^OuFmyCZX-jq;~3TYxjiYA-kebY zVl*LR4`v8MfK?daLR=bPn)kk$qGus6u8M+qP=E4scg2dLUuwhVTJ4bVFoau3^Xp>^0e{N4A{{bqGwk7Kt zy65f1flzw%`vLdrtWX$#)cmn7(RjwSZUTt4$mvmN4${|_8{E2geKgw$ukdQoBjLQ} zBz%A}*Yin;JEK}SwnK1e3!X`+w?X4uAs3#w$&0Pjjr{k(=9WUY_wPwIg!VDo2WA)J zlJWO4^l9t}Z9d5Zjxm;meDY$=8~9){ECy06!ka1yN1PEtqF`1^%@7{Ejm@Z#yvTda zWMHW{FwqmUD-U!h{iMPy-sF0cc>8nmJAm(2cwOTwNV(bUKP>*P&x-z`GVU}+EXEb@ zVC1AN>18_yrT|7jSMo(HN^BXu=WN1oQo39fd}C_giS-7>O?+La`JhcD8o20I z6f~n86Wo=|b6&Lx7V*MrFDGB9)F&DbWP~^xXGByqKXJc9T?CG!$3h+`V>s}wBmYD{ z?PBEQZ<|l3^1XVO8|X%M>!_0Shxx!~@Zk!6#{E^a^=L;86gPOjfoFE*_1wRhE9C;S z+W##Qgmr{a*fjo#Tuv`*cRV2Zb*r(bqls1IQxl{blQ_pd9d^ySY`6cHNO<=62p^ELLOgreG+jVS`34Za_`-InV zfn%R|7+OQpSmZMiuJ`p1|MUOi%jcg#k>1CP7FfIR^6x@Zno9K7e&y>Q8&xa9~hM9ou2!ZYx}D_wgUZmt*_o#E7i<@wn8hvF6un=o0DUqee>s> z{MS3&eqKks!y`Rk=Rw8#t}NFNsYK^*cPI0Q-*PqLP9=H+b64&jR*H|m_q}}os6@~F z=&eA1(;gJ*2aj~-NB`!(>)%xsI)!xK|2}2!=>2}Tlz#fH`{%nidcST(TEv0UTnXTm zhRnp|?I=PnR!i~Ie*DRQZHfy=0TUGxQwUX1hIAGzAfwzwDsQxj$a4|ZC{iWsCcJh= z%cwks2nlNcN(qTm>jK|5h0N~HJ4g07IUfo$5)=_n9r%q(gDiO917RlxUofr#4bi~^ zs$=Fj?Jtf!wpsC&%=;w48>}lswirHMEwjXgBJXO0Y8#GG#k z{Yv2qtnn;?Y>)5>N<%X7vjxsnrf=;J2`_(-*|18dKtQF{mFLU6!Bng`6B#=s0@0vx zRLzY4oxov<_U?+_qBW11%&eMGHDBQ%NK$-tx>$?Vv}_ zhjAl@@C!1vmHn+~p9RynOfkkB4&YBuuc9^}XgdWI37Kx{k^oYMdnhv{CT-zOk-mbQ zzofGz+;ewxU#G&udJ9u1(*CznV2Nu>f@jp^YW*o7LTTHg+Lz$188pwVeXoEpdN}9R zx?f;VSSesZgI3UhauklrNQHbr`010wIQHIJ&m0?ZSoGhlcIEy6Bh8*Ogv>rB6Vlv- zsTxC2aWfWnqvEtvgWQ_-aNcE<^frKMM3Hnv=P;kzqSj(r8%abKv)`~kgO{=;4t|^5 zU1nsq96A`{E_hH>YNTwg6r>@ov@g!-CNgUCQmhD#uTs)!Ff-!V72j&ntqdPo8Dep_ zO3}44P(eARF;hzEk^xcz{GeI2e;H{(V;7=KSOm#WDiSmxr^k-*9>>9`6%``GdYt~; z)ZKypP{FZZv4BB1G4dnt`D_(Uw4P|ZLb^^XgI+RMa2%YCi69#-_ZX}55N`|`M1 zMXo5#&8_y<_FSsy;-RPkhdg3|l9||7KFKyMtoY`*KV!=&`(BI2K24$a^zx~*lD{*x z$ej20-Y>j|aPfAKXUl*;XqwIe*E?&IR9|d<4n_|;k?I&N@6uFvYus(eGV_a%zD~Qt zOn5;&w;5Gq$fq}5!zhGkoOEuYT-`Fhxv3~-DY#~(iycSvtunF=9unMJCH4%=$yKMU z2jep7c3AU-XgRCWt&YaaLonsu3XK{0SoRCQ{XTKj2eyQsKH$gwNW;n+2C^Nw`RD)e zzxrjg!1{80^%uS$pWJ_YW%Nkz6K5}JyDHQBD24iuemx$3GPyQ)#PB6o`dte2<1uSx zz3IQVwtdmBlY_tUH<>f7qGFh^+eM*PVX{)ZDR2FZiu7SWrz60z?1d7YKZcZN*W#uU z{RUy(U;msc-5-8L;O(&PcPY_d`AYu&ai^?bj*Ak#73lr9Lk)HhG#*=-{_ZlYRmLgka zwA}?rjA6skIm^mr&D`T%#Kz=RW-BatoD7P9kr5^Fm1Q+2(RnpNg)GCbNTgA0>m)Z1 zRP;1#@WtP

e&w+vnd3W=B6qTq@*M3K~eCKwMnp9xUdTx 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

u#8 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

v>rtvj1Sk#))IcJVHZ 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�i` zb#V>wT&CX}NHPnf97RbOSo`~wO889DReEG(QoO^nz*)ZnU@gJY6<*&r@a)q)^+d=k zn%4te-a*^ww$-@--$3RQ#tyb8)e+Hx<$@OJCQwg8bo=`R&rin3vtR#qZHb#hn9gq9i+Jg~CmHQQ=@#jYwxuFdG|Gp$ z?eWXK__((~n%1NOWBk`Jk9G ze}7i|-VMw_nWIte%60fC4A`Y6tiY{Cx&_n)AqPk&ZjLaF$W;Ji?T13}_i`hnC2z5s zm|$X9)+NeQA;Aj2o23uT0kw8ETg8!3``%EGmBg{%J+Z}zI7w43maftF`)YT4hBCvK zq+(qfK}a#en7byZ4N2H2!Q^n>5I8h3BYv)(^+W| z8U3ghH_Vb&&6}@SvYU}Lup0quB`8oD>)LDIB0uu){Icw9wMM_*R_32mpVrSmFMsy0 ze^*XV)?e;N2QNiENTseWz|P#uY+uTZ7oZZb$@0!kiKy0=26If34Wo~A0Hi|dkHI*qm%G|%iG>Azwo#Iru^!E_Mgee{*(Vi-uE~Emh4Uf zwH&`(LiDzV`5`Xfw!~LoDOdd12j#tg>u<=9{m1{YeEL8C&*fMD!9S39zW2RyN^(CTNaCcMy|iBe{6 zjqa|=?ohWfi+%x+-;aTp6TS?<8JtHD7JBo!uBLP-P|UE8{{BjSzSbx=N7PtJFGE`iPZT8# zbLmR}ZTCtPnblu+4%u&z8Zb;;=k>|!Y+uZ>cBe#R%-Fqb;lcZ!ZbYzelbqFr<=wS=a=QTo@D%UGo$CuFQ;u!x)9yIfBv(zr!(K{*DbTQae|xH;=Q-p_nBLOxG?Qs z-tQ+`jP$}1-CFqcpE%)v-!vDPoA#xZz_Lu;NtiZZD}B2s{F@N7ucI4YsA!Fh+ z1GOHiArnK2yt{3t(TV9g0wdzVQESc=XzSt|3yHzFp~qDp%1n6VP7I6YXhcldv-aJH zTKgQOJEU_1az{_X@i+pRkEmbjvdFshdZWD)ugyT|g6Q#{F4R?FO<+e5fG;I`T@8WK z8sDTmk85#3%o#+!0j>i=E3&(HYjgcp)EjJdsHE%!soblCC5lYY6_+HTf2W6qwY?>?b_cV zqru|L+Nss7(!L_Lw!>i08_Qr!Qajd0z@~EpvV%6lES2)GDOIYu#;rWwPyG32wHYRX zyT$$4cz3*i?Hz+Z)8;@;E)C(Q!PD5B!3+9gv~DHueBWJi^N+qq5Mf7rp% zltH_uG}84n59?K&_rv$0Cqcj`|Hl4uZC1MvbEp;`eSXJ}zE?i^+0V)^{ipvodE00HeYx^oCuC?Y^()4*@|}51W%hB|#zYuP0*=Gn z;Ph>>R3E$f2D$Q6pO8=eU;i(1&)@y~@}nR6h#Wb7#94pP^N~Eo;JBQ0o>|j8)Al6T zl_O&G({O`8)bW3#TiSUb3NexdPCwu1{Tjm6z6(51Y$y^ecEbrLu6uQ`*1D$e{oM_V z?)yD3e0Wc(EbrD-f0i(n3ckbUtZuw$^lDVnsRFneY#uU?5X!P-XrqwY=C<*l=Zn+X zHqZMLzP4kc5Bm*Aw`(Rm-mcr<8K-l_c+!TF?AWP>^XsnKwTAPJg+UqAp=EU+Bqu8s zD7Xa5Erxt~8*Oez9TURr!e-1+EUzmX$}omN?K5Z)gb5s_*NXPvlye72(WKC)!o$v6 zBHb<~`#i3NVFm7-nD{#&!aC8l#w+a8&%E&rH#2j0gg#7*c^Iqo>y43Ce&1t#E)V9`@I?=ITnP)6W$oU>x%k}c6TTFlTgx%h z_t^=nBfY#VVx+gUJ5WRVVf;O_O6MeF(gW*HOg**|SWonn@R$V=Fx(vgAylUz4Gp2y z|E7RhKrHE28lEM>!vVh4chs!;SKnw&i)ijI1Ke2bUF#siQASWR;_uA}v=Dd(LuOvD zc<36k0lPbZ%>SWPx#1i`|HN#(&KM>xcfljd0Un7u|F-BV<;9LDFpr8zSy&jg`g_#F;B118-&OCJ-Ne@SlX zq&xO~Aj#9!%R2^6p);#nwhF1wgVpF!+~BJ^Ic zol%f3ypqvyEvumd`0MFRENXr8?31<%U><0dm?HS7vSI#gkFDqX6S#}-2=p#a_(3GFJdAB$(|>=_xr5#3s2DJK zC?yzxuoMCA=3x%Gqb2acFbPOy_stWeUwP_j**||4TLb%JJ0kQwopCjMGVR~G?Rx3% z)_`#>67%jC!LosU?YOzSude7~s@Zki%O$!22AODy$4c>d!2FIXLYqxvpgohl%DHoA z#pyfAVHJ3k?>jgccPCfm#L8eFNjbD%pviZ!2;p($T7M3)1Q``KlU-X<1fD}Pu%y1 z^1z>d-Pey#s9sZ}CeEu?Bwu1FzrcON()c8~zVocNX|E9nb~j>BTk;PlZ+hj<%J`?Cd*MfGr|$oyeS;hGtage3oItvU7TH^i?I`L(QQu1Ct9ru;2yWu zd$8d)T-cQUh#*&#yA*$hkT-7WA$_TIpJ+V~z^!7kVnRL3E6O?M{R%&-~ zcP?XycQu7^@v0Fq>8lP$q+J5sjQui1JVy~KrJ_`qbN)UXR%M`Iy92h0XCE)z?+XIr za6#ZmxGy!6bDo%6r6W#S+!EcwU>{BQSoy2tSGU@Sp0&H3Jg5xT-R~_|^ZP>!IqsQ7 z)^5svl>b@@tOp;Q$4BSyCmoBsRoZA)lT@o_!i)KzCC9dHu7`5(J`~rNr1sLx;_Zvo zkG28rQFY=XUEa+^J}s---fO&MTZ;46+GO6dI5%0QS=>8{e7Dvt)6E)9O$dbO^J#Ij zTlb^skp?s^`50Up#;3Xv-M)LwO4sx#gd{PGnY-wWBo>&18k~x4eYm?|Bdxmt<3O&V zk#%&fk*Uuue4XhEm*VQKt|DY?v@ySGwy^ppniz z$FuNm_KAo#7+@ma#i7z&s1^^)GP=;knb$ed)XpFVZOe#*%p?$ExMU?o0hw=;BP!hK z*RyNQ@)ud1MM6o0HHkwcUBgRpA2p%SFg7c*%~f-csuD^J*?@l6-g{hShXkN2_Z|Mv}zRsu1ITAy%gMT`R7r--I=#k__G3(u0PQs-99nzh1YtpnD z{ZMHAt?wfj*DRh{U?)t|RaS<1pR3jxdp#?@A8oRJ%TDEJSyOBufpH) z9ryUQs9|E60x= z1qkV!##Q223FWR*Qc5(feIAWE$8^BD7icXo?$T9?-Il6XbqRnoOF^J91m`Wz0HN2Ep^w3j3FbtH-eo+R%k5;%$c zLwHg`;XpFd6+%9~!25zdZJuyLxZnq4V`C+cE3Wush?ruoMdEr*JSzDfLHHo&u78I{ zqj>#x4{vlMz*tA;$sp{K2a?36c&Lf5WyNz@rP|?;;VEK9uI9OCJWzXm)gBt5{V}=!3A}Dg0J~@G_V2JrAA!4pxpqJPl+zxM~;zcStOXGPCGihapUuQ!QVvz!?h!1 z)(y@rTVFK^UJm5a?@>(%A7!`5j1$+@j+i3HB@ow48kzMypK+aMrZYOEK4~9gfooas zU+KhWmfX$z?rRESQEO5x^cCB-i)WTqFyXYgvRnkffBs+{vhd{dtIK(k z#dn?0r@v1VucvXH%>{C&bWf*Zf{^#CYvOO5nC*A{{LjjqF`eze%hbRKyzrcS%)eskC7Pv2fxQ6QUi++;Gk=4&DsH3)w=CH>9y*1E04~ zQ>em<47@XxZbjSLo%W=m1kP{N?EH(*Nj-Z;hAXd>&Ha4&+jZAmD@S*aPJMWJvvZP| zR{UdlC^5ysOWk;*yy0zn)wwgL<(223gR5&v^nVa{uIyWg=tLYg*52=Ub|0r*0#{7S0iSpcUsLC+T#ryX&!<>1y2O`+m14d~t6>{2ZXhbb zPZpHf63=-OLcer+mzZj$hZ>QGdG65Lab+|y;@8QeaSBb3GMcM+_nd0?tP|cDtbaQS zS9q2YD1`MATiM40XdlU|=nRMxNC7VweD}UMUpiO*xBO2zPP)lEP40R0YhTwBCr;Qo zD-rzlZ&!ib)Xp7P`ic!P(s!q1&@-XBxphDEr2o;vcAM;X(^k*qgR^#9tn?&9wu(^A zSZixJWBxcXnRw3Ho1Sbez1V`a+jsRpO8OBsyu`bGGI4EDOIqgf(k+0T*61uiv$aWP zeDp(4YFhyM*tZs$yV;r${lFvkj9HOzffnVHAKOk58i3r?i;-s+2Wz4BsnB$prmQ6GZs~Z#Ur!{Yfe^ZO5zj6Xu4y$i>mpq#pwi>O`I|aX38lLB zSSDC&?6x{eC=oE{;U+%-0XKx!tT1D@y!8E)6I5`{MW`dR#1;b&%yA~Yu#8%KFkRM^ zh@AiB;Jgkhvn3=lT`^@(o;z0pn9Xp|NYK^Yr+dZZFz|(NN!Bi$_N8A6fMU1J>* z;}HRG9=*)?N@wm?-SdIn$wG|6ivsg*#HHX|C?zCdE1aYhW1v<$c>?GH-kfJ}ZKBT` zU|gtumW@W3m&5>Q+@li25>~Z5Z!x;c{jFB+>H|OXvvS2Pw@6IH8_}#^#Tb%@|KN}0 z`5!(PNnYA9j5|`!x9_{@{4RcLxMTXg?3kj?e=i<%*se3&vReE$t=F3SQ-z^sEdZ`W z@VNwI7RlF?$!CUeLmcdI{N{0A5*C7WNs2tcs>j@x_?z+B7Qa_LhP7d}(Cn{)KlZ23 z^XhS=zKmgrk13pfY8I|5uR2aHL`2E~bFP=?IDby+Bq%ZbgX4l@fY3BUSZ0?aiB3t~ z+&Ibwe%m}e8DpVyz1he2r}ytqxMbs~h>e`C^2mAjK3TVLB1MjXd|=(i>6*3_V~XQD z{puOn-{0>G@dmde*IX^bv^T@+0^SmOftPpO;xv0`9t+o8EpK?6-goxwS$W~b7xAa} za-^5Z3Q6c1joBIGwmW`Ae(68_2Xg1H{hAzo$2%|bB}t+R2;=5GYz|UJodoKSeB^F9dhA$Vr;M|?q0}iRJ!R@bb_*|$>^ZhLM)Dc(v>3-t+Cyc2E1A}m zz!q08I?K^v@%G~9M}7xSWqj5kNO)Iq54=LupGj{m4Vp}$%=6Z`dv%qWp#%JqjWvWL z&|8F53HhTj(|W;trhSknE?YW9W;|rZb%DEZ+VjhxKjHm{I}`sKypYY`*gFLw$o`{& zgm|0Yf@AlZbRH4Bob|~=7d3X3I;}!p7I!g6j-WQop@z4U_Y?`u%zKmFf)^kUVSRU4 z+XwQLWE2WM5qAwd*h5XAI@u}^hV`+$5JJ}MO5Zz?8=0SYl zefP~D^340^6`OM6u`D09wwLZ}vC>idN;=wW$;3{ctR{<6F_h#_DA`!b`2eQi!tGEP zQ3ImAMdofUa4CIB&E;GBplpMj^jPYX({B$T^V%LB*39;~jx-y;w@H2m-mOYIUU9EbzWrr=N0xy4P_|NL{2Oq&jE5E3TvE zi&B%xM6q@*gjs2tK!PRxuD-Dms~Q4%k;SF~(a?1;6M|17KyFS^4VRyey!~l8IZH>9 zIy+an!To_iesm{B?C#)1!xB#v5|7akS^FHV43TF?v@=M6=2^b|8b@+Kj**4cU5dt* zAgr-`zA}EFBE^!rFep-I1hKpBfDq8dxO9@RL0m9?4fY?30ihdFk-RnN-Xn0UskP5_ zyU%lcX(%rG+^+?BzYIAmGy94_eNw((_Z~Li_iR|vi-hD$F6r`sfdrZFl$6uCn=iQ212xo0+ z7{e8FG72;HsAqxmvD6OdK2}*UlfYF4YXIEf@TF4IoY%lHj@X%0PW$%3-WmhOh^6v+ zME|FA!{{YX8Z!}M?jTSWmB3vh63m_9nU?hINO4QENZ>D7?Dr!_j#{nZH*~#nJ3R@} zr_V|-j>^!O!951VKYbs!y*}E}61!QbK@m^jGhFB>ukkzdCdNRO5TRVDF<{+zz#Ja(pzMc;)3+<=naR{?>z#h!Vee&+VNh<6P`{##xWj=ZzQeeVXW^z~Y_gI_F-u9fQoq z8OlJ>**a`o6Z24<*Qk9YHQ>#|QmDAlhAY8OHpNCQ&PSS1+<4BR^PKLX)#hhqie&}g z9Hr9?MbkTqw5|aWEY6w$rAUN}sf998I3-s`VS4muS68dFbEU2^)hroSXEEyz(xhX9 zbb>l>s$2GK3DBaBLSnCy{yM{D-wTXCJ<@OL)h%$}e%m~pm5svm<2P+dLiXKlgXM@IvF{etd>29XIZ;j%O1)6n{M5d5wrZ*j#dJz$(P$^C+F>ISMKdm zcn)RuVcTKrNXN_h_uka0y?gJ4;4E&PZVALp@^@ghw#PqCy4qt>iI8tMsyRuj(r$ftf#mb4{_$_fcmMKX&==zB5=72~ zBt@WU7fAfQ}D|-wnm#9Q^$C368xx8yBhahpjL7M?_4H(|;KNc|eB0 zxZwoJ%Z5H=;C1t!(;~eb7T?p39dtWw{^CNSIuf4akIXYBoE#`5@&2=WHvT5A^P6o= z;x_cN<~1n`kVGilBp{n{3D2saN50-AroaVUNqAKyoOq4CAjw^&OE(fDE@0OA0zRW+ z2}h@8#{Uc!TP;cs&iU?DB~3*APs8ggOC09>PH}C9eNVh6lCU)%*1hsDKa_~mdgibi z8y{TL3DX{`;C*}e80@wJ^zRQz&dPl+&v-@x|`)c#!I*6Wv~42 zT=~h`N%w+gxn*1b>HA4Z`_jjKvi*AU4U$tN^dC)P9d6c(hV?J zY}}HKHLc6zr>vHAJ7*=Zp71z=QO;tMb|gR~*>NdcPfH0o1Z-d+E7eYvDl!xLQyfva zMI{l80nDh~R%}C?^NC%TvO*&EMrF?N#D)`Rjr^w}2$OC>h%V2pW(*jG!&YOrfT5=) zS_lFPbUAuy0?H|#ftif2@_%QnjGwNup)D0L*Fn#SnKZlWHfDF_vu-dmW+YxKKqh$H zumgU)^}(4`kIO_PXLEBEGO`pfeK49l1AJyzZgE{mO{{PUOHBk$ ze6AVe<5?lW1laQ^L=RY(0kMx7RD^Nc5sS^o)`XI^zmYU-ZA3;KIVYk?K{8N!qa#qn zjQGs)`9AJ~xy5|h5BOZ+Nl4DI7UGixt7&g#rsaY{MJOurEX$lsuBxzH1&P!A0z8Av zQxZU^5W4kUC*;J>|GY>L^yEr+xDcBQwo^|$Az%K@-;{Cf`)Iv0Ab*07&U&#Lxjvtj0vAPRJaM@m`5Z&6DQ>W$3=`-fp zA=$2C{aZVOBfh8mK8J;12A7<}17NGjMF`s}iK`Sz*=D^VR#WqO36Qu~8nCNTYA)83 zU>LiJwU~WxynLn!(r32JXBy9eLi8cpY9%+{a;rT0z&FJyiQ{Sd>}+ch3fpMiv?N#G zaGe}Ic3j@@*6`c2&&`vGl^!E~^IL9`pZ+_aksChwNtq`yB(8j|<}^fdyy)!x2>;Sc zeRlp`)8}P$`Ce|(iEdwe=lkTRe*OO>H~-7ul>6`dJvn>!JV+h|q@BpjUO}%2W7!?{ zg0EcCj$!TzlRG!h{*iuSOF|xpGYsW`H-iS^`a1TTN`$fr_zYoc}-{sF<@bAd%p6?f${hy7O_x zL;WIjZgj7i;sP)_FK#UGJzhF;wciITIpspD&)*s}EG9)F$!5&2xbn8byn{^K{ye{@ z@#zD2V)KNgfvE|@_NX;@-9{Tnd)`pow%*E?b>%VN<0V&h^e|2=&BT%_-ct;2JlQYS zk3)bWgcD!6DoU@lRbN{w42f!iql3QKcc)2=jc(uD=i}$3zn|x{T=e?4|4X?iJLLHfS>rwAGT9liXxjYfJ+8 z<9ksCOEws!i))8efM7~frS-I`0_HQ}&m zVk}fxL|zMd6d)!D9zAvq8=**K?DM@{`eE}5S8jVocCQt~zWy$yrw_`_^*Xzi=LTNq z8_2VW!xbDZ(fM#UYq(*H*Oz8S@o;yN`C-o53IPC*a$xO@eO@#|W$7~2t^7FJ`2nt@8HVw@5d~evJw1Mw7X04di{Y<3 z#P!%nV;UG^A5clH|7#po-Nkrz&cXE~zxd0O#_kyAFQL%G3elRmH{#HK>bt-D1$p7+ z7i1jVZH@794v^ftwXc62!H^H6n0ENO*S_{9@J`nvpMZUDb4HkM_@J&k9!TF=)7?`r3V7-LyrP}3U?s?)~2=q=XbQYq-PbtLHI4@LGO-i!niu&@a=wpXFA42Jy zyIj6CxuUsck0rvQLI?@MheJGnfXA#3cC_nvuD)7UM=qB|+9>1!$MoBaFM$RjPYG7& zrb&qY#Ap7tT>sZTF0vHYE(*);JYfnTrEGD_k6(yF5AHyII<0VHyr!l_~`q7l6D}S!zXSh7u z8mz%jt`Xh`KC(d7SUg@l<{Y6#&3$@A{plVW!>S<&SpjdPLGKXSmlO(iSLIR63uu^* zm3khL_T8hS;g(HWYq$}f2+Xr%FGXGw%QYeZq8x_jdupV2Abua{xii4i%iwUDkpb&G zcy@}hcnIX0)pVp+YUxYlFSd_5boy4@$kJ(sU)Mba6Moo|TgD8Bi$>ROwuhVXv9(r0 z7=}rP&(4JCCWlcLJE*l#-Fw6hrEE>!%hu>++mpHc*ksF-Vuu!3?^+0PhH2#SGLaO9 zpgmTdI%GSPAYFRavv~*D*+uc|&ag{gti9>@+-GWhKd5C*#L_Z7P5jk&zc+q2O-K8C z5~A;7>8s|KkBo7x-N7&4MRN8@lfpP@Ym*h)veMmln^~pXkpYS^($Q4CW*q;729Lr_ ztr{EKT2?6dO3tlq!9;_k)-eeH>&}ZvPdY%cqg%J73-7c4{NgBOV*ia06l;7kXu@N0 zdcu~tr#KVVthg0DB_f^0%XqIaR*gduzijU?B#3v!`+8qzJfg^)nFKS7xxm z3$+hrw!T@=*X6-?rLiP{7gAN#t`w5EhI7C_HIBMCB5t^raQA=rkG@ad^5G8#!MrT3 zBtl2w0)svKormPl|M*KW*U;hEyL}(S_{=9H;O5-=kQag$6&h4rC~%iJBg6-2U*P$H zT|(uOSvC^UR(2+E5Z>wRlH(l+(pt!{%#XA~g_=jgz8fRxIZ{IrCa_d2hU@!sH3ZYA!d5~UunH~TTia|z~4nZF-5IKC=f zX(7^Sji}57Xw})C%sVt_p!nR&3oQnCA&>^w&-`!yH}aNG{FId4Rqz9s zF5tdadp-B|F0cMwbn!%dosSx36OS6&wDXjqkc_Iit_MmDBM~)zlFciu_&HW z5_$IbSspQE!mkzcwt`m7cOb*;oTiP^^MKTO9{>x|Nm!rzhEA19AGNO^bF}pIaei2$ zu$txqbVni3(j!k;PLuEC`XWJRdVj~MC=({5bl$smdYSk`K=tgqYUdwjp>n#Q&$)qV zY~HqU?uq_$lZP1Y+WxjW($nV-jgONYwanU`^HEuY9JX}rj@FE$_sOR4Oc}7pOdnv4 z78jCR*6w=+mT2irlO?{^9)1iNHP6doV?&gf+k$B) z=?XqQuZeav=7^;O)x48<#*kfvf$+tVm}d@$fVlufe?Q{w?7AToW*!4rrB4*xLfJje zNA4%)-fsahrqy36VqVYmvg6(rS#yNbkXY#xYo^k7W|jZ0cje?1WydtIKq{U)MfF=jmH-O9OXSy z<;r8n<=vn7xMh@`_2Y6if;+#TKP!L!um822e);sIDR(#XLJfXe@9y>|ru3O>puMBr z?X9Hy`im*M`=5xHB@L$DG~Mo@1iAAW@AW z+x+*VM|XwzE}o)rPA?v>u8^L{m^<$9n98zRnJe*u8+;2bpLOAYIgNYM8a)5Z3!V|* z)@mg;-FSn1^6&jUx$f>CPY->g0QMjRc9{2Vr3e>zZaLuZ{MlL-?1z5Ok)!e>Kl^jC zGtu7r{+oXy>&a@{jIJZYSK2}jowgUyw!+*o=~)BbR|BW<9?)p=1yVQY5<{PQDNHQ! zP`1z&B2Nw8-t3Zqm7#R5u_WA`@wVbQbMF)}%V#8a<+}n`OSlL-W5_U*g>|!Ve`_FF zf3*`=eGKs}za8 zjPH!0GyF$_CoXyLysz}6*Y4IR!`UA#ne;tPXkHjjmxk2b_S$h$O?cirDOP4#r_Ym^kCK?CX6Q|e znZlHnvhAe`)Q3$rhBY8_(E5LG3774%jVKbBn#Q0FSPrfs-Gu1Re5M!PW@{696TV;n zbHm+otFZQ1TZrSdM7P%Km0=-&C=V}sm6MG<{*gNedFF)+Q-Y+SQ5`z?8N3&vsN$m? zLU77W6GO$%5a^5{rd1^o4GPZ!cgjRuSn_}yDLs~aY8MCUQrk>7+V1W-i>bwPafNg@ zU1}a1aIS>~?F0SKkUSDnMO@36rX;z3Y7%G}ON(dCCr~@N)#SdsT7?iDNRdM*ohSr? zRpOA+=h3o74i=BnVcXZDmv104YS*s};rpeoNomjbwS+V$5Mpb(KWRQal)e4dT{{Ph zy(x>aYY>4L3+nQkAqC;)Qd5k!lHT>iWnHhOk!yl*A{%3r(4&#uG7gu~LQbx_EY`vDPXKp$frs zI#vx%;0nk*q-a z{W%KuB;F%b1Qc^6v~?ad7>j~rjH{iYzd%(w2XZMbu*z#*x!&KG{rxfE(~cG56vaJc z9Ok7b?c*!bKDGZ#N%dj57a1ph34}j{V-919U!CDi2JyI$Izb&TASQYug)M+}%OobY1jE=U;Od zXXCH)A2s)}%-;LLtFKr{LhIKx*Ip|h{rCU2yyasbUA*9pYOgh?Z{)LXOG4JXMo z2T7S`r*~HJj=z47eB!y6QbIBBO4`zS36bvJs~t$YALM?V`WGxFT(zNo6O{$*0M!9H?My5itL;?QPyAlikgv<&D^_@?71Zzo8+}P}l8(J{|3fPGyv_f(2?BEysBc;b&$;x~vh87!_A+`0Tv2##4RUHB-&i`oe^`t3 zpAL=$4VKS)`XjbT;+32}aiL+;S>)6QUz? zx1Yb`0&&vJJohO6-T<20#epjZ-(3xDc!=*TReS1uXq$TMNC$eLi6rzi&_?!F6D&Pl zevM5%h8A*JQ!dWMGaa+%bK6?D>V+?K>0WBsRQA=*Arql=Cb-194xL=6ZoJR5p;oI_ zz%hCaI}#>C!m83cTV@C2XecB&G3zcx)w0WuPS_}n@hF{?(DgLWNoaNp8FqK$VSR49 z#_nCEzO6diZJEPu+17B8s&MD;$g97vBj1X6n*sCJJG8R*d!h|Gg{_6L;pXPEu3kfN z4L2d4TaOk;O=;W8zK{S=aKRGHU__TkSI%^PSw&=XZA<=^k&w=R@3e6fVKE!(Ot>x^ zFG%iPBHLo+8Fy~6*(LlrKw^hpDx*k`pO*>-V1yeU#@`e~T7xmznV7au{mQ>5tLv|m zH@0``ugMk%z$kb@DzU3JTfuLs5u7FP9nHVy}HRH6M>hD~50S&E5nec0>fLRjd{0vEne zJ__yu(QHc25wUAl|EcW_wOX_Rz*%YWy4LC7qpr_Ok4JW#Z87BnSWo!7PSt-^)F`*`L&Ct=g9Os5rjfIy26L1-+>$Bto~m#>c##1e~)NTLYxk;v(Ki zH&^c1S+R1tV2i|Q-i{vKk(%Z_YOU4|e}dcz0{mA|CeB*(S{QQNdfDtlS$v-zrGKAY zv>3~D-KjIL*xELC^q>0WUy>7l{iiPjZ2r%wEyuad6`X6v%|UDE^m*i%y!&tds(kX_ z{UzDm*@bN3>*)N3f{q#SbO91@>jcGve?y42=fV=nFte!LOCASqxv^18bkV_?f0sCC zPlOV*A0jMWDO5_A?&e&86H6j=k&}e`m&qbQtCi>5HACmGMr4+bd^YO5L?~sAFY382 zhNkQrVU4$HienlhH3DPbuG;zDg0&ft5S2BTF{OPU){gfq7mSt=ZoKp&t^6@Cd98h6 z%S^9?B&=hI;w7aJ3V_9Nw8M}i@;KVbA#Wz%BuqlahkD+PLTfWSBA9-RU$b{bLIXX* zMbpoU>uX$-l|U74-{drBhMp}vIO7-i%Yd~k0cYN&aP5A=lZ@p@EQRP3vZW;<`i^|Q zc?Y*P$zpeH%iMj>J-wVU%NyUc#RBcsoaR8l5?Bv>-angFI+h<_7=lb=gUCz<@Sloo z^BlgIc4$GGCh%7F>RuMQPR$Bn`voNki`~d8?nRn%nY(s>_OsP2(oOTQ%}?IU{^FAk zVfya7?~co63)IrCw*^eK%W|VNI{s#Dv=$=`plPuIY%L{x12hA+i1U?BoE6$RB~z(+ zzUD7iUe6fLjHon{WYCSeFSg7Rc=BXC6Yo*gK^xSp1(iwNNX9_HOA)ViIp9yi6BZp@A943hxQth1NbjT z@}7J{onq51Te%h7T3iz$?#lx$?evThOkS>+>@GrBtK!bF5qSl;8nuSilu0mb><}_7 z4^(xHqa6bFL_4BoLb?o+vxf3!WCAt8Qq2N5;jGTr-IO4;&a$i%wsR7gSwa}zTN50M zMB=)p&tV-&Ml4yqU3?!AXXdPtTP7{(RFkKm7|Ib(ye|?|#cu_lo<`;)AN-J9@u3d_ zZZ1sB4{TY%GdpTJAQ*rDG5OLT{5~!jov9e70&hTt3cdBpsw$h@BT;>b)Ntt9*#`=0nA z1o;un$^?_=)+m1kh0dnXnY0Fl5`kP`zbuYgW`7^sJ%+wXFpiGGkSJ=VJcNe~!gE>@ zpxxag;Ea+9@wM7P{hfhL*}xrV&+VHc_#;35<8sF@{(?xeh6jAcq|5)Z8sNcNQl^w7 zWHYZx`+n@Gyz^InSw8XeKSz{c|BQq49u;ofw#JL3YQ!B?A{{0k?Sfz=oHT{`1i$Oi znG533MB5~kz* zD(ABlVOPGwxW?*$uS7r_oJYjxSmyW<9#o#N&FNPFK%d$4eT?LOqmuWgusVj2?{f^? z#z)n@h9i@h6><}VPkP*yv}SV!wn*pcJM47+m$;+oLK$GnejnouyVF1rasqL@bB%#d z_){IAq~Ph=VJo?Ix6IvkAV<_P(b%KuyTwPRTvIb4y0s>Yy;f`TT((AEZ2SC!?%~`% z=@s4nWsJ02qrDL?0}nUZHMw>l8qpp~kjCPhLwWns(uSK>JzvA#wSmRr;zwS%C!1N< z+Mt^d-Lwwd;-uR|CtvyI(%oXE4{U7#xriwpdn+2g432MB=@aeCGcRZq9)JAt$X?fg z$})Bvu$9j2iD%_A#$8Z`1{%mJ3!zd8nNi8PnE&S(Vwz zIr8Ck>PWQ-%O*5W%!vum?YfooZ_ps?HUY4td95pC$ZkKaTsYN^n3z1oV^uJMhFFa$ zEk=BsE0Se>u7Yv~?y5CTCt4Op6U|zdVKC6a{F-pwe%<%1qfH2DV_~MxHpam-J<3Ys zyJaoKchBrOA_Js<8nQ1nU6bL`wX?bEjSJ!s;w#52NDRl+DxP4iYqwL96Dl{xF<`!m zyOwo!g<4wa3Va@FqJkh-shlUt2lKzQzA;0$(t`umCeMJ1L>)S}T5Xeu`abOhx!rO7 zb=S$efAv=czH_o9?#drrOXbKVmW8fHroAqs~(jvPJijHt+5Ai?)J zJz1M@VBS3H8Jt%;tAjy9E&v)A>X*N4iH~KNVk{P!t<%;9-?!W(c<^3P|kkK-S^|Q_j~##V zL=x2bwkK!J^5~rnm)03O#>PV(^i~Z09ef04FRl+zz*c@77TzdNj++(XjiNd%tU6E zI#_5ac-T>>#S>s*fo2Ry4wjsr_+Y@LZgutYKW*be3ka7*9 zu{QT7y4Hln+lHgAu|*e+szIPHrfD6+qDsYNFLs{@1lFJt*!4u9_g9Tzs}b==xG4lK z2}e;Up5_*7TihwFLMWYSLk9{y9Wi>TGzw9&!MF_|UKQ{aLZ|?FTiGoj^(>sh3>cb9 zx?)k?Ux}!FOp$j)bIdg1lgxlC8c6nhy}ORBzgvR%F|lc`*10J}b8g8bBXen#?jj8B z`%%00wXcH&eG2QQIFmK(uH?>-e_XD={T;X{t>d=u`R}dFz(EWGEOpc8Q-Aj7^4Pb& z9UcSDd^KT5VHw8W7^?JL<+1->cEy=TmaMDTPf?0w0F%Kz3G40HV6~Je1!RXvSF)KR zWo5_M6hu@Unh*yiOS;#*Ps#v>0p(^Iep|ybR2@oHslY?IG!l6J4VTVJ%Z4$5C_$p` zQQ~~jAa0~x0nbf+HLG{)`$~?ql17@>;h>g@RbI1X9lMxgy-wV;=U<@fx@;W%ceCP* z!~8nw<0V(_)*4uRM#mpj{TY>WSP@t6k~kDGzE@1SsU?A}(}zvr1?S;vNrqhxP%LPW zJI5R6&9%EomZhx)uHpu~&~fq8J{;TKVl9+dL(*MU4Mnj6ukDr{InpfBs+aGGNhx#w zXaeYC$B)U6|H9A9Rd0RkVsc(*qhM5q^hnHO!2XtZmDFF=1D>ntdFlwNT&8|+G+#5B zS@iO6sZD~;Pki=2kaxZPge$Z`mxo%y!n~UH&8n3-vT{XkaUR-Uo2;v@w^Q4H1qyMY z;|TU)vrG@wpE6?U{7Q;Q97`+($%D1zE$xBZMsq*o1Fv zWutRrGC&y1P_hzE#QaupokfF<)eY)GKG2B2S!YKg_cAQ(E>7R3DGAnaJjh@aX! zVBt+PmOKGNKx{?n3`uaaXMi6Skqv`P@9b9G%7n1pXU8xXNS#XV~_bqSfiWJ4A0$1afyY+o;YD1zEMlM zHOg8GYcyTEA3VTQc-G#(#WKw}=?4)Kyf+=6SqRm<>)ySRaj)Kc@30Ye48u<;heu+E zwMcKgbB|L0jFH6GwsNT5nwkj+QZ2r zZQ7GmH#+K}p)F&in^oG}9B#QjNQs3eDs=>a-Vk<0$}A}tm=hBGQWiP~EcW1=%NWA7 zBVgMMYl#i+%wu8_=zM*3)>ou72a9b z)KLmG(j{pv9cO9c8?a%WgOgsyrQ24hMN`J9;*Fw+dkz7t&X1T-35{d{6XDNT8L{#b zWhL<{Ud!07gTlj03^*Z?;sV?Nk3+^A+p}S@AGHgn*3XLmRww>O_SYaRH93{3Yl*!_ zgK4@2!jfkm7kCV4jL(%Ff_Vb+GYtTcd=nP;L8(nEEiqpO#L$DkkyUin_X3}SEUSEtDL>4*r3fqFTx@H&uV5c( zC#Vi`P9#k8YKu_2g@B}Xh>hrq!ok<@t+&2SKJZgNCBtO#zy$%%(Y7(1a3hLoma(1f8jniAI5B4kh~io=>pfQiA+JfX5o^B! z!@)UJFjoYq;*5xeNbDG#n)}~~{Z%Q10jJP4zJckm!iqXxDvSYi4g^t)I2R0?_ zx7V#)d0;EpD<70X;a4PL$b-fRT$Yj5oQe}jy2QD01H2m;k1tyf2MrJT(7Yt^%)(Dx zvtF-b{4t$*Z(PWV8%;0%II`QpcgQZS^n}rl!`fUB$+vC4TFLItN?y~td?_vSL^XXs zzc07_=$-QRkN-7G^!K{k1|DhvwC>+qYxL;sIa$B*s+@lQ1$p)PXXWLmpOTmV>M?oc z+uxCwzx#;1{KVt(%CpbP=@(v*voF0U_0;JJF-=Nx9s5GtBZp4V-n4ds`Jcvmv#j_bln@N2cei^*Mm>GnS|OwXPx-IHMjWpDw`32D&h#aXz) z>0QtX6`k#Qq?1C3neiyVtr0hjy%l*ZByAm_CsZ7aX|Zt`x-YIo$9QwA3m!rf9wO^H z)-=~7r<@4zYlZh$?Cq%X03~Tb-ke7B5n5wU&?4PAj6!pXIVSya`obg6UGE!FlGJRS zopT8a`caaCRulSn{#If>Xsq=09^#&wJX#zSm_#zIP0`M`!N3%ARy5|YD+$KvONBzy zAJzo>+N#_;T==8$T=pG;xFkhF>y1{Y`-QY)?YtN~GCdI=K(q8&%JM|BN{7MlcE4i% z=_3#_s#>yU(x9*65t6n{wgO(7Gqx zy}M=ZzE_GR9&11xR#}TE`?~b zNArj^uai)h^TRAieO4c9O4ftBY6{p(Vd5mls z-1_57)GaW&-f?DKkU%NV0SSTi*IgqWh)`ZbWKIvD9re>7Xaj`d1=E&Yry`!HDEjDb zLgr;a=BDyhB~P{}elXc)EP;e8)}oN;)dF~^r2l+Y^A|3S z@ybP~AgCm+AOY=i04s@wnvUnb^=e z<)x>ek*A+~PEMaWGs(#N#vc@iC>O@2IXiazs9b&3m2$)NZ;`8Rev6bFZj`s&daImx z?|Wpp<*k-A`yvqXWoQ{b^#a$pvhKD|d|W>G=YJtz`{O@`It(~c+~6FK3K%I8?oZO; zVQl3S1!<;>3bTP1@@R&{AWFe-P_fs&3}1RtSqEKk<<|&sD8WyazM;&tz--=7;YT0P z$r&0WMKYmLpy&(&%6X$qQHYv-D#{8xy!c)z1q%Ao=c%Tdr-P|)7&|r4EsfU(z2ca> zFBFhDuBdq|31q=f&G|e@&%qBv|FP5z3dBW2pPYo-`u?Y-xKBpa9HOdmozpBnZ;fYH zBrmU>-YBPi2v*wr&S$91Gk=2?B;L#wl`G=`g!BLpF8zr@FTYaAJC#1?_8gZ5jPo~z z%_xz}XNFhuD8;POP0ksmCmY+j^`hNe+)Sq zkAC2Rc_D5J)AvlreKHG1r!Z~WjcJkYKA_)6P)EA4#gEdbf01zPgm|&>+Y*p8A-Y+k z$J?iKZ<)aU+%=Qp=QPG>GvVT?x<-gJxWolSl=D@h%ZTq0SQCoIrnARXFja6PQt6s7 zZ_ZGqr7#VY(>KIxt215$*2I4trMs20M@3j;kV2uiB^$W9lLIX^gCCyBk%i#`)J zwRaQi9DKe4!4sYiz;kW=THLr$aAltoH3PVbTlMz)KE)i+=xP_Qs$6^ZHS!}r_cIy8 zfsU6M6EmmyB`sn}FYfav8)MMm5B~ID{g#}Wm|J@kF07FVT1RVH<3HWRP{>G@;OXJH>AfUU42N|4# zKicC=;StKOD)S-3QeoZ?{(iTr`1PEMiuq}okz>Jw$=m`@+Hp2a0sY!b5FE_2gM=E- z^u0QO>FwmV1{>oz$U<_+oC)XOv)Xos8g)ym5zJe zJE8z4=`w4|{E6nAK6OT3IrFMK`Rvmo4>`fb#H&W{Md&-EH`}gCq%Bf zR^HfFwtUZP$*};2j~s=T`Zk84?{f1$5guK2`B`Q(U5jHCK!KvhMFIQZM%#2dx8+ZwMjN}Mcl5)K(GbHUtj-6bG^HamXTBEqE z?!btV9*!{>Z>iF8t>qqZ!M4-tF0e-)mO3VZ8}uw+lb@3H&L`}$GRg_O|C4#_#p<8#89YZ6d*o4J6uY*Zj4=SZIFoJfNC+^ zK2&Ay(w_u_GDP3|e|QIQB3%mOwa|W2wr8>`JKwaytL9og#75WT^5pk9Gie#T#oh4~ zZizJ%4v3`5LZ7(6K)#MsVTmT}#AxWQt=oF~Zn4q|*KeWQOm&8JD4hX;3$iC`Q`we8 zF0edjaP&EM4Q6-a>8;p1x-0cy8f0JC8bn)(>|1ON2=mBzag4JFqVyA7Len}{K`7^Yn? zH*US}0+O%2<-@}7)j1{iYnvW^Wap^-!e{@E$hFtX3}}NP&SNMtW0bQnt$F{7^tIQG z$$8=nUyz3${C0vdaTpteACrjP;_}6KikVv~tN{@x#e*=wds`0%mX{)24KYPI8IHL# zQh5{^S22Nw+9)PjbT_u{@;TkRqqaU?5<0mSD^rAF-vAzcANl^O@P-&`+Iw*rHx$YK ze4G$0)$grLqBb4FHVei4feALX|DLbCgjO)&S~dE{g;Xxa=tn`!velTbbeHgjD`Vfl z5w3t9dVDn9^|5cFpWgRD-MYoSYI7lQ{Uoz3ed!93MG^uUzKpPxbVLmIY%>zx9EXhS zv~$VuUg&te&0KB;S(o8KWjckSAJrMm$c$_5zpIJf?8xqs)gj(_5o6L!aCo0cFyH)p z+w(4}P5a=bm*nv;e^vhE|MCBn|KitwT|W0;|5x(8Z~le+@P|*z*>h)2SrG2~mXW^+ zH!Znk`&_%`3dt*(tcfK!TW*6_PQ5CRKmJ$p&98h({_%hLU&#OaAO5<0&*A4Q-uX`X*suMXTyf=<9^c%=V8r!1iSzIyPPk#5v3pf?WubTu z7@TkOV7R7|4@RTx^OE{ypu9TFW#q(DQq7sDCU@`^{U{YOojqW*Z zG$-55gVMa#;Il!@N`B|;9)2$(WhyAUo{}^W^L1#f zooxTBxp%kAS`F#XO#^H};jOhvY6E^?kuE)3rOk&P6OGzq$6t`LAxLj&ZE+t?f9E*q z)*hXX6Adsva_7)8cDH6(yPrtHv=0vdR;-n)(}n>>(;;NER>}hL#knHAHfrAl%Nn~( zqQs^>pi_L~cV8N{m_}M$ovC!KCO4YDPhyZPyL7nX)95mgcEZR-yJWY9E2!>9`{1t5DOZ5*wl`p6Ox^%Q~$u;(EX)AXT_Gd#iy#>S8h4 z{VgdNIuq`gh7ci@6b%)IS&=#WL5d1KXT&KX_Rb;s?{t+nf`a(bU^H{@9C@>(gl8x5 zXOozK$_d?#;<>AW>X8XSDzxH-?qa>4-K}Yy&5iwP3FB~S5hyn_EN+~;KHG|rY``1l zm5P)6{J5uhmQe%UmGVK|1z%LMd;H8msJ#z_nPTOFB)rIH*O%4IV%ue4*UbOOyYG6T)rj)Ykjd+E6+d!|po}hO01R3x^Vm&|#+Sy}|dX zU6a;Bx6E?GMMFB-_gbF!bOWD~E!UX$Ca9j@KcALhxh9vt>CTSt4=SCoZ?Hqb8VT|@ zv||h-a8s5AYqacV0=E)YE;0f&L<50Bfl5b4Xlz*b*~)LKa*K90XDB71 z-_6Ag-lTSZsl+7mia6=QWD@quCL<&>TD$SeDsu(mj*FL6AeJFWT)a1v;8G);rMu)y z@Ns3PgiYfcTrpt1tqDu1~_Pq6A(mhr&#+N07GG`q8Y=(;>PP=a)pH_-G<)w|$?E2R=8LKz*S$ z4>~WVxsa~Sm=?u+?Kj-In>ztCArCL&qqn(rTWi9#1B?A`uHCYTjh0|BAmC_YN|o8Z>~S=gCQ3?kz*O6CxJGz8-TzZG|5R?kjINhxeB z5E{EMKDfo6hy}CJ#yM1ygAq)xCz@z3I22fb#e@bd#*oP-Kpi0~Qk>#HpQ;`ch_21~WOLdDD2TQ-22GS>bsW z`!`-ku6e$e87b2+P&vE3FZu5Ui`5g>+WA4U0^4{;Nv#lWc#VfvC~$izU4U-c&j%Ax zJ3l#C#SEn2v}cdvAsIubbDZen-T}-H;q%}s7Y`9~cprwob{YTBVAza@JZJIIaP4m4 zua?G;LUl_vcKm9|S-bCGPOA3V5+4NS94XKQrJXs7RQOtwigP?D8k_GfegUpi6(;t*$q!aX*vo#wf+M&S@}VCP_g z)vQSdkt`+p;Rw^Ub=Eytwk#8}l2Ov|Uh!<(>d#S+$yVvwN4i&n=jzB98&x-iWl5N_ zq=9jxGd9PWodSh{K_2kaKD5>B!8m@5t`E&yDt`CBE7SA3K4{Yu#l-! z5mGP->vHL;6rY}P4y$0~hoqCNi607gCBnN(_e|nv2<2QVG9emX0?YZxe*^*Gv(h#3 zwajQ*5(jif@GP8RhME&hKnv~GQSbcQ-~A(U;_e@xkOT#QE!Ml)Tesm|osDOHeoiM& zJ^hS)_ltidubw(3Spczbp&WuBCE6qY0n3UmdWL3AR^s$V6X*-}ttY7~Rc3;#a36x1 zsENVggA~X~w@pJC0v=+YNy29$VXY~m3n5-)L;l!ujz0ug6Ep@1<;v`Skr48FeCV6h zR_-EP`-su6j(nHNyYjXq; zbF_&EFMFGKi<^J)Zh8B^`91m8OD`H8XmC$xH2y;ciscf*B=d`u#)`rfG@JnY&Z7 z_~`b<4WV;ubT*n&cy6tIx_mfah4)9sZvWdopWy|)=ef9=moxDu5|5ok0)o9sZY`cc z+vn_JaPe~Na>&Na-Qm)55Mf#3%=Z0WDPe-&!}+}}FX1HSiQVEqpMC6S`MaAC&9v+7 zdlI6X=AYp@m^7cGjioGCvaNX-R4<-}-@0|dw0 z5oYb%*%kkT1YQsz5!@I;aaOaH6yFlA8@O(k=CDXosEWcNxYS{8S;A*nba`$_gq8hC zH}!E8@mNfE6)GhGhY9dIK>k1=nNSmnt80u+BiTwxeHZHvupCm zXh#3Cix3#ue8s>uO=!NlRiAGq8CXz&j^7vq14cDN5(#PVcbPrcMpctg3PPfZ2#|o+ zJjcY(@hnX}b@XqHL+yLG3D0yES3I*nMT2QB7);D}i>YOLRLx_>yNNFnbE`U^E{nAq zAjGvxhXBs7!YS5=&IqE?HR&bKe1DH$qpldB_L*QZeOXPy&j&vKiODQ|m0XrKL(2Jk zma(h@ch;99u%;j!TLpSSvI1vjWp(^TqNng~~fgcqF-ZVjc;r zk=?nlq>FU7vD}jPN8z5xzc-i4p$l2&O3UyIyo;d%Glfy?=j3u+APCxc6q~xojLoLo zgiU7>&P@VV|3T#qZ_Tw^1oNq3d5|oeB<4qJNw8}h3BP*=f1BUY_jVz_B@=Ll`bl{06SE>)k6) zG12EIhX1?Y`i?w53HSHB{EFQA$xq16@#7bsr#Gq{JtiOirGHl*{?2#23|r=_ibNO- zBc|XI;(Ud4zP50#q_2U|+=2X8l^nB?h1LQ(-Z5g4Ss65u8P2!+hJ>T?Ywhn6VBz?> z_FB`D!g7d5k}<)TQ-lA~GJkjpS|CZl6Dg^miE0DxG~F+oV4MWe9`1#A)Hzy8a^i1Zs&+&8d+i;qpaZJ9s-0cIC)& z+P`jf?ujS|>B?&0ctJl4Lqu0LYA%)GwnA`eeOrP50>8(Y>x6p(1Q60=)oEz$HWF$Z zLzay~bZbqBHeouAaQfcsNw>UHPd(?MvpLaNYs}o;+5sWB;ojZkJGypLh|bLuj?K@t zI?{XhPQy7V=J`B*ctY!wzU^q_ooS-9<3-{A7M)r5FR~5tI$9H^Lx>j4Qmz+WmKXr7 z#Yfwx%s=nCtArnX(>!dQ#QC2#`FD4R?z?eBOIB&dMw<}bgy|L>kECOd@_Go-x%}0+ zzj&y&80prcj&uRw*;O^Re5RGk4V?EDzku)fu>BTo-V1kl8BWA2GgePUKjtgX+~VTA-(33>7VANZb{>?Za7!1d|6k9 z)H0gY#XblB9ETc59o&;361b@#ft}O)UhTm+0|`J#0``1ToaW z7Zp|%ESkj>*B+90JHRGPkkBI7`r9UEB5?sO$eC7ZD-D& zdwpwmscmKQ#V!_iz`Xr)$e9ympxMZ!PZLZSS5Gptbn(TOZc# zdn?b_uAN@EI&xIr%y#zdSsR-`xa52U9nz2}oc0WGv21fP{XNzTd7uzy>6T;L<%y1$ zl6WEvWv?{tx7<|Mh<*zx&Vs`Gh`RGFmo*UIl#czZS!}5+uN^vroq> z_`bq1AXz3qgI-pEDTFCY5Jk2+3OPuaR|eQ)sF=Aabt10vl!O?n;y;t+6AB1t4x@;~4M6c&E%yddug zOYp3Bi3*k?r5r$4;#t~xJr(I8PM~|P*>J&(bhKc7g4Rje0}5KS7V@z~x#Tq@_nS0G z7m8BSEXpWIvdE-l!7n9&Jnj#;F9H9WlH4*`ug;W?BA!r`=LRnqRiuwV7x7~Vhfxze zWpj&h@6}90@)&i#+hZ*3XStxRtOWkmxom`_m|mimu+(tT4rsEPLcm59<;41Plvr7% zCwmhrGyT6&d%|5EBg)@BK?8-j-~vwQX_Id(y4a78i}-QHW-1bKWe}A|a>7dU#X6Z2PM()DA63v(A2aXw7&GXG@xtJdzi>orHygy@ZP%M%ON?$DC7RPBoxX*-S22&@;c zp(bxb+`!xX_nB5U5K{LZ2w^LsO7ew{$M`Kb2j&pIHDx#iQnQUR646x45{|so7C+$v z)`*Oo?2{AfUdn))G;h9P&%;EYTN{W%LZwgY9%E# zVWKh+rQD~&Ov26nF8nkP`Fe%kBVK zQx@Kw!r6)47^T?g?q-kc#!tAlr9>!$BW)p#Y+qo7rc1bDI!M3`Mw#87f0v%Mnc)Sq z--fQH>T`wn6=ppJe6=-R0mew&sz8uTN)hLZyu1nOWwtrK>dLF+y`P$_Cr6LRyDo3j zgbv&d`jM}ERi1zPnIL*=!1)@76Hkr(WKSW}3I@;Cw|%#4vYr`r2&?LQhe{Whr**dXTQhiQ_-N<~zZUmxf8(etKbGGwbkrT+mvOET zu4^#C>`NQR+5I!%vC82Nl}l@@d7ZKr#?tZ}t;Fqmc91rjFavkvPynz*p}JLz`_?W8 zZnliyiDAU}EygnAcw6Yw-Tw#K@G3B667J)^tig~GmfZ3-n9`)$v05)DraFBaJn7@^ zisfQ1bpj99&LOE>v;3@L4K$Q*AtsYX<7jGxCPeSA$JcnnrH%t*?~K8gbE$>EEgOq; z{>dN8m;Tvr$XD;bKY4n2tA&hwzsK;~IBxbh;REL@I$m(RSp)CXT2bw=bRh%USW|Yk z_1~XPtZUCgzxLnu&zzV0fA9C?Pe1oLF-^I3??Q@-%iW48a&G;|hvmqzqqe79w_jX% zX_m>AU)ON&dRRkwfZQkptix6*!#(sUbo(~rJUN~o8&6S_0LXBSgm>MGN|Uz_NW#*K z=OBijIG>7+Rid><7Y5M<4A{CP96_F}KahOH0zOL#JV06--2mUX1mC(CM;5A`_p8Bc zXy!+PKIMMR@$NiPEbpm-Cw+g@v{BQceOqw7wrVv<$Ta1kNtbBnlMDuI4Qe-PU`>22 z5`7$?6en%M+*y^MtSEprxn~R~Pq!o7c6ym(sn_!MBgJl+1RBti`el*1#V{|Ad)(MZwbxQp6J$;<+*+Kvl>C?xg1ui zFV-y4v_>~=2JJ{8OfSk`Weo|f(G;dnh!+`;-=BO&n_GALY=1Ww2MfH1Wtzyd)56R^ zCc#0;)VrHTpr|BRYPi_oM@SR}v+LR=GrPodS;E3Ypn?;Y%&-)>5XmorculC3ncONG zZZJSzO2({ieHItjEM1~PEti)&sBX;w&LjacW{XK|IF_WHrv^8ecJWvqB1&3QqXsLv z!$P;S5=g}U8-`e$(0oFGYyz?ZshM)3=5h_t7>2Nicg)sZ(qvOGE`9y{bk|BlGF8gi z!~8cbUDjS6(THP3x(p3OsuXgp&n4(lj05xI1e^jl`d(y%p7NHKkSCs?T|1504560< zuPz~QRXUsn%+7|i0kiY~C&H&Yw?rQy-dae=Pz#sf!?r|~1={rCAs-0rz#vT0Lg!Xn!>uE=E;d=zk#~8tcbw$X0t&RAP_|A1I{(di?mHVe) z0`PPz>xEK#y6w$RAH7Svt z$xaMqD|^#$(CAE-Cq=?cvm6fQo?CA44c#sHWifUNQSpv3-l1SwH8yQ+&vMa|!M28TUNU(HZxFrGbEzy{2w*?8MlbCzOus z*NBmRgIb>BU@Rn|AC-#Y7Ou3Ppu#mA;8YvI3j*uol{)onTiV9C#MeZSZu(>E1|}Yw$N- zx)4HmN!}mQmoGxIydx6I;Di&cWg);22E8i${#i5~k3l4que^7IZ{_M~qM0?hsDrnY zJ9>v_2d~MEiU^J*NrB2Q3 zAy5Q>4k1aUdnGK|?fzl8q9)@ab4MN2nkCv2j?uNd$y~2KH%m0uKJS;g(KD>kiyT-R ztr=REd9?QU8xxLU6Zo`sD>Oev0?%%a8gz^vWXDUgwNt_t=Br-j1;w_ z`=oa3W?r8lwuG-zLRl9UPq=Jq)Zyg~t3dip-IE1KKdQS~I+YN2H5DWP8;~W{1qG2z zES#X54SI0bF>@iq;nwHT2{-SLXHko1WKm+mW(Fhrt!(6E*NIV`$U{zkcxB!N*6T~*gJz9M4L<| zmWI|~gJry{;#s6cF;}(IM88nN!+=T4czE&_2{-x$J)P4i)bu0)SJ4nIqjd48T_FLA z90a``V;2g;3SP%<4bcA9E3Upm?)ucHM2=@`w5Co9HD z-4QQiKcFPonN5NiQ z*N!vDr1E>g2YzI=}tcd zG1C8*n=f{s<5ypm`~LC&PagQzx6B=r3^(2UU9qUnSIiW!3>gsc92!f|p8+<*XcI!T zq?0j43Ete$7wv8HezO!Xtyo9au2%_ z0`(q`y*|2a8i(BO!RLJsC~HV(7w^z=G|fj7vfE-^bz`JqUzWhSP#KL7^`FrCz%Wh;^E(^Q?a>KKL+H$5d3Xbop=$u zR0Kj@@%}b<4;+ z^Z^bq?zX+WJ6%VK++(fF;%L{o(~8Hh5BM~kQu#??6q);n-Uo&lSUH;sU#y$k<^JeE zaJiRuOFMSOaXEIZ#k!rJU~b=7?56eC(p-h&$eLv}>=p?t0-$yczA(+4C;kOvienFKZjpFzxg9_u$7gw~Y?1O9^4KfyCMU zeK~vfy!=~f8$twlfytu#`~UPepz5Qe#}#@R+Fr5vW)=ntP0(Y-pp8 z?PSBF>fsL3lm)iwMmKGYZebjd*F(mAyMJi;QIr-*3T{yBz|&@pdeGIFv)$?3j^R(^ zmmDd`JZFV3mfzp6X`ec2LEAa|d&Ir9^H;`ywP)J_-m9*lR6*Vg!{P4wWFCmEzoTC> z&kV0Kn6^K|?OozJDknq>eULN~0CN1^v!_Hv3BGqFnYM6gGw#p1eW5G+7CN342eeR=m#nobGixtLV{oags1x%G-W%7DhbM1k zS?NoXuCt*jd2n*(ha0ac&GR;wzM^MtYpwKE_TFW)@H{0d#WFPS?ytRP(g1SY*V zsh(N=Lh27eF8*;nj1BChnwH=J#6f@NbG;wbIBaWeGWR9{+WhFJ?~^5(E&<1rwj)|w zpcW&2Kpp92J0V@u(p(s5jo#XHIonGuRQlE6m%n#uX12K^K?Pm)O1KjF-d`;Qs4Ah- z!b?2f4oVBU9`ha$MVSQIYOaw37@%INEiY|rHw>ZN;aJTE0S1_w>(DJUixkQug*CEB#Lt51UF=kQ`@}V-@PWDj|yi)QMc!>`Ouafjn_)hB}jvlJPzg-*e7M~I^ zjBdHckl7bOY6CL8O)1k%CWmp;K14fq^q5?6{0h{qEq&}scngbkj=?Ti|3J!pE#o7j zE+TO3+3+;Mp0armiG*$=Xis=g1-(|pg#wo#jHNM&B_}; z@#oK;wUH5zhHEV`iDtafadHzT&!1n*>C>m*lzwisYwR+knrlM1>29^+^a1-L%o>TFN@~XIOL&iuW zl!X}U6N-H@SBqN8q)Ks2*V7;c_QNwN!#F6DOBDnS61g;E(uTO?n>ed z@mt<9?4OCl$W0J1Sl!4(V~3<2?Wn)~9d3eQ7~=f*Ngd(?GZXhn^vJKN&%JCXS*@rw z%0ew`cPo8$+cRCrZbEevpmXx()*>Gj^Hepfw79HxKR!)vYjvbs3FDmeY8fL<@8pA$ zjqSzvzNzn(;vvPwtJM&n8OVvo1SPQ2qPO;_xG>$099SRU z-{v)>eFC&IkAe|$4z|u#ftJisp8`oS*^?tLY%03c5D^k-WD7v?V(q1_3@JATbCyqv zoK8*gJ}sMS?FnTqd zyMn1MWypgJ1pwW_U7x32kAaNekqzA5;p30#XWW(6NH7-tVV3arhLuJ_t8kApPD2Cm z32zF55(!aKzZ7Gr5HvpY)1QHa``?#8yzlpgv4=~P5pWOqsmVjZ zh;8v?T+J2G!XZ|Ec)~3t8ys5v^XR{|jP4TyX#W)iOSI3GGhj?mxVFDXv&xKvpHpUq zM<#flYs7oKQ|-ETUme`hG5Rw-za{QzeQ-Cz(T*M&COs+3;Hym+zuovhNWZv}XO@y>x4)U6Mp zph}FUha%K&{UeO0caRC=XGI+4xE{k(#H%!nmYl6(9p*>dTYw+o`mSTGBcU6<`&{>H ztp>zU4>+dZuDhDOmDj*L;__GPouox59L9 z-ZDyBr=7Nm1Wk0A$P@P&?W6+;p9vZ=R@@8TZaxJN#4?Yx2z67Dgn#@DdDb4=U6EkT z@sfM}kAAMqr@QkyI_twW-pD>jhmlz_+Nz6Wo9-3Ul@ua9*$>_uuFUhnDUz+IF5Jk2 zU-ZAr(E0Ap*s3fLuWVY%bv9mm)`Gqp%%%G~kL&PPps8kfrNLP+-GGJC$KhMQC!HlM zljO;4&fQbd??#>x7|RUqnvttnquHLA4=;zhvNa*Pg~VoAs>xOxM$0BdH_P-So3%LU zPW*7O+d00)w$LP5D5ce6-80E_f9Zjq)Iqb&@D zX)X{oAln*CV9BGe*xx%SGX6L}Th{I-Ku>=^{`lkmoF`KGtLm;&u}i9(EhEMv-rR*H zZdS0vuI(?GVEZPk5VAD1L@JbDIL(YRBod9+6zReQ5k!Df?UwOE{Lv5?H(^OGnnfbs zR5a=W8!D?^h%6a-qN01d7JD6WQyT8zp)Lwxxr72ylR!6Xc@;}XsPX>VJ2Q7X_sepr zLLc+6WqnHYefGXO*EP**CeFT@kaDZPBv*MP`=5LzC~ysstoAtnOCK?tYwsi3A_N}1hje^n>QB@^5j zqn~KJA7i$uFrY$%z-9eKCi>=@Y!6>cB=lfrY*Qw2kT%)agHxy9@gwh)_ka3lJTcU4 zvbTM|gf_zgiO8QnFMs$y{Eza|voD!@roW-09%;WiZRr^`_WIhqZkX{)L#%~c+Pxb| z;jn=XyW+tv$#Y~s7oS7M1(v)}#d(Z5P)z%0a4SXezM3^^s52l7ytHVMS(I?u{uxW) ztHsr_*&I%KQeXfzu5E7gb+U*JS6?ZT_RJgAjvqfZ9al;#4<%3*Fo9$A5Xjr7eetXD zRG5?eV8lr~y2M5?w{7extdk21xO1gYJZ$glCeCdaF0wtBa^Rh%?xerqktCjIZ0CyQ ze0ThP+1oVcr=NMoyt4wYaK9uAtW7Pv_^50QsGBU>GQo-*dvnWnp_kH$mCA#Y!1;q8 zJnnc+dQb7x<}Gw_lpLuT*<1|*$yE$XgVvrl=!5=Q=!q2E}WGG zkK^l09LtP19E&$#d4LLw&I3PomF3fb(3yyoVWt7x&p7!1s>&< zH3q67EZdq5JD|1R?~YxI@u#NtYOeUDLjDI2M;Q(8v^xl+q!Si~X#go!3=h`m?AFcJ z;-r_EyVuz=O{?@ITQ#HQgVVXYmJgX^vj-uoSx&3#Z=F6T!Rns(m#8D%8fCq`y&4}@v3mgP{G=&%-Pk-R&n zc5ia;_B}|ZOgnAZ*1gX#P#k}=1XdHEvk=|d1Dh$)Iq_#weX`jF%-lU`NFH7k3AgNW z{5}E1qtoYY{G0&BveY5S-rC!?09XhLp>G6Y?LuoLG@z!CT2S26ADDb(p_!s}W~upQ znF(rEYo(^J$2F2E_C9FWN@>zMnnuc^$fj3%44+J&Wnfk2wU<{x79X=vf+|BCv??LY0Qj@&hB?e0J=R;XDA@ZH^%*02_A#*@s(z0e}g;z*Ma4Nn{}7kyp) zv&JJLGbcDKYI;rnswuIWka&7CO|$j{U>=9Zq-h!nUl;=}+P8y7e5oRLgoc&RwE1h- z;#)$Ih|liHUYG?q0*A9XJ%gsXWMR(jSlhfCu@LtiF9mL4)$3K$y-RZ`HKu-Rmd#XN z&Eqpc3^Q@43BJOG04P8;_QhH}F^gr4rWW5aOuH~PK#mh6NNGgCS+}*tngt+O@{|I( z&xuxOxYyO<&uOV6GtjK2tK%#A;HN$zSKNA=T=rI$1lwWY$!~s3zWt4_%eivithMXG zcR0&}RAi7B!t*qSmT}tL{}&+uJ)1n!$_Pr7P;hm|s3eGx;`Q6vpSi1neFP1C#vwQa7F@y0s2xHKS&q7x)4)+r67;vUM0%La}nQIZ^CKQY!U1&0}3~{uex|y!y!ZL*H7QJ?1T1x)Uj=(jv3H3*d?t`oaJu)|mtT_a{=x50%B`~)ZjsQOF89*w zZA0G><(69~{m4-)OGt<_g(PV`zeg#!K!3oi5Cly>2={mMENcpeQew{)5Vtbzqhi9| zt|;B32gj!hg9(^N_ad40(MW4A4^ZRAXN}F1LSgN1*Mkonm3d&C2lHhub1-B=+3b~P zA$R>ZK_vw3smJ4pDhYH?s0hEAdB{O%$6T)f1-2wZ7w%$hN)KTQo@=?5la(kA5gr{ z_xK_zgL6AWa+2_|hEO3Ot`Qw<3@FZXP0Zg*Lzwi3z(T4XgJ_8hNGS0tivQ+uiSf|& z)*f5k^`y*V1Xq@LtbIB{T1EEMg1IGPOW35(AKYyqV7e!~D1< zJ(bH!aZ?sUMZ!S5Gj!x_!cbbs!DGv4nXx1~#fgR2ye^21rki33*SNRdew)1S zXYc88aBpav`gHb;{M8?QQJ#P4xx{CT{5gRK_BsA`#=wbUi-WF+Z!^V0kse1zuR|%& zV0U4SxSj3$4Oqn$z1)Htmw5F>hbOR%hM{0R!O5itjrl{@TX-~_}j?jJH z_B_@;7!=|f+e5NpiSAQ|{vCj|0lp>+QXysU?2-`_6Amk9PM?)iub##v4VXBQH%i7E zCPBI!J%YVe1A80x2}PfVwV~lcF`PI63}_Kb3@T!&bv0=Z#5fJd4jwQh;C%kfygs#*8X&MAMgE@kCE0 zHio;~k`5PmjWHjBa?3#gY6-|Dg-czpd!P07^f})L3$COMa6qeP&dFDQ`?uu9=U(tT z)#uKwh1IdVmFHG!>V=^@9^>W5fP`2qw4?{YcV^_t*aOc{QKzM(y;vnzvrkY(b8A%NPzr|A=QqB7zdZjJh@S+H5gknH_qto+i;o;XCU1Gm%|6sM1Ww=>P2=~E zE%+!Ih?GQ(yjFzjL3vT7E6we54L)xlMAzp@q0~0v$CSQn$%5pvA7R;!M$aa^Yn@!j zsl1GClSd*C3c--xm716*0t)$D@F>AAaa_2Rw^_vnLmBXBL{19BErTLYVOm$*ThY%# zKC^Toy!R);TPdC8O>o_kQnqBAbc7me+|kFgIMVE59PbHowrjb1y`?U@tBltMA2`%RA(cmdw%(Btz^YWqi9W3i!?9^B8#)v`BJp4U2SZ zP1eatma}2;@mwnS@uyTyobY60&C6F%A&KF%DNj{y%xm?^{SR5LD>I5RHhLK&-HfX5 zPf5tOC8XZNAtyTtY(jDqrkkO+jk5in%3w7Zx);KBGD=@EqCb=%P08K*o@;aYkNtc5 ztzBjVxwr2C`)%>b>zfdLP}c687QF?iOV?y@QJS_R5{@+?n&q!3L~ltr*4(-uoxR6_ zq{RaeaF)f%X>kiCmgfo(iFkE3|D|gPJ9Z=kqsGLjjvX1>JPNY0j>+ppVeONixwY-< zo#I3_;ti!+rbWWtvt=UOFJ@!5%%%IqlM6*gM`U%(!L=3K?z*siO-nxGZ0~We-`@`iYyl)z-B z(I=DWFu7|4K}(6+T!zfYq|J^jz#?8t)8S?Sz_xhwrZ5^Bqdo!XYJX+%`BpN-tQb4f zV|Q`jx0b!#T#g4XA=2Qcm06-9Xt&7zj{i-=n{{R7mhh(8{p-K-H)Ocx8m!x8VAwX= z{F%>x>)Y~&fBc7516s-0$STDu^)gV*g-}@Kc;KWx1(kEoo+cd zjsLv5q5*ZOn!B~07n^4_OPyzD)w*l*SX<_{(yTPQzTQ&0l_3Z{ze6aojm2=5o;|fQ zS14Om`hN46<*q0U&l$8$hEZm}XF|%jRoROEU zj;;0*PGj9X!kg!H9!HN^Ikg7Ib`<|?duer^`(=pFfCC%1?~O|9PlJV(A5GYnVYd^2 z>Js>{d56! zfS@`(_o}O}vZQMw*-XAbgqN|s^3n@(_S7k1nYEmS+7k~7GWjb(9L%kI12yLN)T^iD z{Q2{#k7d#KdWnao`^Iz}JO|G{@`(K91K%<$qkDhsOm|HCRsC2`gBYi^8+A8uqy65# zo5l0U^zh&dm-+H=fd(j^=0TZnM%LvLbN99WhmE0WUGf>jH-4>ZC%*$e$;etO`3g!M0>Ob zuj>3&!CufgzD@5B;SlTM!@wuzqm8%4Ymd6}%<|P~w0Vgred0VHim4F>=Mk-RV(G`2 zj`h&LFTsJV9pzr5@zXQy8LG}Ba*Ud8%Fo!KJv!&dc`i6s5d^~t(y+^HuLlz^hy&LH zcl)+2>G}g^+s5FEB%xfut5M*0@6}Oyjudw&Q7<36s^Fzj-g0mc%J2qk-Z>e~Ey`cf zr8_=RD%cW@-F8c9-o13|wi}j4%Vv>It;uNgBEI_W_jbeRGc#eie`h)5oUxlN{yaI& z!%2+^_0c87a67q6AS5@hY(VwKK*{?_pKG9I8cCL6P1l!RbJ;6m1s zjDWd}-K(%!t8^DEabduio9 z>~E0}NJYA?lV+1yDJa|-nI#YnQIjKJC5vCl#%F`O`H zM`N6S#_`4+0Wm5QxjFIo#13S<)}GX;B~99)HMklx9+@rm!ii4 zH@knTySg_E!Z5P-MrJ`Ht7V-l`iAT6*5*+7{YwJZycbQX(MYEA$pfCWDR?U z{aqaSPYRpSte~)d5-8CBJ`Ok-5>HO|-|?P1<*gt7u!MQ^Q0VjGo1Qx-U;H2crJOx| zzDocr=aDrVAt{9*Y+&C7>VUO67q~OJh|iRbo_N9&H@bGd1)DVM zkMFZ8=chF|(=3)mRL-ruamSHeIezWc_SF-$fz_D?zJJ8=OB_rJSC9yfiQ$;|t+7Lj zqy5(sxvfS^7{||Xr+xZ;mgo)t?em+u80_!xe%O8X-`en!C7QFVN8B^@br|t?71m&H zV`1M~ctU_=SmQ?fyk=5V9X+xOfYf06k|s$ugr-Y5$g~13UV7;zIeYdDgtLAW;%pt~ zzXjX_PN(+b^o(=oatW*@awwO0YUlpm#_F}$ia;pps#5=fX4J;N*c1mo+LQ+@j1T*-bVnd(jEP)c4I|& zP1Vi{mFNHko^GKIC7IT+j-!{pHly}ufZlaJo$lXrSMcB=!E0yG%0hMU$x6PtU{7JD z=y}DXbg0dS7y`$N64b zBpQ42>LWwQL(Kv$o}8Jo)2#GWYfFRW!XkZt`ff5D45PD_-MV|i>F%j~7pgw(@uGXh zN-OWtZ2_y;{(@E7&O>3uL}Pp1)tkA$id?r7W7!&eFD=k?p=vJPkwNXGdMa}9 zwB&+wEP>V9p7`V}Ez&u2Thmx1VR~6Zx(U?bgU?#hX%U++P4@$SZfh;gdvj%I-&>pj zW209efn^#SH1V`);|1#;9#<-PXLq9E_Y`RG3pU;u8#N~(;ylwGkW5Hy>TTC)CJp`l zwI)=N8Iro($kO{5uhiM5i?3!P267t}c*K9L;Tq%}?;7yjZ@y`BS#)+!x*C{-$^cz3 z-Jvl~QVPfAakJeW(usp3(-B00)>9HAKZZDj2ZTbpw9kgcS7RJG*4gKR@l3V5iIYh2 z5t>%d;AA!H2i=@1nA`*&J$AmPn4#JUQRYi3=G4A}Ms%p5z$_s^li#9{*6J;e$Yg5s zNCky-L46kcN`v?!7M3wSf_t-YS%Dn8;zic=>r^)6$78%C?d`I2Y&XVX3L#O6jNRICK}BhsU_8@N!)s{` zw^wc^is1PoUEw4;V~{0qWKGv=++Wl4iT^nFyEok|tK(P9 z7kviZDzB@BnaPjmUwB^5oIkywwSCkx1yFFEz-8#;bL|;t-k^-q5i@h}C1+lFMIQX} zmkoECtG@`~S7oXEG5)~GkIa%8$MbdmY8-TBR^rP{Kk+@smWC%2J*TRqz3I=Oj>3{* z7vgNvPv8*>T~Hjp^5V<#@VCCTKrj~r6KODcsSmssZFg6$y!EXXx6cp|&6m_n48dC@ z%Wy}bC2}wHl6{>{g3!$mdgmzcl6D?Z(FuB_gh$B*j;xHPCtKJZ;8n-CYNwm-MqZ`+ z|5fBjK^0@_O7r0&W2g??&=?3FtIndohFacP^$lb(1hQ zDJohP}4wxI!_{n==&b9jNQ4I_wl?y?X$Udr{5VPeS+=>ldzoIqd4rE6DQ0f z-3|hgS)-ruPX|Q`RbtsP&Cx>pZtZT1zTq?&pNfs?ajT3mG}JaSj%ICCiGo#j=ZR-l zjl?oMA9Ok?IQsALqm;6QORsBKX;C2KY6KD%Vg4pE6KXS>93lKM*|mkalCcI8pxO~f z7O1<$STo+6w^9)Ih{PJz*TE5ip$suM$jpF47$!5|ZtQS*RJ#8-^KFSbgbZhugA5D` ztDXysp5UYMU98g$jenJ{ksd(+M{+tft&D0XjD=-gcs;A3Wep8T!847 zH-xgr;--uV8_cTAPkz^xyX2aDB;p|f!h~w>?r&gMS&6oqD=iuRN;jwfiM>C8y6vjY z1JSwm`ER2JwFor`@uLn9J;GqXVA&x78;t#ou^l^hVwaQhs5CE?)T)-7 zs4={xeb4##+0AO^ntdZyl);ILyE8gNi@Ka-RywUO9$BcW#&ApBO^FROU6RN9z#{+_ zCXfG9LIxq*6gXg9oJ(RtU2dj}Ui>1u^7Yqu1b&6!t!-`p9Jdv}mK7$)r=HX-wMVzN z8-oeUvB5y?-HH>H^~51rAeJ^b>7_RFL8 z6Uf#4?{iVD8ZQwguhTIXDRu9?RyUgl) zaqK%YNOW`z&fjTy)QBZrO!; z2`jaZKIO5{it^U!d4`>NbMFyWuMwN~#jXuH*VH;6amxIEkaH z$2fQ%1fGR=B|b+z)s{)wRio@yxQ)-d;1oA_w338B=Y#M(y|6&RQLUsW8B}q&IJudb zyRn-h+{3f-o=4q#YR?M82LNe6mcRG2*D2w_Cv%=ljL#J|-A-W`UwFR4#>@Fhg-c4@ zMWJS~_VkX=lSQbj z?U}fCxA!tf<}($JrK8!D?&qat7`Y{x=HvSoNBOIDF5codFIMRrUQyg7AiH-T&erIe zU%tB=gtlb1_?tMqIp9dbG11Iu>8s1E1Xj~-kJRE{n~QtNNFxAvfwBifvyecbpmAI4 zT`EI`dQI%5XKK=x5OoZVyWhH?TW1VUaeA9EQsu;O7mKGTR!_7_CMqR{a3Ry0wa|d4L5L<6rR*5aCs7#4c;Br3f>%fSFV*sjN#1 z9bn76K3YPl5!u0)Qfsv?bspHYo{Yp^;ylK7pH{+@bsa~mX;|$!OSUY;5)ZY#D8WSN z$}mw!w@OPu7CS@cY*~Y`5M@MIB5QNO8YPQ47#Q_nEY5%PD$iXR_$pd_y@g_xo%64A+0-4(|T)E%fP+-x%(*JorAbYqY-aB6&93$Qdww-M8x|9^i|9r%JPt#=y~!Esz=^wV6LC4*Pi zVJDs=t9s8o^Gv#Uvi^lPLhiVBa?#GM6ZTstb~umQJmciCBeebaV{~l7huc-+xd;7h z2jigb{1Q1l)QThfL9!)3@E|qeq>ZjS@zTL5zV*ibDb zdcoq$;x0wN8q)^3d&;X(q|6GVyz}5M2B$T5BE1W&hnvuja-G?WK3-p5} z{&Yi&*DLpMAom0^`eJi$=m~jt+}o@YsyD<<3?0&_qoI-^0`#$?%PBh1_*;33d z#@}RoD5vArE$y`GNE5lDv{0C&9f?_1H2bs;V*uO+s&~up`}>IyOSA=&w>ar}39K7e zJCj`luFpTDH0#>LBApj^W|5928kPw-1ZdR7TY4D3fT-p;##pT7V5ZsuB%t-nt5VaFF-4tbZZ6V8+*=_UE-pQzwH~=YCdw(lM z07OSt+JsVDV~5*1X|`%&xY4>cF>~A)l@jX#E?h(O$5|UI zFHu!-B8j{-Fi#9Zm^a1ATbA16q*Mg{Jeo^iW6gPl01;z}9^2`zzE!qTnz z$o&4ov8GxNl8w1?A~tX=cQ9iC`FQ65{YLLIh}po%P|K7HJ1)<6G22hRh&2Og_`-rp+zfdZT{ki{(z1gJq9Js z{82&bVxQ&5=zM~a(Q_!U%`peI|GYwgCr__F-}Z{Nf{#3VEMPfezouak*1x22b4fVC z_Dgk`uhxgKV8j|R(4Y5=Agpl=G`%|365u?uvip_m#>CV%OvV-H=`xwXct~cyEk?>qnIt@_?0H$`KeheMcRye(ONO&e$Z}Kw=61*85 zDYR}(T%6A+)O$S^>Da)-J1UI^wXMa@3`|0>;oeN z$Cc6N3}S8$bG|c}b0+?`9h)x5P5LIysr4Px~Eimwko{2(1V zc#zJnm7Y;6CpXEvcki9#l8xxQ;w|u49#UnP4d*BgFuyA?Th21rmQJ(^djguSzBTlh z|BN4_&a#se;zb?97T0(OHU8Kf6z}J{eE~e96k#1+BJ)Nw+*2XzTl!wD(t+o*4U8-o4tT8u%Kb#Q zoJ4vXxksn1qw>9Mbfq|MUW1a+{q{4I3S&fIs7Kn{zc# z_NQ6284DX_k9~^+kC#j*b?DAaQbPsGo|y5jtU+g*wHv~;CSE>zP|u58w25mD;B#L7 zO1yuy-0%*0sjfpEX>Ukfc1Vlj)AlrTzurfmk zobI+7F=%oC0YyxRBTRB_G+VrjYu}hsTpkVx8@1+GJ#%+9#-cQbTxcuJnqI=S-Ccd% zg}NPN*Hadv+i%Wn6RvY&!^9yx$3k$MQo|ws#RS+2H^wfOwot462u-gmGSsEpX`%Pk zX%yZ%ETJgj0=^-Q4dXDEe0zT%Kiv|1c@jEhBnHG=>)tl)BDh?8Ppxp9ro;$QFtfF^ zzIv>!_IJd5sCwJrQnll5)krb0y&(-S#L&7|PVm!y555TNV{?pHOMQNg?Cb>VjtT#5 zv#7O{Op{%agobPLswlM)`Rrov76FHKeK#!F+815R+Fa}_BEh(Y8pu4IcmDbG`uF|t zL?OTxmZXXI&F7oCr1K#(*Y>xL**9MVCsP+#KK0{UAOASr{H2?XLW1Tsa5fk!vDOB# zjN~PrPfo1%qF^cDUKG6uY%VRKlg=Y?7|04YK5qxvA=WhTkGflzj`33P9!yyGI@X*A z;6ilF8xeJGfNf0)42oATfZs)|@4(rT#x%FYHA@@1R!WrO%O&e5A0cP~uS~Ce@WF>^ zxxH+I%=4qJ4zo$>CTxE2iI2(hb@>%nG%%}{N!8sJn>Ud>Z;_5cKZ_q?F&HK$Ob$c$7 zJ^(4tb(+Kg+S55|d*-xR4jnp7k4=`%=EX#mE$KerD+fvy={hV;xq9CN4^W32O2QEe zkY!~*9T#x2-}Ld?)R(W_{tYXGR10bXAIFWDxvxQwLvd`xZ`QB^=OHzJTH`umZJj1~ zBFRPRx@ch`6#T;IF588XxC--HjOJM8;90**BXN&T%8w)W-Jd$PuATH`pRn!Tvzrzh zgSqtc%!?0#NT84*9Q0a0oJMIfuNvnFmQ*JTC139eSyMfD_a-6d2S)~NrAFIJ0XgaC zZG^|5S+=KN7sj7?o)-(V3JMAoT%oAu*xTgq3f!9%N*aQ;Fk31lEejE7Jcz|$Bb3fz zPWw3oKSTig;8TIbOIq9b4}CUN1SMj)fqVb_+O(&Mur7(ncJSouhVP|A3icJWtHiB| z??^qajp^@rBKJ_RTQTUo<@Ggdl<6JK^1m@Y=ZPX3shY@hwgabP~;^>#YUc=1++3d_cMt3@4CfB5@TNGmaK+S`@t43R%g2%jOu13yLKni;Ps- z10Bf`HCpe8$?tK4LUz9)AdMBM19GeQY_H@Hx*GDbmlkRk){^^}Emztl)I0TL8svn= z%FBesJB_0y({ZF&@vi2M>+f}quM@Q3muExFN(XI0mvV=Y=vMVULMU7HUoY z0oQUxoK85z9d3jmYFQZ7^|~-zeP)Cca-AswClNZaWaAjxq=v5DESdy0^ljo?L{eTR$nHk2~WUZmT1@3eT@0y{O zz~HdO_mL5g#UwDi?mOQ^mtA=!B?!lZ8uQr2W%e2eYH71eyC-1T_kZi%_7hLgpZ?Jw zP5f1}4)~flbEVUw>se6$6WQ7&yRA%(lpB>&Rmg-Z<6R;yaojN2Z)Gev6l?+e9W#)K zJ)28)Wc&pj6u@nWx^i9^r(JSPP#|&i#cR>$xpASnn*wuR#Ge}*8zlb~q& zi8umWx3nY2Wc&AxNsun*otrw>O=dcGx~+6ea_I0udiddoJ0ZEdx|Fqt?FV=t!43J| z`|qQb{_60sRs*;1$5Xzn>+|v2qmNGtfhQ5N!78-WVg1tC!E29N`oA5gHC_TrUyRR5 zRps_w=0oe&4=pEw$3%HoZhxkDW&s# zgNnFImKmQu-`)>p#~V)Jb#MUW$xsT|!NDU^zyR(CJv3H?!?xj{q9jtc@RD#Dcs#>F zeP7C27-b5zQc1XSCeOu`wMnE%RO__CJMOeG`cl{Q&Au1r^}FY?KFOHIM@y2ii_R~b z)8BGv`74p3uDLpll46PWBdpP4)P!qySE6`o;@Yisq_Z5C%V1gAtI`=&y#$tr56hpP zZ%h7-a?7~ILyI-}H3!|77-~`<#*UCxIECGcT6lYEY4?;Rm>S6=M!VxT{W- zOc6lnE{#4Oxp^@|kS2h7@&&~s+K<{TRX2ygHce|x-MIaF!)YVtug#ZSJJhZVa6G_F zf;cKjKyz3+<~GfnOT29JV2`cTGs3n2j8}Mk{ZNs$)z@omh+btp_^21^U4SYSz0Lr* zYp0SdFc9wE?xifu^~DBO7O=*%t(Cre+2-G4q35umvySVl13+%3`bK}6@L5W;gsK9k zlyD~vp@EwlaY^p*4wDyMZ~?vM?Qf&ud1p22FXd0~Wa*d{;uGN1lC=<}d(Kxs{TaIJ z>$jOu>=TgY!kCptnmPX_%AH||6FJ_kzzs3ai&OrZ;J$QB7kBSB4$}9#ose~{iOHiR zfOoP_ehi!YUqxv$M<$EO>i_bWUQ4fh#VhG~mtIPA-g&e*W3OiAu1`H7b&4jGe2ZG^ zpL*))cvgWD3czXSYnqGF!&R;xv6E{ShtK~)=jWlXeU;9;_9{B{mSN>2UAw3D;;XMx zi$DN$RtD8I>>h}Gr!-1#ubdbGoG^xH%^bwMxdgCE#n!Zh;1dng$JC4*Qwv2aNaFPK zRWG@6BA$!%mXlFFoJtGCrQZ)d@+jT^;KP(PgFNd$tzl&AM!FtXJn--%M3Qjq?6c5s z;MuZzzdhFX;SP-Q4!5ne$*Qh#?PQqS*P2g+hjLe7#Y}IvuqAGN5nS&0K`C5ZZ}d)O zZ)$ln^n$@++T9_?=z_l_7z8p8E_W{_^uL0>V~<0K^~~8%N{sY6c0TYEQ5VfX`_TehZ2f$)6m3EnC>$VAw_ zaXM}=jfH43ZoP5Iw73wvv{8b2DP4<=@TpQ)H+^6RWfc)B#y(cOV~EoE6R}JVj06M)@mr~tCiNJB!fwxHVY~y4zLePHZ3#+P zQyB<3EXG0q8Xz_eKX(kiw`}#YjL9)8)ZC{Lx&U_)!>t^AhSUizl|xw6rzLoS$QJObjwFRLWd6>q%Jv3tNX>6LWgyl~>bueb4vO zRd4xD8qRqhHG)4=I7|<{^4;H0?>TaWzID^*>Bc|$6T0V)+v&+CpCT{IwvMLpERNEd ze4edopPz!r6&`Zc&0oHSuK9s?({t09_FQ=toqO&%^yJe|(M~L0e+Lmb({$G1-f?w$ zjI5)(Sf}eE#*z|9b7rx2=toJ6W9pUD4Q6WiusEZ=PWIp$M~kF4n9r2`#j#0hY;TfBKIcaIlb-%oF}Dy-@SLbWfuf4PH6ktwK<{W^3DEUS+@$Y&;Gdj#)!*iJ;C5qig{=#|jOT`nVhLW2#~EBu3(d6L zGM2K;`R3we57uJupFg5~VVd(RrdILwW9kz&0*<&XY$T&}hS?@Fyl(p8yM=vJJnit} zFBc(NlPcevN?+|c%kGuZR~I#-;wG8gB&CFx5A?|KYFgj4{1sWEF%hOGi*&O_Z;7`t z5=vh*t0OHIY4=w4&n;?#H19L-=l%Q0yq|eJx|Z{1nbsY;wSWJBWZAP-IQcfvX*3{e zc0}#|N zxUq%bFG?ts7Eo+48F5X~ja)n~uTqPL17l^)o(FPB&5aChpV`tPjKXq^ddAySTg(^t zZld}O6~0R=aWGJnw~2CHr9|v`M>yHF%mq9E2lB~ofCkUaf5|fD5=#HrJm{y^%XQY> zUChDOEvUtwg0Ofk>ykAn68Gxv@sfp8n2l}L4BsAsZW$-7Kb|>LS60`+T!1wPH*f1q zsOvOYMs;OwDq()9E2U!x89Zo`byM7U?5zmOBkp6&mvz-jVkyy}w2pZWecj!y%-xM; z3}c&bs*Q17LH5PqR4c$$^V-mCqtf4s!(FW5dg`u>=AB?utQljc^|1bf7@-QWe{rG?JpVN>2-M>q(d+lq0Q{nCn zC4`q@Y51sEsWyRAiEACLpTk)6D2jS9FKh}ftrRdl=&n1zIT4M+6x`0Uc972V-m}i4 zt0kmh$rL37=Ld6&W94A%;&1#u$7}6tbJg=$Sf;jC8cQw;4|UNm>Y_i0tNupOgS?6s zJmWpqk^rtAk4|x|+&AbmHPftQo%iLMjy-#K(K*-b#7ccTTicIc{p#1IwYO~0r*w?= zsnrT_|MroiboaOJq27O#DDof7+bOeN>)YYUB3)}^fcw%zcva9ZZs83~v}5LVYHsYR zoYxYEO)&KC`yC})_jLUY$4RojaIDB4WBz=9o+nk5{U((jJUODyA84$**cJntgNNpI zyTSOZ-B;PYB5AE1uNIn(YIbON3Q)DWHgjBU3J4kehFMKL-+;cyKI^bSQPNV}mc>hM zfV*@BUZ&&;BIksr4o1UNko1^W_>5QQoeIKUoVi3aU!n@*09S!gCrx25HSs%8IZ+?vA5HGdbkW);GVDV z0Mc|37Cf(e-I?r+XN4lj_T8xQ;YDF&92Od0RtNA$m}^RWk_GuV|2DSgMaMjbzM3T( z%4KDpl;)9^>*MNu4X)q%>K1A(^;+WH_z~kN6pVZws8cuG+h^|XjEa*L`T))1q~}?? zQwS~Ha%Tg@l&xEY=<6PuxhdT+llxo_+}diKPY(UvqCPBG+CFMpC4ZXNkoGnid{O!; z+`6T)wL+)ZPTRE`FEeYjtk7g?52;>0Rbw_Sea`3|H$%wwwly6exUO``#@v+e0p>eo z?pD|C$to?Mx-jlOU<)R$-IT4;?rtCpPiH*OCgH#V;k$Tq`hLJ&6)bCa1E6~aotkhh z7U^Yq5F3r0V=)55re!lhHW4TlK9+`@sJW&rivjWA45lE-0WP+1$6{yDs|k<1K_Rfz z%sl6>AasI3N}Cb$Jx2lEWJM8@=a)tdp;PPQDo{2;8xA1QT>Qz$Kz^fpbLluUb9`p zea)2%dR?_QyQSKn*I7{*o(rgRRh?<8B^WsJeuEG?#?*Ha!HdjFVZH17-$Uj63n{d< zC)1KJvub6M-YS4>GMfib{iBT@p`!s+)BYrj!TFfV#%^)+{|mqex|W?Q%)ft5*^ zy6)w#r1$*I|Afwc@fEY_E!{`=J-Kd6Tby|&z2ptArHik)oL=x7zeRugryrw(ho6Fm zs%hiHLeD-=LxROop%;Yv^-d z{9@qEbykA-D*wz~x&5BBNAi7f&aJAd7-6`gx?o0a{lSpUEtj3phV5cX4GyJCzBa6x zOO7f7^7l(+ZqM9H&w6uOvweiVcH3=}0_r69_ev|>wYI=`Z9ACf1aSmwu?T<%>_T^gUm&1X36@$LiQtQjg8 z$D)LiS^iaTjMBV0l@-Lr453^@6J#8N83U4iziZ~{m^|YEi(<)FFpz6TvxqS~H&&if z3VhUTt(`B|JyM}0hSi)M7<|vE=f?m(A$1~oRsr zn`iBwHO=^T(@p&X<>o@PXho9GzPTc-);`5jA zH2)qkaNHwjPVWtEm|t5}`&)-3WWkW<@w^4@xeP(nHFtp+R`^Zsy6W0Q>bp%2iZ*>5 znsfGfm30{$)0*YeT_MdCs5!$Ma&GQO5hDd;WF}Jh%_j_V=L(qkeV}CF$EAfjf+jz`{N>lt3*Y?K^q%!- zW~F69?Z~+O(OwqrRX9J5^|Qb8JM`c~kCLqgETY9dLWX#R>s|(57qO&PU|Z(W!U>;t^6iW>&rs#m3f;@N zuj|8VCuVxR*nVBz^(64R_f$S7{QSb{`B1R)#dPRya>Y3sa%s{8B_n_en*%k^GSFNl z3yTs$m3DT*BfEF)rq#L1I6IGMNY~Z`goS!V$C?F`Q-_ZbA3N6I8?>Ak>$=ce@*0(b z_YND#smuIEiEex7n%^MyzPbQj^*s)yGWlg{0XF(yb4Sv%yo91{H{j*K(-f}vg?Of* z?q{;3@n!rmC?P2gK@jNsm~he@HuYU2c#E_zq4+M)@LHH3gYQ+!hXiFy1LJhBd(n(8 zU>D$_DoIak<850vqkpkioW>FO5uCPlsKFA9{zGy8Yl!(YoCjFnLB3+F!H_~Xt>~=1 zb5ZPh9mbFD*n0~+Qwd6UJ-LiQktw0_BDz40vb3I942qeK_X`2KwCAN9AJGRfN{J9H zO_D0_hP*Si79(x#a#*FaK&_d(ziU(FD)K~QIpLVdVv@ItEJoU!x^+u@^o?-qK3)^U z>IXg`M%UG3)qZs7qByU?*`1pw0eXL;wx<(9liNV2(OhEpmy0EO%gbDqyjW|@B5BPS4Yj02LBIijRoW+P-&s2S z@0I>im!+_~&%5V@L8oA#urw4yw01k(;ZycmI~=LD^KPZ9?$$K4EU12ci3D2dAc9b3 z167Z(fl!`6vRn>k@h;}d?p2WFIhtu1(q%!G_oAhj7F1~HVFB<&-uLi7Z@*w6HFxJgc1m|`0=V#bTw9sL}VN2Z@F~^v1f}*to z*3UfSOnUj7-%Mv|2_B+Tu?+QXhK}6DFaWo0*r)Hgi~ju6pEd@i*3jIWdwuQPFDnEO z&oJ)p_QqrFi~=jQQhWYiSAGwNfrBwQBf(9Qyua{R*ucBR#eBnDf6d)@x_lQ|Rj-9v zqzc@9S>1aJz3%m|rFZ=Jj}e`F4)B`0!BQhpbLp$(>8$A_KBbR)_tLdDyp8_yU-}+X z_4*;^v5kEAZ_+2W--*{QpSd+!4%qEuVr@JyZLE==)yDo$q32I9c=1ISQFe)+rff+`-h+ejhAD{yEpYggV;Q z9dzn#h0I|ODvTHU=AE|zzkK`tJNW3M^yI@2Q$s#PtHRld`n>~8?$CDc*%L0+ja(N> zN$pQ~%1q80qx&1b?n#H%pB?$|y`8U_{gid%MTZlM-*y!}V!mR!u2TRovX z=8aJXl94UlERonV+Eo}tirp)p77~Gs+d~E4g!_tx|K#;7K0ZP?pDVk-1BKEg@kL?d zqK2v|({G}H{XCI*N_`I4f5}Va{c}122#N|2xKLf<2k=eKpUBjWMytFOot0;@IkIPC zPFrXCHH!Ytc!(LUt(9X;c5bFepwt(@<2{!nuc z=%3x@Cs%Y4cr*ibXUMD)3MHIAU$x+&^byXKxi=hOp3sNXMAq^0SMz*P-oh%qxk;M2 zTZCvzxv1tPuwa#*XYJO{>(3uFYSuRnIv zy6cg4-J2}3FSr1JXPV2d3ih7IcJ2qDGr(5kLgW~H|ESvwg+`XseME7mmN4>XIASk> z6bMCip=IO7muKyIC^H(7Ft=+U-_$PxQmrunG6rBMO`F;% zy}1)R(FYP@M|>&-OPHOTtXFI7i(a3&u)6_&-@L#;a%@iMp53W`=Mh0GPgbAikNO@=I@gKE$gs& zmLB}peRS-RN9b8?X-zJ=>@vFOMVBLF#$hKfT#0UT79iO10b=8n=A`q^U~&J_$U6X- zF-v``OYON52>A!%U{lOVGDFP)A~Y@6w@%lYGb>_9d3QYj@=IPw=UsGh?}0m?7(R_- zT{GfHU;N_Ds76(GJQfw-#db8D;Fw_U?r(jI?wt<2B)zko0xsEUW3IbKYHy!Oo*mne zS#83>Ngi{>iuP5OOz@y8%Lc@{w?nP5{u|DTfVspWa3?t67};Uv_K>?_`o66>99oWt zZTWqAhMbdRgkr6g@7w8mt!Z0~9-VW}+5LPJKJm20;MSZv&T(wANRQ&)O^t7fcMX^m z;BGxo+ADGZRPbesW`R_}*M%+!nx?!1$5fEhMa!XDZWpaU6(eZ%8(fK@&sny-F=OJ^ z<60NglO;9;$1X$**H_S3pN^y)2wFpo@~KcT;Cw&FO?aK3w_X5MkPDJlce_&N$Dnk` zb4>_y(tj$-@(s#|X-E?-OfWCh-{;CB|GPMEQ`W!+ha$=ThM~tjY7)5k^fjTp!ut>i zI9SCG_y+IGD|w<6`j2F zmA5VbvfuDWl)%Di=SOg#hYW~Eb>gc|i%UE$L7D-f%^JyVvu2fzGv4Cjt!8zyK=3Up zoo~C>{}KUOCdq=yR~JksahA=^tz{Tm!Sb?;$;} zmgvj+`xy&kF$$w;&m5Vu$Itj$x~2-^WNG)y(P}9dE8DTO4 z=8Ux=+S(8s1aZ}pg2Qwhf)CQPVIUyTh#G=o%60Xe(2cs`tGc}DBMlT$eiQ@(!b8QU zUg3-`HTVcbI<`JLAkQ_xG#B{hyS>&GK|BnG>3)~#;`?X`;M8!pBx=l2V!o=?!z{^# zNVUNWSXc`ZS?KeSv_`yMr*jJ=uvyfG?wr8+yy&_xgach4gCWaB@4pqCFMco* zdf+|@Jsy_EVH7F7vBdRBS`6Uhw%-WnsZ8kr0 zG0U*J4CD#=9=hiq`pV}%uSq~$mIp|#}EDx?Y;N~ zw3hmQo7%23&!ji~m3PvGFSu0u&Pb9p!dru-gw4XvyLBV>7f~;OIO7EOd8s%2unW=- zul{+wwqoW}AUMG>wX@EkD_;6iTI}6D^?9NFt_XW^B^hrFRyTNI6%5oHMaH(_-XCVk z(5K3{<$Ch<6gS8c$tOigr^x{aQ|wCez~x{HktMe}vvzQ+4-6*Wt{YLJkWs4~FgchY zU`Yu5x*B-@!pkqC=bd-nDekx9PWt+}hwBSJ`SfHte#Ge4V0(uV>@{G5Iud*q!iQef+XC9kjJatTu}hfNi=T9*&2}>;Z#t5*gp^&WA z1bts;SLS=EL`RP`#@!3Go{Mi8f~@ToHyDJl>)v@g;Rv`h+x3=~s{)QJ1fhnf1Vb^Q zpOW$3J#3UO9h=`4`e1#w*^lqpvB3q+#Cuv!A;53)Y;$;*^TWVk=L-}Ecs_XCfQbTL z5B(Zy?UWKe_r7lZ6y-f>wBHhT_L?doie zmO9dCV(j#!&}Zc2&?nR8p}t$`)4xmoD-ojAkV|d7AV7;@SBx_fC%wi9d|FiNbX~js z(`4%6@pV??r^X80Yrl;TJZ9jX8F^&O=HePP3L(c> zW}i0*JL+CFYC?~tTOB!BgMet;cQRg{o5pNT5QBMiqzR!YZb;S~(+yH=a(ixKLZd$} zoZCOu1#UJWI*|52{qwZH#bpSa2c8MZ{@$FmHY6`{nW+6;xf_pPyJGZ0hg~=@11GZA zhV>dX_ZW;96b^yRApf`rZx9jb!(`H`OVbuJ1n7l()?l7O?o&$2O%q(X38sYPV(1d+ zLoh61Ed(rC7HhcW`8DW|o*Qcj;B^?GP${8FWp^XPq;Q)Ya!rH2bMUw-NZyo%Xm0aH zC9DeiF5?=E!As-kBu~V(fERTgrltULqU_e$jzEKO>snNfFdr?kLWaz|tjNn=bscTK z{`v$glqt(eH1Ej#G|vHzJlVn5KJiJq|G@_X=F^NB@egH^J-@&cf_-mNn>SnXLXl(y z8B^6-QcA?aW!e`JSfw#6W7gDz`El*N&Ls$_YSGoQPG*h5oLj%(5u)39pzr-l@1Toc z`3ib2+WDI=rg#0|du>p@&poq;TcQJo7>sLeibdcx9ul0_w{dlBb|4_1r#w9(%fw~;05Dk4%}|}4eXu>qoIaVa2I*31lQ!6 zI2sad-V8R0fj^X6Cd$gW>IjKI0~{}aL3B_K3!Uz96H0eaN|x8W;f<5R;Edx=~8Xg>%meJUmYE5&yq{xy^1X@_zLG8O+o^HS87CI#Lq+^z| z1Ue%;4nG+-j?0#<`SE$rql=z@Nps*)&{>3Xm(qDZIwb(;q~l}1RHsc9XHEyO#*F+K z;72s$wrbdH4t%^`pVpj6Y?n2+P`7w3?eB3U&oHmmCD02|UWDtk|E_aq>8?eYG2fFq3FnQ#Q={% zWCjnuwboVszS<(1$4Jkcgu!l3pDH(PZfdeI zJ-ix{w0RwAG~vn)!!qrk8Yg}2rFQ*|x2%1qwk99iwOcr!Klc$^VlkZar=c{n?pP6^ zCD|B+>rQSxjdogs^sIY?&grL0_il1GGdi1z9hdK)h9?=+O6quylNR@GnJhEmuTH2~ zqvgP)-*CeX>K5P&vf|o3b0rXAIxn_pQoQulChgp^MS5}Z`GwPlBud&HMoIy=OgnpP zj7#7t-Fy}9E@FiqgUIJ;P2Y*S-|%RCn7VLR-yg}fXKZd>F60FRUB{02>N_d~HKtYy zAR$v7?ob?O+n7LTqN}jNm1J!%r5}qE`5NzU3_$JZg29y?IKg?6BPU5<^%*x5SqDWt3A*oGk6+Ua3O@K3m3d0vlY1Q9507q zuwp!KX^G32qvV5%iVH)Ys-LYRtc^lY3*785cWlg;$1j^^)RjDPenSa#)i4CnmM^rV zho18g1?@C~P^Zrl=fvG}!-&;T+gOlkQV_kx``X%tdueiaGA%8|Jej8j=4w%bQPK0T zer*qK6~p-rF}fH`gqs|+<7b|I7QNvee}y(+-3f{QWLn1rrz4fNf)8o>Ug+t&zD1w= z)Sp=byF`&fyS%13k#u);aXl5rK)o8os*ZC~25(~<7lRRM&q$4+H0J#ssFf#Mc#L@>g%WjkcdYym~>+f2S@5t~t%UG40>0ufD2T zzo0mCT&^@=DE;C1wKTZztdB$?Ckf)@aBGuLBAJ)z*dFkGLqDbFo__K!GIyB`{p8W; zfzbxc>u4P)ntgeqA@YprsJLIBS$Em@QRoN0D?k(NIpb{Fb=f6!+H-b_?eO74w0-2T zdDm%OM+n63jgS;76v{Yi9t_G`5$3@1lOTzM32+()v5PF}+AcdUb0^gf0ICzxA1ckT(vVy&g6Bw#2(&0rOAE{gM~e_s^_D5QL*wp7J8x{n?nM2 zZoIV4MSj^DFbfKxIcgYHHB@np(fpwe39UOj=0sNs(qm8G52T?VQ>@NO!U6cnW z&a5|uk*QX!?ew`Z8vmvD4-^KEI#T1=iQL7o3EAya`%u6`fwz*Z-QJhEHCnuM55V~7 z$;Pxz=R}Uu!$W2%c>s$s(_On~G14MHYtI(!7qew`@>#0ony>Z(HdQp*UE+ zJh|M)kMCakNSOp6s-vvxo5 z7zR(lc-nqyRz}ONJkwBO-b$P`=D7f=lul&{H&-gfd%Wvkr5Ls&WEHImQRXMqyzzMzVO~G~!^oBYqj$boS7M zu&Cf&@x7)`*7=hR)YV;y88P3YVXY>h%Xt;@)rHlLaT36)9P(W)=6HrMAH%||+++#Y zlwjf=rk%G>xlXO8h$Ys)BVM!6RWG}au6+Hg5gVN*8$!ZP>p)49-VRPwxX=o>F|~2B zaD3(?AE8GlD1iS2l6!xwv7*Odl>SY@$sW2AlJTsKz1ovHX!dxOw z-;>oT;T}xEpqAP~lwJA#v;CJC0iP}qa=G}btFNK+UvN>Hk7u#@{O{dM-!WM^Be@F$ zl3jSHH8D$lpY)Vl*YV7{Vb8hc=9}r@6HicE?19z*!0hmAX!g0&Tx9Nz>5XrD+az-$ zCY22iN`?g}gWUS1uH50GNuA)Wyua0MX-q0pD6c5y3KWL}12j3%@i2iNq#jdAy`Md= z5eV=l=)~(@^IF;^$^FWFZl1}}=5Kz~nFuOc+D6)S8FG5I~|;ePJ^G9Tz#c`Y0vg1c4&T`Jt$ zQ)8q%=zG@MBM(1HM-CtHSB`_EhuYfV;PI%nX`YOI*j`PnreL|3YT0HWibh}orGyOczU9-}sX^gRMGV^7zG1uCd@Zf}~u>tH! z;~H@1frMK~AdtrB#8D_>KgtX_Iw3S~506K&Ybz|p-8wlq1anW}0><7KZVCc>X=#Zw zOFM6|zr2GS&Ao%1_oE=0mUJ8zGDmz3tx!ko!UQ{eNyM+qGK@~l;VxWKKRCJ0<6I;I z!J)57F71v~LqV~Ip9+SRxbad%Gd?O24__;8LY1$f79QaW*IIuG1>tq8Xkh1JOic-% zzfg8T<>aoN5qJo6#7T?HEBs$2?u5bY&R-MJsY%h~hi9(#b@G`vEq}Fjm(OJl7;wpv z$M#*d)%kBs?m6e4OE>($dnRl2xk-9TfT2ub?GbEVm|%Xr(+SQzWhQg`KJD=bCPw?_ zPk(ayx{VmK+B_^nqSo%b;|^c1fHw~liDL+_f;i`1MnR*>`cHrC4pTW7 zlsE|iLL)A{{BnBUIp^*CfNy78F6rs}@1-M>Y)r?TbA3?bFETBclTc!^Gdn?CD}*ny zkSKT~>1swbiy=K|){t<~h2TnAuyiOT>z}h{L{P3--y=&qnM<=OW7!n3o>Wj3(h-Z1 z_<>kLZo<60L0yQc!Z&?l<74T5^JjNFof%Jz7qmq&cq{R< z4uxT{FMdkKi8|D6!h`HpEOunm_Ws0sx{guM-2~4T1p$wM>izd|aqwT<9v=JE6SMkS zFt5@Uj^Eqg>|q1xKh+-iI~&1h=bZMJq>OPHfKvRwj1MKSvPJrG4ZUdX0QH7Pw@A}% z^GsA|DdDpiI>q4W;kaGG=o@g+MLW26i%ht+)w_0YrQaotcs~{|NN;JlN`!30L`&9g zp{M(h3_B&$J!J}ZT7tB9FTcF0rMMTS-S^xFAVb)aHI=`&Op73~(r&f3L}TrHZV#;{ zAk#Y1ScL1>bTV8DL_0DaVv*jI`q5HHdKMsm`7Drrp7MSCLjFAwtYV0+%#n-ytnsX7 z-E-vQn`j&;xh1>X4zPD1>H!;bq(~~^0!;O%H9&D|V+B$S1}I!n;UcDfo{g~S<}y#B z*#9mBs`YDd*Wf|3aYjNU(+h%5*d`ZuV|V+_aYxc$%Uo&mR)X&-aL2Uqn~Qg$t~3h} zfz2EDiJ6E}@(ZICBM^l$2;vT>)=NvIq)|&QFyoMniQAHCe6(a6SzuMyT zP%(%5y`PsWHS;8xY)^hy^%x@*L1X&a`Y3fR)!BUddvMMB^!F$M-4drLF^lO?m(%I9 z3L`Upmh_v%HR^17Ne3~(j${12<3Z*ED*d?bmDkb5FTWP9*km4e$`pVg=~@gukTF@4*MAxthj3nB&(t!u4KV?+hLzshD|5MuuDMMR7%qx%28u zh_+qkT|z(P+3E+e)Z{BX*qFK44zxOJ7C*=MlxO7HurXYq=UgVFx!fUsaWtO`P1d3? zI?|bE?4=io3uZxw*OR(urJXTZInRIo1t}&!;VtIi54{Z7$nHVIk$v31TL$n^6VrV1 z;~yj6#ZA;Y)s`8cVy^+@*2>REH;Uk`I}dZhO>JnM5bKiFf5>)0hTl=d@=2P(dF^Z=b}CG)!XRN zhb=xj%09x|R$b%W&lIy%J#ps(-bBO^;%caiBMid7-*M+1bnKyrh&quxROxj3t@NL| z6imC%J&&%r>Z&AESi(o6q3IZFCwRnu?n0*6+<*NjRtito@7SdHoA8&03E_9`25^9G zvmkWXXGoUh`_F#jV9tly>IAE&h0`?9`%Z5mvihVPyI_KwU1v+J?&0JW4=2-d-_c~e zPe1f9XryIWj_@FOmSybkJWbX3Z^YRfcR@J`rG*f1oYNRvV`^gj>y9)P>XD|y&!Iup zmEM(dmUGJw(p2As_q&Ia3*=+sP4c-VvetPFw~lYZ`9imAHQJ-rUc_T-2}S>#jK8xS z)dmliBZ(XT2|i?*1kk(=P3UgCR4LiI&mFAWGr%9u53+ey&o*ZU*{(NlEwfH9xiqgW zGS4p2*9$+R6qijP9wD^by`%0A&AN@Ge-`Fut5%@Musl&F%oosdR6f-tjmo9#-q^Oc zd+apB1`nzdW8 z^mLz>zLIB1eDwR@zjGbwtffGl^o_st@7C9m_BOLf%U9Q#WLJcF%R;mOkOI`j4R8Wa zlDTdu^PGfN(}HAylERHe@t`B#S)81-IzzHXqXu);Ri+Ul8yF)KCM&F5P{!y^_hdu~ zF+=9&;;yxfOsAF#w1U|mVS!bQA!UV-{ZlhV*0wR7_APx3N;oLuv&G_}!r4$FQ=+-B z63S*JCc=q-3>t{l6{#kp>3teLLsmLKKbZq9E%7*r9Tq>!K*t?gI-(G z*v9_%uoe~WGb&pqUL&MwYXTH(x7XP43TlX( z)ni0VEe@(p&;Y+2_{2cZ8E8l*WHl+(HE1!YYm$QiF9(fP(yXusV4>7l0^zHmHxYrt zTF^lSK=wT_z@-g`#~jyO7kHO$jEOL@9)#M!p<61}@e*@kM*%@S``qWzJO1iVOw!7( zHgRKeh2kVM_cp4wIij6FsKWCe{QB4FLm&P<%V@8{%%a8Em!<91GKO%XN|R-UwU=S> zWmx#9=Wb8mx2G@1jB%=7jsvi(TVUIW=u#M;y0nb>!U#Yx@S3lYVbntfLNi;yxee`H z3L}tlxlz6#!HO^#d-m+5b0>?xnkpR6Jx6WN-aT~Q^ln$IHOB!qWn`fy*l}CaMoDel zwiUeNOke-XSLo1zZ;~^_9`|`_M~;=`!rrJDU2^HBf4hu zmUWg)-CF*{Vqzu4R1`4dMpK>|9*^D7F{Pm!NtTw9zI%zqilly;n}DDo<=GfG538i_ z&hU=3dt*1f{k`v{vm{%$YY@M!ZOyz+OyD1X_(Sm20Zl3pJ|xlhb^%^ACAWoaPqb`0 zHm36%(>`1%bIb^H0=@<<@>d>w>`D6UM?bcv3r#?O=0{t{GtN4Lu6xT{X!l|x&g;L! zY%Wys4LFCVI*2D(B?Q!pasz(sIdghsX=@r+%Zo>V$?F_ejo^cC3MT5noM~~4rr97bv9)TzQ z7UPMQ5j#pq;90u$FWeNqmWx1sUJ&F-(pYJyyR_4oIEB`63c;HR-bCS@Va2y++EY(7* zjPMEVwfJy0avp-3*ToJCEby_a`dJJaVn5rf? zsUW&!tN$Bv1Set&hGHbR${2!V#7}uVqL0(9%tQ@0c)#2_TwK%YNDra6rn=+EYHiui zp^QL+2j|%p(ZG$cqqS@1&5`PS9_{&*uJO5b-hyL+8biLmWg=(VOQzl>$q>H^%+RWi z$OIc}7E9j*I&*!dweODjtC`kpuHBCFF)nI-OT+Ryk63l^g>1s-vXzGk?f^-)*yvMx ziGSgMRPrp61?EqNcHaJON1F0xMIm?{I00#pZcM)mQ5qX$hd}C^-+lw_ovfCzpy58t zjiKQj2di8i&S#=lz$B!;5>dwx$r?;^^oig9JsOXVHWo0dN>X*Zf{{fZiu)de2Msr{ z(Y;GtX#l|%UJNnEaCI-<7xO2y7{#HqTxeKFXVMJrLnTDchS+{A&6-hdsCChnR^#wM zY&UjqOpNbYM8|Q5eYV=Jjp^Nc&!Co*qA{F=dGw@z3?S_HBXDr(S=y(bewx1grJKnR zxM$cson%=4dE$1_6)&P|U;P?#t)9XOET9~5g`AT1P|Mr3BBaF`ylk$w@^RA;=%!328`-bq#m*Wl)=m%fx<{PLHj$t|?A0C764to$vt!0)-| zu5jh_FdbDAEa1tpFlC)9h$FNo$_#oplQ0=u-uCX{V@K)0ZMV_#>8FlM6P{Uf%t_)S zPnW*rCG>)eE`kt;b#R?vQixDec2b9v?Su&tt~4Dx8d<=Q%xOnQH-WM^g|I9rQHf^Fs{=*4!b#wM zXxxK&mNcv47={iuWinAH@R(zlDR0%Xn^WgS5YLYFDd>T(XbvJKbDvD+nL(}pMrA_8+J7+e6 z@IDN$TfaIqZb19yJR#P(#KL+u`b7TSieyhRVY>RhgExlrB)F-h5}v`Y6>6ban7gHV zdcbRxv6gsVrN-xIGE5hasdlRTk_2&gNB6aIMGFQ0I2(?45wJt0?dvwqCM>c8Zpa_B ziem4bIHcz{xk#+i(JsHZ93W)vPA!MchD92clk#;UM5{0@9>o$TEkd;9y}I{O7kF#r z#quV?wVV^#u*=%L#StDXuHCdhSR^30JVEve<%}lBp7GDmS&VdQCF)3%1#jDz{cX}* zh~C=Y@@Z|!w|z;AuvONUz_RcC@=h|gW_6S1>C(}}RlpOC-ReI1YZ8u0lZ0ccLD}5Y zzeT$uDc$c$0<{Rx9vdJQX%(iumUIv`=%F|>yo61d5D~ln+L+~tn{*^lh_b+-t#BlA zVMmD0mlFr3<&=p!1c)SzskU8(BX0FnRXYa88wh@Mq*Zc%jJS9mzGg^oOctm2D)FUO z#z+|#bjJztpeYziOpXam)zL^2#_dK=nq(QaJx+<*#D!4d2gUwz<}#8uEPZ|x142Mz z$!gaKQF=$e0P&t!*hEIqq=cYxu4(dHHOsvEwW7Q6PempB3Ev~C4=>Z!Ve@Z;+^Q16eJ7Jm9T@VT4l z%U}F++wZk^T`V4VDB5h4#bCg$?RySu54R|eoNzdBh%biat0|3H0_iQ`*4noYZ}5yx zD!6h>cvCPpzLhj2qRhrW?cK!&J?Bl))dUZV79^PA$mh;CRx4>llwBHY!jX*adi3ZK z`uenn%O{?sRZij*I(RDg?pn|d?|K()$Xx0kBvYV`MoT5Tv@&3bmA0gdC9?Lqrl0~x z6dx1zRE@=UhPVka^1xwi77}BgDQHDw@{E!0^JW?DFvc05)4APeo=I>1?(e3vFM0t5 zu+fU9?c3X?e%|!yPtns)Jq5Z$6bhmZv$l!_pS?aiC4mS6PIwqGhc{8KCmUA4>A3sO zJLp??+(}eU7ey<9zu*j=oGVZc!xM^n(0P=^HmHsoT$)?jhL zP$-I!PSITI)1_7wF#3D7@ar6-t;gI`Q9lEzz5YRafVP3CbzqUFlH>BTY!rjet|b! zQPS|si13*R#e-Ge;n8%$cy?`wyHo7=km0Enr@-GeuTE|}9Z+K1w*wBqJ$}f%m_5=t za^^VP*+w)F;__{wCfkIyALZ(K|n>6p^Chwm3yIMfPm^gav> zjL<`Biji7cKTCp_2mwqU4j?EEu>6~A9H`IS?bhgQSoF4u&uoPBM9wS8#%67vY%DT% zUxrV~iFLzPLkJ=VO42dUmDMF2+bS(#waA|PEKWKbK(cjOuIB)PD1CK00<^bhjJY^< zXkWHGrxI8S#!(zwPVQfQ&=x+$ty{DWu5rj2+gylt7jH~{_OX{`5zF*-v$9v>)}7rA zx|(Mb(KPyjQsLI5XzT11~e6j1dTfW_`9(O2C0BDQo2!jDg1|+1xZF z7D5#Px$;1s5w}S&k~MqL1V9LLU0o3{9Z{yD4Ae5M;hnWvCY$NhQ&bKil(tlu-qs+s zO3lqMT%*8GxiA2X*${Q(fgHb@_L;(UY=l*>27{AeQI6_bRq8b5X~MAqtj;AZc9Xh$ ziF=ro`zYe3w@d$a7cq8*Asy-pH+s;pmtC<^AzDHOZnGj-)Czb{2~@144XIn{cf9?3 z==m?+OaN$m(+CF#kw}x=&3W6@+yw07SQrmI@-Y4BhyH+`o-7>U=I`DVuR`u z7J2C4Q}o<7ren)v^wgn)THh-P>pOQc<2?Cmhcoul4L|r^I`6^@lrBX)E|r9yz*JD9edhHuP>Y8e zpt>IPIgza#*Q&C&l&obS%J-|*pU4%e^1IM+j)ZuQzS8~ZgC9nBU0X=NR|CED+LzIl zZ~Ly<$WLeg?bOQbljv(-xwZY=p+KW=0kQa^`zR&-n_KTgNu@uQz^&DVVamH;hI8R| zOd1X)+O#Ez1gxXpA$<`OC6d$$Na^{$2iW;D`=jw#@F>$bU$$~x&5wzl0smJch3^4`*Y@9*78-zE2!2-EwBqo$*b z(zA7!CREFGiSZXDu%@YVh&pv7blQUSJae~viK5o2v$}Zu_uG5Cn=Wum+nPOCT)TI2 z>wZ5zk#x*my5;kXRG+L9qTMnL4au$Ro;ztNU8~|2X|+Zt*KYaL(pPSgF62reikLlW z0$^3vp!s>^0?PeUzw4F;tYQj!tghOA1dD>+Rlbl;F44)~A zQ2`hN2~n337(YipHJ!hd4G|>bmXc*c?nXyY2X`Xc(~I=8mPq~Y<)lJL$V8UpV*9!uYc)l4{Rn$yVXy?1}*E6S9OrMGz6VOdkv zvWSB?S;x8UYquCy|Iha=!LmxM$xuf2PI%`6wJY(m zz?2g$g=fq3xh)xQ4<4fDyiG8;Jqb*Q4j)AB2WN^5R+J6Q@O1(*sQ66q6haLidHhj& z=#D$+nOPf8rPR~F}+-d@MhaQoLRyl@g3>UKl2%S>dB{8JIANRd+pq?aOYle1-;=- zZwgCQ$hI0w-;RoMN|uwwyt_syjxQ|!y{M`y+1*g#7LZ|;E>aR&@(1v6<0BGXb#})ssXM_8c)t>`MWEA$H&#fR z@9mP@lJm2Ir||1I<%prc1KoJIjg@??uCxuh5ffs#3g3e(f(J|RQ<>jO_YYc28w#2( z&jp1WwJG-)d3AhjGrYz#n$N}$7_M@UFtciVg2$DqkGZHY9+jxvVr&J+oZ9UJweFfq z&)5>o*EG@NP*Z|j?mb>gQtpBOt}u3moyBDZzpk4CMpz`gunJMAVVTo=YQu{J%eLe4 zPDyIby>I2ytovaK0{i4vTAdH1ROLar)evgyx;H zc6-YumhD7hbhluU#@{ZFdbn}vCsE?0&9z!U#N#1Ot(~@?o&%u>&mJQkta%cm!@od# zOnoOM(b(3l9N$Gy_Bzti+?+pe7g>z77V?HLeRytxmL_i9AH0cmA<48P*GcAXvUKem z36qIdWmCQgU`YMwhbRC@;snISL6eQ$8xzphLPu>ts~(vN`Div#XK?yCf&9THY~|iN zva&z?1^Sm~`5y3Mri385P-J`sqr~1f2;K}vU$;Ed3UfqM0x875>@GHrC~T!m*I)G1 zwcC+U#I2=diKHC;v%gEzAW|)!=qi&x8+-HzF6o{Wsc`CFq2}TYrpRLb`iw8HANo#NyqMdeX$?il%y}_C&+gxJZI~a_wMux}a0v_)` z?5#~_wXBmBGzVjk1SM>Xs$NE99WR6o>&!?x$JD9?aL-FSBVXDyts8e^_>~s~@~1Wr z?8!&k!z*BQV`D)-^bWPG3J z4zJ;w>AxqRe3I_F|6aOM`ZyoYDYrF%dz?$3dh`*^jP4$RCCx2qvOZ3Ds=wE*ICZ0) zQ)dUfTQaME>`(rL-t^x0YJBQ*)h@mIT6)iq{uuqcfBC=C(?<`r{Z%*$D3rPi|0UsO zn+GUns>6=s&9v`{dIt+vehnN6Y!o-SmxK%UYCWp)OhXiUqwc-$d(V66Mc?rTdd`|C zRSqAfFMsS~^oVBCW-zYBlKS}g(akUr#U5i*R3t!Ag%fi)t_*J7()looB>zg1ssn%e zQF_h$evn#;3u+S0GujV%jOg&xk?(rn57XDa`W5=-fx9gi#AwJ`y;Gd#>8TNXhk3tf zxE9&QcHAT$R+fLn-cf7A(Zyp)XaMc1aOQCjNe7<63B4t7E5iz%(z(m~Q{f35%kyrye+6fn7U_(aH?GcB^`-uao&(!&ov*pvSxgt}G96M4GpY*;>3 zSzfH1=DIPHtwqM)(Gp&@y4xoJmZkAy1@YzuIKX+KEa0}f$B93{`4W7It{Rpjm%a$oV?1qO=Hv_j-+`+}$VRwz!RDAv}O z*x_%WW;n1iWceb0p7GjkK8WU-npNjr^Rqd4`Uv;(^+@nod~SiE_20qV_sNX~T&azA zNYiGpUApz7CO?$Sd%8U6#1KP`-`kRGP?^C5o*9|pOPeO2M{(_b#N4`F_L1}1xF~It zQVA?EM#_^mHzS#ICrq!CX}iyU|T*U?q+Iu_LK!gLPrHTUjzZc7HX#hSHSnp&QL zNcK^ilt6SP@A(Wqn2bOyr-aQ<%OcIqC$@+?w|t3I;@R3f1JJT>0?+-_pyh)QqPNIO zVBLDFPn><;a(u0XPX4ThbeFkX+zB8=OS^jZshQ^B(=Qh31Aczyst{T0a$_KaI)=bi z26vOuk<+!J1n1<8RRy;|&!yUCcF zcqAX1%*V@xX{Ff_CV|;-#ED%QWlw})FRFQ>sNl<#i^Qv2isB7Budyyonk3JlW0{PX zuzDCXV=mk!2&xIBM1GN4c|Dc|B@r3`H{q|s->jN%jMGst)hU)WmpXw(T>nPGA9aI6 zZDZ-&0LH@e3T1-K$k13*98Ga$Mxn59G*+PmlWac~%4JLXjc@M?I>khuIBecL18LUO zDv62bxb~9G6LTcQj@sNTAhfl4GUDc81^QaJu3JeA)7xrp_Q5O^OGXBGb_>Xeuz=SKaqWKSj&IU<_{b@enL0Z%$v;kO zn}r^^{m#iEeMA)rRLon&GWAnVV~L zOqvU<6nNn3tFNTDyyG3Tv1czmm+i>I57TEq`x*1B8f?EQ%oB!O8mV!CL6bd_DUB?K z6geb{(Q2o49&fIYT0IV(LMeUYjejy}bq-PEw`N@Ii5di(6F2L}-t*6;w}1b8Xk+)n zEKi^*gVk^}+E0u;4aGdbs3128VpOZUa1*>8N+kS@l3~_4;|Mk8-1_MXRui0C*R&07 z-zmLYM~@W$L3mP-9O$gGpGR+f*Z0w`^IiD~UZ)#Aw3h9!pvqX~(wdtCKZa zl%El!%!x0lP*`eBq~>L$Bhay1=IVq*C@b7UFcjEH8Q{AzWPmrPzfql~&Yn{lMh8|; z2+2-Q)xD7@gtv+knQe=fw09Y_$#|N|u2i?gm?pF#)JbZ)js z^Nd;A9BTb2l+p`ci{K6p_;IhO$hM8k+-2Lnx`e+Io=d%AMkw&KtKchXe>j{T|H)XY2KWU+a)({}C7O-$qave{g_k~$A$#{0LL3TBHq2LJx+ zPL8E@EyM@y&uo$Qwo*&lvvx~^Yj-Xgt|hQ0Ez0F?kw!ZAc@1g0yL}anO*}M@w*q-3 zT?NPV%H4w= z8augRV_Is)*NJJL&dW99!tQkj&fRhvD3qoJrnWhQN#RWNY~4L^gw`@-xZD(Ke-q*- z2dqE!@0_=aIC5KeC+^L?+RhnLm)hDI2Vaa>ET^$<5B51u)+Wi=JgO`>-M7KvTUrW` zGUPx`7H-#QyDO735Z-HcSo4XA`nX1@^(uH(2mwK0aS#k;YCt&7KKl%M!^Fs+dHy*B zO-uSb30!z8=n{`S`q*Ri2fz0_8fU7dis1IBv8z}|EBJO)57y6P)0i~^by`okYMUxt zDecj)B>-0fJ=lCAmX$qYdPs&C=ity~%CA~7jM*9~Je5|?#s01uC%YWnEz?3#Y|j)8 z0a+%OO?54w{{H$`Z=uH~%kXK?n%R7sg2v-MyEsp33J4w4#Jqj#Qy*1@%dkvtxUiNx zES`v*p$eP1F^}zURcI|o`u*Sd4LbJ36ZD)kC{cEweK!5@&-^T1df8=aWz>wvS^{fB z%hOcZhr0&FQ(hWxa7K05r3{_AQx<0mWp1pTjeQzJS8)-Sy;J_O6jo1=R8A=!+koo+PwL|kb zkmGAJObAah7D#F+0UCaZAw0{ghF-9zrWCO2OqkaGl&pA#p=5C7ztJSmRIW5(u$&B9 z;%rxGd=_wVOGwC}tnfX#ESA5)3s9+|5PYvIlqDQVW1>N~3S0R%M)Ivn8)z0b z`X)S@92=|#qNo*LobQ1pR-P-NgL&Ps&d#H;Y1}B7W58k5wpRSG9lVT}p=vOVL>!#5 zybHg&Kt79I1Ll<4+ziO&0a~r)<7BM67DkJQCPNGZn6E{FM^WA`+>Be;geCF@8DF7e z(Q93sfbn~STep1m&zx{i0HegGxc=0%#~qXD#Id+l3hx?? zu)50{V?*{X+jehB#4OxUnZoKpif|KhByMAHwX=@Fi8C~7kX=k*s)5u@VceF&ENV!m zL#{-t9b4hC9;!hjj8XdwMj+-fY5rU|1<~+<=`(9i@__lTH6FsAt#fRLbp%M)iFLYX zfM=U~-*vnIH{vDI+*g8djs`ZJR#xq+HkJ}i;PyuT&e?`p#xgf6@ ztd?r29jVOtKoRHUL`S}BOk9Q1z=hlL`nU*kI_2tFNM0edl*JCXr(naqw~HCq7SNIt}P5-TIl&(*5_|PZY`i za;DXS%;jYB;3Yq>4u&3$iB|`<1S2_Xykw_V_dk;cuvzdt?@ho1k;mfE(&L*eED6{@ zCAMxm$e-KJX+Iry$dzjp^CSEHo^RbtxBl6uPG#a~RY*RSR_LxTeTlw$`|bL@!Uf&X zp>h&7o4OxQZeQdwg}%k*^Nz25jlOcz7wF^|^lwAMdhWjPLi(W}|4BOgdFO-`LuyNx zSSK*RD32vVuUWmu$f7^c5DOXgZS^L2Ly)a!-W5R)0G}i96Z;%#ZXc$GR@oGo(;wgU zrthRHU;A3aE6>S%**hM;>n{4_Cq5biq?LR#s}Bzpd(ZK2lsqhCVIz)%6D_p0aAudC zRM=?vMZuX;5P>m z@;y<&b1DDW3^qQ0nPXq3RZfm*V$otk(oZ*8@|w|2NL za4k2P)ITRdT*8uVyB9SE(=%wN>)MTvHuXVh{jl12LJSuN?j@Z#E?)3|G zz(bN1iW~B>NDo+JC}AkhNU>pHwWc^mF8(;4y)WGy_@~51X74wW8nL^?aC?1pLo4|# zRFhr8^}Ld$^0yeCD97SrPxQ|O4I4X>X?QPV@7sMPxum+lZL!^m;mXkCmdN5;6~l7Is4~qV zDZh6vyvO@Y;LhHn!*N*YHiA{=%#~W!nnTIL+G&w z$KLYNHW{=V$U|W36c6!;hL1}7U9HtqzyIj>ewVf%evD3X;?~Y(f9p=qVLJB6WAul= z^ILFD^z6SB_znn=haxCst|hIG1ZCi{oGZzIW4J zDFx)7BxBk?zNeCM6*3BiA;lB^rqs8lC~P!>)70xa7kE77r5;iriMr+4y=xa;|GGEO zUw;3OwRrMp#Dbh;o4PU{Jw~6p@sH{8#~*9^9ecnkD;2nVTEE@1!_DeZrU`TD8YQ>9 z7FdruoDO_#^>)n?b>|(oX|lnSbJ0G{!FmHtJoC~^=zV|l=jf6bUJBd{OB+Ff0Oh>9 z$&RXwMj50K21YQ>9uDGV;>Hke%rJm=gX!0Br=aP++}tt#4c~A$2HBiKV3_vpYhU+z zdgqV6pLU(Gmrk%@gAQlG_QV4A9MO?(j&XZQci!}QI(p<7Wg&XypeFFedl&6ca2b-Q zQ<|XM>JP6!THmQ#+l`DYd_$zSabcYH45+=_Q=~v~CpW>nh9OM5CyX0~$MBf& z>3llsrF+-k{X0=%#gI2q&0Un4;?stiGZSTZ+PDTq?5|LY^u^*yut4-phS4v+Y zYqz&BO0H|U{FTUQYqEB0(lN0}-$-VWUKbzjGNDv<%7V1CEgULa?r$dg;7wE4ka$cC zz(BjSomM*gzTd{2UX^YIYJJ*uVO-%P6{NVbRBhi@u8Fk1~ z3-@kuC74;Hc zgvH;)$eitQ9&Vun5!Ec(PCz_vgsB(AoSCRWXMj{Qa&%-)0f0QTu6Q{ab?ILCGt+n+ zp@PV(Ymgw$!4Xayum3BA+T~zEJSkIiH4Fs3j>#)+Y#gpd9+N}iVyuEqNl1$+Q93*# zQ#M*7W^lW&TQf(lv$2KH!f6e-T^Ck`+{)}-M9BroUk7G-EG zN+eM5K~`ny9u^uO1k1BqHoOLzv@sT#IspvYPK);e6PDHPsm+xDnZdAg`2_Xvn0|Zx zYhOp3-}M$S)FYi%I}y(0{>vSo`5fJH^OqagIPqq;{1b3?Q^I)mR&BLH*5~9^-~u@& z$-M!({b4WE)l&EuD?du&OrLeIW7K0%ci)Qdby#m92?j7TgVgGPch`tTW$@aZ13mos z6ZD(E_N#Q{$tQQ1uV>nf`8#&-Df-xlf1hss%9m|o3&K6n3MYoA$7Kdv6sD$*>b4ZE0NW}~Ww+I-PRD7^Zo9nVXp z;XB)ljZAl#EzYfM3y1aT|Lb1)YWlzZ?9b8po15M5&u%lqaNiww&=)`ZY1)=hgT-JW zIE!|aq-23n)^vhh%slcAc>KIq)L}|7!|@m!np!7axTy5_1os~n{$zWbp38RC^{=P* z{mg$t&%f{mA)K)*rJ&pl&laFi+XE%of<(Tcn1)bAu+9|^oiOG-gu&1|m&kJ6YT*L^ z1p)-~U;MoTy=KDKKk>K!HtoIGYmJ{o>*&S|$g)6vTmie#!*||EpPK|}|2scFJiPMb z19w!K3))s%^aKE(@>fKODv!wp52JjH25fArMxCalqp0+1x`=q)@Qs8pPdqnoSu|#C(JD#lOCgCNOhjs06;m z`>HqwU#~OP;p~MKQbNW2qj`Xzqxc9 z&&qxOd=F8@JBZeWh3FZ#7zbQ}COdsbX|n8Ps9tbv<4%A?oCI-V_nf2VZ9+{6aXg5Y zIO&y8*U19CIel#6&uo-j+r*&hM$Jhs6N9JAX(2?fYqunUT5zsdqixb!?T0PgcilAQSNg1ocN+DmVI*SivAKO;1@+I-st2AIAaK1_e| zq2Ha94co|cY>Ck{9(rNXZTel~raaEca|Mi+&|~5CjHzka<&zUb1ns!RCp+^bFlPHh zON5ZS@ddw3WyVz~!v{vLR$e_MLCm^?5eJ6PaRk{NYvv2+Q^MCkadw=q$=)xCW-aorMi*u8J{41aT9Nlx@y{ zwz9S(3q31JmBdIfdyM1ic~@XNLoCnz>Q}!?cisFYO!{*G8~U1ou6q6J=_h~gXKC-5 zd&pJIE&y4KH`rq*l?x~VhNRph<4KBp9U+g1kwM38ODkOknjvMd7&%YOdhNnjvwExL zdtrT0oGy7yrhT>fk{8oo`jPk1aKQ!STu@qs^<$k0wgv~>4tEI-0lLtt<(d@eKmH$o zn~oegf``=|UT4V~$C^qux~p&qHO{+LwfK)-Mzc0o_zEG*c?I%J=@3M19er3>6NGQY zGGjlvrLxR~{{r60E1>v(Xo~sLJ>QeQdN`n!GPQg<5)LE@!!|}sHdwaBAOp{`0UT|y zP@~o_mxB!ttII!8a{XrtfwnXrnX1!})YnqL=M;^d9&0NZR@0o1?tP(u5Akd>1F-Tw zn)+7Czly?o97DL|6iY6AZuK&hwJA)Thv$G2<2gN%p&V8DaAkmy$IJ~pSSPD7t7DgJ zD5mhJuxDYt6c1PGs5bl9YFMg6e(-mP%X*s|PihwlL%HQCu)l{8m>Je}&2bZ1+SoxV z;M$wVMeo!O;P9MM*%~dLzu8!sy@Dn5_NMe*K6B>o9bf1IwHR4lPRt3%{8NNwPk61a z+&WYMF7Sffhfre=QP!l{&w!3SBM#Iz1A0W1KRaQXW--$HNegFtY_zz2ZxO9z?cS+n zi!?HKi&o=$I)1wvrLUyL!Y5(+05uIu4y>Oyjgf}L+hxTqjt@CDfMZQ_-*pqQZLC~) zzL2|CTM`)EOqo04_FQ(xYN-Ya{ab4wj*LDu0SY3!AvsvWJ$qvDnBWms!~t%oAjsHE! z3cZDzppV>RMo;yAjzkwt28zWX*R1Ld?ipD*V!yHlF~_)jDHsL}2R)}mq;Rdf(&QGJ z#q?Z{{dNUPcG-0%kkT030iJ!b9RIa}noC_VD0AOUuSKg2m8{Ru2p)y&Jd`$Sc^&{a zl_Dm5Npa0k8k1d6{zG8}?(?yriMfsJq6N$X;-yvbfw0in}ftZoG zR%!gDoLCqqJ}zny;R@GGV=CZQFYnQRh}?%VT-rK|h!JyJ8!$|o<(0#0p<_S;FYPdN zgp@S5a|%y{VL66}!QrP5(ZBoUU!hO@`wtKwJxm5AsNvonOr5aIS#b8|mPFvxX$+5k z`BwVHfA&AoBM&_Z=~u=lxL~(3IfJ+XQkxT1@GuxL0*(Y;X;A}={0)u=iZO_bHjly! zefjIR($_xzacU-uyy2eZwtEk~|L^>5ddEB8NoSsUj(U=4K8R{%x+l+{HgQ<_$2r%K*7}41E2ULeg3A;#NM_9o5Sh>`dmDJ2yzv0!E}gMU4ff1>Z3(Q za)ijZ(5q-$vTlpQd4qvd8GJnEk2r9lDOzDD@w)N)3Rr11N$VJbxRQAF7N|*Z2EC~i z!ZW#$$Os5Q{uzScX#9Z9l_>y>e`6#QE!*~7uLbS>ai&F;=e`yNVRXhQfMW}$7p8u7|ak*gU2o{0c*9LssB#nI;L;{b3ly0*;|!8-o;{tC7G&h*QF`$ z$w`|TLYO=(tHAI>$&Gtxp)U-tQ2Bpp03t%PiuD2G3xsJ|6%-YQJvN+tj~Q)bYWQnd zfJgGhEVe@Cso8|)0rMS{3Ggy#g7*qp!|n30f*ayPm=wnhJKSeMQZshXgz3l`H3`p~ zWU|r$r-u~B}j8uIJUvg{&~Q*bT|a)ecTd|?Xv;9Yj>IM^UU3@ zad3b56Ex5GcH=MoJB^K&1-fb7g(=BcE`PPINosegCB5R#Fl&vyawG=A4o14Ue~@jY z;+Cl9{_0H)ezj@!EG0bz*MbCqBfEmnfQm8c86?1O);yu=xT5?Al9) zzqrpIG-WdImUCxf_oO%*W0*IdzA+$h{)p8HYh`5Wj^{YU8r~>2y2oZjW9DQ@& z#HtnqWuyq#tDrE(?zTjDt`PA!IuHz9bFiQaWD6C-86FBY`&zsT@k|`9{|u|Vjv~ij zm*xgcNHoSsN~ACig^Oed7Z+qM*$KZ4Dz2dfG)FQ|FUa9wry_9XfbKZpkt4y zr2t4}Sc0KZ?rXyijgeb~BFA1(tpte+z9rL(Q=b=S*w!IF_ClVc33J;MeE<3f|2=*D zKl~;gd-@RNcQ(4+!j8gJ=8O^KXk3RfiI`rtn^qjY;KfBL6kAC2<{WN{wyT6~#I{PeJ z=F#R&8AK7TD-;L7(XOC7{)!LXd;}Ao5&<@?gWv&EcD?m&-$g(6^FL1)z4&sX(}1bd zYWY3WzWdCFKST!)AM7rw&O*vQTxti7P^tk^hl7XC8GEP-Nbbm?eS_RTeb%yjTH{@lK)Eq}PRI0& zar(PX%ChS5(o#)D==uU4f&yEbF?*N7*C_9kzDYj?-s)h7!rnrw4d^l~f%^wkJ{g)) zBGzyOuk75d8!dFbK;vA=Y**MGR?k4dJryJrW35ENYH5MjTrrEZ2>oKEUW}u9eR=*C z)3>X{)t7;hwj$Y5ZE0gC7FOW+Am%g_xm9*^$v z)S(bbp?#5O$GtNAdNO&T+b*sctxyiSm7UuDY5MgZhs~3XMOolUcs@X>hBURT-Cq7m zT2Aa78M`4+-#U+xo|nH8AzG}^^0`i+-qF2#-+CgLvUNv;B|7*iJylK%krz76rrNib zGdwyLfNwvvb0S2`U`&8!b?uh6m5;5KpiBhn*-3UTj{4)sihBsegs=4C)xW;x0v+F|;&oB+qAw%)%697N{XQ zGL3B)6RkfFF$!l494{IYrI^}z5{NagZ%g5e?B{Dg&Lk_4+vAn_gTc>2mh`x`ntm*R6A&}E8itwN`fZ7`To78{Ix7(rA|sNds1ug2 z3lkFF8Pxc@A_>xLxbJ@N57YPk^}jw@mloZ)p8+a6Zd)EaL?8J-K0qJ(o!_Qo$BwEn zX_@gkb<7z9o6Erk(T?dez-sVRR{2Q>^OAH(#h>4p=%ovh)PZ|CLH)_Ku(CtLEe;OU zJq-*`F&8=ZayZl9Z+rXO=zD+oN9d9lznBI|LRIG6ZCM>_a=EG7OFI1I<8oN>MB9Q8or{h!(fIst{Abv{x)E=QikLqGB( z^sb-!NwxYtTky4GW0QDpzxhk_8wrxoMz?8+8Ae|hVLj5n;|i@{gwK0 z?s@0a5C6#f==JaX%e3dLv-<~jI7sHP(zDTo0lxjFo9Ng6)&ENOf9qZ{`m*}2ZUhP3 zZ2Po7*2T9voUA1M!E;J5_IRFy{q*J1OD>_G{RjVmUii|N(X-!t(%Tvxe&TWZ_y>QT zZv4|5>50dmY|8tR&<`~f9*H_<^vK=XJNL$EE*7P>{a^k|I&|bvTSTX;EB8_G zJF)KbH(=b#-PD%H!hb7%6Vcjk=cK1z;f6DhOlFbP25%4>3U~LIt2I&QF_Yit%jE(q z&-Mo;m|oLAr^j~VprTj4+bzo-4$02|&oXf7Y1zUVP*~|Z-pXmcZ8$UBCz!|F)p;7tv`3?eVp$<`Ies0N!aHid}c7cJUjo59Bl?IjqsTLJd3_UW_)@ zEVsS>@HJ<99ci&hyJcGPL`jHi_R>AzUp6;YhH@`oaqCtgI=gp!+j~CG4V@YzEiK1M z-$3ThEmfN&;j}a{u6pjQ?6tf#d!Tqb+YH%&MW%E&@VR`t+D^;G`_%8ieVO1$8gZ{9 zt*~P0#W@C$JG`GHt6CfUEtB>6gST=w8S8{-*HB0k*X|o{;hU~Me{fAkPCC}Pc#BY- zvc}z>v?St+Ad8;^ceKsw;FwpXNw7ztE8rkPgR~DFi%2JdR{)2z)EdKd0nk=)f=x@i#Ye(F^O2 zC`;)&ou3m-mt3a$CjjgLN17m=SEG&5;8hpB zdsWwWeL?N+v%xc-TGrztrY??Ot{Z*19Nwty86`}?G!Ya=s|m!;pBVdp{6GFP8pOik z7k<0rqi5|~U;Qfmn}7OG>Aw5#x3y%zKU!W-ZxZqlS-LaM=F-h^W4sDwW|WBNcuq!^ zh1XmNb@aYOiK$tE{gZ6&O}+wy=<)nvZb6Vk*5@7H_x<$BH@=ZBzWj0;&N#z+yzWhQ z(|6neEB@?x+9wEB}^m{_`)=ip>GYn*@BJ2i;9vYN^w}>=3TIlx z@0{_;{PqObh6bfA-&PO-$mRmHs~` zZL+xD_W94#AN+@ZPhbD~*VH-uYpSf#H!|5A3@Es~Dqs!ZOp{3lI>>UCCWHP+%gH=39xpzSq9 z^@)1g`R7iMW_|tYW^>?OwM1{RG0YR#?%x{1GQCAjkd~%@Lx`SFTyCP2KrQKcfclCM z?N;feA(;!)qEXp6_=KL5?A@ExCmZwD3DTE6dC)eFQJWgOscpg#IOP{jI^ogKO`~=H z=f0rxCaz-Di99Da4*wU=&%$2=h{mAj?ApOZ16RyjGw!7KNgsfW)Q zu_%qH;`H3b967F9HhQZ#${#E&{L>kd>WZkg(VIY@-`5YN-^H$w&^cQeQ|QRmW1F&7 zbXeWT-seia%VHxn9fczY=H{aS*GkS99b;mm9MauCmtx;Uy!c?Bf>(a}Cx43G^y5EH z&w5MU{_TJMi}d>+`mnk@>%JU@p72*rd(^oK18!ZmVv&Ra1DFbS4Y%I9Fn6tjxI@5K zR^(&>pl+DU_u%gy2Rfekw3CbX+VdN%Q6Z9l0i5CVy_yCcc%5srjh51gm5fI$QWsu$ zA)Wt%OX%gVxQ<@)s#ns*mt97~dFK*IX(w@med?*nlJ+Eh`Ac7+FMR$pboX7~q=z4T zNL?fu8vTs0qFyHvJQ~(`-jveeqUIq(Yp-)*x%~jZ)bH)L7r*!l`bYolpEV)r|D<;8 z$tUT)Z+?@$@X?RaZ~wvXVTOu^21u`^ypZFM5;!jHU2ZIGCFE$9FafsE5<)`AD_-b|Z{qLi-Qo-r5S*P4Y>2Svv{+#~!cYlZOzWW|1 zhgrjCgy0UYy^nRQ$i+ad(`bJYc&2)EuBM;7rXJV>q;q|t|917p%t&W z&Z54i71yGOvTZDh&!FVp($J?1?M4o5K;q$`3AoZ;8`4~Ld$7*BBQ#HQtklS3P!d1n zUs&uF11!wSTZ8Esg4nQ0v=#BlI+fTIqsK`ndQ)oPumNu1K}wvbtKJvj z)KIJ-5ysG9Sk`Gk9-~l*P+5xuFMh)tVlJD9qs@XSqleP-sBJ2+Z$^Wy6+xOT*|Nq* zr^-eW{yML824BFn$nL zbe$3?dhAQ0rL-}zy?bMWG?W|1?v?HAH&fQFUafCcmT7wf{q*W>Yh#buGd2d zW*>jnpyhe;iOH=r!rNa+&H9uC^p!`jA?v=(7OPJb^QyJUlDif3l=}hiz@&yEBoRQ0 zXLyH-C9NA1Kui;J-Ai9if9>!8Lptx0OXxXi)2p96a3}rO|M&k~lRRl}&}q{Nl~wHN zTfNk{R)xNTFayqzDBp|=D+Bg|?<>NVajOyB_*@Wo;%~W1JdmR7C@}9Ne5}15agnx5 zwRd6V&^|4b$nFf#U>-8cq-p%hqTffrPkZ<5r6WfVrO*LmE}Qx#I%XfjNO0N*)Z@ef z_^de0C>|;V{qOk!y6(+yg$0`XcR!b7#hO2O^DXq>{Wt%}@=xTlXD1M*)nCK= zJCsCPN`kEh)5ldp6~M1Ew6k{?yyN*7TtI*Q=YO8AdE*;36oH&kewJL`TL)+wYX{zjla%im07VjuJAL1^u|elt za4x<2Rj;A%{r-2;1(NtITMXCr>r`54y-38l{Z{;MIXukBaz%XWi(jPw>7V?+=;-02 zL1>)5xJR1H4^gJHFcPf>1CsjTuWvAr-J5f1d%I;ud)Y!^I^3bZRb2~(u@RJXu;7J~ z^UM^N37VVmFqEVYsc`3|;Mp=yBdJ;=12^VOJ*yL~52bC8@?Oav!Z9%QqBaF_j2a1J zW9-rB!^*q7b7V<3e>^6}yCms|GRcdI62;BwC1evb=KXEw0iWX_=dkF_+3_hV?VL(p>-8wyz7oj`;E5wz8CwYtXZk__L*lYfKrfnWyvGp<0vW4;UriQmAwZRz?Q~uq zr6k|Axs@xoY#sNcBH4{F3zV3~uDR=TMu^TEWZQ1Ivr`%$bxRD_FEETrL)`TVb6(dd z3flV{@ttd{n*zbkk0pT`*3=0t^0n-Vz z3jqp~%TQiZH6v`3xte|E+u}uG-OpMYT zSszUySIvT68b`w(H(6S!L*df7D`p)Ho<=S(8WTJq{L*nHa0IpR5bRbO!HEy}EX19a z(S3e=4?gd#=h1)mU;USK?e(u|9VvMSK1a=8Cv$gfNl!oi_+-t$iyoSe17G_(ec|RW zPD0bus7QeExS}rjghIP_@1kq2xtd-!Sr4Co)s=L`=1b`LmtIO6XYTFrb;QrbP@lUo zKXKpv^sj&6f2Ldh{AR54Nb9V|-a2LH0yIo`Uf^@5M?N}*RVu-nSj$&X<82+S119G^ zD2QEr`O98TKlA_ihjfnDN)ETlXR$e+EJM#@P5nIl*rRmcUH8y8zi{)!KHWmM-Eq4n z$KoV{MR-n9Xe!n*O*csZ(f}MI^Lg>}FQV%wru~I4zm6`y@=ALCWiOl*FT0W@El-#e z2BK5uGy~Sxoh!6rZNg$ba`)Zz!GH13=_|M10$~U+;b@2&Jj~yx6)12`ctmsm`q&-V zC+-!*^E@fpwglo>+!BoIg7znx?rQ*f)A|YTpt5Ldq}LD0?&>6uwyp2g5(9`)AF z8KF&Rc#AN{^9&que@WqZzPR1o+qZ?RRq%`iMe$&TWYn`1it=I!zoZ&~^Q8svp{OcR z!uVwKZWfdQ{g&~o@rt1i2OU%lg~}U?Is<+Cr$faTf5#hiu!f(S>a=*i5JG%69zfwi{JZ+ z5{*flmB8}vYfE6gV2^D*`0Zz{$-I#GrhiE>((-2n-9w=MoWw}Suy{=(uL4Hb&Rbnz zM!SDfj`KbbCTCN(MP&oDjBG9sTscZH;P6S9=%^oFS zAscXEIPKoZSHnHu1!l{?X6SH*Y@p3~QBxN_@O-Ak_{0Nk&L|Djg!$6?5PdCbZt57U znp}pdC#EZIeTf0v=^8y(+FDRa_J`vLFx;l4XBe1>)9lydFpVqEOv(*=Tu_nryWJej zP5+!kpk4gn+4ECVNY0x0G_M&BeZE~I?s{}xpA}|^bj=1Tu<~1maOp3xrL6% z9D&Ctn4k8ql*5v3de#|d(u-bvIbCfu^Xp7iHRGNDO^Ju?NO@^HjN~N?7XWd{61=S1>H!Tl(q-qLZ>ptLO7p^Kh0#)?3p+_R;FS zp1VsLa7^3(&GYnhgz3{V@2nLl$jV=ZRXP~<^j(^|b3FfyYwAe5Fddo> zu|$goL_Y88Csl>$iI8ld2Aa3c?j1>pe*PppOTy5*r{iLpjoZiN%p~^zV6njq2l;AP zpb>stp9MxdDqMxhktxSUYl0*#_Go{vI|4;4Ojz;_@wWVd8-}l}heC~wksU3Ra zN&4g;eT442|3P%Gl~J0zpLyvWlaYgJ#Xj-PTpT{~-e)lBHBXlP-k362SEc+ICk0mk zvb3ScvC&NMKBa~lmhMVxTPMMqm)PrI)aGCTCd4wX6J;C+%B{~TaHY2H#z4sjrZ}!T zL&A<)6=JJ$F*RQv`?+cy=mvU3!Q5I`TI^ew^?3+~H;7G(9{yn&`N9{!Kv(?6Z_p3^ z^iNx?cV6pLo#Rt(i4*P`>w1-q1?`%I;q%Y%*woAQw-?duw&?1*XAS9s^!szIESO&R z=b!up{o#i{Oou0>K#Rd&Z96K6m^~Uo>2QDmr;&m72#>o_H+FbT8++{S(K^Y_WE<;j z@0fo3=!gH9UUJ11^yzZw=;+a- zT9M$`v16JwdheuU*|U2OEhN@i5(bJ86%tT-F7I$Id7+%v_Bbh+f${Oc!pEgTdsAeuV9d-r%@j5ai>-Q(79vmQ zYjYrTwVdz;;-59Ex|I7IK_e@9=m>|az53DU+FSSB1E#1^&4xCh_AR$Hgw;uP*2S#) z2AcNYI-MeO2?5$%_yPOi^W0Kx^WFq`0(~#&ua0;UqUQp%w0W|zjai(u$WzPPZdYOY z*xVv*nYnoqqU}#ISuKp9Ui#{?`oRxe7->H!eTro|yLNkXp?U{vw6yDQ`a0iq{k7$K zPc$YiW$s>Uk>1?Y80n1^A1!Ss_wMn5$M~jK^C25J!8K-s+)bhyejsP0Rd__K@SvN> zHioS6{o>l~mOX5cI`lh*5sNdZTM38I7I+a~#&wDmWa}J}E65XzIisnHOvGOfU{%=> zs%8|lzLd;1bF(XYtH#M1V~4t|mW`Q!T#S$;<$jk8C!P%?zm`V|WkRwFcE8()x}36U zI?Y?4UAL0}x)KMC7WtrN9qRseI;<0Ma$71~x3PGI+a4-w-Z$@i3abF&o%K&?=cumw z)#tv#rHB#%Tv-FePY#|%#o#5f&ASI-iqT4tL9`Qdo2l+>40#;g@6$W4y6PqLcmDA{ zI%Be?J?l(8;OiSV-9*3e|M@3$@ZiCKq39$SGmp0l2CAfSBrU>>R?lBZE2GXtzPmDM zPs#UW0aN7fwV0}a=W1)Hb;g}>0<8|$dCKveAm+q73Mt`z0i@-L^F*n&7#7qs)nK5= zaTaN;WelCDQJ^)ck&QVhFjveU&w(h(`BPKwC$~AuAqQz$o##0B zyywvm|LBj=cfaR7D2YWUTHwEEr`R63{Z9IS@Bhd2$Rm#dX639BS^d3DHSieCndMcw z5SGU^AZ_lTri{(j>WX+qcl%dYa5k@p6<|#uAkVw(g_qHf{p{bMm%Zst;o`aW<NO10lyYPVnL3Htmv)I8beE=t{}5UE2GccS*ytq+DZ+y~GF;T~oX}Q05?-@daZm@U%*J-uvQVjM^Pc zTyfW;0vB&?yomo>GLZ()wQ76>JyeT&HE$S?FQ2X*H`uCpDQpc!b3)TA1?I;FU+7D? z2Ven|a;i%>*2&3mOg=$wDCkP&!%H_89s{ke-CSeND9t;^Dehp!r^0?8^nGu*cjv6# z(z>K$lLh*K8zVQHYq!{>Z^!j&pMLOY4Z|kdN(n5lBkd)yZom&a3Don1V_P_{-}iMa z=~}roDOv0i-`l5WkuG$ajiIjfKy3xHtlgTwWov)Y0m{$&sV{*wZzpo?UK1mI>qRsi zhTy#7-ksv4S2A{|wn^r$u<5m<*EAQVKYj6|2SXTA3^g{(7=@7C+>tB^7_SOXg?f1l$Uke6Pt>~N^|Q~if@F3O7~*e`G3;qKKohn2%>CBjydpqIDaYW^sw?0_G=N_Y;jg230dNDse_{dB}D?);+9Q)_P*{IZZ6vqKTU+#PlLfo(zDY1dfPYWop&Dn+~5EE z^s?{x4)5Gwz{N9dc@BN;r{j*BK1;v;Z~hhCbN9UypEF_&ONT2;Z5CK|-07irsg;tj z9GD`9v#3v;XjgTijWXUXj_ljDE=<7!Js{jECk>1EU^a%%;+k=x3znFNa1a1@xp18U zrQj(D)t)KZPQ#ON!Rx^hwRq>^Xg)9B1w0&uCo@i_ff8KK4@kz`p zUa|J~Y>jpyx@)sUV_Arvw@rc&jlUgeR0D&S6OJhiR*RWbCUb!};K7ojcpyK*T$I^# zVy&NGK<#gHV|CsaGaHD|-AC1}nUS$^fE5&scOJYvOJam-&2GK6Y1B&x$U;*xsFuBk zjANE^i!IZB2$E7)>H!-PV~D;hF#)DgflSPbb{BAEzb%~VL1a%IIb6`KXxT#7XFx;(e^{goSq99WkIB}5gj zXDoz4OLNFPjnQxMXwXofp&&~nmTOuigGNeZQ8Zo0xd<5UC4RBC0XGatxf%8+V7zrDTYa zV>F^yj38Uhl&XS)?~g%U+p4C)s>|(ZX_vb8n(b5fu_wG?M)4Otm{2Eyc?JM3j zxMn_0HZLrWSQI6U(npm7$LPMOKr8|WT9(UTg#q{SeMI#EIn)gw%;2cctERvklQjqo zfaY;P7FU)m+Y387FA=~F<9qC3>Dy?}Rv~{`_3*!2_zU(D;EcTt2?%QN5Zst4XC4Qi zS2J&UG9A9;8XPbzx5yK)<63cen=ZWD;dl2N!nkuetwQT{uq7WSAUi6nk;u5&sEQ`=>#n46+(C9e;!X=Pt>e4wVNQ4^p>k}8VhT{u0(~@t_EltY9t?3e&9gPDS4FBrZ6hW>wIu=K5d|BWhxnJpQHQ1c+v(P;`$~Xr8arAC*GX#Uq z$Re#dKUB9VmQ7Q>FAFNM6m$0#7^+Zw78m4&?-O_G(eX5VlH?sj3el28m@yW3k}d3= z67k}Ds9^pwy$)Vt@0%wVttyVuTn2Iv-OE!_<^!|vSZ^Y0b@JAl@>fz} z$-jpXeFK>Q?d7j-nSDxI=dJvH$dC}COLjlYQz{d+f4^d5nS-tA`<8f36S>@QS{VA7 zp!Ilpc8d+hY31s4UTb*m!w>sg=5A^8tlcNb*nQkO($aPirp3KmPaHT9zis-LS)ws% zIoX)Fc7OJje251FQW^i~o39$e)p$J`h%@3>je{|rS~Hf-B3&T7=Iq$PkUK(@bGrt( zQ0qmu0hlN&GIi4}+jQxZHavEvK&Z@uDMeOSr#-|JF|Ml1(lLQpq{IlElqvSOF~+KY zt8m=cxD9wIP8KD!PN_tTyIIUPu7|3 zzh#}oSiMf-XaZ5&%RYYwmjk!qD!lu;xp2a(iQQt%0|8dy4jgLdHc#_*&RJ*D-}`U> zTYBMjFQeW!^O>Nmb{rXp4B$N0do_~x<1Ka<(x)d>ZiD5 z6*m>DAX?)V#U04LqA^)x4H$4?ZwRR&CfS%UwYnI5D9I=TXrSr%BanHhD|^7Ldd5qd zHNY$mdIpToeBWS9;tN3j!e{T+hCP*HA&`sL#tzJq}@KB>X(N?QR3xnU8{ za)mpzymnHVZM)f)vaNr>Gk)XL75y0sIAOLfzw9#l(VzY)dexi0lNP&oHxM{6s``tT z+caNKKl&*BZ@=(A(-&^~yw=4gl$kMH#?1=^OkkALNpszKiVy`|bjL7h>Xe;mrN6&0 zC)5ttRWk1nRq#@yR}0Gcyon8Fjl&C|l$3q>k{4Y;KmK!ngI@BgS56A)4f+cO%eSi) zy65v>pkMjLe?i}R=w8tO>2%$grhlnd@M2+WI%7#ip*e_BQ3O->(I#`DHFUs@4*}j& z`d9I%XFG;K>*f92Eoi`X0kk|rda$snWtvOk-(UeAOc+$9B)r_5-VBJJ4Qq1&AC_@; z@|GJs5gHLZmrU_anJ?*ZZ!zWMkh-hNB`?(op)fi{8Ohp?C|>NTW3;UQrQu_>{qHK4 z&2eGMstQI!9=%vLV~*0`g$uAqV=ixC3PrBv;laFuj)s+*h~_cjI^SSa2aK7e#H-Jb zZupj?!*KsX%@oQTOmtvl-0&Z#zVFh$v6?YMCLEKNEzu$ucIB`1A0`OH+9Z3o<7t^AkCC3^-c|X)mg_WJ zyHDF+lF{(pPR=dSUI5#HSN_^hD44xp|ImrZb);pYJdZi8bI=ODVBsSj$)sJb4O@#M;vZ6ccj$C8xciKS_}-@T|3Ne%K9&eT`Z2n z2;m6AC#yTuKoNj1mKq(4i^>>s7GV9CJO}Ql>p-B&@-bAb>{(7??h#jAN>6u1FxsB_ zur$ql5E@*NU2CoEVxbiUL`+B0j>9_o%GbP(UU==bM4fbU+^v0@4bPs4?bmL;neMpr zjx+~k5TZm=i04v0PRy!oR^;{!xZrU+SEqSZ?+`E!P5a#lzU>8r1Y~tlm;6E3RsLJ5 zg~ImTsEU=vM7$THn;9BlA+i(CT1L-C;DuJU4!4M<9jQ=TNe>guV`I5+itp~m)`fGZ zRX9zlbA1UOJirBNeoAoyz_9drNq{ zb8`K5%aJ_y?r(jIKJY8QO5ga>m)0|+f6-3drulwi5~4r&um25w;qy1qcHK5hADb0V zvXMvV39i>wfF}kabFO-dL=rl{Gm5Y3ry*6fc-i$#k=zG9t85M%x*x;}J`PL!zK}z{ z+uoOF2(v%px}{tz-v_g-jSG0N6xq2;y8Z4u={NrOU!(hOzmsSuBg0>`lWXk%Fg<*MqhwceWrSAV}ozz=E75;*wH6{6k>PAg!wSZ8i@U<|Sr?k{@tq5tr|ATu1 zDGZ8L+Ml=7XO)fV8g-Gb`aH897rWC8xn`_Z3#ok?E{64!jrVY+KPY`D>==TNe~{uO z!_&%ZmS*|2Y~39Ene#FRucS$`RAH-(EBG*H1F{q#xNK3pCkX$tzB}qhToKlU!9@Xg zgC`l$w@@k#cAr|9VTBKWX}M;E2i_9+nZ#OeBDV}-RoC|H-P#l~-wZi;CDMd_H0 zfTa?AhwycSDHvenG0!P#^e4tU;@n`MF`BhllYQ|v=*q%quv|Oh@EGUp1(}qF;0BC` zA7OnD(#P;%6NAq&{jHA4NHa9DX%=PfER@(BnFzyLbM9dmK#h3 z=k5Pd+_2(prd$%b)KjFofmUomJ-M>cfIcM+nmzkX)^%+}~zQW>mumgp`0CkfH} z8iI9vu>~R8<&M<$Lq-L^ep*7bw9|I&#@90Yp?#N*`Jm*yrXJsKY034w{IJii-I~3? zH4i&AO!V9uEsJtErB>HAb186(v}#Z`H{-m!D{Q7~vs-s)XC5%XK`y@len-Bc0x!mN zx%Mrzh5&A5@`mP$)-iU@bINxvA?$@Kb+}?q+f_DIH3YR(SIdbUOnq5G*jTg+imiHk>ygK4a#BEHU@;)P-5PGW}N?xajEsMEOkEJw0VKH>$%(0wJ za3Ztrv!u+dp!-Jeyy4AHn zahgI3YFZ1TMx6S|k8!PY@9qTb979WKjr_jpzq8Ldo8Ivw@6&9vc1@vYyB&P|ar(&b z{vJK?_(2VKs7Ut0;@+$-^)9$>D90^->vc(yGJ?!&lD;G}2CPwnyT$@FIMMs;vnoNa zK`2!Z;X-cgq1x|N-@C=Wk4}Jne#t!`*kGw}c*1CQ*mC7IUZz`3keD7C@GjY{aoWilE?BFq;@q`o#7&DA5%)~U9%V20EE@~S|h)-7Q z(rPtAm)51f_t`6Ful4(_wf1w)`*rKX*i6a0`+VoT=RD7T_FjAKb>C~Pv;YPwjiU(s zEJ-(dd0{>bFHga-;D3R!?RQ<_o>yq0Nfc)G%3IPGGc+7Lr1Hs+epvqM_kEvy?xP=f zug5*H;4k0ysZV@D{_YR_fc)&w{ER$z=T7oP2)BM-5&TD>I2aDNvcNsXwb$UUV|mfQ zO$B86U0n%MuK^{LC>z5`S#zhka?g-n-s1|C_c6>MiK81c3gh57_QZStiTu_7$A2d8 z{^`f$_r(_YWz@#eaQnI6{%7(7fBF05y&w31(c1{EM|iz|_S_OUjpMv$fEOVQd4myp zYc8{pZfr2hP!5+-m0wVe*$qOi=S8fpq8o`o3;B(7&$LN+8^fR~B8;l_BYB#~`~-AI zL9fG58k{}PD~kmFGql%3dU>R)$Xp$~BK8>QZEuC%wm7C>wSDeWKl|JZZ3bNqe%C4U zwL(69&#~O8CP@76L3tA}Fk?EtPzf1rgKTU3%lIRXtBFLyF|KjL^Q-K_XQ#7I@}2Vp zZ>3u6Luje=q7#>u=Ep%5*&=?SJQWEM;}czpG{BxE;s09dG=yIXlrx8Q?b5PS;?)_tZP$={+{o-UL={J-3afV!2itS?_I8ayOi+m z;+=l~87oOGAii%Cac07?tB*cy*D$o6z?EJ}49h!-)mC2h?53YXk?{TwNrI{|QVk{J z1a>^n$xw8h-L-R0lerw$*VM5_L>L_L%OVBbs9{H(MGJ1U421>hA5>^m!w6yHp)R8p zr?_B-C_yp}pOzW6*oRuT9vHbRiOoVB+UQYuTuI@H$5Piq;#__@7TX%ZR+#0wZn8j` zvlrmz46pn4KmA?uRbTVf@-MP|@ZG;AzxKp?EW@=)UmeD>$*gcTZvWrV5e#aOdGb3b zeWT}E+Gl=OUm>^%1Qoy6j50juIdQL71zp1k7yT3erQp9dNh8i!X%ZG>HE`i>DhlwB zE0lwIrp;h9&wmeC-Gv_dEj>IY#lmYJ=e*Cq+CJk?G+lF{6=RDF8@jx_;k+2=vtc>6 zK%tWoSJ%gB;CwB4Rul529Oj)q{mduiFWmY+$@_l!myh7MI@jyJQl6IPLe0lM_(A!h z@Bf?f-~GeKj-F_>kV&f)fOqpK&evfQ+Iq0L#WI2PNwu`7Cta|2e)e#G57FXTe}Bz| zDft&v;tXMts3Yl6NWJk{0+p0r@*1iOe4EDZDNFp9-~a!TpL^#!u^;4=b^fd7?V9~^ zb?1xn{$Knh`73|vFUhYTjT1p@DU?{YbgY z3?B4I!xJq<4BJ;Rx=}t~Tys`>(YbKUc18{FkKis&(W*GJU0#l(bJfctGa2=xKhzf| ztbM*!2r%Xzq5<(p^(OBru)S9$dbWG2BP}s5s{0s7LCQs$rtsppqwqveue934FD1`O z&unZz^h3?w_u0FrlX_nJnEyF}|MIuLIevaIOI}Uo`t5J_&q%xe(0twu>pm{*tZ{b# zPN}{vju?#nk2LS!`rw+u8!6#EX7hS$#pWRL)=3%yGzYBt{Iwpzt>!}vpEo^=TC>;R$&qjG7IHp zmuXLdoT0YnBQHp$%LFEjW3SYWRUkeGlem0AemNzQ;xO(JETwraH}KN`Np;SdpcWyA z9xh`>yq?Anpmi;mLB*aVl8U<}3$bvYR2YYalaYzHU^Ko)g0p;@Lv?=RIMI0zW?tb@ zfzbL6UP)lFOj5HJ`*|_4>qEfK*KX{LHn{$xr*Q~R54an$sF0I7&E}j|$a^;XgX~w`=vP%RL(38oS@@%rp0dpGgLQ5vcQ%^t^=R!dn z*cXpBxNu=e=8xxM_x;fKLPb0%jEQt{^XP={00<_)E1o{HoCjDBo*^_E(8~S>-P-8I zoR63xjT;S=*k9HM?9GjpQd4M|y?p3HPs(5UzP~L0lRy9G{D+7}|~E`Oy` zCMonJ5_<}i7o%;O3g70k604yYe?IguszyUz2^$9;D8y?Fu`NtST^5@iPUHNY;YOvI zcZXrulP=*5xF?#-zBnJG1Iq-alFF#fcMy?1sj1@JZHOMmVp@8Lk!(u}A782`_y;He zctD50p^cL%A{Xd6ehR4sBSfwTrRc$9*s% z)8<2d%xF=&&EPRSPtVxE`=%6h@Q8)U@rLt)WSw4SwFS7E6woc(nvzjH`b8&=vGon( zFZvSy^~~nzgbCNc(|Tkz&$&^4pUFZc_@G3eX=Jd}vLa<&rboKgk!Efv*|podzh{K+ z4DUY4+Fj2}PmlCbM|;aYYFKvXqo3a8#hUHWM^jLp3iZPei|5svIklcxubpS2b0^@t zTOqvboGH&tAHSO3>C2-vU$y#&zqEF5cS&pphE_ixS!c!G)8;Kg^bPd2^LHR0H7 zcPoKa5{^Cg*kkg@Bahf;S~V7H$K%H(d-UI3>PXLb){?Fzux{XeD$_?3vYiW9tS}!+ zkMz%e)hC`M*;Y`(Am&gYXc;>po((05j@NzkA0yeAAA6PMB&x#O)O{n1+Z2t7Y$zUY zj}VQdRZgRj1$hpGf~c)cPl}D~)>`DfLB^yIRCS9!%@bX`>1KB|NklR!*8ze$H!qbZ z>fNx~(d)KvH9XiF6oyn@cb~gthRxC%3;<1W76*!If)#yW?X)O4OvIqPh2da@3$x@v zD8HPZcr-#6PYUPqlb>yluv3)Rpn7rDq$Im(LF8gCBnKG3uaD!Fc8)=?UXn?6L_(QR z7zh*zJ*p&F$G@EGrlryVwniS>o7g?XJ2u{08qI3$@{G1|9+EfvPAFX@c&(FQFiy$NvG7CQ1KQ-Jh>ld&{dz}!mNJ{&{kcE)-SXZ4i$~=vUi)fEX)$TXmt_M2Ts`*%`R#ZAs{F@Ui*pZ~mshoAd{3Q;-3=^3<dym|*mB*lk@oES68qwrr>mV#6$dFKWsq2mT z!}0-xIdL4sKs-UGBu%{UzWd}mzvJ8G-}#>JkypIo_1S+rr@?=@HZYeXC_ek)kIMh| zZ~ZO#g@63>mXpJr0QaFRAV>vySA!0<7>H}P)#wcTYq-c0LFIkzDvjby$U28ao4j2k zEv_+Mk1@Me(jae)U>Apxxo8+&(okE}R1_Q)Xy7;3pD7bp_HAOrnfZ0_}WjMG^%u#X61TC54V(v=bm$#7hCzR5$hBAcGMHoEpRv5 z;$OVsZQmAfZ!qoz?Eu{U}7D>w`dGCM_@3CC`W=a%9*X;Y@5 zSIxgql8!O7`{?L=d^$Qyvvbm{Aw65og|$yOUBkO)yOcGmS#A~~x&^;4mKoDWZ_QgS zFI7`V^Q-RRob>P6BOUH=D2c&VEVuY&i#T@Gq)NAN&#WbF@ACyE`kVqiEfANN{akVG zm(K-x^BX+QUP^s3dZ!=$x=^BPGbMU1`p>>!XIR1wd{2+GJg}BivqWRBlPprM$momn zz>2?(=rQ@lL}-@55+^X0T#CX2tmG8J1*J5Y&Y#%8bG)R_9-bzlu=v*v1V#MLFnnn$ z@iG>XN#g#IPwi`3-``{@baL(I_8ySNj)2YP9wM>t*KPdOr zqOT(fM&)>hE+Ywt?i6NMfYU%h#>BDP-?4Edj2i6A-dkFn6LB?-A+7q&VLZTEh`=+} z$~?e`H)Bf7uMsTUc$1^tf-+(mg~4jYpW!h zzcK$?1^4_o?5y1IOxbY^z|mOCGz|YYpV)~}X)?$Ight#n4Jz#9G?&* zldLQ-(qO^}7d+c&h3%n^q%)XWQ$)XlWkfj>n6z{UBszkNF@b+4JJA3E8Rn=4p8VS9 zaN!>!DIfL^_sxhk9zjETgm(AP%@nXHkhUNG-cSC7eE6dumhb)E@0Hg+^z{;&UM0L= zR?X-9xlesc{^5`RxV-b7e@{L;m1yxJmzDg|_`ElC+CG!A`55^n{@sG-nQts)y>&yJPpG=@WGRNocd{O?vKln*`|9jsj|G|Iw zzm|vo$RG8{p55O4@@`K5f9se3vHbAg{y};F?GJdg00|b2`ry09Te$b@S_A*+HP%(g zppDJiRBl}40B&%5H%WFB=YR$DGsBe+4F5f}G`_0_$ac5G}ae(qv5LoEAb5=rK6Noy4&i+UJ^ zWsx~$ks>dI-+z-yDER1NBSwzsX(8UzH)uc|32z$%+}2s(l{qwGIitqoDw~C#Jw^-+vQEy zDfhq7aqAj0_nzLIDyphf2hzWAkF?nO>%OB(mv-E%wE1V0z`Es%^rJhE^elt*#1nfU z=E3vFN`G&DLz@dR+lvu85Wki3SNl5B=8e8_LoS~ERHSl$upkD#(TCR@mFSPGQ~2qx zdiq&1@*wB}nyXqlv4D!$yMlmnLww|yeL+dUH{Sh)e2mR&Qx>- ze_1I0UPGAIrGlboAHfL@es+2p2m8uS^Kr-k?9FA?@PP$oILg;KP-Ry2Y*oR+_@^k zx-O%ubBTr@O&MgFC*od7sJ4RR{9Zh_b|=@CM#D*TL;7*9FPw3s0MmC5k1$z$wIkr( zU*Atgi#5MQr%21KRHE4GGqwXRfbbF$s#_2xA{YcpiEMIRJ5^dZyaKyDyj$^lY95iP z*T#1h2TfRncfDXn?8!!t_R%1D#N}7M;w$8T|9|{H$m<{aI=Q&-{&j3$PRjHVZlC(( zGxCnV`2+HEKmT*`h3CE)KLzagN4dwoqQOOAY+B@vq`zJRy5;(|==}sg_T>x_L|R7_ z&*r*1F$f}F?g#E;uPO|o$?_qj8E*o9C~#VR@?ZIiSID3Fvwv2;{onm=dFiWPEvHoH z%dj26_?c&(mS6w5pO+u|(I1g#KJhy+dOIu|lEBfl7)vCwL~aF{!8fh&;p=J%i365VB+fO^a0IM?mp_=d1X7(T<{BODyh zY!~e;AEjv1G>!0Fx5GTp-f?jwhZkYl#~3S0OOX#|?BE94asb~a-yO^GKKCg1=#L6^ zN@83e+&jx;a?dj$u0yu7i#Cx~@CWZUww|GEZ}{eKNqWo`f|Cu?WX1=H!-}<&zmFe4f--mY3cCANRio+8vLc1S3>UWPI;`q7> zO|0lN+Y`I6?#nr?OWo6HYgO)-gwC0$%rBV$-&6b~z0ms-KV16I`u$=I>kQetc^4P@ z%-a2)lDTcR`S;VQL^G6|O7v`Rxh`w>dp@9C*oXMrjT=@1i&hn;bf0Z1(F|djNObO; z01xYDrbZ27W%yaA463{?o_jaF@|;Hbsz{ne>n9N3w!x^ry0*M~kFZq6F9>51$>b7{ zfg^)0o;ynb)N)Uj+-N2|vhUTuTh7pcpv^OrB}s-x_^_X^@w4Dggu7Dsz<7|k+?2A0 zl2c7k!lFrJiJaF>#reX=sPN`KbT`4IGY(BelBM5ezpNbP>~Z2k4BgszY(5y zD%Nt{b0n1oh9aateh=a3e>N~pfAvTRbck284A)0^Z5?wONT?z}3^C^Y=C6OVy!B7~ zu^7hhe^YtpBOjF?|8M{PQJ=o!XOA@#)M;D6d%F1n5-vy~#x*~*EH9OazYpWp{+hft zG7;}y7I|bj5qM1**F@FGLhAGIY^vBpouxhw_OenP_&n^hXG9&y9L}Ae)lNR$#H=$O57jOz{|ZTfQ`K?HB3nzQEti3~jK=(D=oea1Q@k zHCt)%T(&TrP;{Bm8lU)`-;uxgpZ;IvhySa;EuVhsV@p3@F71oYeolVz|M!#fm;NvR zXZeRe{ZsPAqv5Kyfaeq}uQb-Du3N4JXoqrdfW}h8=(~NzSS#QW6C$NyiIGQ&vx>Y< z69?cy(y~vr{-@aEhPNoo)A(!Bb4AGdeBXcif0KXuOTR4R zx#vXoH2KS@-TCZiOhj&|54zd-D$8lUwsvdZ9Nk%TJtobuArsn6*O}1%mkr^#XZI_q{w`PavNbo7IjMgm>#He$|GI-Jv5eV&(VH?n#kGns8BSgQe-7@?&vhGM7c0 zY{v=Bv(dB7TGIUdmba{ZRIl^|Ff0|UKejLAy_}JzM|y^Mi(5&Un!RT2zK!=A_1@RM zGRDCg(lJjRYlx3es91Uch#jT&%|K$OK@38PrUImS9W7}7-6#}IQ<;xvVbiIurJWW* zxO^v)N^^6@WS*Dat*jHzXj^STo{MchJC1QM?zOyJfyUrlVJ0)gd)uHmt1Q_aXKAg2 z!%z>Y;4)h_l~yN=V%EPb(=?VB>j_wrEM@}VVLQ*nj53DNJ-JeY7u&6l7BplTxa}Nt zM>z&65Y5Ln#vKvX@LgVBgR;-Qk=?kV7O|ohs;_y;gsCZvdA3ZHz6fPoVyCgztrnvI ziLOXx{9xcflflw31ELCQ9=C|Fji}d>VKM3;{@%TeA2YAIhN;==H(JS9GdG^(~Z}94AU#<&UU9*X0@~Oc6KWYE@x4R?K?3WVhW#C0o~l$!D#opRzFSkQdn7Qz zeVSX!->}EVNJE&@9Lc>pJZJjHpMF|??8kmo{_s?-N`=qt=)6^F*=zkea z@A7?0b#nE)pO(M*|NJZRUwr@HkoW%P`#h=UHrBNgz_}bl@`XrN!p^NGJNXumA7~n^ zybR+orPY!J4HuaGnf}_Sh%_&O=$@x7OWol=qf`nbD0o*Gokf=te&nwVI}Mr~ufpGw zAd}EUHt65{&EJ$C_-lVn-gy)fzxcV&7od(EE>xuaA5sfJ=9-^}eDb$%%Mbq5|6Km| zU;k_Jo9}RXrBHjG3uBGR2KBkH0{-3wziDg~cZKhkFPt6SNlI>PX3 z!^bfhgVRQD%T?@EqZc~Dz~$eguDmUA8Wa@kEnq1D?IQnh-R@RG)ji@whQgv*ON9ydS>o^__bZ$^034i>92WxqY@p(!v*K1 zk#y|F?okomy;G!r`qfW8TlrZW-Dx~G8Io5D2vC-_@RJY!vir|#*iO=d`DHJ(SfeZJ zm$gfqES41}W{J(z3(wdTS%1sY91xCXc|6=Ir@d~+GEWjB5E#xx>zvm+e178RYE7@6 zgsr=B%<;$h+U^O}T8YuJaSW%Jb{3bi#Jn#l=kv-JZmXmMgK#4-f%xnej>3a@`o_b4 zJb_q-r%#XTK(V2{;_1ue{duT5ep88XZDmGHf|84Z)W*K0l0ZiowWQLwFz$GS#+pPq zB{5CNRHsmvjqxMgwfVs846{9}XRNlmvTZ74bB5`}oU_j4D81mpAbbV=!871dkUow# zy#5XHzxj{a32l(BHpBA*&(sgP^4580jguyV)CV8R=QyXloA@E&&wWAg@O#epeA9KF zCxju-S9@e%3!|FN6A^RN3$vRNo>;=e93(Ai8Gi9HVqyy0121|&zU6Iim+$=U@0Nf4 z5C37gc=3xt!$r<&`g$Eb{g>Qg5zhbi@eh4Se(7g_UVh^5|2;D#I9=$8yTGlwp3CgH z428z0MuPLm5RQU>6_l%DNEo%tk~Kyxl_-k{nT%i%Edsxf*|O)i!h1=gWnI2j2B7=N z6?v#(uFP&v1J1NDzUlRElJEL6-z9(KTfaqKa};3v#RYhSlnw9)5I3%EWuJ#8;Nu^6 zo|7lv|6B5_Klk(U-~9OBm8<9Oc(nrC!cclG+_rmG=h??xL&VlDb?qbm8ezf*%gW_R zRD-v=EJ0a-;IyMCo4?B;BUS1e2bz@=DfYCM1W>^T8h4|bNr{>=+*quBHgjDpN3n_sW3rt^7Ihp?OZwQQ?lYGe z;;0c3JLIFrB{4cU;R4gI@Y7+AZNuQL@OOu@s7VJP3mHf+kYo%MC0tG+dNJNnkxRip zFEpZOxH;!LL*EaBeZFe~uTHM6 zjuRkPA-Bb~h1R_Oo8NB7;|i8yxpFo=&KqQye==B)bo*mZfAx|a>bgW@Y`5{w(C(w# zdT~%bw9nctUjAwyIlOmG$mZ` z#XEgZ$;Q;vgsVpEfr#t`4Es1QxOJ-sZeHGMHpzC&FS5hoxOjS_XXrcK^)n8Be@2?^ zG4W7GVB0LCqpb#_e^3NmRu{zi@sg2rm)etaKoTeOrXQ5blOsU-tq# z_<<#7FvGbj^l&cUaf@ys+R}5IZ8@)jXLJzyEGDmI;#YFg81qT~pfCzoYn!5<1BI;g z2xDC>8krm5Xgfoo}0W^#hRFrk4Wj0nY8wHc2p!C2?ACT9+<~0Qw zn*4K>6KQk;5?bP;fAACX?B_oh0)@@8arK}A6Je8IMRze)DOwk#GKV7t7!j7ZC=fB2 zYFIu!k(p##Yz348{yxegL%`uN$wn2M6HQUdoX zrtHU9*RzOPGXZO*usqYYj?|CU_*|d+;&bwIzxWICzTbMkeA~bAZ^(E2>F<&U-~8rs zJvMZ2@&{IlW~&<;fcyMsJ|(~O3%?+b{p3%|d*An7`Qn{B!Yu3bB1+sw1!i}qk7REz z=ZG5xJ3>62_W|DEuR&L;J(B|^Z>E>63o-+{f_1^fLv|6_1b9)Ut!QD)9KN@m9v5B} z_yRgz*R$~L`OVN`NRi5C_nX+|DF8Wul$O9?4uu*=eFkpuZCs!Cmr_HHSaW&n<~m74XnH! zPZ{fDkiEHYJ(Q7w>LPvX!CSe8a-U?mL&z1(n-Ntv$j96HX&SvL`EsI#s4!9qR{_@? zq0cai+1h9kr6Zw`YDDp66@zB=thJG6Y{*MeGd<%O^Vt_kxkefLQc@jo@Ejm6BT#X( zE!J9aCW8wyjYs7Lqp8R=4qh?_4b2k!U_Nr2g6DSR-eNPB$!8uGbUl36?qE!$ugY)wz#-EiOOuVn(O*t6&nC=GVG)>EB=C#c658_2LT>+{7U_%9>KEswd{p7u4=akuDF6!4Sc##a;zi%ArlS z`%OvZxn}Kt2Wo;H9moctcf8~769Uj@>8rg*+7`*O#EC{Y!BKhMXOoKq@=rdcEGT}1 zKhET1@J3H0stLzt=))0X$hwnxR|QD0NlBQM>KN|f%&H}CFH8(xO{;2irF^(TN!dCY zW;P1gwBSt`73~Wjv|Wqv=nypL+mJxI#a@Dcc(ytV8*6fa)h*!Tca7C&(~D;-cmaf2 zD)%~qAd*14a@Hi1W^GdPO5C+k)eb8vfv1VT6l8h!#Wor0`?=v;E%Dg~-N~Z`KqR5W z>UA0l7(pw}$4N*X9s-W0`OX_GqzENHiq+K_vnI|AFfTF`_NfKMu*SpdUzE*BxfI{4 zK=~Qbmv4jv3^n4G{?>}cxTVp66SVW<^dc!hj=44eZT9`yXFn%T|IRb=iU;3>-{hZT z1D*k%S4ZXfXaC;cm!J8m$BxFMEuKeZD{zr*a0!V&>-x4f3QpnoaKN?LPdOaUA4(Qs zLWR9iFckO1pp;rLcx>dhpI>w)E6zz;$@!%pxd2%%l0z!)62?3quEzZ#_*qvO<`$2u z>o+76et*j-h!EivI8;L2@wMYlxj&YXN=wDvmY$CaX04DShzgx8A9L4fF{H&sDvL5C z1=WKHwWX(u#+Ehr*vC^(e?s2*&Uebs9+jl;_*35@fAm}4E^oT=wel6OdgYF8mI3`i zY6Xw3zVP{@0`w7i_b>dS{M>*4v&YXLlh1wbS&+sS^xm!xIQ#cTS$dPoS#h^N&sA?zX$ff5?6-E}Fv)TW6KDe6R}TW&XH0AUh493MD~T*c2RZBXN#nsTVu@ z!JH7C;Kz2F+_}1v_rCYN@`2y}p#1Dl|FnF^w?86p{kQ*ZdCgb7PA=|yKz3B+e-Lfb zl+XOm@5t@n_zn3-Kl4-aTkrdA`Q#^mCzDA{U@_6sR`%|cPYy}9)Dkpdf5yT=egRjT z`8q7xDQJGK!!kh?6oRm(fV{=kPc5*?fXUlz zwIxBB;qSfrZva~}dZ6FNgr1t7`oc}UUp~7i_H34HOx9@J2hSuMoBGp?d!uubdR8dZ zyED?WExD|yM9*Ynmxwrit(5a$NJMi0d&H@yK$a1g3C2?GoSwA|g z4E9s(hRQ)+Q2RZx>8eayXN#aDa!#R&AzIdMS?fphZ1g(-mDAMcEfS7N){w4>G_4%r znSKFTyBXhqQL=VZiDoV7eQ5V%uX^g)Aee#7q%sBshfz`+w|e0>TIQa7{8s`xfN5B% zomuzj*21ZAW-2PLFl1QQ=aC3TIA+bTZOgDBip?&vQae`vxLD;Dg@W9`M=#FMW=E0I zQTDi($r8HIs6dYZ&$wiER1gR)<1GDEpL2}RV6sWwHD@te<%|N7yM45%Uk7DuYbLVE)p2$=-I!_rZb7yXXS&x^#S?$pLtB)^{#ix z$3FhlQO+GJzi)_Ml65U${TF)F>RER3n;q9Nnj0agl~zjP-SzwTbo{{=4Hxz7B@DIB z?Sg%|Wav#CVwBN2x^OB3wa~W~MW*20VJq_l+`j&6zgFJ*wr`TJd-ETXhu``~j97fX=|s;HT~lxrg^jW|o+oT&nzu8N&BBN{-$qv@`%iu*C)fsx^O z6_uYfmJ9SUc-^lG4Q-SqS{b5$o}Sf#WMaCbb;|(Hu@U^ybUnUBJZ*fI_RRYtNfYvS z!qacO*bZyw^}&Em6Djh^sfa4B!ROZ=qi@(X$t6V+T z^iO>JYnD3FOZh8?bywOym`FmBSf9h2q zf0hg6nE_#ot3p-A5{fBIEq9FK+~F*LHMGR~l;#8%#tF&v_09kiN2-87%9-0LBrZy0 z&n;v_8?=s}S&|)7@%5w9sZv8@>m~Uwm;u+lQMTCPi?G_4=eU(x<@)mqAW{Pftm+t- z@f6QCzlQL>9V#=>m=h(av?!}6U{qlk!?0%YL(*iN3_&Yl*XnsW;7oV|ZV4}y=ik#O z+pXNje#auNTTQ5jmqs!@%>B7r#Uv`Ht_D zx4!jZdCeQ&C>Jk#sYJq*yEeW4nj^Ei`t+ye)1UfX`PEA9D2o)M zdBhmnyc1Bqj@K?tIv`h4rE<*_S5h@6$wMPw0o%9zbq^Za2OzL(29 z$`~n#t-ZIqthJonTc@@5j=#?+qxd3(gSh`XnxG>0#s=@+(m--pXuzH}>0a@lNd_@4 z`%}2>_}~1-cj?Ps`Z9UlSACVd@vFZ^{?s4;k-Xl+a{NwWRr=F5?7(h`#q@7@;KStxa z+IUZX#`h{G2$PP4cCFzf`#XbqCAxqiz^b+1?BoPgV8FSRBcA1YxGoc|id%fKF`mdL_z3pxCH4neV@Z|tv3d5it-M`Uw7 zgO>H|^8npzP+=GH`i4jQ^DN$GDlmkjhS-u0jv~tlY>wu!-Sm_O)Ei7rtcR=;sWdncsyXEy$tb zOfKaJ^=KC4d$`%Z7RU)oznvE@9~=+_%eNkz1#tT=*?_D|n4 zBoZ;mJdbQ|eOWDiRp-7xA3e(j&k%1$^e&~Zj<5IQU8Yj~d>(1J=A1O!xq8xUm*U~w z(>s01?{31Prt5wnf0#=3<>d(@y4UhoP42Pnm1%Z{ePFJ0OEW$PyGS3n=vGmrnXQ{= zq-Xs5JR?od^lbYQSfyR3Ok0~C>A8sTOjD7zbnQ44Z;8i_Ug@ex^Y-g%N&n<)KK?B5 z&nBgQXd;%tr#ymqC^IxrF`**;OYbtJk`JVKB_vwXP&%fi^_&|v_DjOo_MC-6;R}X~ z8FOf1tz^Q2`CGq2rd~X^)?8jJ@OYNO3$1O%IM(`%b6-lT*;83Y{|eznSeq4IYOi-V zR^=0|^;V^6hn8K(vr!Jc%*+T*TS9|4u6f&lBHh8n75xPvLw}wuO8m?cg`2h;6Ngol zMGY9Nb0O_gl<~T*>CUoxoszIHZ{U|mgMkJ@J0cGPd^Ujc?AW|c zv?LMI^`CR2lt`n8Eb~+rI z%R$pZwsV3;7y@oRpHpXO5h86}*SmUA@7DG>BM7_K>^F#k>>#hPLv~92u5*U`>4-45 z`O6^^+|9pWFzGyM0mB;^ImR;1%#pM#&@v2G*GySMCIL#sWMlqwzor?k+^8PLzBNAs zTO@_M805}3u30q{k9Iga?rN~Ce@ApmS*ECm+_DT$YrMAyKY8UVzv9U9-YReYhCd{) z|LU)nH@x9>^6J;TMjm)64NM}jhwnDE1i=fO`0@3{JMyWc@#$k9e_B3v^d$cF``#<> z`6vHGo_z8nM^EA%X(xh*p2hFLPe~7Kz%{N~?_)TBz1PWj-a}kUk_SvsVsBeX#WgLX zKQyXm8HzTQnk(pJ|AKCu9JAmhOsH4rTZm^RvvEq3xn=*qDTu+r}v=aHh;Tk;7E+bp0ID5 z#W}{cx`M?&Z!P$=%ave(uI)=Dr}e(&ob;mc@3sH^ zQ*2_l+A?u|t{J=E@eVc5^uFCik&cYrGuhZ|Q-P)z8jD+%X@+&*!2M6|!n4V6P63#lAER-;3zG^80|Yc13~bDd5-+OMxMAbGE(5&5%4gm zHqU^5>WOgz8=s|lDHn`A1T=9A{0vkU(3S}??U^`T~{UX^?rt3+6*V-KtReHX?Tt&|NhSe9_DDhLEU(IrvR@+`zzcQRK* z2Pm_Fk3_%D2MYF(R9r3N!LyU5K@@@=?RES>x z`lBNK>Z6i$RHncF>%Lyzbo5BR?)cp+UinIC4?N(DLc%gX4+?1LGtQ0hVR%2%;Lm;X zcjc3xd`3R_;V0!oAAC}tdFtcxJIB92{_&^esZTsDS9k7&QP(ks^M`>YQ}^%SnX@M@ z$B`0|pkaF>!o=zHtoWQdPAZ?nWY6Xd8VkNlyjm0b;Cbvh3~`$a$M_-Ugv3@09d0;p zDl1_`@HS&ph)9`OHy~e&(o1KmE)z=8fk3?Ko6-9Hb#_(v9Bp*)*sof64u& z90-PF6(uHxo%uJoMrGYdckDYVIWYz~Z}5>+S{nNE+%XcgE3G#qYt9FZFV0J6wxKJh z7xP&S=j+=6n#zFuw`r8lTSCUA&_it{N>Nrm4<2uEc88d880fkg`@sJ@60#wJ%&7VX zfrLD=oqA$9B$dKT0VjjYE^+QbJrWYz*WN9Iv=-V&zKXR8+Bu)U6|$s>|H+Ou4QuoF zD_t^IpBgZIUN-jO1dMeN}9N?}V>DkIT=~@D7wi?>ac0-^Y^C4RppTue5)l}n0s7H0mqQoH@`ADnF$rc2*xH(IJ7A4 zqIVy&4{`Q)h#M$Sxbbn|cMvg@aoEcF%#MT|QHNR5>KZcK%#aQNFzvWym{o8hp$GHP zJ?vE0F!qL52z2KaQ8FF7W)!4bo-HAyNMR^0ctQAbpo&0XX~tl#koRJ)#Q|&8vd^MS zc1iQ4Cwzl&vW>7J>$Tb6G?YHhY0*D{KmK@E@I8LA2TY@%=D6dx#)|o`MG#H>k?go= zhBznIs?f;$3^`=ivq%VjjhV}@7zEpVAb(+hu!lSv@%$XB@&oOze~T%KgDpjN!3-^X9$E;&X8oUu?!r9 zDdi*!2vS&3Q$9Ncr|{l$&&kSL^G6{`Sm&@Cr`0|!`bHhQYW5z=_Yubqx@^;B#`AjL zQ$Bt-)|EcXh{y`~U?%UIyyZprKOnDu<*VeYj>`4RUiK1s(NVF!|A80D{YS;>zWeW! z?aq~Xl4pqaeE-}RzaYmY2TlrAGtJ%j88bezCm#6)!t}cYGZ`PyX@w&wWll|M}0$XPDzAJX)*dq(`8( z%Q~pI(8w!|$GcJ14^$=WX_)33IXK+t8jDv2H%UX8v+sgG+;4CgxKTtG<2OgzF;>po zd3IZ(3@Y93$Zf-WOuw56)wU6Ic*lH-p-;^o62U0pAZ}h+1ZR$eOkW(VBr6>Wmc$Zs zCC-s#0=g|G;*O@u03ZS>wMe; z7mg*y+Xl|Ghfa-qd&>MhBK;hO9cQF%;Jt;%+Jspcsmvqo2{{}G)W>MX&Lj(v;~;tW zYOHbie>=}eqg@x?ef!K@EqOB{eb0KN867OHK-XH*aYp)$N3Zl_vX;L(r%-!Ur~JO= z+Ol)dQe-{+LxT%YPm2PLX62~lWamA9YjTfGy#!Vq(q1JFmBj)O6VhohI4aX~&2F`m z`q8sZWt!pLY&FT)YcsT)3iM}=9_X)n^pS2M0=2JQSocy#nx(I<^GdT1oR{7w8~X>Z z`dB0zvnfMj(sF(xtbMKJ#uJfhU3>DEekGKtuzYV#vb2FB1lU3B0Bk<9vB-5yA9-2IdAZMQ<)~?!&p2tNxAisIiQ=N6rOk8ma(2} zGL;NrYdg@`uo?8ZHm9drhE9QzG+w1T9~S|uh0Psdi4=^7gb=F~bRf)H9~3HpivlLn z;O&KA6Bh2>7VTef9O`m zl*o2BfyiO>{Dz6z*FdINr>FcumVJWVm19@I(U_IVleY1CpE2l_KyGNIuWIm;V$;rH z#25%?QOT&8Dp*RgatSsP6LMlX8VMLps;du7~U+DdSWW+ppgu|KRtLg0(CPb{#YRJ;4V)qh+_Iz<>_5fUl3AMwLF2 z-}!Q`{SGihD^bdA5%5bKjlcpnD$|O!DG%W@xR!IRyB0@DnX5mZJm0^Z3ch)_H{UA? zjok5nfS$Qr;q}%P>*v>ZZO9`eacr;^W%po!0j`oRoWMFz-@Y(|)fvZ)hw|@r zju)eb^n``3QG_q7eQ8&t!5dBOT~0h{l_1#4irX(Zl8dNH~*(=gS zrJ*3s2XS8`!b~BYsmRJ9>X74m%`x@*d*0|tSdQZo{c; zr2++Oa$IuSZ&fbiPB139hA{X_l>W7az`A(bLxAA|;2KG6xfbBohOpd2*w*-uFSJMz zrd6u~oWiTIn(0j*xeij`*h)QbhUs#Tq{6OixZZBOF}@r?c}^OkTKq^FSi0MhK;CgT zeDM2qnfEp9IiGC*oHtTDZ)<|w{oW2Z3+>yyo;MrUcF>oNmTgn5AS-K~z$0-_c?=0r##u0V2!=_EE26%zt{RhXA<;+g;#H>FlsvL6j)Ao|*o&wOhE%d{~h zp-}V_k!S_sK#d%3B7w`NyCxRHl@e^13`ge}_|Wy9=z^}Npm9hiJaKI7Cs>(J*{?CD z^@<*FUx2fY|J;~Pi9zAR;!){!-umMjF+LERO?s#kk zZM885Y{F_FbGXdSaA9@6=MN7~k2GMEm1QL4ro|HOHZbXB7H+wFCh zixNGXDbO>d`-%7X7gLcwdZHhP!_%rOm8{*2Ft%%7dzTv0*JbUVFTFf!$l6?yURTJV znZ%&*X$cw8uDgdb()V0PT2>Mos$%@L|HW!{Nt#kG%iYs0fBD4u!9V=)>25)tv2#lF z(soMpzJ|2DBja3EqU$|VnLf6ox_1B4_2`8=%#T}P)(2-$hWI0yMhFV3A$Yq8tVo`N z-PU+60{h7NX>n#pB>6@|c#swgv3Xvvaz#i06^zw9o(C%nj0<|P{Awmr3Bkh&^dMt9 zSKf%DVz_SuV`#}#J(Nh|IqqD;cQc&V$gpR=rk7-&j0=usS2pLEj@S2+F#&}gz#uEM z$UJ+&)V5-=tjx^jZlS0LgVE?-*VlMQTq0fih5!nlBrC*gR0o#EQ3nBizEQF?3U?OV+zAst2TbJq)V228(NCOUqJ~<~a z1|+U)CxjpO?_e2+>`xKp`Mj=ve+#;^wqg52S1Kddb?FJp&d(y-*O{#H;^xeEwy%!~b0uk{LW7b^V6(>TDz*t-P zzTj<40O}$Bw)30fc^90=wWJ}ymtn_fiV|X57+z4)q*jy;Z4uey9-ysk1LzLU>p?Rzl$a4F)$nR#DuyS&>wuL3-ISmV z(SQ6oRT97iz1dHjF+TSi2N%$MLPl>i#Kt=toDO2U~>z?eOPBZBh- zKK>_Y)mQ{1NngK8t*dOe*m-!7YR==lvyT`#-X-9sJCAuDB}!b;s(|%V1X11Lz9y_# zgSzy9dp1e6N*9GnMPoj`#~oHMgE%i}1F~&1IMdTSgTgc;kb3Kq`%skT1 zy|OVk)V$3ciw~rpeFN{e<+MG-4^@eN-2Bi>)bL|}{Rj2s$Y*6r^lML(Nk_Y`iqmCz zZlYf2doG z`?=8WbM5&OjUWO5KD zN}EERCCX@-NGO|zQWY8X&mf(JhJ$ALxo&4qS29v~gH_GWj~F2uE|?o zpiHXPLP^?t+H4qotuGs5#xmb(`cA7WZSL7uHu&~0%)rm(;` zSTHiTP(Z89I`4;|qb=a=rBUXZ9tyeE6gbb!Bf{PAD3Z4b32ZI1R721^G*{v+UxAd6 zWVen9eg%J5*=ZTVHJg7OfCGfnXf2I3*R-?n?;&*n*s=&y<*WE?@2o3byqxg%rGe;Mh@X zEB)+2B#Plka+znX;D~T2px@5mzmM=x)+xW|kTU|I&~DHWJ3;{kZ=RQyE0!lpe&*38 zZYYg}P9miuu&<5hdI0`iAx^I(mTHl-RO9GL?D>)2YrkPYUg--zW$Tu#X~gF&b@KeJ z8v7Rd-(~Tna*da5htHPqvq|u}LvJwZ3^&{~mhMzsGwI?LPOarybvvItf(G+A#|*D_ zLlF#=aSoSwE}4W)a_I*Q*demdOMs(h#MyKqhD@5;T92bXSr)Y?O%xc*7n-iNZXNs7 z0*XLXISoag6c0`BUM_1P2O2NOcV9K5y#&?{% z?Twnqj^7>nSzcp?5QQPw&VVCQ4-4S+r)808RDmSDFA41J%r)eiH@*E^gsXZX5_*3l z?voeW;M#IVyK5R{zw>wgwWW@TMCrM(Ll!S#IW%RZ!#dYI`Nh2N!;il!89g@+Hf+PWBcodr;b&IJ zgHaQ++*zhX<7EiDW+I2?=>&XpXb>SwX5kWyFM~J*)LzW1@rD4ql36vCv2)CLZ=DBe zYw)&1FbNMN4F~Elaa!TY$INOT0|88^P`ARUKp4Wy!N05GP{(MQp1qS+i1{)%X>oSV zGcQ<&u`Yu|A)voCcmB1{{%V#)&;F-0OJ$ZhsP5 z#GD=kDtF)*d&06H_EU^G6d;NpDd zwvhA|_j5%d?9vF+TEROBCAumhdzf;*^Zif~XnKOJZh1pG(-Igi(LY9*_VAcMhLO-L zioi(E3D>Iyf1vS4)1c8HpmvFN@?i9fVU=&ESp$jDmE{H#68*y zP4wrD%?-fu9T^k$R8GI*_6t{}?VfXlk^Ki=!|dBz>_g3==UG?V&)rHvg{QO^uelkp zp-_^>aKE;s61@%scr%Uqapc8h#ly8keKC+O%BSWQ+4%4l&x*QQx4OF$)bQD_ zAu;{Pue`g2MHSB>5ZuC2(=;E#q#h&$S36?@VwCCto_EktLNk1b;W6-9^9&X4Ou=z1 z1hp#CRk%8<5Maa78fxCnPQklHQZFgiFdyddF!m6^Pn&rz51dmwd(}B_-fY|MyeAdj z6qI`i@J8pu1jy&WV|*qfGT2@DYd5ail|MW~rU1uTii$Kd&uuyLQS7G`GJDvcD$?wq z^Yy#vm35fU>^7F9LR=6s^`)i2ng)vI(GJP|5(l7s)4(J}z)30B=MdRDf#-W1s(4o- zo>urp>t)^$hK%u#+%KYG_@Gxb*1l0BuWQr%$N)Sw?HXkQ50h#*ahsN&RXk!&*X)~7 zO1@oRvL#uoN-MNO!l*==#35X#SQ2tn3aW>1?*%8$)zWKl7A)9Erc7&iuL2qNc5EdG z<$^J|v8`pe89HPM9iOLLEvJyk)D(l|0DCWrlAaimV%{wURv&lbLZzcU&fF6YULQ2h zKerUpYX31`!ih8=M%IO85O642<-*lUdnX?_7=SYSY^}E{fd}i~9_|U)oukuZ#mR(K z3V>^vqQ-EkNHao%^dOwzmUzFp;4U1CNE#rk0>t}QJT2S)nlBM0GyJok$K+?yW6}}L z?n8)bRcDRgJJxx5xZ=+my3KXWprWj5Ve|E4L0V`fAJQ>24SuT7zgR*E%8??{%l*da z+xL6iC#m?)e;MtO*XlL2>$EL+fc|U@swXte+sOS&&vSDQ6Znd8`uJL|p~cdd1pv=g z@VJNUq-6U%V?xhKl6;NjvIJ#hvDD4HwKl6eVxbNk4g9hgKT#gHet1F zoNJWY@@NPj?1u7RpeOVFqQ~60Cps1t=IgV|a6o47S(Z>p9 zSt!ZCV8>l^pbS`OL#{MAXuZj=H( z=asJKqo+cBV=B}&b9c$web+=|v+Wa%vDJiQQ#U+!R=O(D0F&(b*G@kza*khp4`-yi z+(Vll=_)wR!C2Na4(|L-KB=4Y-&;*?NqVKHRe@e<`};i&fU4h}PVT)Q)qO~SEz%4d zV4GHuxrk*^_g?8miJq;5c2DG)Vcq+z-IjH_vFfuRY|KCB_Zq_C7H2h!1wsT; zGG>)fqB*WgEaLknayPG9a|stq-;4|Nsf0~u$+Vh{R@Ag%u<*!g2oz_!rc%{-esvoM{%O#^||zs#4y$}d{X zBq4ap+K0#@w1}+pVEs;4BL-fxmbkz|IgDxbQA`4X6F#x46(}9PjJ} z92|)|68uFYB3tnH)akFLA!#bT<^Ag5=LNT>*bN>Ir|sf+&4nd?o8N6VvxD1qO)+a$ zn|&&BhGQ7_3>zC0C+GJO8bKjnZJ!u!9-nt*VXK?H=K0BZ*UdaYSK`qZvDV!G-1VjI zdeQ>_Y_Fgf7_#bezFPq|Vz-??6Bii#yF7nMfjs);JyMsh=NUE_P=>7dSv}i(oOJ~X zNs$;Hhy7^#baR7=X;%1t8nR;Tx>^!LqnBljGO98UWd(b8ke*DsHKry1AdDQL;FPqZ z#e02u#7;)S(Aeo-hcq%~U#URETB-zG#}3Ypay|Q|ha*aWp%?N5{>}c!2qhrt6mq({ zL{tzV2}@?WcUbUmRqj(MujE(pc~shXT&Lsyoe?s8`FMwUHNA}4kj#k16$6E$=fuxq z1l{uWs0JeLHQ$T5Fa0(6nGukNPa;eM?Dz-aTq`~DcRQkjdvxGFqXXSwXU59;cfhf` zp>Xh-PCHNp!gWR|^8x7_sJ(9EwY3NR(U!7+O_waiDH{!LgGk?M(C5>$&NxOx^RiC>B=o)`?IO_3pteFy5eT_xa zKo$F4@p&7C2H-jK7}(}GDiM0D@mms)LZ2o-?}>|YMn2%@Ys8r6Z@e#LAzM6OH67TR zjm#799c8?gt`7I`kE98rPD8j>F2-@cV~z1y5kaPgqlj8j=heP{bB{U&-dt8}c%Mi7 zrsIV#{5HS0<9`jfg70R6v-y5?{Cm?oE>ogXfepPMd@M%36p@;QyKl$_T0_n?nl8MG zpQkKv2g*8W?(CSfm-N@1?ejWj?`~<-upOwHV*tIk=+5Rx^Hd5whD=tLD(+G8Y(~%2 zm*GQOW1^3?Xq06ch1sQunODDd!ci_828ZbNs*?;zF0VqpDmqurAYA^ z?-kLGnsl`3nt!;&yAw$7xh77&oR2=2XzXzuUbo`k(+Yyn?)}2J;0)!gRiztaY3o{#<+(+9AB2m*pdqn_R8&&)A}wl?(mNC` zk6nXcoxjoWK*K~;R=93VJhLbaBCFCscxBgN{GdRxS2(yHPK~#~br)_Z5Ywihz@MT_ zwZc<%9iKqXO1&8hTZJDKwRnb9DkP!c`RicslLk=_*`yeC7Q-*-lTu(!!IeyDgcyp@ zbO>wow(4$g1??_I&a?O~D!a`B)Hp+5+x{y5C7i$^+~z7(Wu9lTs}V&sjpg3u(HOk- z6kdbI$*IxnWaL~|iLFffN80D(#orM52XHa*#rIC=kAXwOjUH3@9;v=NjY?P%a#DWZ z;24O}yz zaN_xNT-f`7L0%Xa1Vu-#q4z@EqjBhkzlNqMBVOUma>LdwX0X7n11UKKHVXE#yPn5Pbe_<6Y z-vexKuD4Ey*+F33m&H&X|8+@&Ctv0u@qOHA7_@tl9MB$>V!N_U zS(G#lg2&t|bxZ>IdB2>0?&TUmVPV};N??gQ6zP%PCuE*wuR@pl22V3~qD0Szd{xug zS!+n2w8zTl>P(&0n^@6lU)kxhysLQRGXbl>OjRi%dX9b6Tm3Vc!I#|b=_W~e6oah` zrRT3a>EYIC9qH>5ja3)_?u_(akv<9UK9jloxudn@ek}Ap;na8dISp~TltNijQKe-fq_}> zLKCsm;9cAU%tdYe3f8s8T)7AQxp5dN;F5xF_M2la>!D4qJ@UYDagWt83h6@2>o}njHgcLNTSFNv z3zeUZ40KsSDg{Oj)ePSw=WebD`h9NXXnuHc>9_6hI_ZDIT$-#CsWeWKrl~Gt<2>SQ zBeVLpvY&Ooul)N>*AP}uUc+^&Fv`%$3S(a9KegpOj4PV-vn^vLUC|19f2n5Zrl$70TYM zM;@e*CsLD9JLBrL{2U%lsd-6cbyx_ZF3L;}0N94wA3;HiM^4X7zT*E9X@UT9pWl}I z5Kkt|XK5o}Z_jnY%+N+!8POE?VID=!vHr>Ds!InT9X>GZeeq)LMq!Np@~R?A0W7cAql3N3`VJkR&YXgYsh<0Ym{&vwH6< zc#9siDs4U_$_C;SNwM1Z{Dfa0#2Y!=vJSNPe2#y<>FwVfw1oMZQg#G3w2Y`S7~(g} zyMQJAuHXIIrTo=AC;f&`yj11E^4(ESx_x}RA;tN45f%~Ids2)WoSXC%(>fr(6uok_7CT0RMN zYqYIX$WUxd^U73AvTtYhw1dR<{Ds{+1yUov5U>os zc0SZYnB9^o5z6G*S8<-^;=)WG?pN;N5p=JvhuF_^(f&7>wg%uNJiE#eV0s^=%m?O( z@VttR*_fYF=#!Im*+_Xb1-ZNq=fN>&>>e*0i2{s1d&kiEW5od$l5j~o{$zucpDgRG0JZyjuz#j(%zVML4=?`l3Ryfp5?pV z3Qeld1?>_q{73KRJmP3CN$-ez*9o`kaiiqrFFO+nY8SKJc?Nx^9(htdN)aZBeZcVQ z!N?tkj%(pB#DWQzjs*^UF1)LO2G_l_dqvKR8mTnkZ6l3IR~&?Er_*WNIFGL?=bQ5m zhON5?R8Dwbdf!CW5KzMjDaJtYh>jWhYIz!tpYK=%kcZHE*sOYZtYra`45MvM+l-DK z7(TnF2Uo>56U9>k=;3A98H2j_p#S}Y0;ku_Iy z4hLi|Z#!^7+0_DhtrV!`8k47Olm8x{vmKvzb?DfW9pUjEeAkIbD-mU_{O!E)Uy6#v@8Zp4b$v2gF68kbEi)KWa zQdS)PJ-N?`MAM)|7FA$0k(wjI@PXdejkV2N80)LSXOPfq6Uw|aa$Q{<$A2M)_p{ig zMdDFDAwN_HnG<2i7TT~xtuS-$3DP8le-B7ZJrmCgqooQ~2Mk(UmFWFDKQ`yP*yKSo z>HMFMnft1qe2}x`tk7Jpi6(y!bxes1@ZMMATj&>MlGzw_J3Z1<_c{8Y?R)b^BSP2y zuAXTq(er%t{Bwx_zDpQ4OJ7BMOoY1KNt?Rg)Dao6{P3=1^5y*J=1R|M@6|$keBH8= z%qNCdy_Yl6O@0qe%i+jGul*AW!qy9>Qhj;rw4QVYPCX}0W%`;LV^+)?pP3bIxnNfY ztNv8I(oy>A__-pDd83&U{@8x}=#fsw&=xQAL71OZrRLVL^Ml4La%dm^<#*c!wokX} z8KB2V06HLiF?|^MQ=Y-sTjw3~Zvg|F_kjdj z4IXKrz;#N&2m}wrD1=pQi*T@SOyrE9V*x#nR-`v%)#%|unsq_ zZ+7BOS5$W8`oOsF`?p%<6VC3nfDw+Xs(3yHfu2H0dM^n#-q7k)F*WqJS12?uO7CL% zdDFCNx5NT1$z1@2e5B#Jf0tfCk&{g4O-@n^XuuD;r z0qon}%Ur+1aO3yZ+PWEH{Cr*i%oVF-@mAGmoBq@M{C@9RY!?dQu7wax?+{{uyl$!% zRy$$EbLt}Dy(YZ1&~zWiZqT5u)nZ@wP-`_>1UWV~dg&F^I>*m4U|JGE@m^Oh5+6z5 zDy}yE&~uMOvMq8xDsI@v1K*Rk3ShrXvq=$t#UmfMzY3m{#x|^3$6iQU+)T0J&N6xj z53LKgxH;I@!SR5D(4+#XXpUs46mW6es=;9HhVv2psP*(L5pVd2y4TYb$G-)wLAL{McC(QJ5dP#To%2@)hOr^KJ6ogK>F z6n7L!?qdAF|IpZK!#cfy#w3u>D{coWHOH+E94y(Hu)pCsNL)(p}g~6X{tJniVWZ)QPR`5UxQpWOcAwlnAicC z64hiN%J|$^GHZBQuXeyldghTgn#g2!mE9G?S(ZX;;nnVi)R6b6dn#Nm8x5uEBy%~C z)(Q$_!b#;J+2qL@+viY>dbLbj@ZcS)S!CF7p>G;h^u8%;-*KY_mWh0n^Czshe7#rd z>hSvNZ~7)74m0v2{bh}bZmxt4P=R;K<|?eipcZr?2~p+ z9%=PtV~tt;8mvJ}YauPu<<@~sXd9ziI^v>Ns6=;TcKaSU;MB|LKW$i8s z^t7DVi{-B*la8Hhc1F6?k!GFc8Ft)2_$QIM=si3wv4ODn#s%uOk~kWo@04f}@IVcr zz_KCII||FZpT~m2uDvicdLQ!HWYA_!=5m--+%23|XPVTyU3rL$#iD5>x8Uz{OdGr% z8%h$43pb!{<^`032WffqffUC&(3D(dZU|RmOBsS$toe73K2R!_2 zSi`e|i9wL0SJ#JgfER0K;yhU7!c6Mbw}U7BQoc8FkGFfwX~-umCO%AqjCtoe4Ga?D zO*Rh-4wb+JoDr6Vb5qtbO2MO19nr51V9?fq{La=8iNsMqclBp zQkj{g2caEW>+*a5az&${Tn;92)X4umNC*? zL~DFrLutcQZh>!-g0i2_P6aB@8}pUN7~DveuvGL!eA+9~;qjFOEc=f>^vYi53$k;p zTw8dVm{S0>BY^;=Dc0uz`tEzxsPIVdSFEeFl$g1A zTsbZXGCBvH3*^Fj8GRX%MZosg!TV(NNlU@SX(M>G#(0zehw<7JL%%i*6$I6A{MZcG zP0qD;=EW}Jj%n=LMmQ6Yn+{PwL2aT#u0a^jn#&d{>t0njB#b_r;{gx8!Wv9kK6A9p zXI~ZXE!VJh@O`X{x-mG`74iwAkR0j6`Ih=VwSC-t!`K<@K56-#NJz)L8NL86SGCO< z1*uCUm~FXF2aGRtO!R_#id-XRWScyFgN%w~dsdC1OEI##f^1QGLjq>>YRk})h!nWh zM{Jpf`$#J~Jk7Qqd?xO-hzsB^D-bZUfD^DJgBRUi7Tsvk4I)h9seQ$@`Rs#59ynEZ zgXbX?eXOftM3ac#3%O|ijl2bA_XNJRs&|RQai0^!>CFh|ftLc6^9?#rbtxh!N!YoF^_^zQG~pt%8Y~Bw`0hP8A8nt@8RRjP(I? z_F9P~Hhh-?l6|Y*iuuWex>f{jC=MRVd{D5PRxY1iCT-t(=M9nb6TP)RRN7xg5Z>85(sY2-{T(Nrd5S9pjdy zHuQklYe?X!5iV#55yCTnyP5_CyqL(Ove58Ok6@0uIx5$Bw(^=QTm$kB=7peTgmNO; zg@u{BK;+58w1jisy*cblIWw0ug2~tzj%#GXfNGS|;HBKlHEC0QR|tJAm>C4apg&Er z9_L)g3&T-M(xctxH$}1;vg+@LDJysqI)shd`wXE2e!FBR@JJzqFBD~169<{Nh5^L2 zK@q9TSv8V6?^w!%CzVq&O^v8n;%CkigNoLd{alH2gjWd@>1?uQk(V>;i2KIaeI9Yd zfzL@VVeKRFbd*GA!G4RvBW+Dmh8f^(gz(z+azYb)FdWg+YQG|YDo7tbv8zCIGirPA0v#+5AA0^&z2uw^9M z7?OzyHNi)b3$)02N#YK1lKWm{rP022Td?GDI7kaQfU>EYOk`^?MYoyk>w+)$pob%` zW9$PosJVgHzjI>L+y>|au+4(uM#U5n=C)z3QyY8NOw!7Ei}Ur9|4Ma=N+oSB?%MV} zZyGyf7>=W?#km*vf6|^JpS5ydrTvv((se&e$w;tb1yY0wu1eGFBpbsYH{ z3CEMOjx;16U6dMZ0)Q{!n;{@%eNyjIY|@DP@$p5^p!~k!c8VF93GUq_nTFHXVIkUW zTByZUYA>-Mp_ebuVxPkaRE!ydunQ+W35Sej!+UK#Aa@J#w!m`!0VWfQ4X0U%2nc3F zSQ5uBnh;E3oC*g$+zIahQH5i{a}u&@q*!!}u;xwxFdUfcP%dosL2J|C+~xYH!>L8l zn{C8cwax&j(L#7%`)_3}dC%a&Nr)6+-c867vp>X|N;0@O>|hL|g#fpP)y!);p4ZZ9 zUFTbH)}Pnnx3eIN(2pG)1tO#}D+5)x zdErCkO()~qk*dY3A0IS6FV4J{0(akXtRiPH2z!7Z=kLAu1>+*hHFouAIbY#4rpl}MO0xf4hhY@Yh6cO`?l;y(tAF;o?%_K|NgmcFN;X*J%+hf=1)9Eldk+GLM zYm~w1oca8e9r&~XCj_nmzIYvb+{io^T(=3Q-efsd1d)bE2k9;LBN2#F)Di{9F$4d> zMa%wz@(y{>X=9{jgN!9X(_+7o&(3}UUzbx5QQ3Tahl0{l_iCAt!foD9)^d%J*}>^qw(2(o4dz*-Fx}8s2?v4e8n5 zbCPgOBPsQ4Q;DYTc!_JKSGod|xDnr#zwvoy?w%!_@8x{-Z1?1mR)lr?IEsL^5I=lA zP7*;{6Pa7A^rhtM(I4uObd28UyD8BV*l&JAJNtW8q8Zjb8y5C{DABW33rZv#d-5s! zt|E*} ztq}sdE74e5deQ8ePF$D(EvRqOS7+RcP1k&@MQq&M^aF(@8aHWQ2yr$I!tKvPUzmse zH@n>s0%r5fC3O#8!jX|E(dS5*SRLTTxk(C#6u`moRMK+SmXS*QCbBZWJ%}^}21%R` zyhl4C2M~y_v`iZ0;CUBO*kd)fy^khj34_=@i7*Yt>bzUv|*P;w-{SRJa|8?&b_g5{E zm3SuNUTu-wAWin`aQaRCp%rix5w7Jck~T4$Z7|}N1~N(I-J=xpJ>VsU2GnQBio2X+ zy`KWR1QlLiE4=t^*@x_3693QNPtdf0M~V$p9@uB4WwKcJg>w-fY#w7N&&(|vWAydV zWqAnec2U&TLgc8uZ3r9)IwXvZp{LxW6vi4h*0sdhfCdWo_H&rnoSrk9{WW5x|G19>V%Iyi?zx1 z(N*ZnZ|&cqB`kM|Zdnbyxdd&2@hOc_gtsOQ2|7x=FOe-$<{NyyxA=a2aqa~Wt;PIF zzlhI#bj9V}hvXx>dCDRm?G}B%@f*S1VxI=GZ0oB9?n@BGCP|F#m=}0IOG^cOf>-6S zpi%0RJD)3mFOys6!F5{Zz#YDXcT`@jm;`$->tF^ zkFzFdH1UYIkPDMXG{u)7YQ*Chf{sFDxCS`7D4;>ik-@UK!H@WvGB)vNly%op_H7H} z46H|vr=aua+Kk4fQ_&i{(xF7pcKf!yO=X(NoFf+%6=)3OL9i6`0#Fz4U&NKfF;L+Z!(86Gg(RHBz;V{^ftc#nOoNyhdyq-VP^|CvZK zk%P#xPdFy-k^Vb(jvi^?q8&3nq{q$n)EFT=066}8OIkiR#4LXm=jLo9?%-%oJUD^T zv@i!rF^gZGooyh-^IS+LwP09qVN`x@*aK$=`m6vkg%F!lVk7%~qq#?VT2*Ie(a1Of z0ih52j>WtHGyHdk=D3_|W=enPox}0|EsmVb3p_h(GIJ{lFvmtIDq!l#(b^0Fwnf0t z@OE0PusDGpppwSsE)F1ctH2S){`fnI^xF1cI0dyai!0KVz_#Sn-r2zyKFU0FITfB% zJ@JtE8J)HaqAg=!*uIw1D^#31lSdWBZR~^#5|8T9BW=^bK>MhgfO&%Jb_@Ckisn#>f%gYaS!DgyZ`V5gX%g$$0JCyDS#WRL^S zO#0D-vA~Vpr$Xfa+BtgG0o8=@BCu2eS0O}U-S+D7;vI^K5E( zI2$4pY}0AZcLyU*sGlcge#s%}fzwaN(Bz z?{HpnjkJKmTs)(_=N_T4W51rgwM99v<7|c38Nca!&#m)I^BO`K%6n$Xn}bkApujuN zOOrMR3xZd@Mv4|*GC=51~zbO>W;{7V>^!IXIeyuWuf<&eSV7QfJA;+I^=mFko)zmGRgcWLF=vCnc1O z?AcTziJito#4@lW*`FmNYoxJ$Bk2$EeE=4Q6C=lI_;AtX;<@?m*ZEW&uMR8`2%KV& zT$2`tW#gfPaK93k-s628x&N&ERnSh-+a~E4F=P`Ov>PJkI2TI*d;I+8SpEvpw>9C| z{F>q2w`cV3(dqc)+y3=lb4xAducp5B0?J^WR9<>S(i1(;LSJ6?vz}=-I$>)mEG8Qh zA&$lhlfF^z@>TaMi(dOBwI=u23NvkVi*s`=gN}id^4F)|@@p>f_jJ=g`e+aL{W-7n znXKIm?Vd{X<5JE^?`lZ1F~s{NuYIYLsv9@FsCdcRy;xwxm1u@J%+G)KUPa6FLhNmqClXMNbs?s(4nuw0hAJBhB&9=$gv46iVblv zPJWy!Fx#m>Nb%aRhe$9*kFC!U*N>9jnQacEdq1Ik#BiGtlbwxLG86FK_EHhJMq#`# zakeIlfb0FXU`Q?;^eE?(!V?)Y&OlkWtPhz9GuR)Om5jpRSd_hU0>u8B+Sh>amP*2a zfLL(RZ}4N}Ck!0x0zAnq%`I@Z=^+VvD1r_9gNo)9Di}^)1nAM@>=Ng!5KRq!TA8P}!|Lg>J|ts_TeJ9r;}q zaH(9I5~?&_sZ|p3+U^Rc7}b0!U`G`!y|qQh3|3L(X{KwHR77pBDxW(eQ4Zz;R?B zBr*%mwHC{1h8{^X3nc&(nrrv?Kz!YgHw}+`bSmt7IM?rc$q$g8SdntN38#M=SQF+1 z_*@i)fgZ4-B-ff_vp$=hakS6vya$8llMT-5C$vx3y2ZHaeqX(Yda@U3T(P8QLn0BO zx1>pXgJm8xKm27`dG$X$7+2&qph)ZWoL|FzXIoATA%usq6q z8Wa>aWw^X>s82nkM6YlWS1xNU<*~@&iSG>xFTyW64GCil+-WCs7R>wLvXA8enS&iZ zA5&%zE*FTy)N-#ycz=;e^rYKm|F)Kf=N%-4bT(u#zabSi$#tf@Vl>DQt;KVzLC$s{ zf5tV3t%WhSQT{W20Psenof}T3oja83?oJt(qnn?-H{*NmfB&v|o`NN@E{|$mnfzdL zBhA?qA=GW5!I6PqeNQn-Y=b;!xORMo=e%8wQS%z-n=Y$dY#Nb4Gslgm7MX^(A|LP= z;{VkG>a#Hh} z|MB}@^^(Ku$~kC6;xcRZY>d>sEoa&d5AlBJ`0`YzpquMYsPMVb|>q4 z{mo0Q$Az0-4y_VPtMY~f9A=yP>-0z$dh&dP?4&ih$EI*c?L9jBd`~f~xz(cP*E}Fz zOJ3FZcmM2nSBu0{rXLZjIabd{&v1dy!xMd-GJRd?E4CZub5*A4jb{7Nm)(9gn71Kr zCK_U>2&XGeGeiZOfQ;-zzw++03|SYCM+%xoPR(*ven$+rm6AYKNQTsO2tY)d2!(AO zrItX#j42EVT(X3w>P|U}&pl+55L)&)K#P7{So&!NJ|Ve<7u|ofaGaj(iB@R*g_^*S zFn9fP1d%vmUVtpw2@feI${aP}e%IDD85|W3Ednr<>OrA{uo&*Uc0DhR1JPQ?8J`r2 z92nyS#tN#>kq#{uNI4Zy!qCA-6@}4+6RdTpxC;pK$=*--u^1o1gB+La)}|Fn4ABgU zgHV>okfLS-#wu$KB?<=`$$w7TeqZt5p*tLGD8C|+Tqcy6Dmli+R!nR482KKD_gJ&+ z2hGhnMm$5* z{w_nZyq!pTHKg>ZA>8%7h+2(9u&_f`l4bpNGdM9+>{|uCkJG-W3e{0(-t{whpS8_C> z0aovvEC|(h%Fx;8Lvhp{%{qr~e*Mam+-l|fxvQ34igh{S-+g7R^1)b3doPhFqz&L# zF@KIh`$97`IAALqx-Da0lTNMP^okqqJ#s+C*S!Tza|02+-!x#|OX@qkfXz#C>dS}zTG=<6cu6l@dp<&iQFTeYTjoDuj-*$6 z9KE*da!qZAqQJ5H&an#kAEQaYzuj1gc{D%A%V?bicg{TDv23IgEE39L2c7Y;B%aMr zbGE1@0w)9>6IE8gcZSB_AgzJpjF>V!!*f`s%*#>v`{b=w;RehtqY$9bG5P7mVJ|8M z`~+ibMM=z7SE=0Xp#}k)xD@MVN#QX6k;GZd06rss1T?tiK5u1zw!);Xh>gn0TA5+3 zkp^=Jt;k6wl8Z`rZ@FJanb!QOJ3uP_KKM;MdzU^v(vSI{pE+7J9{G>{0}Jh*O7uyRv1tV<$;PIoq-O7CyMgy7;g#Ndq^mdD zrqz-l#r7?XI!%HeGU0@S%u%GuJ5@+HC)jCWsv3L_FgFA#3b3w98C5UkfE%ChC7*n$ zlIeQ*3E2Nmh|s#Ol9n%yNl(_9gr%qcGcOvu>$MPjDV^cc3L_)7P(c#+-2&vK%D%Hzt$VHoWE|d_h7*48&*MDt?M}df)KS2w0hiYFwJ z{(hSJfI_~O>Ch7$HT5*dIlzSV1PG!4a1GXi3nQLO*q6Jzf>&r%44<(Wnsim=_JtbnZZ&=hp4s9!&i zqEN{WJ5+20O7;q}6AsRHPWF!WL`dr7!xM_;mi?w^D zLxZkB(6|e2)$8!N?S50)3EdJno@-m4)z%$P7^)N)sPlspWpYvWWElemu5$_yY5)37 zJ}*Y2q&;pZ>@x+vgi4kTEw2b;4z_mNGs3R-4GJq_NjQ>W8d)d0s|>< zt=-ibk}Hm~_trr+sc68j&ux#hbR|Go@S(NSen_9P19%p35#&XnSSqTWM&_JgHQW=I z6hmmO?s8u5A9!>oytL$j>^f+k#O7@kCS|KsV=AZX&I7=-Yshg!*F6?E1Y_6MP}jNg zYe~oHRD6Szj#Q9a=as~t0^35*_Yp5#7%N>>C&H#uT!FDqj&l(Z&`o4oG&IGoB!Oj(#q}T zoXyP^mJJfgosQc0U3x=U+WB-0cWGUI4=t275T&fu8W(Vo;+wav64@;|^+wM&mFPzw zT_09cpBF$s^2j4HmFO3jgY40Y5*_Whz)#>~^+w;uiwHu?%Y2__1mg5wS6w^frc+WjjFiKZY#%a4^xwd}(}fvwbme{TsdtgOM6l|Wbp{_M<$Vb~xt zMi~UfrS-uSj(vPR=CXMIm1k~sQ4ASopVR5Pd;H}I%a)=sM~0Pu+j$}jxgXfi?ll+L z^&y$^BNN@p4#v7$Y9{&c(oJ;ybm^NWAZ-euUbzOnhzBbzepM2HD zPAFN((>%97&tpY0C5dzCR!&DHaM)j`C3aYrC*E=YJfd%Pha1zRNZ{pCLZm`A#sIjK z-y=!NUKx~KYo}|mZ`CsqB;wq?`}+%Xk3>fp7t4GQj{DalAPnX~Xi}5GMR_sR;%RcF zku{vHQg6#OxspO}M59z#o$Kjdx`szW5LpbD<+GJ@l2W=3rJgp;ov}~4wO_Nn5#w&- zIyd%n*P&-QJ0-4xobF_n@X~vDjosL^-~r#S)G?p$xsNjWA>p;{*3nb%I`GI^xcMz{Yqp-5vZ5XwwePo6Yw9`!UiphG4= z`JP$EN3DF1f4=H`&HBBl$u6@xPP5Myexs~wf&*m%wPDImOSb?)+r7)~HM$Z4EA^Ae(>>&u-iyYIyxZpmMf+r(gjW!YNN zZsl`)V>sSju$#6rHkCzFp+V5z#{NQC*F`z$ZUAz$D0os}D=1YPF9A)E5ddsyJwr8X&$tv zmBzDn``i@T9hE2FBe4ht z+(PfXu5%b2#ED-B*}V`6_9=R;usq@7X9O$AH6$i`X0LUaDFkeQIqFYC*moh0D$Uy#jOmoiI)O+HckB#p(>9RYf%m#pf9!-u+CGm0mcmc|(2Xi3`o^ zPY%=o4GW3QiM1*l#_a-zm2mJyb8E7y)N@KMNa7Rr0ng%aPh4T2L$Y(&fyW;zfRiugQxMw37j)VGD8A^1!|IdCAB6B*7k%Q*$MP`n$I{vw1p zY&1?Rc*yJV>n)`tvnme_>or5yI_H9AKj%Gmp}tuuI)1LN`8|I#AzfT4*~voKV=WC~ znD@XLwJBWa0ev)qQ9yFvhC++K4@F^s0#OZXSCTb`DFib*fQ-(C!C6N==fLpQ6voL< zBm{g%+f|UR^|z}+ynkPQ2d&jQM<@$C(>7mQ7=RS8)B-~!3WWR?!XeH&(&*^4E1xAr zuo>lhl@weVh!}!z&<5{6|IU}uf#o|%x_(VNM?d$9&HlHb;douQ2KM+fczx~+E8Esm zA+zU6(s{!R9Sc9ofyp9JE=EhpOJ*Pg?y2q!SHVkQJa7sZd&l>jx)O@*tz3)lXGJYR zlKMJK`Z+@?5Ad=#APws{KJ%NX6u zOR_k}q8w!ej)o}b0OjARQskfnIAP5wE7rQN{j}hTuur$NYB*d7 z8(d2SH(qBRbo2-Oa9WP{JuXjLrFiXddT*#Z!MD;_3*PyF^RN9LYGb!ASTEY-hZg#& zfY$Lyi1t>DlM=WRd%X3)IsffoGM~Sk$J>2eBcHghiAeBv`(~#A#(3x3hK?dv3~*kM z(`2L(%oCO(ku01>JdR?K6jzz+Ad<_9WH>kBu>*INh1T!a{T?zJv!%z^{$WsF=kd0t zk;|ijIQXvZsC7<|F-~gp^X{8FTLRH3D9W}*lwqIOz2e6*eJ{77KFvIe(ODVy7{ZA zNKa*Z#;?!!OLREjXRP~lL^H|QzLwbh`>`?zgak~5`t39R{;&Vw`5Mx@@NWJz!w{IZ zeYP9(A7<^wXCAPpWyZ4D9Y6obD{ena<;9gTw>0yRl7XQdQ5@wCxi%6a6k%-%{;TUu5UQ22;qyw(XY+(*|BFtg$Y!gXdVJ6ZMTm?)sC-$OHIPVDU!*-sGLoP zOw1xK5)UIw>3ll?8K6-1R>N6+UspyD3Q^3S0*vC!s;snOVO}a3Ukzp=J?6#imkzJZ zL-%`ZCR_)uitBSE5bD~gki_O$vPX{HHXr~I8x$+t_DmWHR7kIxeG?FMG=T-WmFXID zL)SV|PUux+VU5`3f6(KlOVmLb)q?Yi{Rx3>H-`m>g7zeA&JvcT_qaHA!09!o z^vMMe;Gg=STUd&558=}MoSNa1OTaE8&fgTmWRd1Q6K<0|Q#=WumO_UD5E269)>06u z_qeCTVbe-w0y`&40dPmJw0_pHjO%P`Et44uLVO)q z_>_d|U4D;g7nxu`&t9@93-&??&T@V{)|X(t&oYDcPEz7?%J_0YkUhn@APUc}i1oU6 z4ZfhDO&0IC(X>81Lo~AMD%P#VGyEn?%GBGkW*WvsL3r;%Nl#_JCURY9fBnQQtZl_f zRgSMh4L=AYKt>tE>8enIVWP8Tz0WNT-uG+L+^UTvRL!rMG`D4De|F?b!4`?-B9pvG zdWW0vlp90W2Y%Xmpi87sDPd;}co(*5lcn!;dlQqE5MLGO}XBF zf3L!iGdT(TDr>x~6XhCoz8pytAG%QrL?sTuz~wm4ChxfBNfZOV`^`tXqAD#?hbQl1 z!mL)3XqgOx4A?b&kHdeM!O8UZ;dFWuSzbF09W&Fv?IEM_1I8x_8mhgl^_Fy3b0hnA z26Q+uO0qoCJu@(L8ZNa0H;-4W@C&<}pgHy1v$^1axGO~R-}QJeh^jQ8LB z^f#QZBYh^>*tv7kOV;k%_KC(MmFbg2W3xRXtMil|>FH#hm7SQid+LnuDA~I0byI^8 z)-@(CER8S)4Lcpj3vBm%MtZhNK;enj>8jS%>}bPP?r6)bc2gE5nr()8KY<$@V0Rw? zl<4`$rUFf`^t7H_J$1zE!h>!fUpGq3|3n-j(8(ETp3eZ9wy;VmU_(I? zo31Eqx%qVwD(Kpw?4q^_FP41ix5JWa+g0R;g#V)DKIBIIdffQTPOpB-W=Pe5X2&x zMtO!*&}xjYfGGqh%gfn(u$JXjsD^bR76v9YMZUKl^JHkf8)6hfq6ERGVx5YVhlB?v zG^`I6MML0Ep+Qj2!||<5fPs1n{5klfTbUoK+~! zDH?TL)%Y9Ns>FV{Zsxkx$cwel%Io+Y1*zq^XQ*~nDBVj{`rXl^dH*&dkUoVg3X0sF zt@e>!1bpqgCVGwRa5osPJ^8~9#ZY=(A2imOBD5<#ch}YsdMSismip_YXarA`fiM;EJCr)cI# z!VoPqUcrOwFivPlXO!At0hk3JIT5dns}4z46>viqqJOQa-(eze1gPo2)EfHxM4Nt+lv9JOuIDF zQml1Y-TeFQsiU)SX6~M$-QuOMOc#Oz%{Gt0-afuZvauUCM4oy^&L$h1M{j2$=;Qm_ zkMGqZ9aWdALjBnB_1ba~m1-){OiDd<#)m}~McSrys|BGT5Gt<$j4m%P+f5)4oWrX3 za7Mbxy|-2clEri7U+@7w$cYt~Q+d9L3vab$;+LgomcBZd`kb!+N8}`H_iWcG()_q2 z8GGOR<>JBD+27Twa--Ce-g~6ke)wg-{VYXg$H9Yb{?T&HXbqB(bIRIajX(4&?*iB; z$hJZ(sJ%Kd+>rj+4Y|b<>^+DUp|FXj@~7O~u*A(XDf65!nMzpNN}Kn+O-(XYX+>T>l3KpH6U#1dxLNi z#7E0~S5KF=)9?3!Vm^}$H@y;m?O~yLYc1VzR`9Gef(oUaryCFu1oL#JvxoGu9%bB% z^|wimtI0_Zt^i8Z1$D;Lc0Kx7V{O`iaO#4^04^JQgdjk{${A}b<7y!^4nm16i6yI=|-TuTv{Il8uo$qwh| zUg&+LCI0K0jH~ZxM!-oW<&kAA+0jlJ6<0kEm6zRx9<&4$)>p5+?!>s!%5+7RP~!cV zLNZb<4Y|RHA_c|U`Y4A_hjD)1>?KI|W9?z|Nbrka@%hkG6W~IUyRg`>1njDLWs^zTYsWll6nl+eW~6rA3fG1V^+eFXF-j z>R~&*7OMm>Bl*0fUjn6@R^8ld%`HE#z3(Cc3nYu=x#mf8Z#-7P&cF9s+ErVYiL_hX z)BoT%ev_{!wlR`$hm68?BHvUlQ|I%YdHnmId1&!S&o-TibSN@|_x%3$?mBv-*&e!E z4e3()YPLm*K9_84w!3BSX1nBvo9C5iqr*^@MfURi^#tyDT9@Brn`3feqSY_4Axybz zN>kX)o5fuv=auN$7}~u*BR%8e3FOE8>wQ?j<9N-5vMLh8H|8J6 z+8u}^<*WeG!s9TM_?e{nwn>OA;MxmQBoS0UhY?Jgi47XP0|VAbo-O0qoXtvE%@S1y zn#LO$mbwV2nNh_yM)PyMiiBAnGBy9c@@I7Ae zBH25{Uf!0%LY_@K$E3iB#x?lfuKfe&Kwur!+T*b22lM7{ZV3ru7fU#&Fhh`LePy1# zYJPUnWm%l7l1$LT#8j*(s_~iq;%w^-@##?LAQ%qS)ksxd(U<0DfzZyHz#&)zY>r_X zcq6SS9(<{mv7P1pIM?kU@_yTLf884~0Ia$etc|$Frpb!6Sp6HkMPO!`SdC};bD!9^ zP2(BE@(q-^)aBQl^Vs)G9d@Vs8) zsGnPBf-w;$N9sW{7MulsDfX!rx)9?gO@UWH12;7cCvlD%>&cetGghG$KBg{A)mPH6 zmg9^;6S?prHZSx(cT*%;i?PUwqDs-RexqgIEAjwHITz_?>keVqn|TmOTeQ%hpck#e ze5EawcH}jB{>2ft9J!fLpH zn&-F)`k+ukKj z@4{pkF1Ka=5k*P5nk+Q-Zdb^Jxc$(BSDP#zYeD(N;bH%EhkYMD4$Bo1GAd=Gz6uq< zD>n#9K`LG3puhvH74d&>X`MPx=si!bXQiK{u7oyqr+P;Ep?dLK9zM~-o_O>T8zGZK zN1MlW_wDqEujkOZlv5pYzUxiDZbm(`73N9`O+yUxe2J`F{Yz>0bQ6%az2ML+J}F$A z#|h5Ke$P94#JA73KO;Tc-Yfl>gg2V4dZibSw1s=W{d$kITysu(*QQc!9_gt>BjMN& zzvT9_Gn{RM{O1X(9JyWC8$fs~gfe1hM4VZI zU_`j?sP+JgUDqD>a^iatXSl$|wqPfJe5*@6o1 zqln@=WpbktUHUb0QeGx5C>}fRjUKpIo(QU;~ z_LKiQ9`hH!BT5@;r0DYgm2_R>Tabe2i!d;QiKcO@KACVhCnKEhq3pZisTB5?AIqDC z7bOT#D{!a#UnKCV2c2oLaZ~kZ%b54{zknI^PM5RpvkfRVL3T8p-y$WZ ziC*+MUb`k}L!8og+}lMb*b$qu$AXTnP|5zuA2Hqq`61w#L9Z>DeyD9k#c`%PZGb_w41R=jrn1+cG!Dm)!2jBb{M0g`jZp_f~-V zU4-i0^h9Gn^ysimYnPY)!;E+LknWt!-YY!;{Fwi_59TN9{1CLjfbPI@kpzBFg8f@XwMWMx+m3 zl7QYJrH`+S7onH*ZiHoBJgUne%VQ3l;hBTn@o0MlX zSs6`$T}vOkjHZrvUi?NZylXhG(d^pKGxek~5ctvu%4xtHGr-V>bt!j5kyOgzYNeEp zKX5JS$&msMzH0fN*fS!_y(jf{#3M!&(IQqpt&P~@BZ~c$&-`Am;9Ulm)!JgRTQ<>L zN>wZyLr;Ai^kdKe2KOWdgECgHr3rwsbe<8MEpedq>$w{+MtK2|>nZ(RdDGYm$y`S2w7f=T}OhTnP5q>EQ$mS<6UZu7)-R@Mk~D49`4 z1SDebzQ0cBEm1i2mF1y|cTzIS!Lnitk85Cm%)At>-~=P47;RzuV>{s)NjylqS284$ zXYh4Fg#DZ}_Q)t3+`NG-*9e*w&mR(Fh$AVo@=MDH!s}(6l=IqRhYzDU^<_I~j8cLM z{J1PtWQ;GodjDFo&rf_g_$#jI#6M7j<~;WbeA{`bd(I|5w%=KP?x3EL|L8opYO?dh zIUY+G4hjv8HRRtX%aQhSlrr;*6B3E3+<4F=D+g4%>^n81+6LItC_KKD){1KfU@jqh z(eqpPg6_tOl;8Oa6v(E@{0Niy!v!1z@`#9l8K6CB&LMEtWIOdzOIODS-HD1OEK$Z6 zd6LDXXcb|G~`CH0`PMXz;2C`aX!{>zSKFdWd1lQ>qwf$CZHE=A#fk3&G5K5AI z%lYk!A4oeV?kP%FUG=gbdNEd47&J*r&hWfK{#*u0BN%CcSDZ=rNFFHyuSE$qk0L|D zP~wp7JxN`lNqE}llF#3)T-gQo+&Olk!_`MJvGV+LD$w&a^&wtTb)|^%MVlV!_g5vF4LTZ?Xe!Sq3CEs3 zqeNrn?3^@9C12v(%W_4tzY_sjNvbf4cJt;aI;@K`zDKTMe0Oj6q)4+ZmR^3QQtTJ_ zYkpT2Ja4+?b)=_tfUPRg{`Weu3E;=xlfW;b0H4Pp_8NOH@A*LVH!UPHEjz;wSo5s5 zC^UXluxWjH!;4^r`AD5R5ON}Ghk!@K=Xp31@J&J-Ghw3=H1tQ}=R3`*4od{Yra=iI z(UmwV74i+mtuDB+#Y0R$s34L+P{7zgWKIktyYX#$4yOxqWVx>aVm1Zt4GL*1j7E}> zOu}QzY0HgmR{T-|M68yxdh!WNftjBbVbH`gCwSskgd>wTtEDNySMY|*3EXtY9m8`= z1y7JYa>90?yp-KU0YA@tF=-Y{WSpE4B!RYqj#x_)T@cze)J=qLXo~LMhd+COS-X+} z5xZrW+c^g628xas1aW-6k{0h*cC8ERTYcxNACB(_e?Pvij-=%3`2C&vK85<`zhB{H zVe67Lcd2}GOd+JT^ysH>t^@-@to@1&`^9kO$d#snX|wRFdCvU81r%jTrKpqw<*8-O zb!jJipn9(K8r;8bFWBgMDp&m8vle$h1Euaou!^MWA!VK3A>hA9v^ZicWp8?meH=<2 zg#}63#yn+nUJQR1?3b2%+dP{H*)y+0Yr?bQD!CSXk{kB?y(%*zBwM*3_U*dw{X1mi zW%lrpghDG7hK$d(rXg_1eFmE_Qp%~J*FVF!1tnBXXoaC`%+H5V`24(BN;4k%igIc& zTDICZ6c#El4Rq?ti;h`c)%ko1zh2ulk9P=p$$+7wO%un}Q8?Vf*kaxa+uNi&%-s&- zi&8c7|40Y=@X~Uom^BZNyn-yhL2>fG@qLqG47wi2_b;xNQ%3Gr{yrI?mp~Nqz|N9% zUZ?iTa2Ce^hCm_k8n}-C_vK6Z`QnJW_dyA1A(U$s;!h^P{d5S_vXVkT{j2$rWw3%U9Jsf|QG@72V4m(?8=}3p30QI3u>4G!d zFO+E$h5-`0Z^ZGC7T+t*v?}B$(zA+p@fqtd6Nt{&uvZ$`X%u(Gd-68tfr?Dei(J)6 zw;UhRnE~_=m;sv`W>>Re(&K9QY>ZkQq)QhPN0~t9h=*NKnoK+^JiXWx?tJy3Q93k~ zNzoJd2aOpiuem{0Y!51r@^or`hrADo77a$zAah?UbE5*`ES@ETw38 zHkI!CyneXJQqzcVC`PD|LnLr8GNyCxG%_iT2O@jcT=PQFsaP|1^Eay{Jspzodw<+J zKb=cD#`@CqL_hIbXJg?MeFQ%|BIg^EjWKHZ^7yLW=u2D|Pu?*C%5}GH^}0X&Cp(3# z_o7UH$v4!70k}V?G8Y?4Yw13>E7qr89{;^Lx&7s8S(uH<#%9~Q_je_*So*3K^*%{B zcBb^zY>erjVF@+9{|4R-aUOh7KKg~D73L#rm;awveBjxB<(tDpd4_N7Mr$6Fq}U(z+;}>(n}<%S>%0SA z_7USiS)!^OID^kH*UVK~6y9>}`bB{SB?SV@KRD4_A>a&x?BG?OG61XV6r|;TaX6pU?8Le&_DgHI{!FbPP&mxCVX6qd z9t?#7sP*KbG7x4L)?sBOb&>RdR-=brJO8`QarrI6+K5wU`kUYNeV+|znERJ|2gAn* zJytBdpu2IfG+f`=NkiD|iJB&qb@tKXyE-m^Mn}ZkZoCEm7Q^aJ*$6{LC|w%skWYco z5;)IbMu(#-&q5jBCX)09*GIHTT{Dyy1HM`*7K{Ns3vsCz#fXq6?1$mnkn_fXvPPQk zel)?cR)qNI7f!>;hLBSYPZn9XitnoEi>^iFeaIT#NJuzIePibf9xGsI|c^FyH z!3?N4IuiUMCMQgW)UZBnoo3;Ca%N3-(>iu?7_!g?S1M|UXXZ_j1D8+POaH}nP)3HX9?0# zuDXWod;o4vW5_hTu_PJy4-M?3nHK#$;Y2%AXV;|{-47QfnvG|q_W;n{*Z6LcPtb#WiS3>}(yl7|lP~9C?K#M)IQu5> z5ltn!RmpAHzF5(Y65Z{pj@*hY~$4A$4J^68)l= zUGy8`mX#Y%KII5g+D!i*2k%R=vGCFicwT4ve^`Z$Xm^#EKMTTq~f2l3|;wxlrCD5{9{#$qBxO5O&(4fcvOSrk(t5VMRl|Y)_A1On0z~hQ%yH zywZ9+7*0Kh$#c6lwjNgY42PoE%fnyOnmW$DC`o&Mw(g@+q@{qFEg2|<^cr^ELNN8; zJPFP?GB1B2Z1OnZD+{3_73-^l#BtPDgTjZfpM=L6`e+^-L=IRepn0V3Scu?2DBAL( zU?J|+*>o&nl-V!Vwh-6Kn!*E7YY6MAP*+R#-UGGZqZGV6(-b&lX9gFeo4;G>lt{Yg z;_VEfr;|m%Y|UDJIDiv(Bt>c0$+d3%Z*peb(>Qbh<3flX6)ZjVxb0zd*QQlqt#j3S z$!@>lHOgEx!__Nm7YN)gN@!ZS@pF1YDh>!j0tH^x5B==k0%gZ{3pn zK&a~3r?1^%ApU{#J^w*o zARz`JG$Lq_TSDR`;>~>lGiXB7({1{aIG%89H}0JB^-je@psoB4oTP4+$911123eRFk)a*Ik6g-_pZ< z1kcRmhz!B5Pc{i#czffy^Y^zm`1o-| zB*R-6rLV*{rlep#JoZ9sey+e-MgU!{j6P@lWQhnq(Ay!^@F-blck&cr3wn>{a zD_r;YD5Jf&MlGY8N>=q{5T0egb$-4!p2hkP8GcPVAyP)T5q+K8NYVQ&4IVK@$w(o# zgwK4mM^hl0bkMroqan~~jh$2|BYX4@q5y2{GAiZ~G2Yi}Tr;n|G76MngY19B>jvRs zv37jjT(F+PsqfzB9WH`raWM>~;WcQF5?RK8QO%?(kHbi!acx(k+1xYD9gKc9KF{-S z+BF{CJC*6Z(RtaF=#S?XSQ3%LUqtlqM<0C@KYoY^JYY`F*O(v8hS2V>$f`_t%gLmfC)q?^f6&ID-on$@X~BSIB zZW%gC@jcqySV`|ZFhr$x6$}L1&$ZlRiE8(i6W`1XM$r-i;S6zOjx+@^l@tzRjRJ;x zFGN?!@FC1~&2Tvg&0&;j)!Sic$qMdT7#rWWBXKwGIS|gQtXwEzT*ylD?cD|iQb230 zvPp5;5{OvuQx&%0@gEx0UkUbGKwbNg>b$K&INyjVNy{D?8;d* z+m)W?kwgmxqjCsoY>NH@_9Nyn1ZVa)1Z)cpCuv?6-h;$jz^TuFoBOO%t_ahI0>*yY zA}BUNHYOVa67g)OAwlO9p0w}`wPW!D-LJ9Ul<&vqE9bf$SGy0LuLr15dNYx`wT#&a z1$Hs#kuF~QOEa1(_+uDZk?YR&OXHu< z`DLL6f;5v5#<4bqymX#_;c%~XCeVM2P+s9@4>!kpZ>b+kKJ?LPmbG-D(P)byjV!-m zEkd}aQ4jOET~*(;%P`GAOl6ve04aLE7<*~Z5J|l3yrCP8lRu0KYo{?K?r*XL4(OJ# zmUKbS^)vBP8_V8B4kM41lwE?Z!N?|hcc644Ip4yovdTQxGk0gO?1N^={=D}B?KE~~ zuuM^k2mnhu5g+Lpr(ztipkdALx26P2$S`Z|m&(tlQG%i@LIZrwcv09UOR+9NhI}6t z{(WU=J#&Kj8yqkmnhZse+qeepJp>lVoR+93V^Ao`dz)O*<}Ydi(6CbY25CIt)tpF= zBu&L`6`3Lk#LIP&mImPOtSfK{yi(Xt2YBDW9MfRN9XiPKBdR{;TbMcleDG8X#rHzM zm}gPceF>h&bheDq0-Z8qKIK0+q&%qhXZ~W6ZhE7?^sjxP_K}{t(dLz&3iNbLPGx%L zO8@w5AL*@qWBdNao{l?PPwCyGlIQMCe!dl|W_b71F`r%qjC{N0+c6!sm>VS%2Tyu^ zbN)I`6+bKH{2AJ3zJd1{S1UT<8(XIby0ukOC@$-R#QCRoJ;S=Y8-KPA%mZrzn+X(ajG|M*)$2wVn?Ic7CL68B)($3iG7?6nby^e!V@O;^IuqZ=@B zvFOrLB~Vg;cifjxrShh%kgmxs*%uX+RdH-Y3S)?U1@QpoZ(x=x($TUPAUbV?li8h+ zS>wNC-=r}uvAh}kOK-QgYwpKlDRxGmsidRNR0P{&_x|+|_xi1c9?Qnh2Ly7$-%2^H z=h+=>_C^7OIjN()TcoDu&(lH#xX+j6dApZzw`*Y`PU0U1imOzGy}z<3zBoL zX_V%edw+H#&^--Pd9=5wok0ryO93sx+l@517gc=AtDxmQG_FNk6gf?c^C1aH`K^4%@bX{%%y*`ew_$T6mrO$5NoJw>?^qSX+6nDx&KsoTrARg855i)qE6v zk}G*jTAO*kvkil zj*75pyqENt>o4!I)(?#3XfR1q!?8-6ll~mgP=5wO&F$cN2TV>_pr(8RDubAH_sJ>l z*=T&1m*QR%LAnk>w70_K8jHW5@)Kxf(XSQq8TO6zo!NYhZWysJ`jAhsn3M{tP2&!2 z$T#{#a87G{`Aa)@wA;yR4_&E3r)SQGojAk{RF1qX?O0NoNbrV7hOvL(hP(ofC8R6n za?wmVNEtGV@=EgE1$V#}BINpzD1wPOfFWYOgXZZn(o`x=MoYa|L9Fa7_@peay%|DK z>D;^i0vO_X-R3fOz>AS_27fr_vqXS`$wh(hB{zKeSAHcfX>zP)9J`P^1#E}3wJ6dZ zqW_&A{ujSMWt!gUyM3f*yD8IeZhv0NedX@I{z#FASNfe5yQe<)^EW5yS+(wY?$Q3y z4D)_^Wu4FlN46l8y;8TTE74E4@AJgm0_zoi)A!g<`h7jpx%%}?aZaKE+DK1ywx&e? z+E>;GOd$1Sa<=cF9QstExtBDQ=ziHOIF?GZKW|f_ZUeVCAJs0R)!*@GM;cT*S+jI`5 zH}il16C5=^r)OYMWLa@GD!;N)X)vne-HP*dWGFqu?XoJo+1+s+=SB(&DhKfGXve#~ z^v!!9oA=qUCa^ZL0;@Ie*{}-phZ{DEa2;OcMtVen4HV+Jy4RVd>a8ouNV&-8I*1Ei z;c<`WdDuA}W|+t^%G;T$8gPw@N*`x>9H6~Nx&f9qg*WvIJ-0Ct1}f6}%<8xUy8wiu zKafCGLQyI9nz>X8#8X6*gm@l8FT+T=?Ttw>(Dd-myN_d?Z&}w?exAP{jqyX^ARX!6 zO%>#19Z@ZvUK;lOB2j?tf>e*GtX(=j-2Tq32Hlrup_tPsR!S7|ogvk@bw1E8|5k5` zmKe1J3SURR4tRtE^_wWJ`^6Jpq_<8t0bdV!*X9kd>em6Bo_VJiz4%_qm0l19=w9R~ z%Tr2Km2(V-(rP4}c8Wl%yH6QKw& zWSz5=Kic8Xr@=#@Xb(v*sDT`WC-s^}NCiI*I?Sk*_&s2+%W9`FpRmG`a0m`~rOBIm z#6m{B`Pz(V2hG&Ak?WsW9s3NE#v^RpCq2>tf#a`l*niJ9=&E+^-V# zZ;oJl9|fB2&lTD|U;NZ6ZokfLu96bPRKI#vx`q$(Rebw3?Em$hrcAT6d9U70SN=!s z<;aot*m`{aJYw&cHYX8r`m~fxkMvZaJrto88G9pDjgF<>i9l?*ubLCW%IR|EEJ3X4 zHSC@*uQE7qo1SaC9oHKpdPW{}{E|d$fMJj4vE*U6;@b`~MgI?rcP{kfI8GHFMZSh_ zL*+!;U+b1aZPwy>zn{BW%SnuJj#lZj?}<5}&{+PCKAUIwV2np7k~8-in$);Fi$l*u z&T^osK=XZfInu184T9*5{Q_Zkkitub?_3uTEEWIx?#psi=%0EByoXwQI6Sw;nH4o( zM2Ovpiqyf>4;PG6a1WX#YaaH>yy8SLfH0Q4aG^W|zX-GSxufBu3Als8;YCu6rdKHQ z=fIGUdV87uHUIne22#(> z!?|Y<@p^lk$7lchtUtaTx9_*Vr4-G6dqrKTyiT1}0j_>-!sM;Q@1Do!d72P`ee0c( zd7chGDq+wJGJs#Poeu!IDgz_wGe5^67!xYU9|<6gN&S64_PW|wgDnTxMRkpSQ~2E5 z6@7hcwH1$t|FLg^tzC`~kgvJNwxK9&1m^Sa^XE#hV+?^#{h zw-rR#`|N9^vG}A#c<=zOV5=gRUod@FO>s)NyTTrIMI3!bzV9DL#DWl4}4rV_IDfi=bQ)V+u6I%#axUF z`g{qzzRk5Bk&+N0+%LS4E6GpESGK@)Z!WhUx}@1mIF`&8*IaMo`|)u*E|c$!8$Gn! zcka4z!^P_j#$)#ThJQDlx!yisZ~Y$n!g2HM(ymIAJ=tM`kAzC^+v!w(lkTq zPx)(T8jUD_vPyl(g{wU5%V{dn-;1rUb_e3imoNSAtS9wm{o!se>96nuotfRidDf;L z_mRXN(%<)-==1BRSNbcP1J<6*J<>C6_?4I!v+k|$48>de=M>oAuf5lehRPbV*jR=I z+&()aD_Dm5knns5&akJK53vO~+CwVJGg7JfQuF*&nTQr6e+}TT&^c6}rZ8 z{*DEp(1eqOx-@jfr+bCHu zJpuP^+>hg=J(`n8A)|iopt!l6KWS?S2;1krDs{QStQqor?t^!vM-2C`+d=6a?O389 zWNj-2d^f+)?Hv2oBW1Mx$f&NMA4FhhRJmeCOE-!-8M=)xJ~4FJ^lpVO>xyfZ)w#QO zW9LEA_ykj1&fvDlAPdm|Za|U0y2?8nc_U!Z$4$KBnF070He#(W*TzpyqmE-4e~1^6 z@5-5kWAT(WDf;JAat)qx&@heVs7MJ4sVtrvb!h@l19T_WqhBx9l5RUi4DAo5jYy z`d~ll>1dtG^sk>(?e_1l;KfB~cLA)fv06u11NKS!#-sLrcX=PGb9VwXI)g-NNcZip&RSEVC-A9E-zm@!@}vE;gcAK|>#NzgZ`%C3TW0CmPK4UZA8Ez`Ykk&pWo>2ncvcG0w8Rxr-Gvjm>q!|MhOOK;ggTXsy(hc( z{uQjP%Y?nJld))@ew0?_a?v8E0?QOZIb%0PAJ7I>NdJe>b0}>aN{?)U$r{TbhA} zOgYv_b{e7CDqPhFEDn+;vRd!Ws9z*Kxr<8Z0-6{?_Obrv`^Hh@)jpnknAP7#r-bX= z?!dz{7nR2bi>(FCLFCBk7 z?yatG@$We4TYpyZ0KKOvcTYpt(^$ZKJ*{)RLxJ@a5bq*e6tt+pR7$A#`B;?KzP9fB zc`gjqLa%oxlg+-#GS4T?3PVW_2$A)#q(U`v93=#&F>JLoH|lUU0$l_@$3rW+N?a^@ z(&>BrTPAs1=vPDIW=bzFG`VEiQHIAMRz56y$d(> zpd;jgdNoo%Fc%D0j&4RSu%JeQk3&l4$aU6-QA_x)sWNIsmvIT?8=k*JVot5+4hNiB zr?%Ear`4{Q=X_UfihPQ;r)zx--qeii#JgtwP*_fwF*N|cj4G>z9b)iGhMurH^M1R6r6=J^z4Wa?&`u1id(ZrwWsXs19!jh`Omw)wFFd^&gfe-?jhaV8wv09pZ)XaL49hT&pheru>7f?G1tSk z?XP;9TNp2Cxun1qV1D#(w{wdUJw4HT zgXJZW3fo^P_wocIiT{UhTjXI~9`JZY*zN7_43C*P!ZYL!d*Cfql9?038DVH9-a!&T zg8!&J%7-oGz;Im=4G&F6sQ4HRRUD}(SDvw?63R)9?Qc+}SR$lrY!&SD;!BvT=gMI_BH&}@ zPKqqdq$pGX&X6l;oC90uVEJz#+_;62_9yRN!o*F9@FQ;da);B-G%v!qQ0CwIoa8eR zdR=dm*mqV|m~#FV6;eHHHs0=QH#a1?3UeO&VJ*;p|4s7T{2L*EY2vOGCfv41)BGI= zE0JGi^(fsF%M};ca*Hf29O3p!k(b!QYaJHa)`Z+eU--H{D&&_;=#JjBJ~5Om(>_4^ zvyI|L!qn1^59~mN-KC*wUC#(yg%d@quHH7fy`fL=+lL&{L=9r7z zF?fGoAE-&LM;ef<8GG)GQ8Z8-b$&<}Oryuz@KS+m+=0MQujA}LZe>G^O*|1sJJfoT z2CphGJ2I!0^GkZsbHuqj1Zm6;w?6hxZ}#8UV=UL?(X&Kk<$yHUNj^7z zv#Q*jJgQfAmRxsPRk*0jc3A$M4zy>pc8>~F(K|Cc$wBA@J) zfx>Cw^`j?pht~oT%#$?y&D>Bc%IUvtyqNr`5(!#Qv~ZEn#p|T=c~a;{a*>Z{($^zW zNv_&*w6)T!B48WyiS4bj4u+w6zs6B>&D}QmoiYN#zSAIZByEoE0D)nslS3yAArnZ9 z{vpkaN_6d1QSfwcD-f{w69u?> zY~i2FOdei+@v!hnyf8dtC82&@rh7$NM^xWOK9^}5Bc9Jxz(YzlG`VA}nTp`m#Vx|i zwZmeK0u$DBnK|I2=3p*DqfB93(J)fXT095SW-OgU9)ZBr#F-W&>n<}R!_5hIN!bS* z5|j<0kIUyP0MBg`d)4mUdAM&2Jlo6L@%)9qWQ^>c6}zXik`cc`g?iimYW`gupZgZZ z-~Z}45ju6SK9wUjcZQNxnLcU8RAhcH{QhKNVQcTJNN4xv%V(nYtbq1<>)3j^MWyan z62-@6O#73ROP+bsJvW+dhIH@l{SU=s>OcB-|9zX*j9FxCS~=$5MVX$V1x$9A2NmUR z2r%25x%CwrkY>-3=Jr?I^H;Des8k323I){gE7>pEKvmBz@G~5T%wmuj`*v627OoKH zpItahLG2i>q>mK)@mZ<7kNS%(e*CxN>iJvaGK70JU+ozJ6O@K9QI-4}4D zGRB;pQk9EZ@Z%xS93oi`v(I}CKEE;u9$2j(kETUe!tpiT?An{88L{q;gmCyiy-_V}h6IZR@^AC)kA z_h0emZs|<8OM{P=LdNyf`8IhkB+2e?Icv5IM2k(RD9mPQ97Qx-Ytc*NjZ9bK2#!96azC(#^B}RHyBr72E<<)}A%D|&7xiuPfg}|{W z$QE?SX+wB|3ak?JR*7qKHj@5a{qebv^v_rKecNAIb)h%XYD&F%6Zz4%zaPv(V*;lo zmFek?{<9w>srpkmI3E@qJ8RvMx;tCBhx8M^KZU$`8 zlX>RLX9cuZ)5TsF$ntp}bh~@?w5Qnbi>-U5yX$@eaNkpGwvTQT@r`fDhaY~pSTpXz zyIW}YY?&MVb3fyMi2!%4#s2#q(m%ep#?0oZ?2BMDr3{us2&HjdQhqtp6|;~5!*UEB zQ(sh#$G*l*)~xx!kt?{PH3mezVQ?od7`aMVB`q_BusBPi){ zg2&+)cwSntW53S0>cu*y9oD;`fbk_8X+j4dVj#jo0ohvLwu8^)&<_aB@!Ke{SQn?j z{G72C>~i1R5ri!~H*rL6Q7OmV3){sOV;GN~&MlROy{T><*Gb#Q(EtS|u&}^U|7y%F zg}d4pHwJ7C-Yh;woT8%6-y3_aKKYa%Q8R%1M+$`;&FfR*-R`V@l`<&JOC!+} zLn)^A+>y^t(_-Piq1cj8DaX84?B&v@64s!Mi`4kd8qR2&^`aM}=XOh{JH**qVzov( zY)iOZaIQV8)=a%A-=MX=7v;p(J53rL1MY=f3ZsJ*;UZlzIX`$^@(rA4fwA6mX^L|$ zVcyf=8ZxKmdbXM(DXi}E0vw=Br1V%HZN9YDE4_BIvw`~k=!zcZuV$rSCJiTw5BB%; zeWz(?wgpFLbK{f~)V9_MTfE45#IQ=~a+r2yx(&#B-}@-5B|qylkk^McpLBzdW*_!3 z=I8eMq{Rv%XZ)?fgEMZ&LObvHu2?=I#(U0}Yi#k)crfn39ne8*t4QSzTGm#Zww^CA zYjOb<#8CRJ8IVg^@6WVm{9e}+i>q2A``{t|H>#ylq0haJNhYlgEf!^tX;_;>10@|5 zaY(6R4T?9(y_>J(ryUo$4s|1~ZN2$)2Tr(Xcm%KSyd!C0Pdl;x3%ZTDOEIAH8_jAZ zY0NS3G#2h9?-dvT81WZtb1X&{!Q6YXI>@!!2;-tms~}?3Qjukm&2^b-;!V}8sUZ;O ziE|TaxmA^d7MhVm#d|%RJK-OHk88FJGLw!fMo1s{h6gE`U}+I>R+`Q9JprCy2dh8VZAnIAn7=VpnqS+H_8 zD%8G>j|2iwi~TI-%%O%uI?QmsFbz4IjY-D-dAh)m6Yu$(P92!zazuECqDV~>mW27U zBpz)++=s<+ac3t}X(Q?!AV$4tNhzNqnHVX3Y7I2*kTvuhs`nINP+>cXF7C1V0vq&y}-q?vki*HzV1VIvhj57~}$tVTV5xk?qq0OyLoM??yc z_*=uJ$Q>Qa90WYo`)*>bPZPHa&b;S3Y+VERNc`*hegPHYuO#C-8$aR7unBAE-jxgr z5pnMDN~ydse=~|1mtbV@^eIYrvgoahByeH;NERBx{?HN>3prop_ccJAoOJooj^> zq>bq@A}{tu#{5~yA`l#79!Wb)pvZ?9pG)%qoJOZpZP9^Maf+_w+HB!%Wg2h%~0$YZ{ffqKhlv3tYQ34Wty>`=?ioB z9DSjSTxLf>+pFpOV5@(Z>q?kNdpX(}nx~LQgWX5m&{9F070)c_ZW@ciCDVf1gpp5^ALE|hW|6V!MEvd_em8#j{+cuWQn39M9g#0zrat9LbPw;Q zL-Qwp+W&m*8^2}pwO`b!uYKd6{{DTAG#j@)rXo!z>(mpUp4Myq>ud4K-3`=|G?xHy zX6aGXPf3y&D5 z+)vxg3EBl;CnJsVT}%!?F*MliUjw*LOh-Yybu66bf{p z36#)HS)JQkB-1my!w6o>J%aO`mZCGn4T9$X# z7@MFkz)6)2MuqFW&r81#Jz0nMZOC!AiYa{Nb48ZIM)b4|F?ko4D1D*PuXkSG#hNz4 zK5VJ{I##R}2$WQpk9p=EhQ9nRsQ7O0hEvk>?b-2L(5~gF8{7}h zTkT6x*3Sn6E3-#%i%dpmqE&-L4(TZ z+>-2atj`843C|0~6Bk4(tk7j%CVq;Se z{EgqxyMkl0bra%dcVGXDg8@VqVO>S|NTvoCQS;$ zi!$|OM#|r;LZ_P&G~iGA-T(MEB>|KaoR?c#7V{jQLlCAicPIFC(CyP49ZU=QTv}af zqe79NBe$$S&LAMKQ@i8m!oD{_NH&3)Pte>OcR=~@={d%-&u8Py(5 zygYA=&OjP5j}OZ|wghuZ=E)Ud3@fC7v83l=zfNQ&yzPEF>Ekl&ru3c(xD7S=pi*KM zJb}fM?>#eO+zCPVv`HIk+kz$Ab@?xUMGlx2ywi9j_TVWJmU&&r7JO}A55#x+yE=Z` z`Z+_$;N#E`H}v{|PY1BGrvk*^cYm*w-$6of}g9N|J`gsBp`pk%>efxGFtPONY&*uzmm z`H6hc*KEogB3Ui>PTAZ@U(N3J+&ns5#-bQ>`DR~4ddIU?_*O?snW%yEIo@G@wx(=( z$3s(-)9-j2l^D5$xyoH%vrh$+oi6lYF2D2Eh2_`t$BOKW!gD`HQiZYfC+UFLU9R5& z9z_FGj&q(LCpa#5R0+TJu5`LAxiwIKPW73$z@UjfGb-e6hz&n!Jm&p={+N3-cl>Ja z(t<~O)Y9+%s<^x3S7>Gv_nD+;F;j;6JE43x1ESKiDk|O0ve1Fiqs%1XsGT9q ze?~cA9yt}H&oSC@IzND`t?)4#?%Jq1&cqSCCJaPn@VKM38(j!5E1%o(OruzrjAh)5 z%*po+u3M=vM9(eCj5 z-S0hVD(~5>OsQUE>&dbrE?}|jdA-+o^;zk`VIbi+lr0dDbhdrkAIl_&7lxv(8Ih-A`2z8EuaV& z4HTcJ=k`~+v9Iop6x`}wZF~3p8ggK1EpF6aM4Dm*E|EnkKu~h8Iz(WteDYinTLl8U z6F}z^M#L;<5G5LUFef@yQ}*nebW^Xew13 zh044ZSr@1?cH?~}_c8#kP48wYJn6;O`*FRimDmHqyfDgo&(eH25#nvjz##lEJ7;Sl7{k!aytBO-Pp( zTi`AX5`-oz3U7v)?tx#lN|kjCvI}DOsv)l>9_01p51TN_l6QbQ)<<+Xf?8~19hshnF(ivBB9yXA3`UNI z66wEP$-zTd@JAY5x&DsruEGb)KCjPc(ExZ3y}_wK`w*-F0y1FU&w^P;&QT9I7xE{c zk0ZmpD|}wCUwP2Vb^P-RM7&Ws9Fl1UgtHz+r$~=y>t6KZ&}PW9)DYf9jlhs1+Yq>m26uh3E&IV}CASnXOJWA0sMy|JAvVG|AsZi`J?D zGuR>E3i1dOuuRU=eAeNKGL&Mk>2)`J}Weq zxzgPmz3(G^R*ZVKzJ)TC=Z1ed!HkMlT~TP2mCoPsj`rR;(r7uW(9RlD0&4>F>1lXa_lLLdA4M2IS~Ae)1mzieqMWQ3 zB9!;k>1h$e0*j>VSZ-S3>Qt`dt`?rTNFVXf>hIb6UzhIm@6)y(D9(Ci6r5t6XuctZ zh7DHnc`O2JN-ELmg^)Wu&0q}C%-xCpSR0ed*$DHK10}+lhn8TQ%D68SO(7+`QB5$& z9G7Dm*O?W6SLim$UPNS>DU(joM-XQZFOTs1fokeqBC>T=Z+*cWq|(tpOA2BAzB9b1 zA|ZsY)pC*jy^H||T%)_FP73BdAfQZT_&5p*LSdtMO-HVUfVtY9yV^s?!0=AS(#Ny( zH?Q3Wq!HHZ;iY1+8|OB!j5OdLh$+-39VsE3!Ur%|Xjtjia#XX)uY|LtP_WSxT+{o! z&_QeTP?7{?dLjEX3mf%Rgn0gFI8P4-1xju0AQr(c7%363C3O1?05#O|>MEq|v?LZo=>NB^AA-FP0Lpy?i4!0p0B!Z&@Q5r4Ixmw{ySaitrdu4-K zr#D7koBiT7{rXX~sv|cI7)WI)9@CACBl}*4g0-g&y2*4*x?$Ir`B)!NeXkU-QZ6D= zX6^EBG)zGn&vEGKiVs%>zQs~2FIaCu7%)ZHZyxdo*PH<+!rzvD)F&3V^u8Pgm%0+L zZ}jWZ)}SlkSf9a4k$a3^cQ5zdP^|Day~;Kgo_$BVTi*hgk0J|J&jq=PH3yvMn0=QI zIcog`0OH988YoqTKMHh;(6XG{;6b6%K{G-U!-Acm28A@wB(?OTht^vu|JK$dL(kO` zgKbf26PgP_P-(PGrP0;kYm-LXI9bKk-h;limD6OEqAmN%4lF5Nlzx>PIh%EiCcC@d z6wL{@3*+FkqhsNZDTe_+mPnBc=4JrvV{b8mPe!gUva8v*qpeL{LmBS+rTK~qia)Mxf4?g~5cv^)-aOK5jO=~>p4gAi zywQ8gt%RO7^)*k){pl}77p6y=sk>95-gBfMHSQtpcfOjsWg$@KXE?ab;xKoYoYEv|k}2q(uY#LdZ@;RJI+ zF{ynIX%9ts`O-hnf4_W!BrN^zt(AngJ+8H$|YPmQyx zL<^Xtk6k6VqOiU;=R4-%`!ybpx3g2eEtek1%{`wtZsnm6Ftjmr!o2^j``WfBROnzm z>;g^VjY(EBjcs|Bsc2T=7?WQ!CM31ND|#AhX?~6hysVZPwxgH~ua=5=D*+>WgZaJO zaPX4P;hewgKo5lZa=tkowlcbMpJh~^H8ZLGo`=MiNp0E$-W?5(^A)Qu^38#5c#aEW zIaA@WJ0L*2K+I>u zaB3d8Pj!Qv_d#R)3fd4b3=e%)3kSToCi6IA9q`&%kB1u=uQ>YFdE8b@f5|e6z3WHaBUOu<+wNT# znq)cO#3AnT@Qh>KKV#CC}1;07+76uL!{!8!4-l(E;xpG1!SKZzo;4Y3MI*h%}Gm zS%DV;7vJZ4qwRiNvA&imAOW#PlG+xMDBjB)^}y?pS(FvM@tE+OUt(V7n!Lsc`?il= z8oqw-2jQCb|rf1aeI#R_qU4O@mWtD ztxx>>I<{B_t?fCb>B_U_cW!;vXzu;bkl5QbHeMfk#q|l9+)r_D%Q^7n^a_cT@_0xw_Yq#x841F}pQZ5- zv+_JG@0yGa4Ad3zxz)QCi;F@_`+eoLKCsAxl)&4hf^AX`4s^k@{U;-3<*Ls3u&T4Jk!WUzYsHXHtX>;ZfjRWIz6 z*?$DTvJKuidtAvSA{4gt3y+e38lw!f&i)ZDuvJm1=^t8 zb+3qbF#VZmjt%~IwB?k_5xq?&ivV*sHskhT!L+$XvD9;n#3@!EjaO(JO=JCYi=!*I zzZ$tsQ4|?FGGv>B8%lK~1eF@2Vjg3Bp`2>&Jx|D_U?VekIHkyT`A z+z<*|n5T;gj1r9a2^f<8C~%I5X=!kiRPty|Q!C;3P%gNYR^<*vNpIRX`dBSHQm~bp zzfephJx$={dDNOkUmLvkSLA0va^hrcy|dEaRn49qD7c){|4uuM+({yG=7QseD=4A3 zV$WQ^0~7$`p|K_3jxCKGFMH_Z0prMp^rjiZyu0Pe&U^Y-g>eUOy1J1o{u@TafGtYr zu2ARTMbhBah5TVf=i*r~yakY*4pPyLn?p{}sela{8YJ;i?MQQlLGjUqX?wTY32m?W z)JCTku}7!jX5@ayeLkJeSivv&ZSWtba){?P{tG^q>s=Z?;+nG~FoK@Fwsx%2Llk>@ ziyfJln>!1FPe!MJ+YbA1Cvacis~dN&F!)UR3_9w@jjPLB^Kn;Q>9rTqLpA3)N7rX_ zJ=aF9;arhg`L0g?xVwaD%43V61)p=DWGm-K;a`s+Q><1Pt8ia9a1!u~<0gWf8jo|u z?Kaly0I!u?^0qGQPO7}`hir64YAlShQhK*-p=?4!s?)+3kZq)$YdmX!p@(jat-FpM zj$ZIF7IU0T@*47eJQ7Bc+rWHVESIUvfSrylq+rgSRIUf``qG?goEs^kQf5Su1LnG$ zq<_-HlD~$LOS15t%R$b=5M_0!WYu~V(E57i<>%l)gw8WlTs=Y;&c-i)^B)cQ?)UDQ zscd^lvoX!~rk8yTho?I}TUzd2+e5tTvtxoS#5Pz|qI=%JzxNaW=!cd>O+W;+gcAYb69vMLBp@kd-M;+pH@}(hTD&D7&idj2 z@hc)%uQXY0Cq?`W9-t&962!fSFHEb{Y)%BRpt?6xAw+Rrx!2%97Bm?IiXi|5(uL9) zYBD`K;}kVY@WaC+QcBOJ+!kU=Hp$PWNJb7x3WK}?pQA!>-FMAx1h%&&*9U9{h5r&V zFGk@P7VJ^J_u#WfGPjuSf_)F+dsJa^7phj}QKT!-_F&yjqev2mY5m?j@BxpDuvY1S z;uzLm7%YTJ3q&5~yJ}dx*|*s)R1&N)9RVJTekNkWvQ^zHC3^mZ4Dpj47DFDjAYGO7 zycHU`!>PA~neT^RwgyOxHg12wk zVKp8VDW$+H!iL3LRa{RcL%A8ly^{rbZgxt2~SWUTTM2*RJ`g1|hmNh{ILzPcC zaxA24J8X61MHHaVnzi*$xCxYp4)ah@M!ut-ShPs*dLwy$zU1Hw_um;Bj=a98L>$7k z-d!7i85U2aY4vhQ!Mxp+{j>6VpDJ$AiPN^znte^|2Bei{N#YjIGHjK*LzKs;XpQJm zv%Sznc!IV*1s~?xXQV@WuGlgSFM9vLPda^l+ybJ`cXWlx+E07@1Wm&APTb)d!;o4# z*5`;+YH^Os+SLW;qbV{MB~O=xdl`M$#$DeZ;X^6~G}dnPISmsq4#)-zjzilj_ox+H z3!=?SuZT$VbW*418!ml{2KN35*YrsawRh*yj^F(`8VZZqxO+i*h>wVPIc#8CC>3rA zxHsp`vGDV8Tu=Ram(wmtS#rfIxcp8~cCMVfdRxC#26G6gT3S*b*~;)?4E5Z(R16YdGx&KC;UGDGQ@lS!h&N#KvQOsjn+6QbjDO?5$#W) z25bBCc%(I%@tk{f=ruRIW=H3DS^%EVxjE2R^Yd%LdC8(Ms#b{>Z-Q&V`p-tK>f#r`_OJ-nkM zXs&xB#XDuN$WCiNE&VRk9Pnr%zcNC#1lG_9VRxU@5z6F|V6jwky=QLun_*3dUzA>% zgW-#kp{p4-)bk2)`kJu3|%WYg#XZ=q_1xgAG-9>Q>^ z0}4t2Ga?L$5A=vg>sLL~+WGQz1spTfQm}3W&%#=XFuEhHzLsIq>b3QyW+2yi_qe!M zSLksX=p)s)8k6DOn+baHPU{OZ+IjmW1K(?Z0LO&2aie zjvaXHmAL^@#|w?Ib17Y6g`Wb6r-wK?$KMHOCoi1$j_y`;^vpX)T3dY%G0KEAk!uR; zL+j|_l|1IWdddR+UfbUcDZD*rde7cYgP~a77x^>@R^2&E=y;E)x(hH+zi_t^(Kyl!@ys z);bL-h_#96DDO(kTeYGQU{)({aNZ@sdt_JUWHI)Zf&z%mF!>vFxY~X7nWa%jy7H0q zmF~3q>;}dmP|AaE$em(FBMSUz*_3EL zuZ*wKBIW1-2MsZ#$xVa)O@2AxNvFYOc&fz#`3Uq=f=)jR<$`TQkUJdSDs8PaIRyPk zgEa7yM@A$;h7cNh02@K%M1NjTRnSg6f^42^hNC?ijFzqgzj|MNeFJZthIr_-06#m= z13v^!;4wni4^bG5MbNl=9fk*nTO+9RSq^DC8I@zD@Inz|4KNQJ`V{Umo+gCHpTYdYh zceU42c60YOpL8?u$EdGvM!`=vuGZd5k)B$+t-=n|SHewB&M}e2mF8w4c!f?XECsVY zNmcEB)V_KWFF%2g_QkLL;=6&{S}N2C>zqU zWs%i57U5jh-9ek+!6#v+0tN{-o}TjGO6->bI1Vv%JH9id4r;ulI@=hHHBkCEtn!6& ztYAU{;|rAozaxoo57(2WpNn9|4{dxx;Su*TwAXfARrW!1j%E8x!F|C^S*JzibgIz5 z>i_#o@)d`4a)RmA?Z62H39A=d}-z6r-u*mNO#3Ys%4?{m>*A?Igk?=3T~Z?>m)He`Lxjq4a7p_ z$8%PjA}iA5Od6_JBPG4Yig!5OI}V{oQej-yX4Io_4U1u(vpeI#irbyW%Jz4~Icd0s z>ujGRt_xdfOCF;gMaRY>r;sjIj`~>ogZ^2g1PgC2JSd>-D7cg;hf8>klRrSNtEiXg2t%f;FP4Aj z`@(Q>GA{B6ja*|E3(Ps>y2S)EkVgNohDiex33=Uo#~7P3Ogen5_z65(br~d z*7(bUYgy+43UC!8HDOBEA-0Bjme#ko`{L6mTNQ-O=VwQvR=nMGnKyTGuwEoxhhsrx{#1$J?`l+_CxDTNK4a^@_Qk3ImW9UfIrosB){o!)PxHDA@xD#| zY%kut$@hQvB)q$~<41q-M$i7(WK{LoA=|hEGD6bPky*$Pyikmyig1N1`c+(5Ditmy zdZ&nmA|>uYirfc2r&w<+6w9jf9oB{!4Mgf*EQu_5M4FR~u|W5+KC2sc1+OZ~-$d!xWZ@RA{p1Hd@T1n5cL80MLmTH1Dol?~0k;5(tBpl6-k zHrzH@nMGbzYp#1>-`y-9bar`G(6v$c1yW1z0d5xt`KHI|_P|RTZ@4Z1CE^d}CzUV< zUEr_jX!w3Cy-lG6R?{Rc#CxtCZ5+6GuL$<6_Y_IB4CyAB;#|M5f^GDwi9zkXfnxV_ zoKSAK&$Z5FdL$;+5EingfC*{eI@E+~`iw|}00WlgsThKy8x?~widXS{*?|h*jwlLQ zJJ?{BJu(#V0k69c$lhBEr3ay$9|r(jd&<{y3K!c`tk#N1qH3 zuORnYh5@3_XH4(N&w?=t_ywOD_t%?DY@eNmq7a}3sXL=+;B)@CxB4r8msM6fT<)!1i8|VwyG5cRiU95Xs za5WUPUal2XED=6BIe=FS9!OiWieiY^zqFI!>bw+fv6_cgJV_LMIZrR3%3oh z5jZj!Ins^JMHY(44z5KFN>)lUC!Y$eZ(inebF?ChEHaz)c_fk~?Iiv6uydIaej1Tt zCI$0g#Bp7d0fnAvKAZDPo=yH{wT8wY{joo}SMHXry_DK6ceQ{Vd||NY~e z68#nGSyQ2&y4csgW?z9PntB>^xb^uTNhs6I%I*2lkJ`+ErXKku7CS>dDG)Fwh5JYg zBB!68WNzF1)F|AimnGNsULNV$v?u;p^H}hAN(W?wi?s4O{`}eu=gz@Ldlb^m#%gXK z%H0GoiT!K)J#!LolS&1edz^XI?&+1D2q1wJy*>ZI_s#cBlR~EP6Mu|%wh#@Hp*hac zky4YIrPa=hG+f(nHxhciB6JhiA}S)xL8tmQ$8us}m03pUi( z*J9L5kt+#>+;AUFnX@p)3^xxiSX3?Trn70~b%pbK6C+3D-Ci~R&hV5_^k!Jo1z}Bs zf)NT!>fygt$mJ20qUrURuYkKs4t2BSw?Z4+q(QoIU{hQ_-sE_B_ z#}~nh(Sr*@)1y~0&m^`Kn5!pI^dhQY&e6X$c(NR(SAXVPF%SE?sZzJ|aTt!_In;+l zh~5R?FFya7Z)-3BBvXnunqcy%h1gK{5pN?Jf?lrrtvmuIpX7<_jq^-{)VaS3LJ33e zMKe7iE!wbLGh|rW6W$6cbBdt)vD6${%;U369G`IgoFDVMS11L(Uy)zTf_+)JyFrm~ zxiaKfV(!yIeJPK7ef=}Vr$Gct9fwsZ66v*-Re{@$dV)Tn z{&@<RV1_RR5DNw)gd3qj^qNPpQRxSR*v0khKuRHbH zDPjHIq6RSL7(btKS&T!B2M9WZwTd;szXo1DaBzJjyp(kOzC*K?Mh1^t9sIr~(t)32?XAz@yE9fIqYpI?g+z zd>kfYr6*p+Tq7mt0N_fo)Z`V>D<-5AY+Ut4?qH?Mjil0EYVs1}97h<``dTM~THvmkwvIIBxE-H6 zLO%92GklA!8B+fI!qOP)(4Ff9ifnkWHPSL!NbV9NGO6e+1rJDmGaXkyJ|Y)jfUggx z^TphaSnT;OhsP1PlG;G0fqG9rSh;(Co)Nm;E6w(1!u{rW^r+scPf6%ktlYh9fwdKX z{ye^WjjI-2>^j~@?ZWSDJ2mz8#N$c5?v_VH_Y3faN;E>bSzv7bbNjs5_U&J0)o#9Q zPQ=viD@2&2yRU(^TD|8_vGvv0Kei=Fd~aVpiIxAl$XPP_=eOi_Z!?^L#l~(E`q$eQ zShHgHUTo}*1XA$(i!c4G&T4fJARrvSm44L-9SEy{`L{Qf=g8W3kj0MB$(QZ!ujdxK z(0%oSU%oxl>&_C z7)wSH$v#nVh%t2+MIPo5Zif?$Y&7L_Ab07=oDTqZK#0G;p4Gc8KD*#&u}#bcF{KBH zUBEbm&lc8aq-CoxkP=9Vm0Azn-9GlbDgpFh0&VojLb@%tT3`v)6${SEI)9(?;HFjZrg{a7gIjeMv|&>kI!wI?4PiSv z{Kc8ATIFg}0VW4!=$c|&1AkQ+W*5pTrLHt+VD4)Bo5e)n;jGzR42I8MDQH7-=4GMh&$MMqcZ)swT2LH{L^~PoV@J zfLj_5_a$_MLFWp?kqevMScVG9d}gK};cquis+3X4qap;jpujhsm7I|t0TDTJGp{gM zvDSsrHY4=7Q87YQbzv|RhC_?LcNnT=xH}t znN&W$RKB@F0h@ns1o$#{V9@xk8p$DZgo^Dp#!=YSx7|w=JxXagFb?liyOdrhwjLFb zD=n|L#BJ_VJQDvQ$AI}SdFjAO#b+1uAa~@OdY|frC3z^vljNloIw@RnU#%5ay+BEt z+_Wp>i(;-}x?yTr^r}Q&_X9Ukj9K-We{L$7BX40~wGd(&@a_*Yx%=#eJe4860Sn6O zNl)&kI@Z^$ls)B+=K=N9B*WIj5F@4JO4T{2EfWdrW(XC~WXgC5Yt9^LU;niZYEIS1 zFtU~mJ>}#lfQ`XalCWaU9hD}s)#8ESb;>KgAM&6xhom$EPwI`x%x$iwvhD?T=U;4n_2T*h za^H*Cy6k$*wdM~)bmu^|?}J;LU5|`{VG*+EXUN}fH1S$DH+VivICUn>u9{-E(_YYQ zMO_@H2^WoXz{OgKE1k)7R*BGVcPjpDoqNI0FJCVAP5o-AM>X}Z))?OXm9DSN&~7Tz zUvC%h-so9utk=+b@_*tvPp`#OhW)_xgtNe(=*+E z>dN%X?KQN(OwaUGs%Q1?>o+4``hWYmfBZv;s>?kLMf2fKqQnp_m=G&BBVPNv-}*K# zUWqBgU_%kt6i_-`=cj8AslnL@XM#Yc_g4G3YW6F*h>IW;uBG&ZepeAMm2ND^(6mO~ z3}a0=T#mawbYYaw@9eI(RFwFhX1u6tLJURxp`^dk9P~ z0%#3|!3+cGkMx2fx+-ZR5R$tPC#R#0{b(T!G{y6*^}FY%zK?9o(?~iZX{ZTB$Zgfw zi?N=s+p;}>Zz#SHcMh%a@Afb8t4C3Eg_nXh&*xZx&KKzjXe9`oD3kYasehM#123}R z&)xGZ6^(^ii>~-;B`lIY_t#;?S0Ck&o`a+ikP7O+1zYjKq~!-|co(d_tk2sDlX^4P zV&yajfDgc&A#yqX2tlp2=4y_0WV;`mHe{Y9{r@D7_e!M95ap(DA5WX9Y5?R+EXkU!B zR`RmOvJds_OfOKH7Vg`{bX%92vP-9fTqXRbJEO66jq#zD)w}f$79QSfa@w<0f&r6@ ztT5@ToC-1f$Q>7It?r?;@N`P>uFJ5ZKgCwxi9otSpw_`g+dKbO=~adeyhzjdnf?2O zMcHv=fuF7`pwq0oq1eu6VF1VTq6pqmA+&j0+;?C;DOb&Nmq&9ckLTD!l6CK8=Rr)* z2^#2ca#U~YM2jj!zjRxZ1|&K<|p~qOtOYrGI-h^d3c1s-R#FZ++H+ z6TBZ`%u-_+*s95Mqpis`M|ga-!69KXw*DWLrou7iPofXzFAS8O@8v@>>^i!CfdfQQ zirb)RYrb3a0hG;jghEfFb%&Mqf0cv~(LE|vm0kpvsJij5{>rZ;eF%fdklcpR#aAmQ zK(7#ftk3x$eev)96hph|jds1~4}V~L)$ZBeNYt339<^8Q_UPZA`k6R~%H1DJ6dRk) z&$);6$3OT3{mS=cEDxT}(zCi)Y*V53-%zC5^QB*fGW~S>{`ATg9DIUaDw0AQL*Soo z-t6h2&d6W=B#L<7-YZACA!O7F?~9O~W#c0Egzx#=?aSN->y?!Mb80#b2o&61mUwuw(os98L2jlQ{fV92nt_SC~bCl0ns)UXU5mBa(fghoODny{%`AZsfSi+a9L^ zo{1)T{XB8OHN1Fb8r2`YQ+fn&VrUgiVojixLKo|TLwpDJ%Uz*82@86>RU6*LpImQS z<2ia#OysfQ0bYS9PhiP}tt&Y93k}bdbw2Si_KjR`;T+cLS$V`*N4GyRAOIY@_GilZ z61XE|NsC0PSdV7<2tCcr&#xiVa3h#IuJhtQ^BP7#_^Q-eL5pGHWWEBvn$J+s#kB}q zgrRGL_Z<6GY#DI~DF?z3L+G$=HSR!p^vlw}?dnn*@*>$G-q&yE-h+f?p`-OTX(d8T zQ=#jx>U4eShRJ8Kn>$SeGUXgg^*M4L<6B%$8Yq&aN~IHt9Q$ZAb06vajSg1QM6xIC zqan?69AsE$;U0bV40Wcet8EOWbjj<DXzb_Z&y@&T)3}KKs#UtGrR3qoG-?6!T+& zvL$Wv2r2G`KI(dFI6?7_MmR#@V9XE@;<)3DCVdwsDt%J)g9~rmg4dZySphY}a`(p}&IL zmlAimR(m^|48buceGp4JV5FO)#N2ND$?F9C)ih;}?7waE;rRjaambl05pscJxUO_K zBKrV(Y;hI4U|7{T@yH+7{2MM|jbRK&()>iHKEV-X)C>o%p&5AGhq?yB+=W=g5yn z@#fi9kMxi7^T+s`Vcp>bwcEd%sk)3fetL@8nnlN^QcZ>W*M4ml9INfGs7zCd&X&k> z`{z|`n+3Y}`lf5fQU;<)!zsHrM14~GY*)92iFQ5u2@3FZm3tX7N`gcN_fo$K41GP{ z`MMtTgulNApv=McYHhuBVE**KaZDxpqmMq44?p~H*-QE~M|!r+8$DZBsPFcXzJ33L zKl`Dwa-IBMg**IjKKMsJ1SF&@L~*R|pukART3CIEX@Rza2I3T1v=f{rjCdRkNQ z&f*W18`0acNcrT(#8L?%;{h?i1?w2B$O?&MF>~ufI_U%%eOc4VPzFP6^XYmjgiH2) zg_XgBRs}qwUn9+jR)0W|RTwH(RC@J_6f2`pGe2J;0eWZ?EqrpIzkrt>!h%QL)3h&4 zYr@quG|-axsGTkDQfwv1bQRWo<@(DGWVkKeA4E68{OEKCd?~%g?fO(%v=r`~|9*2w zAcctekdB*e{YbY2LjVQLJ2voM-pPLQdkwoGWoVVsRQY(;9-*bOGuaC;H6*k5Td6=YUc+4Pt)GpJ#Y*n$R*y0^Su;wSoQ!T8M?076Ov~e) zQGdEWsfb1?5HN_%Fnm~591c_1zK-+~CmB4#>qmaX_2hj~ayxa;+x$CyTkiQ{1VIbG?6-$K}s4=Y!kF3>6ZUgPX@lA8pn77y}!My_7267d5t}+74CQKMi*-Z*ldLzn}^P87+n?PartJZB}f=z zQ-&aXr`LG2`BqtKBM|<54D|Z51_b3opFMha@d6gj)jI+gf1}n6YZn}%i`)tDnB6a7 zz@A${=c94>+zw0nHZQtda~Jx?{|F1f9M`&%3uE?iM8pqgm>%X-q%kQo2m9dm7qf46 zP$h`n6f`1@e&KKZt%eWLTe{Gd@KP<>WNqA5BmKAE{;k|c`mD&<;+6jH_iU-$E#;B^ z>u^}g7UI1WgO*kty6+>+_Mynb+-Q2F*{D>{&~4v4`qj#~7e=EC14)Vq#`{^7=-Cc= z|E7H5bc?@2IJZwX_l-VlPq#~+ILKEgzdyy_^F74E-9HZi{KJ3ezo!qC=&3-na<@e6 z{*Py_G=AQ_(o>0k)4tFAXe!auIzuITmWMBob16*#i`=(1abpOp(&ob3a;Bp=7nJf5 z$RA1$l72}PXZVJuxQ5RSf3QfnR(c2#MPj#mY7wbaj8ZD106|L^hLitEzQ4ClDERD2vsU;vhUWRKvJ^(jE0v6xeU`A?Y0gaqMo zMwiO(v5a$&*oUS9FxqlxQ^NX)b9A;ceZ7N&v^kT^8)T%wc1Z|eo^x|FA=e~l61jg} z05zU4OGeTeL-w4~S5u7Y-Rp^%vBw^ptal$4X2E}lu1}_c ziXL16EQzB_9f*FkzV{I7`O^hk;6z`wJbj{akLl>i2_d(;AyHVA2#sSw8s@zrSD9-y z5UP6}nZr8TN?upA?3lC;S1A1{7FYkP%Fa)bg>1eB^$eXwDELVEXfA z|1S49^|1A2L$)PSMRH`t1EY{8y3iJee}a>&W5{)euQ2p+OC!Fo@5Q{_u4NRswEldW zkp>MiS+;euTDyH)AkwLW!f?_A8s*}R5xr3g1FN_PJJT#4s;FHN+iNv4iqF;sI}B#f zUak=VGI`N6>k!x)jl+90b%yj@fN5HDCL(RsH^o|{jIMc4eYUDN!k_4-@BC7&~6 zA8Z*Av8W83;F8&yvGk{|APxklCKj5EEfUdyFPdxF@k;DYiRSgZr@uopjZUC>S`{Z8 z?O6sRj>%FtK^i_Na^%siH2w(sMgwrjDN+5J_+?O>vr7NbWHIz13?J2dhjX#ScnRwE z9IA^_#99)UT&x7TVK%N(MdiX99dXmw%-=TNW3{Fn1R=cSGZi-|LmoYO-QCUs&nw`I zk&M<+r?s&Wyl`ti|EsI-J!Ps?Ik0ZMNO0&jyp~nF+3rHSx9zWHo3*ES>SHR?tEUeD$?MUr4&dm zj@zHAf)<^h#l^^d7x28Us%znmHqVisfa;rWcdNvAT1B_rf+3a2?rlqQp9=I>;FX>e z?v>_XL1E(jOF3_Do%#9u^8`D2>=Ch)XbyR|W_V0e6j2GjJ#c94yP{_Foo*@=A~9bND8&T#pAULdR$9BZ|3yPB=@es%^`fA?`$Fe)A$RV=}+dh6ef&oU<(DT}a_GS*<%j zg>z$M7124zzKR?UmV#MS!{>@AQ$tD)$h{KZeyzmYG)Wwm^d&IagayO0WD68uhnJ$l zJYeY6_JtMqH4A@TwS+g{FPZBl`z{VMDKbJz6zfGal`9d#G$ay*@a*D@QYfu?7wNR^ z-R(Z|qi|?BkH1|&47@aWWHiU+*DLTYp&G|XV}Rsb^XcJPIWk(Lr+j2&1C2h|138K# z-S10$stlZg#O}u$#hV`Arfu5D=ex4IKE4F&gbQdF*YLjQHY@1X-mz6k>8e<-I3CUN z6&1yE-SXLLpr4>6n$U+qNZa=~R~6}lNci652M&?kPkz9YXuyl>XbP^CH<_Y1$A8tL zlkDqZr7TvpVdJBgb+oK%vs`~Hd^gWM>?@L1--Q>2Z)aRo1pe{PjO76mOQ*KhyYV5r(RiG@>S&s6^n-%Xf`~yisSOjY~ z$Wk8QJoLYh+HL@l_B5|03B0e*QQ#_StKhGo&WeO*H@X{ZdT=|@HkK$fN_rb>#852k zDx^DA9FIjyjgA+i0YnN16tWJAn7NEN;`gh|04S&j&nllE@K)h=m;*bEgq(4}r~(bM z1gYeMUiBY}@e%<*T|+4Iwz;6U+{a(_e#{HxMkV~KJwtxN8ao0`SCvdva-MAiI2E|? ze4D7}Q8eR?r(XPu}W*WWB(-bk<9 zJ$Fd@%6@}yf%S{}jqP+gLZ?3Wk*w*vXHL}KzKVj?Px$U*d}RwJf+P zdlVY;=g50BypW$=vwuP-tuAV>uu`HkR!btxd&afT_S9a`x4`P*+-!TEv}COPy+@j@ zhZ#_repgtxM6od@+VdO{>)-v{|L2DsKjgF&mP3I6Tl82ivPdb*8({N0-~M)irx9Pm z*9jG>==9&-Mc9`LxDN=wJ(&64H$mT>VU6clpi-VYCs#DNfmjQyVIubh#um z;+eg=vG+sQVq-2;`8{W|amiDknRw`%Xl;PTxoE$)cU-0?f?X}my=;}iz% z#L_=1&}}*vWwhX1>s{LW-#J#h|2=tEzi8|0e9v6MIVV60ZNf;LXF#DYyoKvL>V`<< z_<;^x9^q{(8gw99s|)x$eR{Ya_wmXDUijd?_YtY;8N`hF{gQYebh&sY^LULyfMCtq zT8!~%5j+Y3n8r{=UnkrzgX=|wIo=Tl4#VWA*a+rAM|bH_KFR}ca;jLa)UX<|FFOe@SlDnj`SX>4jtF&|uTyxJ7mv#o{oj!7|*#AIez~(>>GiO5A7pA9L*XKVj zbjMTFiks&Eb7776W^EzgUND?M`aC2;&;^7YjxtFO8sL^NyEQkdTjI)};2U-}if z9GZQ}8UndyEc->VDPf~wq?;fA?Q4a0&$fqmcdzuD{=>_cLM58*u5ve{gSWk;XZzaM zpt*I&=+A!VF$La3yPxLqDn7s3i4Bzkr>ka|m`P)wZn|qPH0D>ohcf+M9_jfawCMM( zBe{?}b9Glb$6+gH^1SKSk6+S5yZ1%_vtoAx{$lNzlQ)k!dACXZZR{n@JZXBP-IB6} zb-%e;SSHe(Dbd*|sI#m*kTSi^63Sc;Va-qy!2)x*Vc$WKv}(I`U1_DYv`qTz;Nf;J zH@l*emch^5`n=74!=js3UK?eZhq7=mmrDg(WbrZ0!jsBKE#lq|Sp{@|z1}M95rMC)%iDej=UjIjGRtt( zGePpqc(r)?r0uV4o7a!emFD^14iTyB5})uPbh#VWdPRVU(0i30agl{3EFGN?8~uuC zz2770Y5mvx*XPjT3NNk5+40$krH5%_t#K=@{n^~U&TxHSusGYZnxtR92hD+ zq@&Nx<~8-1X?VNv468Zh+OcKLTY0dh1m~q0Q&~!3D44HD(7W?%a-?VXN~iL5SljB% z$X{$T9wka>!)J`cWr63|`b%K^9Buz|3A*F~sB`NZ$^rsKN4fP@2#)jA^oIGn0K*9Bn*_i%54uGJ8ZGVs0C)_a}|DPdrLiV%o{@D7hHnxa+fE+zwTh%`k)O z7&(DsG>>V2o=C|lloiv%oqSw9q&UKXEhFr%Qd`lL_Frq56hql%3**N0k_H($gvIYt z{IkHjXN_}qwUik>g2y-y@|jwfZ+3W=>_iX$Rm8eXr}(ZVM;)?=#G!g=ZgI!RmUstg zV?^TRJSK1?WoMV4on4ybR%llN?;LVgfQ|;GNvC~#D|q_T@CF=7o_)xj;h(S{E%GEu zQwY~fq1s2`-L6Ca$ z*EyV->qR9RTVO$!dKa;HXL~P2x^-`9uX_yoY`!^mn^aQW*VH6$gZQv?r{`ipLr$NYGGI^6aBYGZ5a#+h!wdnLbTqsSU(4+RFmNp zGm$hfT(7nY7wB7shJ!JUkxY_dt#YI-zjrs8a=;CWKb2sSQV>$fZi04$S%pUmrIcm7 zwg{2Bz@dk-Q?wE(G`H4YGV4;7MS2KhKfM29%X28~XeOGkN*0gaui9_Ymhe+H63-s~ z#r_1=2ib7r*(?Fs`k zc~N@BTOZ<9yfKMd95gUG)RbFuRgIF7&;jnKL?Lt>0KYgU( zxu>0`%!r8wYc3vsX#@EA@J7=k?Nz&HL)7j|T=quJ+v1I$pSLZEKi|GHn)p+-xi#_< zvHWr9kj$0#bm3Qh0Z9QL4X}6x{q!}8Wt%N4@-wyfQlxE*C1=w1t5lq&61#gs_ujo< z|BWMK+-I8uVvaQ1S5M;QXTt{GnWT<3x4>H7F_q|P37JL4Fu9BMt`i>47Au3dzcP{5+am|o||!`1NEX(NW2<0J9(jaZN<7cl}Il%Nqu z`^%#SP!2iS81cgBWo52G1DMBR@Um#pA6Y&mI#6MbTj+T?9o2qg%|D8lV<6x0Ui;`4RMIjH0CEhYxucKcu zb_jFhkT2V@aBtj%r$ITL3t>Ka-KJjlD;uzK>=Q2%!p|H3^*b=z$wBNh;ZT-=TxF~dlY&PRoRG4!0{PC7+uPDN7K5A3MC(3~5q>sGlD z&mPMvmd@+Cv8}_0dFPHZjaSTeSVb`jl!Yj08A#=YQrTbR#VV_P(gQf6E&`2GWsFik z@5goJ85y#=;S%9VPcVCWH!ib>hu9k3!5U6+6h6&sFLs74YmbgWIGy78{;BT5hF=>Kpje>Lv+d2kJsfbA$m@{7r5pphw8x2P(Taf-iF22W57&fG61`R~M z1=jDEH+nh|XW`|U>e`<$9gi=+`#ryDIwO0bvAxKc>tU^Z1^Y-(Z?qrW`szbm@cplz zFR9t6AASYiXg`O2q-%IWQ1}Pxp&O1&s4=u#Raa*88Jfy_HtTuP=-_L*%6n%$g!?J> zh-OK0KPQzJJ*^2}|MeliaZ{{6M)kF6b(rDZXIo)4Aoq&hY^QnBCtF|5wpZ?U#Q4?! z(lHh4jyQW*_y79EcYe5pTVcrMt)Pe|LNT5d^ukDD{^57N^{ta$S*DUJgu4O4(?em? zlf(27ClHdHFID_ho-xP*&IDL(i)j4CfYlscF* zm8QTa=Mk`W5Nse<2B9~GCZa#c@Fra|EV3aS=TXWD7zN+2 z1eXSWdgvO2Y7ncuK0V^>H-x8Hud|<*3<2%%T41dAV@@GiN?0lj_}L{=WR6tDVU|+oqu?rmQp%EhYnq_Du*H3;4iful~6{b@Qv_Ujd>NU1Iv+V)^!-^ zCq#g;8?S(G*42CQ^Z?KMlUf!zZnINvxQ|?S*l(~oG{e3kY+GZzJzsErQ)PkQ!C9#w zjgx+rK;2L$g+`{}X$rf#$^^h87EYY)A}c-UN&s=vv+qD7qKwf&svdWr;5^mA16!Fr z#>Vq@PEK>NBtK33P;8&H@xQoyi;@z_IqJ_7TWOOXwN?)pN7)Z;5hGkfN!P96nvyJ# z`ZfNdB1K{?j5E6sr`%6H`k&BL&G8axa%E|wwaM#2S54AG)u}!`&T$Q3g!Nc!=4j7v z^JHV8V+RVL9z7LQQk6hoOLnPk=^B=>4(>};5wf7zW{Y;kC4E_wE)){ed|q6 zu{QW_Qrl5icUW?l6vfp`1wP(k?X*dT+R_W$evOUO3D~4)aX=Jxm8yw%E4=opwp1Q=&feu`bZ-Hm3EMMMJ!@vq_pHvLOx{Q68>D| z&KoL!JR>X|?XQlfi{TIisXt4{DM8tIXw0myk88zWJ_+rf&2yyp(C%Jn?5s_Nn%iEn z&BE5(%F6FlrlE%>FInZA^LKqh`}2f$lX+Px(aYXl=-NEjmFU@?@R#xJU;j9+`M6c? zp6$_o(x22A-rZZ<_Uci4IschR@%_ihGu!ohKZvZSFl{aQKWwoW$QZ?Qb|C?kg=kxE z0^w*Xssp(c{_N41`lg620Ky`9SId45h|8mdD-l@*5<{4XN#^tg(HbDqCK(#z0xxT( zg4rA)>}Jsk3+ucq!xDRXox`V_cIIj?(sW^ zEU>3yhNWE;5gU;kN%mJ2whx3~c_NUcUL{a4sYGb}jmqsDw6%!5%iZGPZ2oZ(QORF<0^WWvKA4Qr|03PLOdDQMa(sHk)zq{31 z(dA6FG8_Om;6h`hidXuD-%}ZF0z*c4GEA7NV3=z~9;70Q0muu8qRPLoiwf0CL8+b7 zJE4nM)L_%Dy;Hc&mgAb$mJy{vnk}+C+l5pWu}WfXSj&b^I@eQn?vI+^ zegKc8-xrkwQV3T)q1U?5VWy85U^=vTXWbOz9}9hc#<7N5UX2Pe_!R_jYp9e~q85n* zGvP8HR7Bb5Nk1cM%)Ibg4AC6sBl)-$jkWf9NX;|nQ5v0>pvmdo#QlwArnl8S>WJ#< zbv%MsN_s&Hhl8N)A>CC;Ts#u&StBCMtNN>CZuYaPA64Z!=tEXq*9!Aq)~RWsyK>kx zTxrQ%UG{1{Ph`4nL0en>{j+M#d)BjPJ)shN$?uquhN7&KGGc)y zJ#p4|NGY6{SN^BKt8N$-DO@=aIWu8BBd=!k&$GmQJo|4KDAA+5#i%RdYjPSckt-g% zW;~}ciCEvaKBN+Tq-+zswfac84=Y{^=0;_`(QT(qFaUV&`2bIrin{Bv7h%IbPz=xN z^Rt?_vzmw~^#1BP$7gcldXCqF*X8NfcRXu!8Zj`hm&5ggPMhO;im#A|E?f&RrXP?T zuLs^05tAk7P#OonB_TMtz7AKk50eaQ==srS`$+fp@^*A3nr-S?ixNG()6=1OQ=&iK zLcC9ljD3i|-#OU=YvxGD=lE?=qF>E8?IMDpf>fY=H>r6|<0VsX)fH#-v&le*BMnSA-t__wjLMQHE|G*!-F z+~zeGa)wEk;L_h!`ym!H9nE;s;h?s@+fI7Xy{X~3zwfK%`(w@qaHso>we@)!I?i1o z#3=+gl@({HFhsNgI~E7`z1$n~mrLwzeIOT_?bzl^<#e9HYJV(6{2tBqCwe_LG_p_e zjCZcx2lu?|+D~d-c~7H{bjBNW=%SyFO^mG%i7_g<=jDr0LaiPtdPrYqsUQn+T#{6j zfom++_4nrYt$$~uu+Q@Q5pH3%{au!d8!IwbA)gHwyq$TZQMJO5@u&t_dL@cQNjC< zUQykSyK%ZV^+A_?yT$E!r`Hi*b?uL|dl$ox-1D(^wTQgqU8<)vxEl<39ef}8(*3@K z@%H?~is#USPCO0I`g+q2n;x;U_t9D3@fb(qeZ{B!d5x~08ML`(LhR`{T2U_5_Ep8m zjv5r+CcV;g^#L%#CB?5L=|wk=ewNm8l?L<)`(ELiQ7|v0A`)nrA$;7C0it52ck|1? z7tk%sZ7v0Ks~MqWJxxHx)$dOCm!_KhKI!+kmf@?7@36WyaC7&}TYCE!84;H-ls;cA z`jGZ;Uc4Vi&;T0Z^zl+#+Qo{GQc;cf-6tEV>YZHRiu)1wy3x>|H-wbHooUnVKcfU} zlSdr4!VvNDmw&mf=_`u8Az;9e<~g4cUNc1a&C3jZj_dxNzx4Nh%0s)^em>G#XO8rn zfA~#%`SRs5rZ??#ZY4ao7QT6=-Elb;YF6yVcEnSe{t7(P!abx#D!jWF8avyyX|LG* z9q5qqYU+{GIU9dpHAG-!bO2Af&ib@Df%RWj)$ZsEu!bFj68)M=G&`SGLa7zTWbh{m zZ*(s>HXD^_y7u{(mApTaca}z9!Ukr=ZniCM-@_0ZV$90j^Y|_mY9`pD_3&=hb=*a< zOSq>6)$K-yWe$`UzIA!*zQPyQVqDo@*kh@F;}j9WI8wSj*R0@71h;yN{zROTh%g(s&}Y zXh%r#eQ={<=+X8H)*MU1#==_v+$!eweFteh?#I}^*I~^f@54!pze?J49Uw{EoAV~V zugq(pLTu&=%4%8P`_KR$upNMJ&Ijj=ushtdeAxYU+*4JM>&CqqpW%7-wNMBq+C~~) zh{LVo(>vf6a$#;>Rm^04fl%~X#c(a$i6`dmtE7aP<`d z!wS7SCX!wTYjacilj-AKe0cthK5xL6tfBBJ4tew&`?1l7PE&f$UaZ6dYFGRc1|luz zPs+RGOEUI5Wd(Ek3VQ47bhP}^pnap(CU-Xw?qRC(P!HMX>bPH*=Q(-pcR*|CXwe8G zaZQMG+=m+jH$-`aVPf@~B+dw6MEY^GFmJAP2?Pq|jQDNv_D2*;4J0Hesy6F+RB1szw{c`vz*QI>q}*?L)Mn=!f$^ssrk@1xL28?k@% zoFnpl0qr#^)*Vcp9$GR*!!{?}@nJ^Z@j2HEWq}4G&Vct9&I}e8AY#mL?rY$QV%_=t zp}?7rQl6t8fe6!Ex>uTQD$y^#^s`xvdFn`SwriLpoqI{kd7Db~)Y1I7DbZ7bP9=J_ znY#P^Ev&oO$D)470%NSRHLsjIK|S4u_DT^xiQ8DeD`8Y}^W3_*MKpaPSwCy8=Xiq?|dC2d&2kmx4Y+idwLqKJQJ8b)Ej{Q=%bJPt0$~~y1DQ1&GPa~Atm0G;$?yy|qDXdvN<8I7uGA!YOIeW~N zsw%u()P*`J3@6w7!bN2I8KA0tTM%19e6Rc~CF~W$ zYRv28D8UF}eI?}yw;U<)DYp6Yk((?y#+god`xYt`?$4VUL!l%?!IR0EElenhH9l9^ z_AUf*yjt^z&%+ulsFy1RDZ<mf#)SadjY=u3%U#c)v?(PCSj{m{0~ma4c9P-Vqh zNddF-nqDB#76j4CHRieeOz$ICVf}YM$F^M8(UyY{=SDUo*`^$sn#G`iUsc)wUqR$!fL58l_LY~Odf^qHEi{qGS#9QzeYoTpi} z^^x*S&Jp;{p-JOwc)%e$?|bs1P5CbV4r8iuUGsaR^+vkPfo(_5Ial{sJo$bO{4@=K z?o_BP;L=ziWgrYA?~(nxryW*RgxZ%Vnz#U)Ln zDnq&>Jtxxocz=X#tK6^V9nU)M64%=p{n{eN>+T0*QEL05&q8*eGDmug3TJ!D4f~^WGmQQcAd!$*l8%36<5-L*!G-Q)lgkykAQt zIuu8-Cu&wSbD)EeS+vX_uj0qoc+#FM-rJ|hk^bV>eo=EDGFI$n9R3U+K()A!Z^u{Q zk?#9Qv)I^62`h{LFul@&F!_G>M&FQY{651TEQo-{IOq7>GJ8bWi$UTEoR8mwkg*&Y z!g6uV9!_;NF!qI+0^a`4A(q)SnjsunaL{R0qudJO+Zh=87Uw`-W4fm!m(L;(HW=I1-{1A}Fq!YJ(TNG*;8Kum;R~pYLgj zWXK}XLz^N@ikow)^;C|%!#ExLjcDh6c>mFi9qjK_+jV>=JFOx7FsItuv-|jnXGgv^ z1c-tjageZze#W>fS5Y@c`zXxubV($j1tbB6v_7?qK-i|knrLe=w`$c#Mx68z!-itn z*Zui52YUCpM`k=S80_QRQ9jn1E<>-3PQAMyb?V|ebV)G~v-OR{u;u;jYbRa&c0eZM zE(9a#rmgV7J&VwXi8V}_T0M(xY~*n5Lp94ev+RcnDIA`)U_iSUcw-`!x5^Skv3;1{UMyRpAeCXinzaC&_mH~ zwr-)4Y740{;u(xk`VP3Hp-`7ao8L{|aW7xr@GR%rN~Q2|p_t@X&LbJ z5L_)egmRXeE#oxYzwptei$ym(&W(mDO4v79(>9qZ0R{LW&N*=ChBHk3|E#Xj;jS*8$(zX^7GqS_7OkDP% z3)Vmfk^ZU2sgZk>xxi`J&%RjNyBC9r2WWW18dGUAuc7%1` zl<1j8o62$V(9=o!u6?9GZu;Vx?&!|iSF{-6Brc1ZT|Q^8 zZvRdvu(jQ$x_tCm+Mm1F*nBBt%wIe$1{~HM_i+iKL`#sMI=tai5b!K{{=}DSJUtBPl-#v7q6thC| zmXp~+l8bpZn9gelLv4=j7kqNhOcdfVU9G_VTGaLO9E-TmI~sWxg7BF`s>lYf@gg#B z+xtvwQMe&v}jF8doYMLa~Nv66FZ9JG?6Gr)}xomrvi)dda`e#KK)m zM#N`E=xP*Sb9$+SFz3uf7T8)V#ukScY6D8mS$g)VQE~)?VvQ(_r<{Wc=14WjLSUI4 zEfNK=*2b;It|cP*d<<+6F~i~_B<>Q&h`(_jpRqJXdv0fH0T1(-foER_2N*3v>ag9) zoPWE`{ng(M{P3bmy3C!NyeG$Vd%}d(S?KRGLTULqJ!U7*iFuLry~~`wBF zGyB#HOvOc~@7mwHKWkAow{H9RL>`O{&W)b2bY{c@ZfTlA3Gc z?X910@!8kN5rw7Zeb2f^`n0T$gtxVG72dvi(?RbhsqaxXJQoFgYOc8+skn)*w8+}C z@3yV#ecIMZZ|@Se64M&rT11cuK_=bZRmDwHEX}1iYZPGpTbPb0yUGNr&Ti;=3$ST$GbW3l-<@ zRKOXZbYm0uhG z$euo+;q&24)tCy`+i~N4HvGs)0ra7hi|N*k(EMW^A2srvUr3#}FXYR}C7aUO^(eTL zHN`zDWuUfA>BO5RT|ZC^OKN9^uE5lY582Zm$fL-MNplRaOdK#i%NF9Ekt^?^@hrTu z$?Y^4)I0k%Z7*kg5&JtM{Q3&n%;#jp{FsH$e?lg4ddg-;L_J*L=$f?Hqd?~Ku9h@K z47|cBv|ps_AO+`CnlXV9-hZE3(oA4<=K32w((l^#YPP9FKdPU_EwJpV2$eOyc(Mi7t66|dn%p1s?-K~ceS0rO zx*?4<>x?~3&7RtQuhKo+tfuzV=IW^(y-h&PaPFy4Gbj2TjWPClVtT0gnUe>v^j@`_ z-e?vXd&3`4iEb7fW1jTfOO1#%Lmxti3~c0ngGC@LJxjq}rZwt-awgapv#JE1AJ~>; z`7Zf6=!9|$W=V6VS3{Ss{`LX)m;|R6ye%7!p8S zGDyXOAcsYbVNO~^7h&aBR0tndAjack86JTq(>x_lUd~bf|_GA({#>hA6Im7(kbC9`S18?x0Lo)y7*{-?6q9Kg@ z8O*an=~v+70Hf{=}T$ zhk5{EK%T$az9vNOLhaYtzyHj>aDH~dd@(3>K}@X<%&5Zv%7Ou&`!kmQ3rWGs+}jJK z7njkq`OUc|`JqDXaMYJ9C;uPFo`I2xp+_M@j_ zT7Bjmj5g*S-aE)R&J^Peb7%#K?qQ*)<8!z3)6Du)w{O!FJCC2b9bdS;{PVZtFU-HU zo96M8xAXJ({B6uXIn@c2n{SYb&~I63Rq&5R6G-9I-oY8^O(#q~RST&$6c6IZB4j6# zk97dN>DSHgS*VZjK4WbnId`cL@>MEJo;4SgaS=&9!x+mepb^?|zh8%wH10i9*~+w> zNS{ch6W@DS^1jy2)*i!UpP?kPA6)y)p=2jJPCD-D0oftOrH$Ssa4hICi=BH&|K#_R zuUre@R}b5a&+e)AYht1+e=}B0rBU&Gob$AjCf_99buXQvpX9T^?UEgWyNnT^<8S=l zD_SQn1Kr%iX~R)a^t2)+*15RM`W=VnmPs_c^)Twrf9r_*d%?4ah=Pc`8Ticcgmb(a zM0!Ye;A!x-+`5W<%rx;J3>Lg&eNQ1+eTgo~D`D9es_7%i$ z7N$Bvk4{Bw>s}gr*&kjKvXDqOQN@k~wMPlwQoPu^7sNlRYHJ!&L~1>UT?33kLte8( zH{-Z0#T8lQTTd*)j!UQsvd~Klr_)|rAo{-YQ${)xUqbDN^EjIPC}Gf~!Ay@f2@YpE^svrkUt=(mNZu0q!0hMu&MS3Kr=k~M zX1Xi(kDl!XD|fR|d7j?r9^TCc9qk*8AfByP?VhdYMEB2AFJx#p+mlqD^eYL(NVKn8 zy=pg|yy-Bz`LC&96QkZEPg>Gk=$C!oT0f1K_g zMz{aAm-L_9tQ;TCFMV=m+p2cU7T(>J=`W+u*q2*w^j^7}%JlzIzx_j(`;-cGEH3V^ zoN`AaWD1V%C=LtWo8SCR0X#zmCs*yT!WyA++`UJx8z9b)0z9;M5Vs)OY9w$WJn)@t z6+zY*hBboWk1U0j9n9K#bgCJ{;tx+f+t%vlv>WqYa=`GP_TlvYTTK_^o zla)EPPlT=Ab+l+u!9`NQiJmDG>mzSATi-yqR40pX?*oVk#V*KTok`L2FrA&Z?#-}v z&aA;5gXm*A8s_h7x{rj{9Lq`V1I_D4A5;C@#j!`DC_sb3TZaiRv30)r{P=kd&)r|x z;bZx`);n->3QKz4W6m|ZYrTW_SLgZp?+XhB`2(qWoqu~#wcbyWf+;=K47i;4%($OW z;?(KRoiK;F?{FdAKlW~089$iRz$&=$I~jq=67mMx&w3FhIJU8$2$M@Ae%@WT(qld` z-)KrdTqw~vrXpN`e;S^FMIxgvq#=Bf`RukKZj4e@J_0FZg z9f$p%aWbwW`4vBl2&$cIV@Be!OBj0ZRhxI_KEy`8G`2O+`)M^ldL$h8#(Fl~S z_!z*wvIlE8McTj%MRRcHQD%VuLQXcku?YTq!GVTHjTeh0R|xve3iZJmFSr( z&B?hdHZ~L8Z(eDJ8_WszLSqQ)p6&Uhu-Mu5SJ^Za8(-9<1VSRxE)y~*Eg{wa8Mvhf zWOut_Bc4(;F|KP2ARZN0&3+6Bu~OmMS-7TEM{GR_1}K$plzkx`2J;N7sbvly2Ns-_FvC9kdP1582e zI>YBxygjxU6`cc;y`qZIj1#95(9%k1l zWPP7u-c&lRu38vB>c#ZPRwQDpBj`hA`J(O)A zuC*HaDze(z8BSf|O8s~f_ebly@^6upCQp(6O52Lbh{_NFx$bwV9{MN0M%wLS729Fiz97T3he*?b*)~QCYqR zcFM2p_Wj%fn`RO~ejmWoxlNg;yNFb6r1|Qr03SdE;Nd=ilrt78(iRDzz`dit9ot^@ zzIcQ#l<7A(_mZEvjqvBcnAb0RNzc~8yWJz*ep;01+2}Bxdf-&1`!-lpfo6F36Rw|s zr*n4do3AmDS;6}i7Q^&9Gg?|RslkcND=v?R^ZUu|eT$6=J<$d#^@=}Gv!}#4f9VRt zldOA2`_@;;llBU15r%!bf7opFL?aZyJ<%V2IK9$$m!<{e;{ZBi_vdFEE$x`m7inZItI8d1SG4?O#Bt}V|g zfNf2&AbRkggA87EQK)uCm}t_tMH)f`mfq!_s-oJ!B(_{ZpK}o9k@%p+y|m;RBH!uk znIwbqJsV-vNktjx+6D98kK}?T3+%I~h}Cr+f7|ONV?~2Y<5?pG7#6atrgg7q6A4O~ zaOT(c)TDApU%hr5Ssq)@E^O}bYB$+~YnJQ9*LN;4Tg`3n7FyfGNz?8h|LC={2#Dxt zngp?){BsV8`HqqUD_o29cs%Ok21`nZm`F z{?cEP7oY!0`8!|!lKfl0_TQAx{i{FkPybgw{}b{PpZ^P@FFuDcXcZOm7a-95`YiwK zkN-se#gC(i(LejW-<5yw|M-8BZ~Va@%Afv=Kb3#>FMi~L)#q;S{QT`HKf2xZXY- zz@_A}+i{Wb4?2hu_19=|#$#VISZfi!%X`vi8UOaqkoQ@m`KFH}MR0#bgCrM_283m8 zaDG_$j>gn(pzwK7KF3m#a7B0P!~AK=#g{t|WQEs{q@(?s`uB`*6jU(=O~RRdB;Sd` zkLB&n5>`iqnu_<^Fn^H?$}o2q&#icF6H8>L(G8^SbHg{#X;%tRU{sQq3NRrGwXL+) zO5`FzRvI`cyTl2@{Y2(&>?9B{lkyri&vkVkpVqnY=Q4Cz zQPJC?ZjLORs=rJUHj5G|tqj!{yZGoMJY? zu%|Ljr%XBrOROhN6y8Yf^ zL-Hs6$-q~7oKz*13Es=91h&7#zemw7dY6W-xY4_)VxLIl`{VWOM|t$)dP&EpL}Ro` zqTE}Aile4d0yE&0FlcbRt}@93Tn~YU+r6CiEsa|Ij=6quJO2Vo^NZHkpZ(8J4nf%tbe^dVN|H<#kZ~ce= zf&5?p@$ZDNg*HIUUh2rL)$NgEe;4xT5GI9nJA_uM?%T;#ZhF`0n1*q8K0U;dQcSV9epe{PnODW^iRjiL-S^lG&Xd8hUY(?s|8JChzwKYPI_|g|tme29!`MF>7v#;k17Xsvt ztOcT+CCT+REMnYJUOxzM&G*0jrC&}xA*=UGJtX_kPK(cNQLg#x|7`r1vn=-~g>}#N zh96$m_E&R1>6f?9ccI-|%LwA#8$H{js@-g?-u)!ujAfxQwpVUCF{_Y9`J~n&ML+rC z{a$&$wva&()0oE6?$e#F8C1HS_kF(}ZG9ER#_D^ImES76QHh>y3G1H9bd+7Uo-6&^ zO_}ail$ZQ4EiM1>oA&a*@~durnF{r^&Pa25|NZ0JKcw{%1D8@dA=ZL%fbGRXwUq$8 z`F1GMDM^|%ufwX44F0&;t*=~#vzQMAa}R^Yf{Pv<^&D)Az=cVLg3LFG*+Fjw_CTZ} zd8w-7V;4@F027|27HSPCD+-WEUK@nsQ!3I4SCH&ffQqU6*rrf_w*~~~dT6}u z3W03*wD0dHBMJBgC+&uVEHVOSr0lm@t`_EW7p90mCyF--;4`vp-6GhCEFP(X1mJ{Nv>ev4ie_*tGea&nv6@609&$KuG&MY&`VgpBTP#geiZ|@oyqn2;pgmc5ur!a zi}wu{YbnUx%~5|)&GaGMrx_Ot#Q`b@#<`P~C@y%1_2?m0y>EB#zsDo?IAx-v3_ZF~ zQ?0d0Qrd*1eg0cd{a@~xnj_Z;Mebxd`$n8Rdzx<7J!ozD`RCEfC|Hl~GZEI;kBcSq zapMvK15q=i4ZTkyiF0>yAf7kQgf{%HO^TQ#^Cxc~f5K{BaGCrs{>{H5fBV1wZ{FC) z&&gl-%dusLH6f(t3SWQpXY%9!-|xutAO5HE_K*L$95?!S`HNqa5B}A^CNKWVmqb7K zfMG$D#Nq+DUWfeu|KRuKpZwnM%m3~ld|m#7fBaAV@jd_gPmifs1AgdiZey2lQ5gR) zK;pfvv^n@nrMMhg{K}Tqs0jIMu(bZ`!KX=hv)j-R&zuHT(Cf9eK2k^~%_DzF&P9c? zxT%-vQI-f}x(eRRn2TM*B&IGK8tU*ea9=Cjl)paq}HqGrCDn^8H zM^$SJNjG?Fdr3Jh0tOc?S~xPVbX}8ujUGL^s`Kj2C`lh3_dbt%qc7!fD_*uY(yksc za-eg8(}p#9zhHqvC#__J$h++@0@XCh9AV$2LF~kUCRr5EuZNrz+YTLVol5bNjSrJ< zcB4+#7m)LDowdtG%#Nh<-2f%IJ~dMzw1~QffpVFPjYfrmvif`0IO(qZXm>x-zc7bCu4ZdTN^YS*@O>@dAgr zUY0fG)a(Gxw(VPUUPgG6ljb%##_?uYqfvzew!A}J=5m?%u*UdrXKv#uV-*y-Lo0K^ z4J;%15VxdbuKdft`O7g@<948y{iDO?qT1+(1PyF(o4<8MIvc{gxdm4L>COD-<;x81 zcF*)wr2pY};^9-*n#y!jq^Us9?XUjy=InHjbiV5kZ1F&!MJDfCU@h%cgmlksmQ${3 zI6~c1w)4*7wKKoZ)IQy6KWPwdl?-4{*p}>Q-huMt80b^G?n&-F(+^9W-vIm3{pp9w zG!u$J9IMIhv?u`F_1*rAHFf&}xtm)~!Tv+`Ok z`*zoW$erj!-=h?yHHQ329_j37z9&fiRpH$R(Y=5jcA+|+SYuU@CCqfTt635l_Su!U zAsa)pg}E{>so>Hrw;iI5NvU=)XSMRMaH{koBwdJdo2-8NRo>wh1U}AR5krtlm!dNk zRps?gsG?wm%Cjzv>LP0#5MZKzC8Utq#dr!2f{+(X6W6t%ZT86{CC0SW;D|+|ZP#jpp|s!EXKOMlj)TH7_asj%u&wy8ysHT>`-txtu@#Y6sJ?0n!vhuhkE2_* z+uAW%#?(FgdemC^6yTQ%H4|x5ocH^0r5DQ!bm)E*)u+cV(~~=*xo6UV(}}~YSMETZ z?u*-Rf8i#$yuh<2w*JkZ{mb%q{`J2n|C9gre?wl(oacIJ7`p!XpU6M`PyWC1!$13x zy#0gk%Kzg({Ey_1fAr&}pj7;g(7L3$SOZf?`)fb-1^F8v{yll|g)hp_|K%^p&-`n@ zDEgwd*dxFAfBxool?>ZW~=S@*d)3?YBFy_QT6u zYk-%=i(9>qS4AHuW{FcSB<2(n@C;-g*xs+jw8~`EsC} z*4CS>(WUo;0#8id0FHZTTfZ^q*KtkESS11}1=c}b1{+NRFW8|(`m7|~<=FO?%E(6h zM9T?qW@IMp^7~=ZjkkPOd8B21zTCsUdmKw9C{K4@Cu>`u`EFVoluD%B{~~fq_v;ST z^|y{UkBl4ZZ{zg0j7z?E$S1Y%M(i_%)(D zN?q&glzCi?XHaOzi}`m*%7ijDCj!?@+VYP+ z!XQI&EcW20acsVu#;0hbq8V<-U;E`>uAK0r$$cc^QqLt!I{wl~^FROTfBmOs z#Op$t&{fyLI{r-%!Y&*5*|VT1&XFg99W{@ zNq{2Lg!IxU)LN%-H-_ZKy&zMIui?d7G^?R)FGa-|TnOZ7Cln~OUx?;RjzVN(aJ(W-r zbRonTOx5FR!Zq4z?NQux#CD--srYH3er1Be2?H9!sh_nQnbh-l3PhV^8o15ImG{NT{y>b&O(GZWPvC zv+W~}eNWMb+P!nD@Mgcy+`#qgU-W$X*01_9y5c!sNMqT%>r?cm-~aD)-)BEdAKfU@ z_dW7Rd!ISGy3SQN>`54PmZk!j%VdXz5bS4HN=;7f940B+)WORHMR-_{Q;C%Vd^w{n4)9O3DBsu&`be_PD2gxEr*hibuNAd5 zr(u|5U&;pBEw|5%#@V2PS!Hz)1-?Sl2Ca1VG3ib zb5R*^M#$SpGu%#e3UbuYPtfJ!vYI$zGxhBoOWWd0=Ixp^IZKaoNfzn))8F9qu`>ds zJG=f%$Y7XfElPx8H1GSkm3BjJH7}A(6U1iXEyfN--1R`qc%U!gkZca7mC;Jh&IL+@ z#1TcE87pkd*c)Tm{V)vVy)-joT~5(PtU`a|o1g4>(YwbtJ@UkK;iJ+-sY-B8jk|}7p zh2*+Oz|<*lN}NqeVhG7Pacc2INTe5Z`^gk=#u0YuR=H8}7>JxJn7BtW(eXP~z{d(u z7o@Ncb7G2KkG((1dSH4Gw6kEM{FarWS{+Sj0F&ZaCFcCrfG$R8f_ZQda}I&9DYY3M zg1*%CH{^+Hg$9pyF6Ktvxr&{z&=%>E>Z_pLbcqW~F&N<$yhwr+RZa;o2ec)|xq2qVmyHTR= z+j!<;{-MTNRtbg$bUwjk2`52+tIy`#)r!tK_iVcMsw?S==RJ=ux$H@F_Ic+Mj5wdY z_g?zV-~1i=-M7At-uA)ct+Gn5AE|hd)LP6-q4}6PzIU+E2C^Gc*aRvv`k#5uz|R&+ zR!`A(ACsi{LTGExBn1Xax}@fD*9G;qqdvCfCdCZb+zHA0bkGj-mQr4ZA1i{Apje5iE+}h6m;+O zPsk1WE`+ej87{Ec$Z|H|NRx%I9AU)CTGk7I1Wkcrh6gh)c3VtIz-q=5AdfLE$`w6L zmv|9i#eu&~eo8b4%dgsRnWGJ-zK-(-zt&bMItMs5h9&897g;0 zXn{*1UH3OKb&)Ef^kK!I34u45dtopaUw&9i+i3!e`P1MwS4XilBR zI&gQS8DDqE2*yV|CxlWtTV&x35A#7>R;nj1f5y{WL{H7O&Q?DXXp;3q>yB%fAHJk- zbMA*OzW#h98-uQcwbD(APRYjVUed>hJ*4waNbZeBSx}^}x#)><(@i%K@?15AdJONb zWz5=*vP<*mW;kfu@1xr3W4nDwH<5aSLx=5N_ZO;2rLqxhcZZ6R zku7_rN2|oJM!J?Z2$UAE=VW76KD>}lRo$^+ZCJrS;LZ{IvY>17N>GiP$^B z#{?xB=(~tphCcS*_mcP>P$<|!!Erv|iOj72?snM-s^^taFK`pqrpbq5D#(;fZluvL zGqdSW%Lz(kR0^pl(&JSDfwxIZOi9407Dr1)F(r$?Opz_ol^+R(*$FleLPD?XCe(>jJMXw$EleXD+-Z0Mv0$`)bmb{lvWqWu?Y3QoLOo3|5q}3t$u%cGv}@^g zCvU3nJZZz#-d}3BnxEFPNu<0>*vR? z>6ua4#@xN_NzwCls?J8!uM+iRg*Fzu zpnT2hU#W-L6;oo5Qff+NN%e!LYVr}Ip+?(?T;VQhTmZ#Tq{%&IL}Yn7dboJEhy(V3 zoy|MO7%}EtPqiHq&M(NvuLZV{?yIbc`#k<3@|cjWlZ7#uQY)B}VVo20+n1WhW<4m< zt=}0Zp%^B*I=OdVcNjo>AWQTNwmNwLrZ7~ z8ZE$egDD5rg3e)%=JAU}0mjEgBPYE7jvQK7vE?(dUYy*i#sdOjp44PxitC2wkZr8m zMq4Z--FdcbX~Vby6sZ5(SM$J_QoTX3Lel7VqI#vTx9zXSQrAbTlXZS=*N&<%V;H3-95aOpPTd8W?{q!UC=;E2 zab8y&vGGV7K5)c+=VF7}mEEJ!`L^{H1%N8Rpg7lz-L)(z(Kp_BBVjM;`ujRNT#3H< zBVBxc-rKAx&@~)kV_9(}x|ST?ec5F##35&}BlOd|rq;?j0ZKu3Jt9cjU{nxF+Go*8 zThjHKeY6SrZB(YFIH+(^nzFHWfvGgB)t;?qTsI}KG*8vKZgIjv_^R^Uut-cWB~A%> zaLrUCnIC!lloo_gHVWZxdBo(m?FaIqRq>!yB_#z6xD$RjHKT-pX9u=ysY;+GA;C_Z zP-#r*gz!|vLM4SXG+ce6E#zF{Q`ddfq!g?6xvulE)HU9lbDM)j4-FT$`^sdbc4}eT z%|Or=)#xF1z6!#7wVhm#NxfO3f;)C$M0hd6=P>1TiyN&^39QyDtg4cJ*UT9$Jh+fC z1S}a4gL+?>0QWd-bS#`$zZW}}3@qD9!*4-CFR}I6^JI0t9?kx=d!P(K7&B5b6+5>@ zuS7VLZu5mXNG^?xWNHjuV}n<~jJ(YdVsKAuhlquO>5G8JWe{R~3P}jrGjBBaZONr< z#(C)wo8Q8ztrYWTE^w2t{4CwOX;$=n$|Ob*CKNY)A4{Ud8R8u7lQx%BT34Ddwe3tM z2p^VX0AY^2Ae0FOeJB_YW-|z)??%=%wF{kLfWP3p^XMOc?|0C5e%IerCAz}k#3OY7 zCq7BP@U#C9z3$gvNAEs<`({qA)UdUw=j5btT2pLQq{5136|a47*I5;7XR4Olf^1H^ z{9?~EI=u>k>ER7sd-uElgnsL_ucf#D(tn|QZu^+``7uwvivIV%_3iXsU;9!z^9&UP z&)9VEh-Pqd+-_sa)Xhzuca$h$Tod4TqZy%EWiPZ)C@TAvW~`~>ndmkdXL5FF!->rMuP3xoOU|M)ctOe z6hsv3%sCk-NCoaj@0CuA{VrCIQTZfbQR7+7GhBL_)Uu+m(*DX<_BM^dv2L~K`63#@ zpfbi}-;HmIMp8{;>=C2n3W2GNh26k~92+kD8yswSXS5Z4-s2<-4Ky!*&oYyrue{ZG zvB(iU$`R$em4<=GibXm2r*S*GmWh+f4lT~W;YyTbmPS90RL!h?V?I(>$+zEP2B$Wz zq>4%v4c4o=zpozE*t<3bh9&V~3L4krY7osVFJW#w?huQ7JhVDm<+Ox5PlRLA|u=KGO0uh?;MBO4Z#{Zt0j zIoIUCDwFxrEngr_*`d&IrpolrFBDH12^+B+18}zyoT(j>CZTE(?8K(`vZGNu9 z5CjLBaZ`PE%eYnj$Cc=+6QzV>SQ6XTNL#tma#8vBT(AXJDxDI2eLV&x`r4%PYo(ajs4WHKDw5F zUf!+SUvXIBYtb;0iLyE5F6i?DHAb7UczPEJmoy^u652>nqn@Wge=woJuSnJs~eQ$(8 z-&2aUkBlZvAdc*uQ+a`lAZ`s8hVrKG3WngprPfY`N8t!lWE+?E-JVAe$op7a$?~O| zl|h($K?>;wL@Km0^7PtG6p_zw}$tiqVKY;%7i-44N-_T_^zG78Q>@I zL*Kh*3dMD)a6C-|83G(JKQL0-pW@1THyC8F2nI)%W7vP$(ch#=s^mPpFRO`|!yH53L@Z(tkab=r@9 zDZ&Kx^~S@DLF_p+(8km%a`HgzxTo#(tFw1zrKsHWls(g;F8$vs~>my+Sr z=N&0OLC-5)K zjj?2SO-7d#KX}$Jg^v+hd{V#*AadhU4<47$I$9pi7^@fK zpJc{q>esPvE2|PTU~LhAY?A=FY4UPJJs``D(6l~xE@=LpM*o!&`eHoV(o!BVP*H}{LC2#bY zY|OKE+cMo&_S^ny^h)oNZh`gcmzAbO>$wn)3G#qdnKE}L%G;Gw^-O;*9%(`tgO0Z$ zOl@RsaQ)}s~Pr2^$SE78>}T@~xAp6H(FTCQ7qJ}J?Z!wjfbqG4It z@ps%Kdw1N~?j1AN)r@v(+0v|f)nepIqF5NId7Ra`X~MpR&AQNGG`?BDH{a^fJQsBv ztEyrX;DUAZD`nPpouRtHEHY7#Cy?U*G6joy}T7#0aWj4zm!P7CdqgnGCgX5Nfty%(! zz^s*dG)Cn@*kqmpZ0DtoRCRr&gomNnv+aT*zRz^)Dsv}5We=q~Nx}-=lx6cs!#dfl z*=ws`l;FavRvTLd!@qQIJv3i;kGl?+ksl%E1(O{PFfx1sg@4wskqJpFKp^c%0fRcr@+@?A=bUm;}6TpMiqEgJeq}#U{ zu5Vl%^FznKtr?XND1fW*AfTX6A(l|!hv-}(f0mqf1IOAa;60JG-|(NYd#aX??4|_sHcm*B%wy&d0EwzQ-_UzbPdF$HZ)_tf)8DsAS;BbbQD+lWAEM4mV;8kDZl+h-k#IYMDD zt;e3>TI*+>w}s4e%r;)!@S}Zh?ma1*%&zi-c5I$IN%eD`=1+grd-l>bED7p(It8z0 z<2zz-tTb)yXLRzn@#29VQqah?QSCjW@k$$lPYM9GrAUI6!cNTCANUw^&gMIF;`z9* zXpV&{^VC*Z^cnsMM;rmAC>}7##tZ7_W|FVh$xv^l!Mv=UXY1}8;xbpeX2%{W9QWFx z;l^v0&ajR5H{7>-^;~hf1Z4_Qc|J$d*!rhP*DjYcc;J;x{(RS$VtAS4lak~RNi^4= zTd&(u+qbv3*N(>D%CJN(eQ!}9j3^_cVFH>DGXlljBBfm_7pe?sYA<0+%aGC3n>(2- z=C+U~x100C2+TUu#)RW7Iz?b!(|-*<6i$$k*9=aet%m!cjI=aLpi&}-9_vu`n z8zyz!B?GI^oK%k>c88O~JUAbmhSiDKmbMNB`cf;l^%b&qU$f+m zPM&Dwu&TP7CmGuu%_&;*UL91%(C*#MQJt{9E}BH0wSd%6ESFckVRz6|59=5j%jrEu z9=+Z6-V#008r5xqm6(Z3V%xUB8q0nO$5MDVJko7IZn|l6?4P;27I>vcZ}bi=6!T1H zZ*(m`wSKoJ8zX#ai=KdxHr+?lAKT<66&^nF-uL+^a93e^$~6xC6E&9f04Gl|Q4VX< z2@~gAQAAVyHiw2n0;;x5)h2qoUr#KaQw zCfuJdGIeXOa$n0rqNdrcu))l< zPgAG#fHC+MQ;C~nOvYaMXfY+lH12mrI1dqXM-U(Y;(NC0O~bth6)+Wlzrh4;%Y6ZJ z!W-a~h<0jEiuWlwIXTS;=FUrsv4}R9f|YJa-ekT8m2Q@ql33GLsXBSWuXJ93V&o zP1x{1oM2`s=*FX`Gw`9)(BEh~U^pj~z@j=LXHj^hE_=cy^lxAJBXspso{ZkpN8j|{ z=*Bnx9^HQbLxJNoFR|Y@yt0_v+DV`e@*}9nMp8yyK%5ran<=;gE20k&yON4gAuswdF{dFaj*=>lp(L`+37OzINohnRk2is9jTY3;CY4Z7pTJ z-Onql9d8)o|zmg3f zfd5hf{l@q942@KI|03HGL=JKe%4$pPS(eH8hP~h$9WvSrMGtaTa|p1`sA{b793(_O z=bf$!`J8GC1Xw@O+9E+UyJ0qY4E6FpP+C%2p!_!&tXAO}F6ie_UmCYopXC-po|O>C zTvDJcEwP761wD_QD0=?dzKccZSR?RV&=#Z3XUNb;!~3ZW=LdMSciEoQKF>vs_Ui0P z%T$_iP_JM9jA!6(vO%!5Anh%{?=br#Z-`u63F-B>66;f)vi z$Yqaj*}CaNA9iKBmRYi~TB>K-bhMj>{(E@$B`GIXEn|)>DA83%{N}pd74=ES>L>P* zrhtF1kCF>2$3kz#Uea4A!S-^x9%&UV2Euj}jZ2M;MvE=>t_?n>9o@BucZb?*Xg6Zv zZ@&4!PPN7AH>F`oUh1YqUvsT~ui*wzq91=T)6NdH!%9Vt+mfZFt_MJP_iT-{^|3+S z5M8KuueOTJB?aGFkrWQjU}_;C@L(Nr#>0caWk?diYSJY^f#+5*X@scro>BwX9_oFIw zP@?PWFMZr&=_h~aZ*P?79ReiZw^5>h^>uG(N_4=V7@idHsEiYb87HO%9FyQV!KLbjLI^|ZDJTb~2%@&6!{!XzvB)@g7g`y# zC+3vo`6=oNguyS2kx8auTEx9<)a!9FmMO3{)W3JIWq9eSqieFzp^WcKb7{%Y$`n$D zlba+*puoe7NE%5=jliFRwg#JxzFMUWIj8T7n2^#!+9|EPl^FX01gS4M!pb2)nSYSc ztLYHP-+4zV`2V(h`)k}c^q^x4W_AXpY#6qjJKOIWc|iKkWL`(|IfFbQrN;z{2!X&$ z&(d!1(fJaT39=j(RgnG8{nhzobS1Z&qpjIXUXo1O!G=;Dl;&3bT@tnQcY+te839=> z^S(S595V#-o6RYd+F@U`J!ulTF)`tWI)@Y{94+)nj-~PQ`X%8q1--*k%?2e_*{DWa zM7ViJ70?jxo6o_b(V>iY8 z5A8;|Gbzy9w!f-g|z>!fS3q+{?#`zO^w(LriM)7D4dqlw1` zG^v^8MvrutiLN5dZ4Xf1OB(A2QvVIfYxR>c6cb6Nm98Om3=X2hwzeT~Upl3EgtOiO zYoe`%Gv?zNzB$ijSj~fYL2$`M02Pr$0Lg_=y(jwM3K{i`rDj2NZ{wl|hTY3333jlW z61iv@?IDlAOhhRY!r}^4WxcIr{}1v1JDr3$|2L) zXPsfUsh0m$-~4jAlh34|{P|y?y|s=)rJHAxdKzn1?`2;YnwIDc#TcaNJ1-08TS8ij zgHzv-ncUCjK4Cs`n1q#%!PrRt47Jc}%$J23!l~WTo0s63L&Sr0vphZnR$}=o)Tp=u zA*CK)@vJ1Abr0uIK=XRGA;YZ$g;^K}mj!Eki^N19$r0vus+#=`p}e9_pl`-F%xAXy zf!%IoGJtt#xbqejF;-dR+X^mXTFP~1pjxpr0rI0h#{ z9tMTmL?KLKzSn?U0&OEQPSE+ zPqeL#=DeM8Q>HITxv|DPSucCpyg6aSUPIWQ*WYd=qg~ zs&{a~w!nfCT}uw{uA$vnmjmxI`ll8<>5dn9d-;~ zW$DjhO;jTc^&!o)s>+s9W&}(L;1L_s;+EJ} zM;REL^9CCy%|zmfyELek-Fq1x76R-FdhC@sU#0i%gQ@x9C02?W!dqLdXI;U zr?;z|pe$9RAH=*8_B`e@Q_QohY;Xc1XQ72sbQsnfTk;oCVGA2nHLq$*-a;zaSu(*C z9OB{&0CPZ$zfr>DJSR;o@ar65?~C-&1c<829x*sqBg}b6R`l=w*Kej5f8#e9e(dX*8 zBD?#T2_JP#5@XOQw?v*5TghlVo9T+LS_M_Q`RLa|T1B59D)^RMyxS2HOq@M9ts~1{)CzMUB%$4kr^QG#U#IhsIO~W0U3f z@uY994TW;@Ro&T1A{nJM0lT>7DbwU2jtdNhny8~I9+p0t0l?_Ts$y}=@(|6n?fL5hv@D zA-N{8lny<@sboW*XbWV5_C5>0zx?S>Py8Z2onBF%b2=d<2)ompze~^8?XR$p^riD0 zQL`~1l2#a&ipY8F=Xp)DzhQ~RGXH_sX>-Ln^Vy}IGjFU)&zj|Bk z)5H8Y+DEuos22d3Ge&v#)sVsC-kCt^Rd9EYui>$_jKVM_ydj=nat}qi)-V-3L#Vef zV_lRzH|}n{GPo7%kIy2pKD%I=VCa2Q#?sd3%i8-J_`(r3l{w|`j(pvj78GnlP4=~B zAs`oHhGP8_=FU*kduS67sW*JZeW^WCC{OQZOmpQd;11j{e(vxC?J|BFEifEvBC6Gc zr7AFg&J!db;i_ zzRLOKBOm`L{l@EllkPjYb~?AFz+s50HN1MofooN0e8DwW(F?xfuhPX&+VML(B?)l| zX1vort!dV1qM4Ctn#JxWUunlr!((hNC<1J&2j$zp>Fem7|LynbcW?bfs~^I5^VCyK zN~KBN_ARpiW#FqT+?@f$65EvI<@5?oEsziZGhY!R=cAnFS@pKAV2mYld|zkU70}u! zRFrVpu{q&yw5RJfk8{ja4VyES?`C5kj0RIO(CM?Ot(pILjl)={et<4O00wwrgflKe z^CGFg+lwz1qA>QYxp>WJ1L!f@=F4NIYNTJQ@@i2VU5iAG^Qs^eo&SmVPDV4>VIE_( z&N~()KC2DLeU4;N?ftAF&{LXIk~@<7Ps?TGec7;q_RJsJzs}PwFaT*LXt?@&GLZK~ zZ=-I8D~(Xpo2y}PO3{$+F!1D46g=2Mp-Dv<_grUQp|n^NNb2@o>R3Q@S~DPne=wW} zcsC(<#{1$!Dv(K~8#8x+_;j%E)@P3@F$BU~X_=~FZ6ODd^@+%nZ%K}WwEoq~szFDP zCd_gR86D3?XBdrJy%KUmy}l=w3A;cR)Gg^&*uv9zPma!XXVRo?gM1nMmi%0%0Sfyx zhx5b{lYjhqF}XB$nP`7jq{jP1cU!sLmb2caKYi;fTPIzW=-bTMSd)#_4dURLu1fR? z)3dG_*GO-io>j4)d8KQCH~NFrXYI}*-I_OxW=ixf#U9c}`)UJqSSQ2Lqxi1tqX}eO zPJ2q9c4#+sw8jL#L6Gkh=wv0+ZXH7`_y+5C)kEE4-ghhD`Zr}jZggyFOP*DU#sc-( zHds}Ou2v9ye(V$Nbl(0dE77$a-yA#kJ$s^S!5ZndZs7K;0AWH{Xg3HTN9I$;=>z?`&@p=#gjlAY;On9OIpGj^@W-3ViGaoo>n2cEqCs>Uxhv|kYgzsp6__mK z%lgh?5!MM#KK@N9sb5<5X(d>ddFn(@#GWHu85VI)Ov8(rx1E66Et4hc@xDs#OF#l) z*#SFi<)Ap`wWLnxIfz$`XGVPoAeCh7$X4b2UeG=lEE4>);_AaSF!m+uxqHQ3$sYvZ zRL^0p?@RY@eR3d2`tDHd$5)D^x>En86RgE6!@W8O#Tn9ABz@8MDr50>B&LpK1fld= zxT+(Fbd`q1dN`Lz9!|Of&%J_-Io26O{IP}c5$YM~(%2895(2hkaEH%<|NaX9T=kFH zJNsu~Fw<)}d@SghDg%H$AENCU)}TPL*sJPcJ3|n~qUXNy+1Jwl@m>EDtBQZiqC4O9HhRw;pQgJXeq^JtQb)&8^U9|1p3&Rd{S}8{1rI1mG#C}}xkKxHD$D!0MF{_y%g2ptutIzdK?D0JTIL>J=c+EyL zGf#A?FKRfRx;dsL4C4}E%0wySv^Z|8nNuVk`8(o$Y0hB@0Qan<)qwT#6Xt+AS==!* z7`PnYvDKF$lh3d9To%BX?NO`_582k}l*w6+oPzlk3cCzrhq7wi|VsJcz&jOelJF(E%kWpggR2A zPg^IwQJh<}?(vNRy_1*1lIER)XZo74p)Iugc25L-&aeemEp0#Puensc(RU7eN#{}> zuD6&6x-JK<>9ndsU3J4_w8^G<(9Y)(o!PfG*DAJCkRjc0| z8;|qwWPrc!I=b;^UL_l^ zbQ>JP;2@L$%Jd=1PWleZOI4_$Jhy_+hOfn}w`>!VD1=Jwvk)a=lgYy`i988I_CDv5 zg^0F~X<~+)I7br-iiV{j>V8pBb&6BVD!RexeL`WuwDHp|5Q6);?@u_|F0l`4gh#Ox z`9^?iyC#L(#O&5?r(YZ%W)GFL{^32^*XsQ*4VhTRD z^;ZgOB#B@nkl8xONrS5Q*X)XGiG2grAYjQ<*u0%-jGS2Wyv<;6+3IP~k9RM8*S2uL zH`O_%x^mE%j~#`umg^mr=>4e8C<6fXMsIY4O7)_TTD@Z|Ey{m*X9&QB$Cud`34aa* z4)G#r#b2lC-1FOy`|tcD{oW0)p-t~VAZKuZxCQLLM zF_wzMT;})Hx9avp2bT^Dw;8Dz9#~0hZ4+Ijpp$Fr6`7c4!B=7#4)ybfhB`4%cz_X& zep2q{ID}rsAMzGV;~ws*PSlT}&khn2bh(>{ox&A!hEtD?J9cmboafN)$Gu1&GCuNv z9L3Z(S7B3frMcKNUfZ=Xdcch*j3LULNRqN{{AFTt-j2D&<9n;O+h`lcp=h6co3uud zq#4b^;B3(iRhBSqZS>Z4Z(+-EVLUbW*}vv-w@a&}Flp2DQH^&`GPF4 zRI)>*^2nO=0((#wbKbbrz(K2gX-?WDplesc$6Va7hwGrv2B%_h8KdNsRWfD6kIHfE z%kg-NVM1j`Ei30OHdlZj10U@xP<%lh`EcVHu5sl91VT5|H7FC*=~i z1Zp@6lnUyV_pES9Vn^r$k#DW#FJfU!=AMT;>=f4*B2O>U(d zg%-EM5d;)pG-Hfg`u>UT+e*O$yv5xbu{14&i;qK>XbHCo+AmF;Lp}YPboMo}c&v1y zVbmue`Z8BJGJ#e`83IRlpPlbQAWb+GBjoV*LXa!Y82k4|+qi=_3=4-X9?C=^XlcDG z740P2F3xPU1!8|S!3OSwAf49%^$b-x8x+v?*M-Q^u`%+#bKKkkAyjNDXs-*u=$*b( zB*M1~tFnnLt2Lkm z-}igo_Xju9Yk&PW>BKtsJsG4JFlaIooqP6K^w(eZO?36suk|Ei4?Xx0-SeqW(hvTt zpQZPIqaD;y7>bA_|_C&gE-a0h8hSyz#WyFGbw!TW& zx_D1Ev=a6Gb!Z}|0e+fi$pxuw%(Pd)i=Eq(m64{PB)Xw(>Dw`uJ>qUlD-X$ML=4bY zq^Yp0QDJQDbY3cY6;RB|UwF`rnk2=mZ2>g}-{E8wl@y7zO4*y4WoFRIxHHLMbWN~W zb*v+JwPUzQhqK!hzt5!rSEg-qD&bNVZ${;C@;*y)82HNT_8Vcz`do&gDpvJYk8ok` z*2HJ{OlCAescV?Yj5a(lOqZYXAgw})jd(EWmc0}P4zklD&~8+}jTT6fK0MJceClGR zE|ZVYwAe3RUlicPi%OCi5Q&x6wTGb6`T=~MEGr}0K6yvP`!q@BdHNU7Zg4lEkTLY~ zYp-$mI*ulQVD7rQLP_2gvLMewKgwTp9-gUNV6C1VNyqZ`SG64996Pi<>DZM^TVJ7U zbhI03SeA?Judd%5_2MN%f-#i5hcwEreYS0{j&VymcGS$tNk{9xZz-qak)G%@OVZ+J z_}dnCZxrgLVQ-Y`c5*i<&NVQ8pDh~#W3sZ@tu3TmVN|!pS=+hd*B58K%|gK>X;exl zY4akcJ&n^Wx9}SkUqx51nD7BM5CjJ##qo>7JL&hDlB%KH#&|%qm}cSO`(a%#7_gtn z!qBV|w{&k*h6y_=&MocDn#s0TaAiFcL{nu$xTc;c_I{ubGPJbyw`C$uLbtG469WkF zE9o_@OiB`VZCn_Xi_;hwJR#I!yRO*cLAvo63!W=-@LYE*dae^RTgdkl#8zKz>#hpJ zbQBzGa~~@SlMPN#h&nM;0;rn^8q{b zVV%DFVfW2cd4WKH$O#=Uc;wJ(F?gyW2e6fH+^`i~X8E90+se|loGh_Bm^}QvzUS&E zKAyhx>%WOKU&KTwZo8FU^V-+bUKvM`eVPdZkT&M+Zhl9DlWK2DN8Pno+fl=>>&XInFS zAEEH%_ibK&TNmD%BsJM`S1K(oprys4A-JPQ^?QvjT}w}!^qTdBRVLC`2My(JJc7>_?vI&h zv8C|B;a5hU{O6=ZXL&2eP5D?mhOyG^oow7#kIefZn^btVd%Ye`^+7IL>39ewPrn)3 zCf#e=DV5dd9IvrB$T%URHBV9}j@Df}8dE=7*GWqP0Ch?5Hhv~L*4taSx80*D%C*$6?%m-9x7@N_X1LJ~O6#IOc!yw6>TtAy z!d}uf{W`qTHRQmm$!nvlCFS_St6DfiDmiO+mPQL!>L&$|od_wTDyDSlty`FUom^8d zC>Vr|F!d8%Ov+WoYTXXKuNP%}GQoOA7UouDM#TFNm$V1qpv2k_a*=}r33DiL$3v6edC;ro4aQqcV$eGu|{U05U=Q;|++Y-2WYH$HVvMEEgV z#(e!w)GHG3K0BYWYXQ?9kK6v^WJ#c`J8YqsGAKWXDS0j|D$sUREBjs=?=QIODJ`ou z)(QU3@4u9ozfa=33n1{c?B;=0cch66)*&r_Zg__ncwJnG}k(*@x%-7-&+bRMUQnZKj&b zg>xN7LmMoZU9o1O?)$cS`h-je6p7~$F79h47ur|Lel#v`1F7?aDH{zWy|$h|*^Et+ z_zr|!?%OCz%K}c^;ho>w@o(xBY6#q^+u9$AUKYcBGDSjQSe7IU_;`vx=ddYEzLzh7 zK9I=)PVJp`;mn#MA)@nWw!PIc?-=_Hvn%zDw$(@&Gx)A+64NQ~*Gs9D`{Q6YKB><| z=2ZI7_;pZOtVd;~M$;SEl*tKgKiVz{4N%n^tV$>{^nlK>$tTUYAu!ggn$e>v)X3{& z?@c+ZTQq=rb0__m1OXj0<-g#mO%6)DzSY6oXDufs9lxQ#ugy^be1}pP%Aq6!vUKMm z4+=%j8r668eONw_=~P~V2idj^G=Zl+W&rb|?L%+xg(5B{*9%3GPDI}6*iQZlN)Ss= zv>$3TCm)}7_&p(8G>^CUJ@FUT9W~arWhJc(QRykt7z5Fwa5vuQdNgnJkbrq-7)5xb z&rDIjt-z6K*}AVYr)O7?XsnhSi8|#O9_bryhP4;~ME&4%h=@ISHsqX$ATPCzi}83;_6r1);iCt!5z zd)_xTp$WkdvXx;f!Xtr-hY8v?Nugj7wMb-pXSJGnC^XtYLwKtQ@jwu8O*n)nZ0*DD z6{HBYmZ)#^SZK@B7B;z`6ovv9GR+(wA%x=X8ifS4z*$f&EY?C@+d83wLXp&)%-SdR zgDmvT;HiWcq0{VbMBSQASZL@1A*9#mfe9plrx3+jD>}H~eI?Cj3dX(Csvg5J>`hyRU?zc=*Cikk)TK{$Q(>BL=Z2 zJ@zs5=70T<>Bz;8YuEqeO*hgTUjJM4z)8(j9pXZ7x~p`i3XIo3`x*4o|LOnh=Rfo( ze?uhS`hcfN(YQ@{!e7t$voKP&pzJj2QQ;tGWwIrLj- z8}ki#9j44%ovsM(-wmmjRa(-H$MBEl6AyMmdXq6@-G5M^tKyE^r3p`IL!+b>28g5)wSv;bg+$5U6tsi zWMfT-yZ-w9*GHp3k=`YB#@3``zJ&M~x1FIv)G|F3-`HiD`n@XDEw5K9{1>tPRsX&~ zs;;yN$=sRSGe_cM%WI=+shPX03xBEHnL@m8jMLR4J+pFLbFF^f(q{p01O3!1c_U(V zS-ZU;t^1~xT_^+gRwE6p=;^U}xde!+pHQ|zG+gKaf+wL^!+eckn1>SzhX}+NZdNaS zrcjsVuPJtut%s=ZwbVKSv83Oxt`Zbj!;4v`cr}^FR~w9RU1j2Cq3Ld2Bl5n(+f7j3 zF=-`{(d=1I9I1uN8{vQm8fc|oN{8QKdy@vy*ZsKzrd>h%5F%fq4qw$NNP=efvk4(Q zB?VK@7nUH3Hdd0_N|Y`4dIOZ8ql6-+Y6xg9?O05xtNfE_Nt2$1!(gRsM)mb}H(IvG__ie!V8#I`Yp@9@Md)h-M0!9iV%g582P^H4#82FqwwPzI$>XxE z=;ppV6l%oO3@+LCH`&}~duLo-Q?#4AG2v8KN!K{FZ>cqy!Nx^>j;irp zVVD(jo;_vXIg8X{QIX+q-fQ{;85?v@TbOWk;5fE6dqp&rru-`**Kxl#uv~ z8S<%VWF0<-3=#a$FiQm>;=zc8{;StK2t`rATl-2|Vv~^>cqwHWHpOIT9wq=gt)Z|a znuZYN9bD8>^)%(dVT7q}%%F>o3)dW5(|4iGJD3 zw878|Z@EQ3cWeFj*_ICIPT<$L>QYcP>?d zHmgUqkl>(U3#|HClZ@@$_Q}{AZ76k}K;D=fUQ8EOD7@1J;SQ{Seol-1&&cr zN59!K`mU{x_PtOSN{6-Q8g{i(W-7LJ%LJWvUAXIq;^`D2WksVYJTwf0(j#o z3q(w;=;VN@!PP^a@)wHuF|4xZXB9|+I;G4d6K zS?*WNV$|b?LyqyCICu*uDz(_2X3S2W&Nh!zJkP|*>$gum1I=<-$9Sp3ai8LJpSmxp ztxR+nfqbCFp)@O$U4aHs`;V&?wr11J385vtXaO zXspt63~FwhM1+SJAF6HIYX^60*AYg(XL5`$)#KoC!P6yVI%N&C%^BhNvd}iKlgM{i zX zX;IswHYns_N*!s0LC1Ix_>A{!Y`jPD0d6fEUyQO&k+r*)F)vj1NZ)2jnXAr(>s6Pk znY)qD*|)&D_9+UqjpAIRg>lr(-BpQh`K`w7i|_2#MeFw(nOyb5x|eh=H>B*{ZU3ud zBwcFrdTqA{rUVY_FuJjj=9)*T zZhHU=VcpkWJL_Ckpz9*_JP5FIv^CPz5@O-qSDKaN%3+-}JkpoF`vZk8dpuvZphTnO zHPTpbf&uB6mJ`)rR$~Pu* zzl7elraTghvBNZu5JHs6=(uEtnHB619tX7Ds=&+(`kmpHd1lu>=Ki+?2KX9f2t(XI zzcxncYgKu_WMHgbAR<~?2M8lYKGqb53m29Q?eSaJ-&VNCx*@+uOwq3Euw>|`8HPN= zxhMaU3`HUd)WG5f!LkOsYrnO$vT!{V3alNTv#rs}Js#AJvvdOcSX&50dd-(QFyJRP z&gAQ%d|lK)5yp0Op|G>-X^b;tAxeeDNMlqoglh(u?4%c^`v_rkcrZ}@6Yx~|M zU$P^TI+3q6&&D)>D%rAHsW!SZHpe*<9vecNu*1T^B+~k?9E697ybP2M| zq+rRHvPs88*aTs+GciCp%Be`KU(e0VG-GkzoI;t=1{(PScM$+$?M2)4eB?YpPLSNj zkO=y=xp#7S?-FeUjx;*k^$`YDrA?Vm)g(!Cg`T$oqTM{n66IPhI(1`a#1flfI_*;+ zOY}U#w!K778xDi%jKvo_whk(v==n!NPmt9vX&WsA?h`^b`cfk{iBfXdd1P9waMkyX^NCDOvPG`_%e4!+RhSa?3{mej3fZ9^doW_y zx@h&CFhHYlGdP1Dh|?C6Wr0{6j*ptHn-)sW8RdFXS{}O?-TQ{O=x|m&458duBW=!4 zPdawh6ZNw?OSgr0FYV^EOMT*Mgm}jUieiqodSIL8G2({*0{4+t91%km3-FezOxL}+ zwE2oU7}2BY>0`vYhcu~Iy6z!eKX(`2bn}n`9hQn4_3}+O-K5#OuTyY&+`b$Q5_ z0yc2KI9?|FM2Vof2g`&;TMJPHqJ##?Dr3ZK%&YvQSu1N>Vx<-c1O$DZiXQGGt61A) z6I6v*{Wsa*ucM_vh6KO9Ki(SAcRPU*GUBQ*<9OVaIc{ySmN1f}2=$%^3+r}DtQJdH z_1vl|WSNHjwnG=zfsVZy*$AagR!ZJD_AxYI(Ey8d4)?Cw7;9$jNfItd2nTCHOPDA{ z0!#-9d)~%q39~A@M7?(z-?6uN1U|BcK-omVzL8)Y=y|`%41{AuAn+V1C$7m%dPtv>o>|@>i5UfV>Z z{eza}I}5u?m$|(Uh74>AljlYq3apFv>qh%I-4n1#bBU9YDtDZ8%!I;-LX7pYYB=+y z5g2b)1-JCmnXm_J+ecQSZ?&$y1n4@);IR~|AN@IDv=MP3O{tc=ofZ_hIo@E0oZLU) zL&3?~H!L@z6h%=JX{Nd|ZH8bt_OqU-N?Lf8<8Q}{gq$xpf8m~2A*xDwBb`c z=HxUd|M@3J8@;_Yx6s!-#*uf1l6=@#>WSe{Ota10waHE#OA2ISQ}Dw8v~_tVku7_W z4l64$D8^%Asi1A~I9Uz}k!}vbaBh=rgQL2XDlpwKEcT%`sDMwB!#j{r66AWty`N)( zK_H{wrB~OHF9-vr@~*~fX4Ret7A%vcbQALJEmh=S8MYRsD^U6^a?hrVe>Oe>9AM+b({?#IPRtn-aIvT~_9XH6QmOQAm=%{56(tm@#+p6MR%`}dz> zIW3R0M0_wexAZsxH=2IK6%X%bZ8SXAM@d@d?p${5b7||V5un#oSTBe=kMwopvuPh` z4Dik;@0M=QGed&o_On`BJcI#CblRM}!GK~$Nt%E<$GJ-gm=lXImiad)Q^=%BN&ln`);-s8ehsoU;SMi9wy+F;t%>< zI;U5xjh>GIdIILk96ru`J^$9wVF)VrPQf-NqM@S_menjQz$)&cX@=ejI$v3Ui@H#S~ph`v~nrpY;~Ap5_8L0ub7c& zS&dzajEJ^zthvU!srOV(>D`OP=i4@1*}upF9_M-M-Y%lvJ8B_-jQJy(4iDBbWJJbD3Rmyp3U5(u|49~) zZb4Men!+fW=bcj#giac8LC-mjj56yb-)wHne7@%~)$hDW1N!4|Ww{-)-k3iNOhP-7~W~*zW{9|3JfVUrSWN32gS?VB#D2Z z14L0L$KA>+OT!7>&whE7BAP2LWwJI$;q8F#@6vZCyfd=X9V!#V_^l@Hl;GL8g8vhE zRLobD6#zs;IfqUsbJ#V|+ol8yb^PO?D7!S{!qY1jI4%i`tV3%_@1?{knH(RHBsS=$ zct0};nk%{vpNw-ORA+qSWO%H{+T={;~(gH=LG&xU&uO zL=r3kt0X%k(>4e#A`+=)qF+VN$oknLa1d2WSiZsCa;OeJ627<+S=(lEc6-&u7j|d} zC7Kq>4!&fkB*ik?rDtw=%B3xr)pbitack!8>WLnbNq0+oYst%gu|w1@ev=N-E~o{E z#ST%@5=8BoJ#l&Vi_7n%7nwEYc{yB#Q+ z3IgMnP{ys&?)NpH)?T%QCGQ&P#LW!YEuWsOfnCT^WqgB07TW3<$LcM`nMdvLQ0 zH`^ZCuPoql_dZU?a1)f(ZJ^8oU8R@R>-yZCC(#S9ezK7;q4)gRZ4vz=@vbWL)$Ph4 zr<}E#=rLD4jp)oX+jA#A_Gk2(KfN_~!M`IROEW(jscc?dgU`{IzJQ+oC4YJ2nmsf1 zlMPo3Z37bv_=J{{pY7%g$|^yjulu0!#&RHXaVuRr@d%x~_fER&mRsnj-tr#$=)L!M zf~}j&Ku0tEwetZN2!+-syB~A3SRx`gpw|iC{M=+=iV}kJlv*tYn-Ncv6U*^v+uVuY zOk+(tHb%1(KjyB+!xc_#-rk0J$^2eNTYqDY!#J!tG~7q!&zAJQHa1Wyig6K%#A;(J zrVtG5gS&RY$Ojw~ZBTlo52Q`(CqabVnCX#Col+PW?kYr%q7jWgtBS}Jr>tIm=~fy< z+pbBQC%P_Nn#WIhQMx0&qnmS_WwyTdkvBm8fd3`8$!US}>Va=|t<8;6ez;1>y&zv@ z3N)n`W(9gwyrb>Bl^*AIG?{J+9CV5k{h64%_q4Vqc>_s95n96%p8CmT?1rt(o$((Pg6H|L+PoCeNQfM% z;|38GQe0N`opwpuSi>oyJ_)1RaG+JANgb0a)3St)VniHt6kG1Lt-I11>9N4Mh;lrA zZ@N^C^!?=BE#enzrLRQB?vJP^@|q!2HwtoHxe`5kpR-rGF8jUq+P;EaB6H4){ccgv z2A#MsDbW>1o5y6gCbzb;LM4b}@=_DX> zZ^R4(6Oqc{UY)fu+kX9=O=2S)lX$N1<{b#{i_I{*Ps3E|c!Nx)aYk?ULBk+??EMXW zN+AJQpsYEVY$Sn?_kdxqr(o0xJg7XxCW*Z`bYnkELVddzjKX8wBQz-5n-dp3>GSEl$7#0D^}`R+ zL!Z6JlI;x@GrMuGdY-PnVu!xqil>-jG11@qrQhE_$Cx!=1tKmwSvH`PA%&27r&YwR zD~w3l#?6;Nh(-o+FE^-+R@6YbUemNvxvr5a>=6xmSVDfLR7do^=-%L@I?l=aZY}gb zBFwv%rV~}?V#*`6L#j|Wed?21aaE$b@NV7qO7$_@{;G3!js;%nyiR)bNF!^vpQ}3K zF-3>E^;HK<9j`95Tf`07X>KZeiu_-PE~gdRZ7)kgcowD^%Cj~Q4X+8uGU%%HV0ZI* z?ScmyUg>OwK+OCl=H}lh(H`FY!8=;!H-roLHdxggjo5sI8rT4jN^~uknG)T;+Xm!K ziGHkwH&}M|x)|TcgRU)b5-=x7p5R5YjaaW~qA2tFi4yQS0oFzYBe@8ZCt9(@O+_MP zq!`@$ghmKo!WQx5A#GM^5@?2!g|Z0o)_ZC;#dTSyjp;*h z8Vk3Dg8f_{3GYlZeJm~NQVoc%9vuCj+>@d?F&0nu|d@4MgVc|WN zIlAATWvOVtk(f%UJeyTC5{~f9(2(Xt7W^_jq5c|@U|G<-;c~`Vcu6cIG|eB}D|W36 z&z6NYAneb5ce0)4ch3^Vk`C(Y&i(4WVV^@Wuxq{6FX|J^c=m2e-AK;?s;Pm26C+-6 z>Yogs@wmn2S%KV+bt`swQYLT#WY>;sLlLY(IcO_ogVnq#}kbN?L;PfOZF$0>}ylU z^-umhdex8r7`^BVpV9i%X!xeCmK19;ajX8WQATyW9IyPh9}Vtyy`4j7wB5godo^?Z zG^?Xb3-umw6!Wwew7Ir1-?Mr5xsQH4efxKR58d!n|A=1okA8%H`tN=pegBJ}<4UK} zRHnR(g08(+f{djMl<{tu55CP>p8MGlX6p${H!i@7csCMF?g58@t3@?ZaPqtWbR39)i{|Dj&-rVTu7)tM+-}esJ}k!X%TAWt%%iw~yLG z_Hfp|>{*@zz*sYQD}O@L)GBKh3pI0pugMpgQ*}`b1u~0{SCT&5a2{r<{&R*8q_Vo+ zL*``<#b2{>lgh19Y|O>pr8JR8dS?UdA>NQFIOcJqT_lv_g#f#f+DE_@&{*Kl#47iY z&WUJ&h4N>z3Q{|T2_KF$gmzb*hn_^U%-v0iwoKj4@mR-u^Lvc$_0aB`@EO|>n=Y1@ z-`3>NHDPrB4s(`nD@a6*ot}0n^hnh!L#WrtZvAD+#q_*B+Csa{!<3Ro3Y}s(EswNF zw)rZex6tlm$C@{tj~*>@>{#re(e6H~US~eW?tQN3^0ryk6Ad6$tHaHMMFPrnilN8) z=nJm9if*hMdXvWCw~IN9z%~i5U#qp`_$B8}w6n7@r`*?ft|CdwMAwpy-F1&=?5^JE zYNaVBY%PM00sarfrVe4D7)c7SiI`QeP9KEq^`b_2(BhiDL+kbdSSS!|8bLC=2rC@w zGy-9jAoLp~N-cpL)R>08Ib%yfZvctaW$`P7FkmGpk{GT;gHe|WyE1f;UHM`sj*{L> zlnLxaofVUn=|sqJ6om9p62Q^-Y|-wOX6fFCI&DIDNMIxM0?RPt27P{ixvDSX6UjZa zZi(l^3v;c%wm!?9c9OgdHdbw&qY&{{@lV|A#~lvrFEAn$8~qVV;c84nf6WFgIiLkd z(HkcKi!#GevT=+jn1D+}2(5Db%B^~~!tlEGa3=l!m51LF zpAbz(WxpfrG=Dx|6mwOmr%&}yvFX>wTQEyG!uX}fk|N|06HbrXPj-)j3e54`xn~@q z=RfhWm`!xggAdca4?OHRR?nRXiJzus5ahN#@$na&>mB>O_aCRJyj5avbYv3 z!_e@3HRcFibk zz`x)_lMC2BhGcRXA2fT}-xJHf_GypA8d3$T_8W9c5?)Qbtxq~VPNI#FsS+pt6 z+%1jB;{se7d*zjo4A;o}?RSd!av9)*%;t*{4ulmu{b%K+NIV4x0^U$MxK7>syU3x1 z@scfs9(biSDju&|^X3M4MDh`bEFc3RbyOF?DUGKnt$|V=@3tjPoce;Ojmc^er6-Mk z0e6g^!BY)7kevW1jCd3Nbm6@UmEDYHIlQzf!VyGA&)7%#PJ|_dhq&* z*=dAzHl`%QTO3Mb{tn#oKAYSZ^wZ?S+6`msz+-J`Qgb?R4MDheL99(}+qQxcR_>tm zq0*Eil(;E@#IViXT<1g*vqD6XBz(JjEL{!_&Wh&iqtz?@ z`1ZXz9*^634d;%gU5PI>*;w^RW8iYqF|y>)*F6!*#-iMO^LC`GyE@hE-Pdm3*OckB z{Z(BuT=hy!z6!5nyAvT~V9=+Ua((nDS*|Yu98R^I_8Ms-4eQ2w>DEN^M%yPfh5G1G zZYpP`1l23OYYMe`sJXf10f_2}uCeb+Db8yFaIdG9wHx8wDD`wbb58v+#^NJhKNiAE zi|60;1J;z|^}dY~-S$R%_SI9fzO)S94-mZ3D8XYCv%8Fetky8k^l4)k6AdB&H3m(c zxRu^vh>wsWPA?z5p|ip<6(MRA%8Ig1zQ!Dk7)N54#B{_+0+JE5=R^D>2|-A3jwlhf zApUrFJyuMv)H8)b)fi%#IzR_Qg2fSJ!!i&%+%wY;30iUj2vkTRY!C>r5aqQkr9{Yk zhPRB=EShQ|^VSa=H&DVotWh^6k;meo0B}H$zXHZ6sqNaX`F#hG0WkAeS!c*4x&}17 zL$t4_+pihpkf?oYDIokY3;_d{eR;MD&(nZum`VL_A)($#lk0&(#-34m%J_NMLD{D? z!8D=CIK!E;;o;QFVVW4@8=tv7+v?zbt|h3FEZl`T;B$f0!`AARWc(4pTp@tE)~ONV z^U=1ZG5qJE0@$N3xRAc?FMlaD)lJk}d{W7STKAcu?`zx40(HTK7to7d{Nl~`BUJa* z{OpN6y8q`di4xM}1=hG9`hB z{K4DkJ-2?`-v@i-B;rO(Fu&kO29qrWW*&Aa4ofVZk~Fv6yGb>PlflbgJF~_vlx}%1 z$7id@Ub0U75BF9hKofaof6AAQh5IQl;44a>beyVqpjnUucPRBYGL$dXhimaIMW}c6 z;7@UUQ2*5I+r&Nc^54fm6pow00VmRx~AYzTa)9w~3zV>H3bV7Yzh3!r57mLvX@iv4!I>?Tq z=ey<2+`}Z+bec>p>`|!wy+PS&kxz;;GH*vLfFP^K+h(Uhm-Itvr{{u@R4=6_Fy0z0sBShECQkhOg{y>T^|9AGB+4HOW{mm!#y`kEuBL7Ttd6si#DFG4e z8h^{&trh_$Q=;`oWKdfQ?MBJj*-)xC`bPZ~m(tXRzu5bNWT+qHzqHnR!D~C%6 zN!YQYD$_N=Shc>~X4_z`@483ofoIqVEC|PB$}^coS2GM+Xd+0lQ4sbuK=qe~_KoDK z-8oomb<%OK)CH{j@M(W8t}}%M(ptomx8E(NV*B%=Ub6y#*&@6o>Hw=YHQhooYdtwM zbPU~t@Z)=CvSx1;0H!s0@sQv1$p=0ZWD+m$P1S=B8 z1qb}RsIW|KLB_$BEglC#tWfIxQ`zFPE*kcWOs}|$6Jv~!+n9T!S5iyiYu-nKJ$$B%>USUq2K<_ zchSk(_5wIh9V|dkL6@;V``YN2hC$lAPVJo}fU4Q41B+UJB$R#Z_ujtSV{K1qRxh_2 z$jCjNnh&wh;J&vxdB;PK&>!CXr}VpT{2hAT8{R-a^K(B#zxJyCMC&_mYgzD7rgP7u zANaPH)4%%BAEsA4_vwyrWISO4pG&l>(LM`Ltv}b*AYw~Qz*m~0*M(>5-t-aPY&6yo zM7^Zq8Q<5|n|yx{wZ1q#&4!vZ|FOd72wQ8MBCa6zPbW#qqMS3wy9je7waMm;B)-+Mw0r2R1e+#~bE%({ z>O&Z}cg&QD)*7R|em`fB_Jg!7qkcK?> z=OC4+s{=AsgBMe51qFW5WJ}AkY@^V&P)rsy>=?3EF|0EbZ42Q(2oBo{44t-tB<0~T zsUpErjKBBefV)6%)e)glI2G2-yK2c`RngV;{(1QrWFRapQNxF|ji-($_De>LX1CjQ z3DVkVlkP$yE(5daIZZXM3ctBoGVCHec%`kA;IWFb$(WIM)nRsd2}_tlR><>Ol28Jy zB-14{Y6)__M-{f_mw*lWt`BuMP!;H{3CAwEXp!3OZ4~UfE;^sP68aWOjS^1Y=}<7Fa?nfdH`#f&d|nT$xazBkJ+w zA+F#@QNhmILXwy&h)DD=m=0t!U9*B@+YqeQ#<(=2DVRAYSeC7f)QKYAafqXhS%rZs zGbWr7r!X)~)P63{>!PfiILSuWa+Mtk=b?uguPHLIjqZ=aiL(!>Fz@nv3Z?@ zLN^8w&xGGlwxWfy@4;qpqG9bkyFvwlp-{p-rY>V@Ta%{pgs;C_D!h1(9UP-Dy}g!% ze`0IlNRimdpE0yN7Xhz2wktyyrKeeFx4(NQHw^s~6iZ^I8}oJ)f0@0P>5=>Ir(56p zX2N>Vy6$z4lJIYW)7s|T^mvuAFW=RoT4YGY_AnTaVvHZ++Jv)8GFmKTZGc z$6rbBeb?LRGk1Qfy_{EP(6v`yLI3h6{t>cJ21OR~BcUpc&M>9sG z0~MQ8U{F0r>(%!#$s*MTz*yJgwr9`)0GpD$BN4U=m=BHzBHHgweVdtF))3CdGAMfS z*$ljHtl)$nVaU|n1ij+eGtuDlh$7LyLU~riI$3ePoBN10+E6-44mKW)24v@0qtKGt z+91PWz-5dH&5!zbwGXs?+dDRoug!mK7dsjP;=4D-U@+DkKyEb1@9Wp=yZl1r5t^Vm zo>PXcEj$HZWu1?nGe|5m(F7cbF;v58zxFvCOQMDtr$Hg}q91}a>Bh^zG%k~(xyj%YqHRg3}JA!$aMe6!!jC*!ko~kjameW?G zy+O=Ls3FC;swCHe^v$pB!@I}oovx)S&&@q=M+Hy?7?kO}_0_fEjjjd2uOZ&&B;~nz zq-)rB4JE*N3+wJ0zq8{>$970#{&A@)(8rG-Z(ix_iLPr08nRU+EzTO+HCVVb2}*co z3l(P&Wu3yk?K69dD*Igfxyda@P>Acly|TAqf|>$Ft(=>4^yTBL%Nk%X5+6a}l zIT({mILz*masG<;ciL%Rga(0=nR3DsD4Jpla^8C~A1y&zQ*t)r$455augUgu(1G#yaHO%&04IhcdcGU0NMt|a)-sAk)}5{lErv2WzGFy`6cZJ<>M zaR?3BfU~V+tis{&N_|^uFQsR_<(!2oo(tUsVXjz$7G=n~?=MGEtU8woxM;XRrgTq1 zs~YZDv_zSDp}%XR3Hq?mV=ZOw4llAUHaRpVqgZ`1O%cr2`Yf|&^*Q#*+?2>td=eZ< z*JW=*|L(f8)i_mwXRV%29D5D%LtxTZ2t9b>B)#)fpQfAusVfpdY3*4ZsWHwC%InX3 zn)WtF5359b!cEdEQxrneUc!oPaw_Or6DHSsxL12P>U}lh#G_zD$9BzKSInRqzxR9y zbcRm0*wgHg?R_7*_kQ{>zxYe^i?8|x`s3euU37Hw@x{-6HvRMue-Hg1-}2Q)C%|(s z|DkM{knG04p|8fjiu0u&A9z7HCllT$SE$r8BSJ|io*x})0DjsFu@gX>Cq+7gqt26{ zd4-if?b%$*M>BRIv0i|y6NPX-E9I?8NqX`K5MsxfdMv$jTRZeUwQ@~#7jQvxPxkq# zG?e}QK6#7s4_&X%{iv7`egdB(a)Y{lH$$h#DRakjk!8BfhsE)Kk0POxkEMw5G3g9Q zkamjnJf^4HLGu^aP7@hF?dPs4G&V*Owdwhco91Cm_ejFCjGTIYP>Kx)oe$DniV?du z3iIxrG#J-DHhhqzxQTQQn_Q<6OXE4ocuV35X-DM){cP_o@w?GzCZ8*AsFc8EJ>oa$ zb-ia#lDyF1RA$bP{JqJnCEnv47&MQ2JZSf&Ff6@AB?HWTj4h((NFuTb3DXLAsU2`? zVJ8WX*bS0JYX4$&y?n*b|`$kvm)=1xINu{@yx|OfYBYMDG1WC`=S3q^=}n#m%gL zEuqRpF5rO4sv?yLFKOsp2-fgmqVCBAbq&{^crptk1gOav`$U9r7M?r=r*L@H#0Xgp z*VeE^WMd5C$=;F4i9gOsBGmBy^@N*ztWexq%N(9E+Fz-PS}gabt<7l(g^H@T&Lnwc zwj7K#Nmx?m(^KVggiR`UQ^5wIMi%Zh^e?wC)#l6vzq!-i=LdYg#Nla&$0$7CLz`LK zDoId;#a%rsT3071^VAtNLRi@!`hlYu4e2~X;h~ktj?3%FvWTdG%_fAZPAI(+(mnzy_d3h3&C29iK|iqFO1Sc-0lWD^I$>f45~J5 zITGFQ?b=F#rW(N%-4`J7(kP-rT!Xj$BTZlK@S-RDi zjfq4-&vGN=6b=&eX4AZ=63pH2I{hkcOg4sU6f#2%8J@$N4`Y=`M=M?EAIg#k2z+)u z93}s@kZ8Q$6D+@6T5DTQ{ta1@534a7n<<;n;akgO6s#jzBYr5P;I? zhUf1vK9!e%(13d#Y9u}~E{}3pB&We_wsma_SmdqQaBlA5PBU8)EJ<*= zte8S9X--SPNh5HUy#J=`8xK=Hp6~%9_WV_mfm*Z-Pd2c{Ei!Li07)q^_pwu_w8CIcY!4YqSTaU zobze3DaY#aW0fr$3jT$LcFRCruxQ)&>Z;m)Ri;O;G|KMqJ^w~5d_bTVCk&38c?UQ7Mbp}L1I7(9b zYH?4IO=ot&3B*K|p0+iNc@r~{6Hum1TDfQ97($=?Z2cgj?2*N~5ckg7^C7G_bqfWC zp=4Y57>D45J|e`lK$s+Pi+{E(2g4+1C`eib`q9n_ITOu<$C)`nz@bFsd^o$}&r&Ez zSrOV+V&6&WGOEfjzIrYZHj+*m0sc75OptfxDFI6e#4H(JbE2QeO}uwY{mIZ0G^r%r4tf9Lz&Pe1$bf1ciSB9rz z-@S*%m)v7E7#4e6IvB5LxVz&Wl6lprU=xkTRrmf&LcmO$hxhp{=>mpR6)K+5vf!B1 zRg9jmt-jg@kI2E;5YuAx#372SeT%XpxI*BR3!K)EiF)Q5*C}XLUgAax&oUp*bchG| z^YW4JQ9cHF2mCYDNifiohqCAG5KC82;7JdS{`bsd&Eowg!rV@+w6z;JJD;tRl*jbe z1m6ayf_iXAe0EAT#oR^vB{^uKAJoZ2OLc({0xok!d0z6GYbA(0oJ+-&yD27$%REF$ z(Zw}F&WBFb>DC3xT!_zT`iZ2suQ3HiiM1~&l zmnbe6UO28Um#mC8{!+-DSu9C*C+d`UeFjUbqA%E1t(F#Xdwc)Bx()Eyh8@x^uo@0Y-Sx|{ z0AvGFo0Gv#%{gY5lVEu|{cC$dL+*h_jReQ)al(wgZS;?P38fnaRoV`)~ANCASn zAW;ZYvIx~DCdzwnQX&|zyaM?fEuK{1f}gQ@_a?PdB1DUP4?%s05|g|ab+WiiVwWIt zqU~ykSK|HI%Lof81S9{I1Rz(Q@Lt;!JD8VQ8Yw5bDz<;1O>_%I7mfqSpSMn7_bl|y z$OZ~YtT2DyuXK#ZfE7wGNaymu27{zk=`$_%#$gjydb6w-Srq2llWpH?rjvzyEn5p8 zClhSRLJB1e8dy(MN=fY}ACnl1WC0bjP)r*gXPV20f;|{Zd{TGL8ILI*&PZ(h5c1~( zmcC~OUOEA3|I)RKdSzZRQ%!SlUboPa08Ntk?9lLx8Do)!f88~PC!D$@aB37v9vOx} z7IhX`z-%{e1RU_&`HVWw(kA94ft20aUB2cDbDe7TU&R(tPg-?1srBcWfY%!@Ae^cJ#!GYpz+ILwK5WxO*HCeN|}YbOLr_nU|7EtGJo5f#OD2@qf2 zBL>qo=Oq9V%JeW1T2v7wLz3VRvZyoNzb^E~|Ndrr&42yRboYlp;N$gmFZojXXaC#x z(i0x@sMf~3j<^|#LDxCIlBt(ujW5wY^2N5o;7I{%cLfZM z2Q|TPhjncw)=CP8kc=vljHhkoc!&1{iXoBDms5v}DRV>Hl`jRZ`0^C#joF<7@AHw; zvMT(}eT+4u*c;cQlZ=KnIl<16^fVc0H#yIkbKcaXkeg9ANeTrQ$~?BwRw2*Z(9ve0 z;dh>U8robKH3f|7(in{$QWr-8!~Hh=!6hcMJD4i_>47TSQo@39mHrL7}v*uQpz3vi+mG z^3**+RU{ zBTc7UPD_!lu5V6n^~qIFRSz^axz1_FYuQb7X*V4;ynENqS9krGt-E@r0Zah6D$uq_ zy@hvI%LXl!>aDJ!1y;_?9_hOGSyHBtQzRT~VGJ8(x~6^4$;Pl4A4;D=z=Q-2WmdQo zu0TIBgHgq(Z*FEb>q!~DqPKO!${zc)D&-+@kB!_(EA?62T(T zor5PDgbEp$6_Qb8Wng5i`0kc_4zHbN`eqOH&&hR^B%^`|sd7RsVVx|gAHWGA>N084 z(C=*pW6?t^KF1L!N@HhhrRMJ!ohJ6y>)ol7SO8UsfN-;y^x1-E#cGVWq@#rCjozY?Qh?q?+wQ;Zz8ZBs?V z)?g>Wh?hE%-=40|y%<1RLg47?9-A_S-$t>Rt`%stWY-3BtT1Vv;X zYJ2Wv4awe&S6$l<<3#oT*X^I`KH6`&`2+Mb|M5T2AHC~c-kz_%{!8dz|M2(G6E3{a zLz9&rX}Fb+w<%8y>NJkTzR0#%qytv=17^q>oCG{E1Y1?6^L@i|7fE8W9IlB>5uxD5 zyrDIeKV?u_?Ypo0H5o%r4K!9qWNjI*!GH&4BeL^nMO2ak7SDP;iT7c()%YG5H(JD+ zB?iq7y>97?05*!>74LG^X7G?zqWvxVzW8YRyRwpcl9BWptr3o~2_G{I zVJQ<$!X7v><~Zos#2HVclJy8X?@xb-DV!dOHSz4ehJQTAtBAs&?xM?pbok&^$`lE*u3pRrn7u5!3+I*A_YFx zh30sVd!pN&tdPULrF)X24&Zsl5dqf6eCg&1B_0m>)`>`htx(KXMwDssWhEtI=DpN> zP_$I;yhnCO^`$+F+O6K`(J|ST>XjbK1=n50P^J%bhE_+aZh^&%nY(3Ib;!2$6{Ypk zxSj^4Morg}{U|TwRy37RPWg(O*U3P zcdf>{m-H>emRP#DT(h_(mp>M%cUj+P2=PYPz!_hRx2(hJmz7ydIHi+t z@`<0tek5wpX6pIubsZIFF#!-sw^(xiVMRpA;(&imc9a1(ohalJsbt||RB|P~SMROF z1M7{LI@3Og9!@nGj+;PeAX+$-357_C@l6(W|8CFNJ-()M(lKbt8L?#*PmI&XtRw)4 z4JEvCV94%#XG-HTher=zS-d90VSo&pOWb{KEAAQ5-V%}t`C50zmQ3;9{7I>gE(CBW z86rz+_)wUV;=;C9X$n5sR$X*};uv^33YU6qj9KV~<}`~; z_~6;0TdrUV4Yjv{>wH@@NJ9QKmXGK-Wy1vLrx^-#vBXB=eSv|Zd4}@Zg&DpClZsPm zE;TQmiLstI#w_v@_!olQGDfc5h`SlFbIxtX#}mXYN@H)+k&~jv$dhcDuA8#Ep`UGS zGd1h~bnf{+7P_TdK6HDT$;Rd*_dY-$`X9Fw76@GV%rB%DfARA+if9VQGdSe*~Sc8`ZVxwuHAM2BlOF^^2_wzn?jlX%U|?d`niAjBXrgTMMq&- zv#@(sVc=6k5lIJi1}j>?u;ldh{1JyOZg8#JqD{OwcN-1p@WJL>@-Pk)c?7)*yA6yo zo8F_qPq|-Y0-7>Qe~lz<$K}IQ=(o=;(3CWfQ6Jg`1q(_`ER9m!iLD6P!$Wf-xh@pe z6@*D;8;r5_mx?S$oLkA;dv-~xz&EJpBcQn1*Np13AptZkB4T)^q`DF=gF!(8Yt-AS zG9PlyxKknFsBE!*_%MPWCEO@Uw&`$(V_Ptda>HR>)1e=06AfKNvLWgC68Ey5_ibpa z?-r8Vlz1T4D*HJY3IxV8eFm~pla)~zz$#I?T}Ztj=`+1 zbeIJPv_9$%DFXe+IAvI3U{%BycfLg%#2dnn1ZpCh+*zmh!4BxS4%rExLbC&3*alvV zAFru&eXjb>3=k)=SslS&`lu9?J{sn^)Sxx@*Y8 zKX~+q9wd-ZF#wpj*9b-tw;oOECUFE_lX_Ze`N%ErccqFY1=*N&Dd4J8$vsCWJ-mN8;Wo-5N?gJ_v28bxg^=f)JQW?CN_ffoA5O=@Swy6oR!2uxV{x zWE?$XV?RqB1JOn#+_4*50yE$gDU+6=*8aVw(58@k_x1B~8*6utP~R3$SjM>?iY<9; z4r-H)AvD1=yhKP|27v?sa2Q}6We1#^_ZtQh9d{ZG3~{eE8hh#1Caqa5zm1rmLR&MeXW4-}x?j)vNw%n^fLU!JJc%aV=+WJgYDHOE09q@^#h2y@_tAahLna(+5MPL67-$>WJ@P&T;Pc~lsZ~O6|qTBAdPiaJW0m$hv z5d}%t_x3YxUchPG?Aa7K+4q^TOqI8d###|uzsXI}M>E=%MO+r=&SLw7?0FuZkR&!3 zEfvsEcEznN;1Y7c7>c{2q= z_UH-p7MR4izpLe7h~{o>GxP$d<~-fF2V0~Ic#O>}HoBs`1ouu(q&8 z&Lsw(Me|%UWV%|4pNqSY_1vE|<;a^!jy`&whZjI$@_RLR3ujL=^IEf*X5BBp}QENUL|ZZ__sUEnnvn*p_GF#GJ+{=+Z%|6yzV& zq5TZr$RK6|o@Ta|L$X)X%4sv+y;3HY@EP*zK;JgkpK{GL1R=8FKnX=T`Xac6KtFUB zIcxvs_fMSpqVsChZFLx8`zt8aEv$Pe$A{lgsB=>1R#I3u3LKuz8(o!Xgm~Aof7Whw zxMIhrT?!p?7hOFn9Rjv4ThB$3=0M?w*3Z*Yq>s?)6}Fc#l)3s@J<~_^OKAOVAL*lL zGR-h_xBi)Vpyzu?hc&`cvF;y@L}Ru17FaneTvehiV>dj~Rf%q4-E|Z3ot+If9H*s% zEwI```?UDJhCJ{Igz1>-3*tM)q}FxP8lvq=O5N|a6el|Ed6R}a0%3!$A(giNdYUs2 zz+czlnj&KixA_|CrJ})Dk@Q3rY<*(gL=G`W$(i zCJIG73vrogF12O;JN~L75wL+*pJecym>@qH@Nm!aiw#SM>lt@Z?+D(p7II~ze^oUI z`5vG)j{AB5gH`z{;D0xn^CQe#;hKfC`t4KqJwU(tz7K8`>F0ah>d=r-7_G8BqgM4_ zQy?FB*pc%3Yp$j*zUoSP{U6_=&vMK)Nwm&Z#L>yULjUULex82%hyOM`>hh;Fke{{l zRC>YXR|Ig|I85GJ+A5&u{!s!r&o7!_#oeqr)v`<-<>U!^;PzYTkN)gddfC!niPszzAO2+R3Hmb;R;k;C~EOSe9f$ocnL6c_dg%0RT{&?U_^%)iNK9F_sN zkHPMp(sLPQphOFVV2=6hiUdAVmpDZ!WDg_gzt1UF9+hQ@=8eXCK-dFN-bHYXHRz_( z>_o!>gl>@coe^C*4CIT;RMKHax16OZN=n_qFMVq%iN5Hwi4IE8euYmD3+*!7@*uGY zzThK^?X`IohCef)aL}E#z*7%Lipqm7S0#n5Qz#*a5+Xs;IAScUtT_zIf@k-m#dt+2 zAzy$#CmL1KTx#%TtleHKObU$W25Z3IQLT**sr*WdNU&@;8LoFHtp99spjFFbKT?^D z_Iec=FZ>)O62!B6GtZmJL82aexSM%Oju(n?1%Fn0VfT}`-0wt2EA86_XI@QkDfSd} znAGPbCAt=0BW>k4^(A|y;jnB!suGPYur|6`)!3S@mi4r%L_?Y0Pl>KY*Gk9l-FnpR zlgXl;jR;k5^wHfwbn`|_KWxrSMPv(x9b8T~w7Y+yjq+|*o~tsQJKD$RL)bS?G!jrM&=G*;89U$c-}-80B7ZGB}*^bRiE_DQ{`hA?an&sKM7 zggV5g<&wfnOb7;IPw^cd5;0K8q)Jq*kDhyvBuxSk?Jm&_iFqz9MG%)}scKAv|Wgl>1Zxi=xc+Dr|A(4tS(T~6^O}N6b zt}BOzc{Wsz?IGHdgblGRtJ;rMJ9JUPlzyksD<)4MA4!S1vFy;zukc3spf?ki7glHlUV@5(7BBF7fqMqAM=OK*s zB?Qy8*xV=eZtiik!$Tq^33O}`EQtZHYhZR_CfewME!*PrxDh7!=}@Yqc~tG51HxAW5_ z2CIs*62_~CKKq#sZ@-)BNL=u^i|O+&yHphj28=;-#KK>*5>NDN?>|mo`^ul9H~hg{ zn-V&Mg)0jfxb%ISvbQw0I2!SVX%5uybPjzs1?%eXjTia6jUnL0FL?>Q^soIj`k}w` zgY?~h<6G%T8`zvd>;{vFnbHQ=(LGYaqXohF!4rG*`d|KK`pgI4r|mxTO!}6W{dIcj z^S-dvr?d{?@Il+l!n~Fd7LNDQO*Sz;MIs~z;pP(f$8li}53uOMtpi^^&YEZaG*&^Die?X(eBcN7| z4rr9r)G{I$SrK9!kOZ~yFpibWStVtY9egXqP!Wg@Iac{jS^P&`T@X@rJ$0JDB|>T; z(U9Fc9oi6sh(GoNYu0rMp837^F*M5TcgAItBf&e`c#Fzi#xrz3ZRJL>t~<{g$Q|N5 z8VT#N3;_SuOg7k@seEzG%SV$Hrbv7$pyBq8+VdmnocBu#O<4EKkZmJ@S2Nxq39G>q zOJlaMkHBdtocqw&DYa)c)G;1@jYIw>gR2`aD9F3mJVmZo{RF?ok_7R#;8XB0*^-Bn zFxu}!=r)mNObYzNb@#f~KU3dt61!X=FL8G?j5gf{TVLfpq?bI>wH&!*zLvW4NLOd) zf=AjfBdi-9={v98e-a{xR*quct$&V^XYMBa7S}=e=+R=vA)EQ+@UrE}AV{ZN4ofw* zKJOk;v;wi_NHhlhe{3F`lD)g7=B4m%lnUre(t7Ed!P`932ZeQym&efVnry7DlWx|R z%Pwncq$@JDjNKFo$A0AYH{S2ilS~4k{Q*@R9ewU#m!ebz7?>KIF+K zI_WZOycLv()cf084Av7A(n$&?wWcfp_HR zYj?iw`WMl^{olTa_{_6N)_e2|ulhxL=O6#E&PnUP3T&IU*9d0IeQ@q-qL;t?<@EF~ z{KB^W_@R$}m@fZYKh}EXbH12xXzi-PoqBF~BOvPhuJHb+FZ-)>=H*wlkng;1JkM&t z)T2r=*aSkn4DjNFiIT=zIzoHk5O{4GNduTxA@}05&!VS2;W6~+OD`in>uhTaw{gcy zZhY-)=^Y>V5Z(T%PcGD{|Bl#tOoR^W{MxYQtFNM$f9to>Ip<$UP27L@5qk0e{N41y zd+%$8q=r?jqv>-`#FZ_T@vwMgxmV5_f%`<;1?i<4c)K^NpYzJQrAsGuK;6bXg3}~= zKC#oImM=gut)vcL3Ij8er)r=D?be}L*&B@na!Y+9f1fJt#Avt44ivnw7=4|L7NDOV zkp@~}_vm%;F_|(fGDVf#lI5}={mt?Q4fo~q%|Xy)3&b0N?(34Vj<2}nz};`jxGVD( zsu!3&jGAd1&k)-&Bg&NCw}i)>`l>R98Cw&*$V3LUYc2w^WqNA@`pnuU{mYU~o0e{C zG|$5DCX;a>6V-QhTaAj?I^PJRcj;E5&5bX6`!v!HMs!KI)U{_piFQhA^}vCG&aY&c zKSQ-$=(*#zVK8WEy2d#YglMdcnk3d}nv7u9`X;oGEmzCR!o^~}g z8alBVMNAfRJ(R<9n}uTG+zsD%Z5_0?02nqb?vA%6MH)vfS%F3v_ZZfFqg}Vf={dZ+ zQ>39p*R0)^HO|*Y+kh|aCB2irW1TdV>8waILbt8gAWv;l*&2m)hqk@qRGI5+y_{#lHiwL*#rRU+an1;Vhn*hV^QEFn2X-8Q5Xzg2QMa-&CN>f%M{hHWRf5-$eWAof~ z4}+ceJ!!26v9`^G6yh*mrL|be?%hgkw?Q*JK{6&O>`FVXp^`Eada^MuXvVl+ZB)d+ zpO1h@Bm})udj7(VEqkW{49Fm*M37wHdf2Ge&_el z8;{>%tr=;XdPyh=PVhE?{-043m-Um&?$x>wg@X0P^)Eak?K@~%t^%LTTj{7Q(9vyW zFMU67T}bCV<}q~EIcL)kec21?1z-B5#7B;JAF2W3?oZ!MfA|}(rQdt+ zpLX>jdS}H!w_=+#{e1q@o=PwKuD@yhnCRzT{j2n&Kl`5*9s;_dU*N}#?WR~0tx1{n z#d!tb;Jl4bNs-R$JTrX9%>SU%WtzvS$hHBMU&wJ`=2eZ zPnTLo_U;A2yVTfhTR{Qt+`|LW92vC8w=p&W&jE&Qoi{Wi32${Y5S(#4T^&ou51dZ1 zx2tbUET4kXiRZ>_07TnpekdIpeYf1wA`#bzJxbQ?=c8aRcFKnu!e=B>;JjE6N0@Ak+#>S~>B1@2Q-sGJRN@wfJnd0M)E#HMCpCMrO?nrD+knyww|BOWg)*Db0B;)f0XFW-NX~ z)21V1_jQ}Wx#eZoPqXmu8jpX=&H8<#NPpN)S7mx!AH9=*Y>=kyCr#>!Mre2a{-Y<} z{(vh56v5lUdB0BHN$(Yr*`Po;aj!Eev0mqiD-pJ%#K%HO ztPNtqh1kpiu~$43XUsXINUh_Op9fHL7DAaLpnq>`&$wrJAXa$4@2{G?VzR&t$w{0z zN5LFH7}1KD7WW*U++f;mH#RaSwW4a6q3-8PPH3_skx@KEs>xY1NHKJql6rtII&OXT z^BgVEF-<$a;{E~@zB0{)z-+KV2$hWQq25XlxFs>ipU?N?l7)V^?N=*wNn(QI3%P4$ zOqL|Z;PrbjfoXgpxCm*75a}=%v&jP$mP*Nj4ccc6QBlzh5r$+Cq4K>nR&V3&YvJ)O zgG2j&NQyh+rV|d??}@(h&N9#2y>2L3s5q#d>*1Lx(I9x$aGk79%+i_+Bzn5PA+(j}Kax!v{Q z4}F+k@%Mk6K77vu?RUdN(~K)#oG8-OS0gA^-WK!Z?Nh31T8(YUN8s%;Wn_|h#17g$ zvUN-)O4lUhw?mah+vcW@GgmA62jBP=^sMJTmtOSjXW{Pl_l~!}nSS9-Z=>5j@yR)k z?o+<|<$s;7{-PJE;rY{d(hvOe|C?U*&Of0O38hu3F|U#HIq|UX)vW!IkSpWRl3?xO zr4qA5dTZ?LnTZZJS@)e+ocNguuX_u(Wty9fN8VPVE#5NqJUQZQYa4^MhoFuKxf})3 zJ(LtJq|oz1wN>F_M2i+8|O0=O&!Y;Zf-jmH?2%I%jz0Rqp8(RD@w?xMoL3i*oBE1ln#O zlIWYmou!LP%T5zt+BB8Xv)1pInoTIU|tZab1n#NhhN!cDE>7}gQn^Gfnmz3#R zvO?WsSTuyh5H0AJ$`rXz?_msjvjp|q`^46=}EfrSJ7l#SWh=EYQ{)1c?p6q(>Npqou;(I=a z;tV$t5br5-N5XuG04q~QX2RI23vF~R(O4!zH|yWlM)b=*Rd`miGE?3-x5?H|)~!%% zt(rcg2ewYqEk4K(-4-miUTW}`ILOwruzzwAM56C~n6k{y>G`4ktq;-&GH_&EYYHVA z%h80!<_>BYVXALgUdJCrrd$Q(Lk?;d$Sk^A-7#idLJ=|AIGyV|yG9UJC2&z_mE@5~;f2YEpvxAb->!w9E_1ETdGcri5 zg%t_jjpc5Q;@ZXFW?COqJ8`VU-yIv7F5Q5g(!R>(SljpIb7EfjTl zwbSIwxlp&i%bzi0u!Qj$-cw0+2AvH<9F%W-&(TI`ITUCyC>04B?Sq=eZY+2=`@QKi znSg-Ht-rvl$z;^pPTO)6NK`hzeSZ78BeFa;%f<32;|&0zJ|lO z%=kLsP2h(;{t;kh(XP`JbO`U$Wl-98l&a%kois{Spqp2^>P5GG(nGsZX1Y{L@Z3s@ z9IhVeTQ<5`4e4%M7?1l%-$=UcaV4sJ8KD%5Yk1$6RbXCEu@F6_N^ko}Zw9Fj z(=Eu{jZ!_)2=T51YZj6^=+z_LLc4c%+U1?}SPkh$Sohu?cj~(=b9b}YxTI&c0|BWq z%OjbRLz20Z6D{m>2zA#Z*Vw{X6Fo!*OrIrQj|!wyBH~^cb@xgWh+$6#dj-UDS`fOG znayE5Tdge}lPTW+tjsGhSw%GFxeU|_K*1VWAT+E6tlkcZBRy^HKT`aL3hM6NPn zpX?ldTU=mGjGe)no${!xNGaNMEPds>OC?q%4xO^-&J`5bzYCeSw4y&#t41f#J7Z)9pF>_8z93s<0o= z(SDWMbm5MsbhqFg>D&~kV)(V4w~f4Sn$-pTit|79n{T4q?!H_5wRzxcUi3V>Lq+Dg zjR^cIERv}%edPG9bn83b+N8JDndi{=|F8cGz5GkQ*p?F5{FQ#VSmt=j=;s0FbH7&B z9z+8z!BWz@x{%3^KbW@`Q`j0Xdf%39796yix@kqX-FY{?@|S*t{^wWz1l{`4TS>iG z6J2)Y)%1hk`M=Pm7oBhOocjh1P^fi&{GNO1#&^7n9)9>lyY_-FejdHx+N;}JR|!6$ z7|0?#bY7v}p59r9a_1D^I>lO+pQD)fIWh<^qNMb$I4gzX^t~Nq<}l{ik;40<^|oth zUm9RGzJPY=G5Iqy1h{?>i!<)4nLu=(uiv! z$tXcS4^%GAGlBZ32@YHYs>AeE(tFX@G9@}W0XGv4xNt{7s0_dI0CFA+KlGkvNTM(v zfs+8f)sfPae>*fuZQv5>f-&8V_7rV|^9K=`BV590l4w$~Bi^KQWZ=`1G;{qhZf5WC zoD61oitSY=g76`Uk3%MbkpbT57S?T>KO^I%c!YML$-(d0XHSRsT?GYcJ-TT**CK%fcKs(IRQB$fv zls(dQ0I#{WYj93DhDGtS?XN6zcMDGA z!lEpLF@;(O1{1=D5ifWo849O)NSh@RqJog`?aj*7)Cym`u5EBUuox4{`vuRGM`Mak zODQF{vG0}1*R_&I#6q5gUC;{wh1@6vZ?-dEF|UyUTqFJ?K_-#Vp(&SHOJ-gt z>UsY`6^?{&m8#F}X5e;YZ>_)Jyz}T^ zeBXD{S6}&gMn)qfbDdzcUv}R{!zi{*+IA287kiR3)W#F|THzNoFd6y`K6^w7_sHww zh4+gDZN&RT!ba=At)3GbBKi8ayoMlsC)s$B(Spu{HHlr$dSyI}*5r7ZX-md=^bI>t ztXX`16vzsuG^p&Ld@YQ{v;}sOJ`>LgRCOaYr905BwM!G!JwNj{rhc!|+0H{C(T34G zJuikeO$>{rXQ-jy1qP3>9h!+f0cDHL~Wf1!LLoBvQ(}FL|yL zg)Hp!%bxZ781y<0^#B)57D?s-C$Z&`kjnEA}wgdp@bWm5bJL&l-3Bf z3EPc^bua9GWw6Bf6w9niPr{WH2 zVrHCgIj3@1H@wmHfF~LX^~MWb^)%>e%^Q8#J)~=?`eBV)-nHL(_orNHEvAq9I^<@E zQ>xkIjBr9Z3;GKS?H1d++TPtT0KAZMVzHWlEbl4Z&K))D!Lg`tcX&ZgI0oezpB2cv zHw(7DLP!9V=vmh8VZAicvM*XsP&U?<8p43}(XDI{s(PgB9@6z^VWGUPG!zy?bykGU zv=4#{){=s#gZSs?!I3b>ux`rNPWd8FAAeVdeShObAaM=tZBr}@ZTMuJfFvQ1f#|{7 zhSG(=Ii3#8fzg#@#kam>;u1e2^b=If*S7d!UI434vmu)$(G=J9M7|{#c~Y@y@gSLk zKw0)wwIfJ`D^q3$191akZ6MWf-WConx(z~Q5PR)2LcY6g5PS?W!`;6m@NM-lD!zzY zkO6xr(0CWZnmycSYs*4-QDri=!GKWK1WSt0=&{X9Mc>+oHiKiao8dF3;_a0k^fC(A z=^8fnwTtmwSa~@QF!iZau-dkbx1`X1j!=IKM(jeln^40m`?Qd6QUOM{8H;5EFxcqY zMq|2%EQd149J28E$=nIc@JL}fO2daFq-7=1x!3_E-y(y-X1wR(RuUn4V{1A@BUU(yz7P4qc5hT-}^V|uU>Vzx4HJBg>&=4^Rr&> z!nwPC^!%W`k9tN7#WugE_bgezCGIV$PEM0`TU(cw-s$~e^VYUV%O?J|kK9V%{;z+Y z?)vcib*^k~xZ-&)pl3Yic|-@`8T$F~dXL`q#@`}9=}{LwhW^%bpQim|nm1PFKOL7S zlw5r014f3KJ7G9Xn$g$UGZYFRD5GY>C13xTkG7;r;-2;_TMKa>+(aTI+3Ob=D2s)P zs?fjYnMv30R{#g0soB~_?*)BVB3TzSTCyDW(42xBV$#d)NY z0xkI6_Tl0PcU3R6s50#xAl)n*WtaNBz_yiZ2f*%L>!AQhGzRNNUcBByx`*wr;E`Th z8-0BEjdbrV(b!!*(m35Q6G9FL%Z#WM`wd-%{dzp(_2QUKK74>TKU;M}ix zcH2Q)>IsOlLqufDlah$dV$EAhR=m5ztL?vtV}JBP=I_Hgv<^yEH4F&dns3S|WY6*( zpJL?(&*5m?nQ5s%r!cubm%>~8$Vo_0ArAzPJJEj|-8f9yHtG#8HW%J;{0@54Ti?;n zopIJ#^z^4coi058d|&pWl}MV8cwXE3`ggyV{`6gM-v|}D*80g$e-{0_zxM<5V=w(n z-Fsb_qQl{QEqO&wR{rqY4Rk!8S7o?2pBueChnbIfp2s#PR7z2k-TQ97^Im$%Km7mE zdp_{NcIKQ5A4T8vE#E>Lj8oz{dp|M2}Er1iabweJ^QbP+x0`j^m=l+f+4 z7&5{dYs?Q@dT;jfe9HYO>7dg&%$Nyp+1QT;X9?v#3(PGVWviA4VIrHV`(xVj-Fcey zJjy>gf<^XrDU?;)|$4=@DSwPUHI=Mrujns~+{2p7jt{ zA{U7c!n;vP=Ha0Z7Z;x=r=Lr_K8)zxRiZ}8tnf39bauOkD&5S14iy9MF4L52mfJeHO z+hafJTE=~(vqyT2>RsAuxRs4J8eentaJThUEmfHw^}gy%&C$vzyVUEFM=2&u(?3%+ z97IiYax`FMry&0YCL0qQM8?bO_E!w0tv0H5APY`;F7MJ9&))y8z^duZ$L+6BZrmLA zys_a&^GaVg^FwQ?p#&*gT(?O$%FfQ>hT<(_x2*?2qOtBej0Tbg5kqV?t7Dx4Og?#v zrKR_^3++Mu(n5ZD3wZzmMgoVCh$rMAo4g2QY$3Ys6~%fgLmv z$s2MQU1xC|Ea54Vf_%M*Py8)JZ*rP2za~5=h}6}O@4<+&rB4^!>^D1Hm|+uify%i~ z+(Yb91zr*b9hn5AfnIpC$7o4Fma%rbH?8lXfw92iF1_DEli*4Bo_g%r(+Ep$mSK?k zWJL#^wk7JBJ=^}$aRiXYmMi6N+vLQVc1#utk9EK@WXr%;B=mEJv`nUF@EDdNj$_MjYg&YPZZ~D`iL|GCn_+o*D9%W9Yl=SL625d2A#?*4IYc@Sahb z%R@4I|L34Y$I^@K+^1ugF-xa@H{f53q^clSzcjfL;s{Txvq zxelB^>`_CJ$0LWJx7`Y;@5>r(vUc5i=Uw!p|Mvf(JMQ|l!}O(J@s*qFk%SM?8D)z~ z@$PrM%jJYGdeRf<`A@hwg<>DR#JXtqq?`MevTbgdQYM+6X}*l5Bg7m;lq}E3c!hq4 z$17jY^=3Mwp~=7tYYX+sFB?851zJK7Sv;5)uJhDA$C9s4PX9{6@fzuYuxUgg&3D$e zrEi?%3kq60jHL6N(b(2436mPxm6Fg2rKF$6?<(9T_BH|LEwtNUr+v$2o@l(tb~@b2 z0Y0E(6BFL|_9|fRIE1Lb4E}W~tsitIyhdO?#hn?(~LwRjO5W-o5vnefGT9Uh^*c z6`&Bn7!#*^OK$KuYs$kLGqp`xg>@!yML%lUr(4CE(=hmeT?3p78(bF z&<0Cuizu*G+QqCnWH5_fu4s$;l$V@cztzLrS55Qc;2!9j^zaE;K*H`?I>$}0flflX zV8}8}SB{O8=bu`}q~q;`NYl06#`Ea`o6Wqr@e}Z1W86VQQM(y5ayNIfsQ+sp=^jhX z8tLFC%^}%!pp$ubCrR0s39$h|E8X2we*iOa2;ty!)NVl&LYQ%;YrMH81dxLVq{w^f z6O0ffP^~PaU=A_@UXJ`C@z2DF+?d#D%@id0Y&LGzRU%AC1ZG;olqJ1svj#OgYAauq z5+P)NleS=Lq9i?At{_BzT1A${<`oc!GF90^ti2m$*a`IQE~GG zdB--eRA;iemf9oN{wHoYeHxRMoJ2Us)`Up%Niq#N)QV1$7c+; z8qqY2K@`@^0eg2~{?#U&StF4*_k3om#o zrnX1K+nOrV47OJ`{a(4?%v~FpA^xuQ9J{ox`n#1eP`8K{u_Pjfsz$|-C+PV|N}J4A z6b301D?-=oGQxmgd&i%`8-DK(?DtD=`cC+gOD|39ZQ89xzFKzU!1ZpvuYtzKRqFZC zjtT$y*Z&gy(L3G_bmByMwsygj;Gh2R--A!S?w`XezT!r>?vjgAOo51=)<_r*T5dy) zElYEY{JZx9nHe_s@mY{f#`7npPlUw)jiD-WEC1D45neW0o2aVvyN=xkZ}@lr)^1&K z&9(3y-|(07Hs9p6vW{$6+ZGr+z20T|kx%^vw2wZVeqa6k7s9nKc##p942x=}li7LW zJwDIkLA5wjp-FTt*Mbqf#=uxHuCtjNP&vl|{XBXQGw-%+7uT1gwy)Jf=(^t3@7krJ zv}kZ)H3=?ECc-pAV;IhnHHY3Od3#mbEd(oSD+C)%<h)|@p7He{S8PWkY~&vqmeW7k?Mo$I}PQLn1bYo(Ojer zvSLHyvy9DHt#4{?($6Jvq{WIiZ0Wwj2x z1y;0znObY#OTQW8X!Ag<6VXSh2^z^_{A6L6=`Vz#!1x^#y`+pSgm&uph+9oz18DS_ zGua?KL7rErN}*y6iz3gujl#(+rG;b05z;e4-)oG7c;ZXKr|Kge0*&>~l7_5}J`N=) zU&XPfOlhf_>B_uYEr(eNs%G70-hEgeMqg=Fs`BwybsQ~)t*)hfY5c8pZ!1rv=wj?d zY~Z(3`|Is$VOZ5iT0TmG&}yJT##Hi@?oB%SnHwp|QkpGD=SefLTAq)-iXBvIqU*@r zkfj+9h`GQc_4&~Z%tXr>(#hPQ8(<4E7GMK16TK1cagZ_o)QO}4#~6~tOE%H8Fj`2y zuyLXzI`ONr4wHZlVCun*4kUl_OPMW=G!4p}kRQdQ{Z3d8gE3c%aEhHh7TQO~zRAf& z9+biGV7w15%~qctJIY9YQ>dF(q7g}d_9v}-Lb0O;aVZ|BXDaoN66<~ghx)nPC}B?O z+)dg?o`)Opm?*)1c`s>s<%QNx3hf1BXk#4-syfHt2m`rG{lXad(GM6lbd>Q1+eF&3 z*#m(6-%)L>gcg8rYT7iZi|KZ7J}z5=zlv|!ySn)#fvuV3Lx{+XWj&~*WpY$r4BmfW zM>@sQe6-84a-ozT8&!{Q4Ou%uy}T55Vmdtp6uzvIGxdJ=iIF;u6PEe!6lP4h3QlxL z_}72?&BeW&U-5Fd=Od_2okZMm}uiIvw*)5D=5-)b3RxQf7V zSkBdX<2^a@Uby#;kLI-JoCnXi<~q3If^!n{+(5*K{XV(tW4FVnKJf|r{oJQs3}>&e zt+b|#^+vPjOC*LBr%{#1B49q1;6!V@=aw^2APs_H%Zj)j^8Po&wFYXOGJtu@41tvC z7?~ux58HQA!FSoWb@}64fpZvEPxO6B1DbkL8ra7zIT&shrmjKk;W`TSoamBaH&<^f?#g8%ET#Pe9pcs5yhWZ+vx<+Mf`KKDJZ-&`6mO+ZI1XI5zmsVAl%TyN^I0loy;#{D|a3qI_lF z=%kR{%4s)kN@qoFey>*tTff53?u33?`Ay;8p|CB_waJmvnEN*=Kps*9J^m_54z|jS zW1z7Zsat;^328ZUcNMWag;wvrAL5(BKpU`+G)RQGj+ssplwjMxao4?c*A350>wzaq zG-H5IdZ00efAGj3Kcr}wf^-b^tUO~tQzs=R*NLQzK=}Fb4}YkvBSKHRlbKePZnsf4 zD?}9;Vb5t)n~XV0RwnBEsScfn26JE?PPGQvp8^1jymj-6n7Gj1rIv%itZfh6Cqk+>lTB8T*(9rwZ+D#a{ZKR12&&@ zCAAPF%`zMOGvBj$icQb_Ti?ZMjuhJXSRY(MGY>9sS?0Z7nc$iL3YXS>8X1vU`6R7{ zZ0becAf~8LFmBd^HmAK!^UQT?QiZ?2@wI;kzWLR!0aY*k-do-Rzy0PnL!3GpSA>bD zbpUglf-9f$WO&72e+@kMy6d1h`y5X*-GJr{_mQvy4$VG>=X^xYt$a?GBYi2)`s z;0=pluCL2nQQ@swVQKwU>I!-&CR)EJzSVsmB&G}Jm4mu9#k|!z=*ESD9~#|>w zC!G)Zg{u#JsqH=5UbpcC7V{;cEGm~%^RxwqXzY*}2Gc#j`{Md^HLRk%(dGtwGxY_iD=H8MACM_^4dA1X73 z19~9`#g6kk_nXh1W&NbrVFzFZtAsGK_n8vk+yrN)sf^w|0g2wdpfMhRTkpKvq#TD-GkxwQ5QB}ebc9X2ZJTVb&Hwz z@s7dnG}7q^ERNp2c0NkgQ z$FM`BwgkKaGHsZQTSKfErPu?GoJ+=Kg7j?)SiKrIQ0Zi2 zzDzZ!zq&7AEXsxAevl;EyVR>IK)IpDJTN?W!o?Bzu$CbcPex#3MT}vur~z>D)W$*VdH8!mtdU%fy(ot-if91!J4jqG_nJAJP;_jORj*sQpJnrHz{UM4=l;tV zi@=VUfB-uFoTEjR6=JK_YA(|I+_#bWj>M)eE1QQtK}Ax&TB|tQ|L+@r2cG`C=fexX zG)IJf**AOx;O9OKzy0o8rEL(1R%J)L3RC(1iO+rke&*l*9DMWj*TPr4>|5ZnXI=%k zz7Dvy22XwJQ{btb_{uBbzyF4Bfn9}q11P}jJNNyW`AE|3DZKs-Z-AeA^B=*-|Kih* zr*-(lV53nYxd!h)dK5l(+ehHp*T0}+rq6-rZCnNK`_PBr(Z?PO7{rCW3cMFSe(xtc z=KDo}XP*lfKI55Pznf*bb+MON;zIera2hT zCPkX;4{;~+z+(CEzZ8R-%JQ?zT=|AoQMT>i1d#VenarH$Vy2lG`Y+HU@-s4C#gvc* z6ORvzv{wzJ3yoAc1x4DvuspZ9v6jbuAFFqK|8J;lg}&{SX|?AKAQPR-P^_QWw#M>l zsWnWXb4Jr~a~q-ml&-cKQ=mIg#-6B{nJIsOqT>_Yhsu~MJ>yi7(mIwFg2kiN46U75 zG{2(=8giaAC|h!@BK%^M(7{qE9`dUf5<#x>->EgG`2$*T+i#w3v2;@!{^X|k%OXO~rbo8QjS7rq@0>3BF{*ZK z3TmFk%W_g06iCObLbUc-wd53;Uof5KaL};LfMq;{Yrq`(L zgfaK79>n>bq_-&BjMTl%qX7*JGOV3<6DSOumLCoh4^~nMwjywZe5PahZx-afZakVP zXwZt%_mPS*Wgo6JAv2n!nf0R~Wd60;jRCA)=xwD?md)i@u59^17N|YpXARc|@!{VL zTvyb??}DK?jAKI9>usoCE5D~|5-9hQuA0zBNssu5M_K{-IB9)k(m)-!#r*hD*K;3| zzY+i}i{4k&MtcTOQi0?+NnsWnS8LpBD5IBBz%SB&kOgY$J38-b;665`L1^W zJ$|BGJVRH#z?QjS*7J7p_hEinEEM>zzx}u2KW+UJ_^U6t&V2WL49o9=0n_V$a@T#` z^=V7=!Y}`FxZwN?(t1|+qwJrq$GSDPw%-1yx5DQheAx1S^0{Y24U5eEA)KJ=%`?J6 zQ&kjDtkd#woM*%MWf)@o7{yx@_8tcHS=A%mY%TD*r+7AV4lJ}L`)ni64U@@x(>a&+ zNBkX+4vTBiO{W{*Kj+{THzoGKXgL6#22<00$MJX$ASQEz`>RpL!Er0cO$ z3aF%u)b>Hl%y-f(W45qM{?`PFIY_YtC^HJ_H~a4kzDQ|>n2Y;^{xg4UP-b0yw<-B# zpMWyBp1O%-zimIlFysBar|=Pmy5IYp$=6z{cRuP+p%KkUX3hk?pnL*|Pr6znwuWD! z8dm@;_S5Ju-Gu$Tu}}Buo+Z{aIwcQFg@*jh=3I^JVcj8~Ok)Urhv<8+%@stWJ+zN{ zu7csRe#u$-+>G_9=CjFpLSv%!m_MfKT_ucK^U0seyzukAOYvNeZIpvPQs!W#VwC4R zMAZj{GQ-&GE1DJqZLa)?J|GP5$e5>~aA@gO5z5~aUvO_`jG4z#^KOn6#aFV>WyU!K zXWpudI>AbljHeI9U*|g_~@L?g&@LTN&#Krif}=Vy6SpkJdc~F?#o9qNTq3>3HL9 zkWB(QDF;h7dgn+p6Rpg2_j#B~2WjKzan$ z8t5d-&5*fkgMkpu0~#25~(fU$o^RG7FrrbizQ6SeWe5g{XpP*65pjVNXu8Pt%-z%~s*nRJw!nZ8^Kb2scwVE3bb{$I z+D1Q*(9aur|5=F=y}$GWv6SCBVL{Mm@A|!r;YoTA$;u%a!%@b{R-ta5hK9j&0h_B< z@gO8ne=-ZtZF+Td?JId5tBS{|0ilE*_&MY~AzZOtkImCD7$@{}D~#rR(3jfkyd3D@ zV%}&wt-bOCac0TwaHTT=2g9|VXV$!*u-s^PpQYZB@olg$of^e82+M(!gARZ2p*!H$ zZh0g8$dCL;C#PG3wI@9pzVioP3;*#Ke*r%A>H8c%jl5s~zUK?~r|W~a-3IW+H^J9k z^9;EDC0_;WPq{4R&qp|&Ehihec4D6a-6CpU*<8O1&OH~N^ps0GLBm<_f@`jZfAv59 zIIR8D{{g@G-VZ{%;E2Eb&Hn|y^~+uiPr39`XwJI;&R%QgGF{w7_dfJUSnUYk@%(Gx z&yRm{u~Kn%`|>_Ku*X(;(9Alb2Q~tj+ornwqF^lXN5pN4BSO-_wP9L)^!?Z42`mm& zmCqTktWb zKuY(3U(%4p7VowVB zDLGH-8ZBZueehr zi?3X6wiJ#1Oa;l7%C6=EE33>+lJtIC%zwp*wywz=uI)~B4(_WO59*vNu4{_pe?<$O zcqYBaL7T<2+mw}R+RcH+j^3FE_1sI6<#00VmQRjxbx|G7yACu~$ID`EG&9m{&Ac_q z_xK|*)tg;OTVO%Qly=q0qn6Q7&Ka4@Lb@!+OfQKl9R%5;ewUgIB@DIIS-F)HP9U3g z-*R)C{Hh~FU+E#xfMdZ=TH!_xK6caLCP_h*nP%t)_ELZ=P zzu)cm+3ex9cfI*RXH!D+sbucdR4Hp!$q=>9@sEAv!vWC<0Y+k8XbTfXgPd!@7=K(;QLx$qBiJiDXG)oY!shA1{X+2Wspth%(@&0&us8m#g9?cuT{PX$0nvo4@ ztK(@_JT7e~?JttT zPyhYzfxq{fSKIpi_{Z*mpZob=fX_bofKBa~$9yQZ-t?F8%{d(dc~*C=H}e_E-Go?^ zc|t> z!5AJipKEPjqF-854-E8?S`jfL-PnX)o&>fR{iM2_Yi1>^-?!cq3uBoCV)Ic%}D%AVAk1}ZPlKlEP_Ij)Hn zAv9UxWkMqnUS!)prG7Lo0xw;I3VT1w3St0SX6 zTd?vOH!oADc;A*Cw;b%qN16wCiygO7tj$%!BDUv3S?0w2!OZdm$o!)jl9PCMU;U&b z1Feqb5mY;UWJbkUy20iH>?19pgQ`rlJ=oZ=Xmjh8&A&pD#++S6vapa*x#;q|I(VW+I{*1(mH6i!f;qgz;-NLp1T$s3_>0`)}5qTC}dBjWE z5S=xdqFWUocJJ?QVrAD>p6bl^r2l&|vY(Oo4~)mzEabNB`X~z~>)%41Vl8 zZ%*U(tc|PTyTAMI!q5G}&%+~+Jd$Ra2}WRn_T|-MGndO^T=mFy3lDE=xW2syt!uA0 zWvLtOR6!))KmX|C@UhQ*p(AqsGyJtzy&BffIR~z~<{G%}IoH9vI!2mi6&!DEyU6ER zFSr4=f9ox_J`(On-2)WqNbgOzLCuENpZpZSf$VX($YkQ1=2z874X`th*==MUN7o9( zAskZT{AHQxp>(6TKJlrNNkv{$VCLYg?e z)JNFyrz{YS5Jps*qDzvdT0;~vR?Vzw)QuSMdo8#|H{n*ybBM+t62LSTbqwQ8)LzKP}IgRv=e56zTHLQ4Gnn{^xvK5jq zRjF?R^-Q|!U}Fq56U}h6>fGDzvG2t>(mYTMqK%Fc64pf95m+H=_m$C9VE|MzbK=;? zTU{7=5({ESG~&@d4GFh4fYiFCwlL5_uz+AHiOLbOB@3c*b7#atZMoPDa-I}VwFj7K zu0`QW3@ZAfSM9p`2ofHt_pw8%@j&-0%;;||w@8cL{{Z4s3%)_CwmN>#=QFoy zo}}{u!3>$D-_3(5Z_%V>SZl!b1CDUPp0;7vqO!6&S0NIlp-C09TK<-~ApdgP^U0$# zdUP0O61FtsH7Y*GUgw%l$;1!_>dQ_ct>&k`h>H;2F$KcOg{H3VDiy-2*L9r=4jZ~` zehHqm`5PYjIw0ycWLohUX_uay_f(G^=P= zi=j@iv$30rM+WMFL-#P?+W|1#Al)|YqyQgy-+STC+diE0SYL&+F&GmtEh-qZ(g+IQrAVOENu%A5RY z$CBwx6b7-CK44lmkH3sy3ILj^BQkIQ5|qYNA9AWl53`gcrziD98a)!U=z48qRnE}b zO~Q2YxbcMoMyt^JIF)lEi*?L00IKn|ACfl)9D$?8W=y9T9~mK!^T8EC$g*NMOy z>2w8UBQw$bSzGoh6P?VwSqmLbP+}hKP~|6WOfx zI|A8iOxojCHwH1&2EVMIX}He~QM&B6ddKtVE&RbfCe&MyNnWd1oC{q9q8ZA(s;jj> zzDMB;1r0*ju=*Q=whe>njdp2Z4kdXENP%(DjDRB+DmHMEKF~`yaV<}u6ODAm+$9-z zM(;BvNVJS;_+DQYyb2sSW-~A$6av9u^R|JoowY{v=*)5=(%UxFeZEnKai|0<64ODN zr>0*qw3?2O|K5paB-9RO4ZuQ7Gy`IxrJ$mO{40%FabL!wCWHo{eoo>3-08E+pz~)} zGFmp@*~68SMCPVSi-7<)+}vG{PFwi7-~N60*T3|unh-8|+LyrBzv5N!9j|^xoymM= z8vFQ}c45YvOaOKl+K{KMF!{39aov1u*JmGk#1{CCFM1K2f8P0nc?Eg7!JoYUD2#!& zDR}l6oVfRso(TKTNArZxM|1X{F(^aKX*Gtw$NXrAqoVI#mZQ@6O^rw$VjxUGu7mK4#fQj$~nQmQ}9&)bE$DgP#IC#ujWlAbmlwKT)ane zkhH1L4tgfI?R{bBsc3Z>5j-^!DbQJH>&>~&Ley`ppa!ix&*qT%p1`};6*E5Ft zDg9H|n25}(Fx1dSt?jk1-e(!iOHFXtno(kK90A*J6fh-s*&&izP7=NV87RY2w;lzm+g z7HIRq@PIPL=<_KH3X~m_H<%XFpl=jtqJ2rnm{$uV^F*OPQcxSwYfcFjG$ERmY7_a=RBlDOC!M@Yor<2yjyA^ z4MEpFC#k?Bf8XqqBxymC6o5tURyY>4(%f0Bk=7%y_>)7NtE8g)yz$o0x3z!tF*#4# zZiM5nqLf56(nEu<5YLfjW;#h}!~tJ7vR0T5NDFY9qf@hFD+K{-17qf~h|_;Ym@H)z zq&|g^RwGiT`LCzjI#A$4@`SX3yoi9{pP*A#RJlQlF*NL?JMYY>()>2*LE8OqPl3Pm zHD3q+zyI#F@X{B*Kr@+JgJc4@BZgxb>KPkvtaYtf@9wTco?{&ImhbsBUh6Rpb)q+9 zeLryYR+v8WuuxaCVhK1cqIlsw_kO;}lcOOw16Ra-3=hgUIF~UD^%EMc8$oH|FpyWx z$Sycb9rrIc?x{b(&&M6gw+U%9_kz*jbZzT20RZeoTRsbRk|(!={mMB?Hh-Sg%_D7B zx{n$Kz40xiDmybx<%1MQLIU~mnr7Foc6d9NXxUk#oK7l1=w0J(Hl7d47ZL)A-8Z=0 zZ7pBwZ;_hi{4QmubkB~bZ-9AYH$wAuc!~31g^FHkQljIJncgzZvdmeHH=#bj5SSy1 zgoU;ZGH#uQD>LpW{gQ*$#+@&w9THshc6|}X$8pmu(o*%G#$m>$gGRu8M>DwK7YsgB<+3#o6Zq+pLXEN{ZG|-zvdmJ;=e5Q2Twe{uA zj3GFJxB5yi0uy1VnVIH}{(+|_Q*LFZ&zr$SGnn0e_sM5Tr+{Pcyq(r%QXKED4Nc6_ zm%AQHUsJShme7Dl?#@9pa#E8KwOI?D=eT2K*IMOt7Gb*a^PQO?O%W;~BX7>9u`Dvx zZrxW?S=P0>(FP_dj7Z#s>vzdBPLPntng-E?lm=(-v;XDAWpB80VnlPEiw1UHB(O?N}c$eqbe|+;>(>cfg_J_YOMe=5N*4593 zE5GD&xb(8i;ZNW7$8a}Cl&*-sOkd7_uV-Q1 z24FavDTmyDIsYVBC-U7}2$f>5gkeb9_&^|JcGp3JUd7|P_+zaeC_>rGW&b3Nm!S@7 zav$`V#I_Kgm>>`J9@w5!5*C%RfFjib5Cz}_!}BTK56qX4u71U_Mh|+0A*W`5hKk?g zUZ~|H+P1jY7IcHY(^_O0cVG1Nl;gbQq^->(?yt3gqvCcP8R{A|c$@Z@NBJIVUp0?q z-bIXDS}n!%)qQ+~2uvz8Yrnk4iZvp%dDNOObXc>3)b$K@G$c=sBV?`QvDR{A?1Zkj zeY2UjgXN>JV8h~(!A5u8_0Sjb(eo~9*RPzh1*&E6jn|<@>sDa?&CijR^P^`m(xz|? z_a^*jOS)^5()Z0xA5kVonGdZ%{h}lOTLpGv+Ktg9VzL>y|6=B%&rX22!eA*TnxPJX z&L#o1Spaxg_1di4G}3zG_;E-~^u|UCG`1d07gz$5`~j}Kvd~5|L(LBP+0<6sFQ?_9 zqf2E9RD#tglBSG05`qm*V;(FkFd4ciKo+;P#?N<5DT;i1-C0;r(auObpDzf)M90=AlWxf84Wbcz=xH+McP*iCq|&mU zv@V)WmyH9Px8*Ggji=)6nz60(Qv^xiHzHh@ZGQz^oGUw=6V>L=Xx(Kx@PB+p8h7oq{pZRq^!@5V+>kgiOAQ z_6+K2u$M4Pi?%qBX``A2D{g&De_Lwc=Tq|9V*a zYxNqz66*|I*47!%dgTfcc;T167}m}`Kclx01gwULAG9yN`Wa94V4Lzei{a#VcwU|J zv@1YkHei8wb_QztT9>yH)Qb*bVP;yP9tR5fPSN)d+Z(Y=Uq_6nEu@wP%p9La4P~hoH?4JWt-hKvtIzWgsAWbL zDm7*u(0FyKwrUt45weRVnBsyIT$RGSlZ`)Wdy5uHdo7lUYN)~E?u5!pVAdKR(qKQ9 zU;BG_Iky067eWB2>KVVkTFsa&B1fwTj4S6mDFNtJ0bIR0@n>C)8>8?gx( zXq?lOiaQ>9XsG7&5+Cn zG~n3LJMHY~!be&s1)qV|O@Npr-4QyBdt9eukGrJ&kB>K zK={=7+xk`e3)Sq*`?3xFIo10O`um85zqid7h?_gi0Htuj2nD@Y@YRKY01OfLDM`<@ z55?%FUu#(1HOH@hp1!dxYZyHSi=($ffY4h8WMid|>ot?+5Y1c;JBCQu?KQ-?zAQvM zqJi?-1v@6L-DpZTi;1@M;oo?gOq{&!_T%t9KmD`tFJAwvaO^|J?2U__{ABo=Z+j*D z;P-zoyyg|(1~0qe1-%s@w4P~lvDXH07m0yqFmMk;z9m*H=i6SuU-G1jOyK&* z?|u(F`0yixX=$KdU-OqzxV4fzoyZ5l%c_$uRt2O z7<3P)_oZA9C#Nv{TNZpT!*o=f{`OBw_btF>*gJ=y*5DYP40vD2o4jL_`-sj2^6_yz zP}W2HDDKZ=V^5(jb^Y0Fd`(QpYt!IZPprRZQoQhXN^3uilfReElCv;bO}yO#s%bsr z1_u-lQk*I`;@lm>d0NL908N)#x+jI8tv@vUsFYhTKP{8ol-MGb!?5Xefzv}>1GSOw zQ5bI+=x>2G;29c9fc{|CJZq}}b3ly0JR-GYf~A-(x>EYGFtZ$RQ^{f{RAG$OCDb?evwkvvbJj&yHR{G{!2D5AHg1GR zb*!lb8nrv0A)OVQa$Yp^XKX?IfS7tG)9xc;ZF~f>X}9uuQGv>QVUF5OrkS2V$wO|j zoGDp5_ZgzCtf@|;%e*VQB?p{>E2^Y-WZDf-&UZ4A5_qMJVwd|9$l=IY8-0@;c?I32 zYIfT4mZa4^c?BypN&a6B208*s?|qY-re9o>_8uF{{_~c zei`an(rnfZQeZxAsuAR)t5QvWntTReG!Y?PoQ7dUa~&D$N{T1gko1RjWx1fUutmC} z7u`!g1M-d1wmP}2=iIJ=XCZwn#nnhQ7Kefu451c1j8;k8AoQ#*3eUBD-gPOzY?71H zB%F$%iYppSjL{}P^+Op}%L zz{aZO4nbp7ts_}1(hDjkH;r>Cw5FDCL7F-wA9KJ!00hQZ3XaD`^vnb?%*h>r&#AG; z?ZCaUe$*~hAHD3C=5_ToF8AsUc));OW-A6`}NR1^Z-2X zt6mBZAO9%4?R|d^UwHU2*go+XJp9OG$(L<7e|M|UU$g6@$CE@{S0y4xhtVvupBKO~ zqySqBJm*Uf!85PR=a6nc_88pqjz59VJ@^m|*Hu149nXFCmwGk3zL_`ORRG&`8gNA< z$v=CSpx1Ro&dku_*d=Hx3L<~e_e{$fp4l26MEoV@ih>vf-}9sp(-1BLUUrz3RF(sl zW{x0jWTH{hlGQhzaqyj}EMa)gQ~VhVH=JwzUE|&G64{l{%Z+taljXdxfx`Z(TGL`}3uC7BS=0KU8#?nR3)k2570DwuG@9$`Z*R3?AqamF z;)B@3Bs5c?IISL9E2T4~*L`hSo+Il8u^5l0nsu=So>dqtsOA8c_nOc`!YbEDi|Y4k zzNPV}^0$>MdpyP}C$fsH5^Y7-CdOJ3w+LOSSifc40{S0lFPYL?xO>dyEAWyIgXa_j}yKnpET(jvzhtKbe{C4cP0b7A&ZGOD}dRO zdJ~FyN~`eFJ32=?n0Hfc!eN{pADXR`Nu&WBtefME!5eSx=F$XBqQIS!r3|?xLx*u+ zCc(#!h)Fjy)VJPk#j4qWG1TfOt;b(MHaRdK>3boWB^>X5ZzvPpG1PZmc41HSoXj0Q znWJ{cna`7X8c-P(t5!A5N^loT1JpE#p~XJ(DZ+#2mtrSF+yxUeG?1*R-?fc{%B;fo z$b)I|`r9`G$b%XkihFR?Bxe?ex~1x&n#_Srj_l%M54fP2z=`;DsQ=Appbks2y?NQ zdEYFn5E_)3S}hFK&(_r9=IgdK3wkM9xTdc>^P>Or2Z< z#8i7Kz)-#wEP}ol$Y$q&bACsdQ6WSqG|}^j{@Q1Ak#}|iT*hM^Me%`8d2zkVJ3 z%UgaEUi-KH2K<#5zYwmu;%TtfmEBx$5nOxiMct-xExhm>zZK~5N8#=dAB8{fG}@ng z?D39z*oN&dd0|%u=}X*7q#@p6xFkeCX|Oo11>oIbqwK_Tiik z8+)qpL6)6?(Oj^&UzInOZ^V2;)JohmmxNLct2Qi5S7eT4TGo%b+ur* zAc%^6aA>WJ)mk;IY2C_;82Y)cTNH8-lnjq?cmQA)i0DsanNBB=Ya}7>Ps*b;aUu*f zM9c8o{XK6A5LjQQhgAEFLwQrCca%(sR9RCYCTj-(#P~oq9!i(V--1>WA%@alb=+LU z5?2)Tl+;n)wsWJ&%Gde|4Mje8G3FWC&|n|OXny8~LDG9@ROKL^Ni=x_c5Z$2?Z(jY z9(yP#cm^ggg|X3AQ+(#6322|VDYy0)_}H}hGt#Lwa9pUnq#}Bf5%WmQFCCXODcD$G zq6?R^lJ+r4R9aL!d_{M^Jup0-4Wbt#mvBE3Y}4Y;EZ=_W8BU zFT^Fi6s*KZR|O&})2va?vZcAJrfil@2(~scanVUy(EVerG)oh1>8_hZ8?8~h>ki~j zogAgY$y_wjEYV0#>mbKpG2Gdetc-NjMl*c$b~XtrLbe}=EMZAn>Bq7}o}KGiBdr0) znnO>*B(1RxR^>og?HI~5D*_=yDA+V*Qh*}jU_u7crCLV8gc1pX)fNjRr9g=|h!F|< zdpV5+&jCjsS_l0keJ%-epp8mGJviO4Okgu5=uz|-10tgfyf1%!-U zUt33(j|MX<+A>cqiqum-P{y)l-#aw~k=Te#dupF-Zatgcl&5PRfm#@ zwtN_ZX=LuHz^735(C|hWp&ijc_A0P68s6c1y9wB@2F*^M(*)cSpW*;fG6b}Q#&5Tv zF6$Hb+ynppzx)}v>WZhs4cA=*uf6Hj@MYa+j5~p6p9{};;f?7^z_|9|2VwisN8rSC znzht{**Q=^if3~D&N=^lI9md)F+A|_L-5+4{dxGneP5WLm2}DXzVO*_<%ND!)?429 z{yt$|LBfOG9vF%7pMCcSU>3~t(=99K<;;V$dyi0%>URtC1V970BU*gXP`;yimEQ+T z-p4gE2BX4)8FiZm0i>nZzUxav6GVp945F15(tTeb`3<8B7fg$b!+St&Ij|;s%35W< zKP`9C^fz0-4bbt*3}Jmx=y1RAxz%f-U$D~JdcDhgbX0OsItt_@eZX{`Ly-EDsf^@X9 zx)0}xp+_>4sGN!U)J<6o!qcvdSXW}CF;nFj80tbFUg*ZT@+b$IB`I4s-Eh)mNdZ4U zmXEcXNP1?XS&OYc($`lVsvQia13EL&Ea6Dfj_R=Q1hsVJIoB3PUu}S!D6q8U$}2C= z-(PZN@{?B6Zk}K~(dZ#cM_uK}dOERF?`SWiOPQZ|PbJ+^DQ4!t=o;jLNe&y$;KrZ~ zj}mb~+G!>p;ddmM$z)rY1!k&M4p=)QPOza|2vl;c$jO+m#`*yOB+_T>BN+HTvxq@r zMUh_5OqBh@*=OXQuYy?YOy{#X+W@}9?^M(fr!d*0Qz|ZqELs0B_F%%Q|Wrs z+ujZro_`+vU*CH(Typhu;OdJnfGe-M3W_lK%n)AqBslwm?mD+>=*;vdYv6}6+5KJ|(gb<#-b zBy@*bnKeO}S1{R2%n4GVfXyi~I%6oGhM?qev<^5MV^Z8SfR@9qBBZIu<}q+YyGk@lG=u5y7kr0GuYJ;QPlu@mW3E zW*QLGEPKcn!rP1#q9ufOtDC5FhwRDK;7CKm85!2^%;QY&?G%TXmrQhw*nK4*h1D_B zYU-^TX+8eRw9%}%5DVdD9nl_i|!KVxLi4za-;u}D#yQ)0#_ETV>W!EJN z5$!{{p}w)4oHO>A`IAOKQ~1Pk{rDO=m<0ZiHqL_V$QY{MJ%win1tMWzGiv<#&?Aq+ zcmB*TrQctD)zjhX>zM=p_Xi4;zzlP#{o?0f>-D$5 zoBrg#!6)W0(Uu3~F8ivDXTVoo{S15b-gmwo9)0*xSOm^__VWPO&rbPGKmQrn-aaw+ zoyhR+7GQ8-G(jYC+-W`Hksf~jQh2C58II=;@ z0SN=g9g&Vf;sf@agb_y6k9 z$bP5qYrodY2hFynOan`!tzTNC!GSd;98j_Cs8B%JZ$v0@TWE%=wX#J-P8?~(Nv zZq-U}yyOPd(~R!wcqIY$ z);EQ#9+QKrG|m~7oVjYcLoH=$co`-0G@O6GJQ|+;1AUqOLketNCc`=lEHDshz68$D z0=R#Qeg*~?^tsLk0+%?VnDS%}D)&0Z24KiEev`RTAyO^V=1bj;3lK)7@P&%r@YiMh z0#i(Z$kzJBro_2f3R)Cz_(vAl4j4fa6hegJMHos>MqKsEtG=IX7-E*)l=D9H{P_q2LJjue=qq5TZIyN?Ju$2AYQZH0`hW`N$aASb?bYhL(Ht7WMA>ZguczEDVo;KZvb=H=m8fh$64onwJ+Px5qe4J^M8FW*2h%yDif)(q$XuR=Yy{vmmE7Uo< zFb5&V9iT$-rIa>`B1wgX$_uoBJz6qF?EXytYFg=zKkE3R^i_GK%G5I8*ey4=aQy_!Bd|8Je>8*+(B6;$*xWsx z0=St7uS!`nJu2{;2P>O)M~ygZq&I`wJXfA(WWaw|asXL7Jqge9*cn?2IW z8o3*SHk!k!hrud9kHFI38ym?_I-Msi+UVnaTfUoCn&Iv;E2^_J$!nCU?pL zakpXnn+8N&Zi-lKToCuL!Fi!w(omItK`4YYRJO^N_y}WK{a$PoH6PDo-rOq6z*E~C zbCxz|FSKxb0kvjtD8;D)v)ZC`<)hOn-1UWV=Il%2t)?pYB1lR7+0nVwLj8(nOw^$ zqlF1+TP;6V4r!?tp9q|GAJ!;E>f?QjpiXrT9#F4xh8F4T<}?*OMsvM_+m6mC$LU(SnV2aF_5&+m(5@ zK2PS|YTC{4=;!g+q3g}0yEv|xHPXz_z3#1)+;;zmVI>Kgpa?1=q~g0VQDCV8-T^m@44YJ-%4$<>fWRn9e~)S0VkB;j+~+xo)K6Bs zO9EAL)xbPWKv`$#3jo5eX)iLj`pBp$QU6UxVx!GT$@3yhNJ%iqZS)lRX-vRm;ua4i{Jt!KN18y+UQUM z#a~{{C_k#lXeffLZE!d+uXhO1k8PerK5EVnBFxj~9CVn~uWE7zd(ic}?F*XS3+9hS zWJbrHA2cBQGXuBHdN-u{UtaZ%Z~>nK&38{c4xjq7KZVad`q=3EaqV4j@sm?DbcToT zy&JyxiI2g-T$S^or)3>Ww-4)kKN#g%Hd7J4_vd#RzW@7f@v4~vfii4S$m zgWRunvHDUZ8~_TYsj6F;OD$*^sZu|s$BHR6wyY*vOSYIQfdSKd78i!xtiG?X$@SZo zx}^VxTLKLe@QuV7wcjy6rJDhRc!B`H7)BDK)_%{|y*k81d%er?*Vrs-gRqX?7pR0X zm)m&VuqDfk0*^ygd&^4Z;B-yR;G(z}pwOcvL07?r91!@1*v|aEwpIJR$wH0vj$3*l zIPsx)gLZGpzkv{hl>iDwsHJWytkMwQeOfcCzAGtk0BGsJN0%0RO=TH!d1Lu8^EETiO? z(`Mw;eYP646~Gv$d^HkD8*MRj{w}By;gp{gUBxV=H_YKh&e7pcdIf&r0 zxH6x@ojIbMP;fTmg&vr65k0Z7eJK=UW@NWb9w^Z-9iXS`2D) z^0E1%^;gS)g8;R^_Dl`VL8vk-mVU zjt%6XtL0PO(?|#cqXVSo3GW1&L+L^U*@hSRr)LYh0wU&KRI}Vqg>KY{<z)o7gv+PcMpAx*L4mb#Ho6V@)X&eQliqN9<-EjRQhM zABsR@i!jg%lkSR4G=FXZ4jvM&pT#_L8WJ_GAYXVuCz@TS>)v9~;hvrLzjRkc-cRpVa+td34!D{kY{)eR z$?^UQ{~ZH{DN~m zgM#RqeB4uFSi5H@AeuC*&Y22RoZOC3ABdY->Hq5B<)&!t4M;HCf#5@C#!{kc>LKnq z%wb^GW-%XebEr{g+AJxrGYk#24UbA>4`D2}WgLo46~GX`UIhb}!*)xb2Lu<;eX)6h zFCPq>Wn#zyiads-(JUNjq%DnZoOWv1|2zp^7Z2n=kr%Bk_ysyJ~GMs=@XS-un0cn21o< zvEYpM3G<@Nu_c- zQ@29jDnq8ibJuR?f2K@85sD#%c@BYw16${f^o!5u++LxOis;}CdBpcfhiTuUT=9N7 z^2!7bPJ1as%>CV1X?@T!NCcgXr_Kqj1PP6v==2s-RCHC0Bt~1l^Si99(9l4B^r@Gp zdF3{!hFO_n^!cfoV$Mv1ovDwuYUT5LWbTCgX@TF2zmPpoj=s`hV-YNN)MZ(*c$|+4 zR@m4`9~{j2b{GITQE4zBG@Etvby$Ai0^`8JsF_bZB)sDUG+H;v@9Z|5C#CS90y$E5 z>Z`=FVq{wrz$&m43I?U{^o4z-d4g_bvu+6XpZPP{tqX;(Htdt`dgIOIE~*Uln2+>j zM|;}oi^L~d{iF-+G&9qO@|k1i058B==_E<%Ccts%YovM7uy24u@)rjitJVpv2tyBA)6*sHWNkOB=_}UM082mGD76W-u7OYysv?eTp3)j3X{A3X^^<9asfE&iHv9`hnK7b*6gkM> zp>$F5=%_nCX;@0#W~Q$N+u%BHgOoql(`K2YEM|cK%pxz~1hvV8ep|+)9qU(sl6a7w<>N%M#yt}gjQqE| zIXeyW5~!~g9xQ_#spAMkzZ-Be3CmSssICW{fmYCZuGHU#ZdTj8^xa`W-*WY6%B`@{cQ78_pP&0arQV;J>xy8qP|!>a3jSLXjvz6mr*FNr9J#%jpVADc^4OKQ2Gz&$>zYl3Q zCl_)XtuX?b8Irx3FvVAy#yNtSNj?ii5ILwB(5o$eCuM0vCII&cK=65m!EBUTzzM|!A@;TPHo(p7Lo9G+Je#L8nnrmlL7hZkv9tes7 z$Lni`&-0bikj4y(Z}sz5Q*V;CrGHeC%ldX^S~EkhT4>c88v{!&fG`CKDC6vOe&E!5 zYn_DVY~z|R8o6K+Q|7ApOYLaY0#e5|=c^iNw!&3Q+~^yfe!uU-?Qs}}v+HQx41D|* z1IMu9tAof;^YO(g-qjJvzR@?qII#OK^NGhQP4v-Q#3y> z!l;l))r`RwW+}U-i^+~4QA9UFBsWA+61b>D^lA0yXi1Do7bKFTn;49Q$V&oivu{3{ zx0O*zh+~arLD({SP!q!rjn!jXzl-H>L#qQs0u>u($+GLEOlg^8UEi3uv$1?Nf`lpL zn)@+JsckG~Ffa{5(Gz1SOTmNJHWD>TpoANNaDm~07=n?s%P?Y#Fv_PC^K*cz8i|iZ zE`?Qz`Q2gyb|N@ggb|np%S``M1x&6B`SYdMKNnvA<39pdU*jaw`+om-x~=tS|J{M# zd>wl3b@23OxLMch|L@;|M@~#fndj4`Plp7?1Bp&q7!!UE2@E1+Gh=issQUdX?f9Or zvs%KyG;Z}#lBPnbH&ZB?JKei;fHf*N;No51YyG#riK3ZASR8#S zjYkr(n~I>b!cuvAkc5VW*hphOt$GNRf+So8Q52XwAt%!JRv+i~<@;#C&`3TZ%#oq7 z8)|KDPEl<+muY5i`-sC1zejP7a-$`t5J52p);=H!U`JMVX{Ie7RDQ;}2;gpvy;`9c zri?d)b)pgx3IZP>GNze~CCg)M3NO(}GpJUYc_Cw_nLiRu^!jDNGpiWXPX~4$bbk%CwtJ0oYHPuVa@%!-K=up?C}yOF~2=J?6!w zlVL+|+*ch!4tYZHA?13%74soo+`8BuiD%|ekGo3UfX<5y5|31F9oB#GQx}IN322K% zdWp`s=X)UU$o!&uL$7?Vt7rZx$V?}oAxLkRBTuvgMLxe+YM<^zKhB;v< zpX&apFY0Y5zOT{X*3p+_l128+LT$1(4>7g1>0%U?jKM0*6qaT=d7RqzTBf^*@UzwE{E zvp@b1(;3?7ez(T%{os4yxBvLv@Yr0*01?WxZp__r{ACZzsy;v!Q_;aTnxgZpz_kaM|@aKvRjvDXX1YBUI)YfHC)oUKa{imhjfRV~IzR8dkE3}rbNcbSzYscSIV)i7oM+~%2PN%MM-ltH!mucV-4af;g zP>n8zPE=;wOyM5B&p+JJt*G5%C0y08Fd%ivp`b?%)bee36aaE^pX-9w7h8YXhFhItDxYoS5r z6rpLQgZuH8n0RN_D4Ti9+Gq3br8kF_cay5HGf0w_DU(WRB6rJ0GgbI1ge$pD*oAFHJ0a(*-e+wq@&*#(6lVFR-5|CRO8 zR}g}Yu|U1kO8?!5-kuVq=yz=^i~^)KPpMccBJI!#+d?#lyz?U;G1jRCN5oCQL20r# zeG|hhQNp0H&dhRC?FD4%LGZG;1`vopH&%$K+Smglr^h@+b118iyi}M*ivQ!b_hFBmi6$#u(Pq6~7F@ z8fM?-?YTCgY$&oJFQdvo6&dLj(DC(zv98vaGS?bG#!WDBPqZM#95DO^i04w98mOfn z<4n17*{6MA4%YMR>gPVUY!_cldy7CONl$RXSY>oS9bsEm;*GhRoZ|3pi%SUqOzurRPYeYtttNGtBBr z%sTItF^I+`1tEz*({wp|_P!4Dc|35;r^8R|)uHI@x*PZ?q7 zh<+*f068gX{t8H@*(@Y#vS?j)=NjD1bW1{+hPmvJ1^wtqrU#qJOEqOU08p04vCQAP()OYqKM-Z{TB51&{Eun5C-55*>PPAD- zVA^Ks=j<1xV}%w#WF8QrJULsRXt-3LVwraqY~d&qO);TRXEd*39b9zwS@6$) z==R&Mj{j@#kRNhDr#q42;k6#or&xr;Ym}47pWhShntQ zj20cMK!zpFZT1mnO@jGq6BA78o&^6{Xlvn6f zv5E@#mG(eK6WS62-|s282x`5;=?0>jCDY2fKQqc-r#$L1GHBqgJbook^w=(ekp!?4 zaJ09g^Py=5V zJa&L?SJ}vzfb_GLX*43_^wg^>_3$y%-eyrLdj|=f8P^EkpC(H_84qEiSrc7!z`(J< z1{)g|xw{9-M2nv^^JsiT@dM&3ZA>)75pX7&wb81P9y04@m_Rn^R{qhL<}I{iuNXAQ zm_83owB%&V5clgGX*KC4;RN|ZxO%l-Mw5C330YoA!bEQYngrpd%A|YNInu?wrx)+( z0GVlb2s&o|(G^1tAH5y6ue^M)<2c;A97GQA$?nGGVCSp320AyakSu};7(%yyfC zTx*OFwIntXUt~YXpXXYGyTc`3M*7LlLxI zpqof*`Dsc-96sD#iW`S+&`W{uqdFzVS;Wxa`o23VcG_ z+wj?Y?}1xO%%8uHOr#|H=aP#+m4>ae?`J*Quhadk}|0mq_z{6Iz zR2M+QFMB$Yq}UL5y`V*`BDBAZk>8~{)OctyytkFwl01F#=m!R+eg|TbdSC(<82IJqd@WXB4wipb@T)-)soMjtM2D zXCtOTh_a_OAt{Ok^WDEb0`%DLrs*=H!QEiiHP$l%SbzG}?V0hEUjG&jNE_0L`qO ze;{?N8k717S6i});Bf~?)|JivuGN6^wqJ?+cORftwEx1yzxd3H0GHqe|I!6 z)R6~dMJw}&H{aaa@yg6hU%#38%LJSG3~4@QIi4uRkl#s@eNz^7Sl=rx)|D7(;n(1nh&AWm9rSIV&W2TX2Q-Sj! zFw^cU?Rhgp9ktO{j$?S%NZ%#zu3cW8Bi)iQM{*|=rA-g72u3S>F*1j22`p-#FrDgF zPE<*o=4=vu2|pD?iXP!af|)8kxqWLTvS7Tgq@0_RQ!(ufsY-@1AV+^NeDN1-HioBx z2-L-|$WzM;=&k4jlc`#JsYphSMf!D%40jR^sKi&d22G;qH>0Aa%*E>7Cj72w4vYR8 zf*}ocZHCk*8n7sJim{x0&wD)NME(3dUo5h=03g=y!$46Gv;o%QKA;=QY$3}hNw*2r*Z-DDw@M3#sINiK_1iz2;&KOm|_c)67<>#LZ*FNh?IO}Q8 z06gog@=vGzDa<+v0;{2Rjm`MIsGnLE+CI5p zKPSdyC9>SS+8{hybqcfZ@5&267OMmy2XU+?=I$?P(eV z%~zhKHUm11gqdkI4KYCxfU9V;q){_jY^4=WqKFc=sd~rjK;T4OT8|A{2bjsV($l(L zDGL~~rQ-j z?xA=Lk(Mq3jeRCF&oST_e_natgDnReJKlZYU^mzsp4Vhw=}Xf|NDsf~XnQF7N3$lH znP@$Zm^INI6K$s}-F8pg*GkK~x7^a7DB1m&jESDem5x>3q@vL^sHwLIe<#9ZlW2!m zWu|wsiv*q{?}mKz)n+`iD>BsaEgo@=)_qj$+Z9;Sz>IY5Bdx0aBLH^R*b#rs!NwjL zI-`sSiy3M$D^Le`9`NmVzPn?j{T#Fn{lcc+_mz_;NocOflZ(H9*MskPC`>^i9x~_P zejLu|s7Z#Jawu{*-f6@O6C%hAb)%|g0yCS@T+7X(kJO`vK#_|DBmg%DcO=Veo2=N(~Val&DWP0<`aXCSNq!DTpl7#)1dNFeVTZmLZYQxoMB=JFUMv zi*eN8ZIL$}K>0o1P?0Hu_no{B$v3*rM0}*j*6T1+8*5Phpdkc0${5pVd69uH{BlB8 zSW6#@st}wi49|W*Pvck!HxbJhHgSK66uAbF2@O|I(b#VR5z723~9jMbp-}1Y^2b;h2 zM!5U)&PYdWv|oPFdo>q_*7~Ws#%Bp~7irU;2r6K>KDiv|?MKVhcTpI^-#s7cxcQSm z6Y8$WuWpl8wZ%x0d3H)KsfA*uRxp`fYZ?r7Di|&Mjlq0a%*CxVFc-GO;F0H<(`vLB zrzfK&AqILb*At50);01)&B1dyC}!)Kh8Q}oGt!c3?Uqm$1)pzgI2G>=Q9o#A)jD>4 z|6`-O!#%F|I>h#Yj5XOi#oWjIyN%Y3c2P0L8iy#F{p;HR1CB)>>H37E1jANBaeJMhP9AdxLi{Fyy zbM$4K&A=Q{m-&VI1~l$y6YTdQQdyk&EY~9<2KAT87s+Qo8l|R*sFJ|jWUj&pCat3i zix!NcF_|Tjp^=)8wW#np2Vt#gi7du)u88D_h;>{RyN1)+214U4wzSxPHk59#oC6Lt z@NXxun|_OD;M9V#nWJmr?H|4a{^8I32e|*ChhWDrkBOf3m;*sR^Zcj!{3p2gGoKx0qQ|miP50Nn;*h04A=D=@%e`9PtMpmcveqhyUU%4M8zdE~VQm0|i8jJ$ zd;%B-ocFyNuC;1*M=IGPU~}D=iOnZtCqHUA?2Xymbixj)OG`iKt;@lY;+f!MaH3UyYL4uCn8WTQY{UrZ5$aCPo{PDZtGMvIs{lx!Z8$V4? zz>y<=1b=?)!zFG(SvI>pEqK3p{1N!veV>8PJ^J|KuZ8bgOe?2jAD9?`1Bz`?p@))JKdq@3qe@}XFVUI$69P+M6bjMFGR;PGjx&`ztFx8+2o zmb{gs?GzJJqQx=;!mipa&ase<;G0ep-+EmFlDGVtGHhJ0B5V?bcfdPL$>& zux=WtL{_k35w)8^Eu7=g$~r%CpfR%N9k9}OB7HXjWo3<-T^ez$gz-s^zN!N;kyNZo z3_w!Od$l6N48b!~#nL6z3bp z2auv+CX|4sDP5b;lUJsWQs_Bg@_`;}M>}JMm>|IVW?7ic@-Auy9IYPW+-ruk3NReh zZ3vXeVTc<`Dh9CJxR9lCWqoUtnVgS|JHQI)>ePZoObbsJQ}4YnhJj5mgW=pej2{#pZ;@r&qr=AW`>ah2(Z`F{$#nEoNmIfMPQjW+tyBtXu(+Jkxj72=`E>3n(M;8#)_K{zY}I) zjN{OesUcaaXU}|9>fMI*r9wi@Lm52RlB4Kj^+cGC@rHb4E0?jZ?}{=g)=ACK?Kfa> zGbHP?W(-4OiEI!`O?GBP)yJDGjkik$B51fBi#S3$&Pv}l^67$_hN-}7qIZiaB4bZxtzG}GM# zU=xMo;KyGn96x>>#`^&>5z(M67|8vSk9`u;Zble6ynpTs3-#Y2wsZs&<%O1xGfL(j z`4}xek2;w*H!4Y#F#qi|o8*v~Wu!cs%#@0`h@K7I3KN-3LC6mh(6IRCj3IR@e6>Ll zWn`SN>I1Z^xG$d+^Tjf~PFHzCV^7|AJg!j1u8`G#ik5)TvE)Ccb zSpJ>tXoC701C{<|DdvoXGeLW|zPyY$CS&!`oU&zu{Nwr4pqT+hbD%{b9-U^AQoG#W zP>EqXh%d|sn-}^azB#<(I+_yyg|~ zir4%Nd;WntJ_dh#^C#if0VW!N+?;fmr~S}4)G%)PIs3h(>ah<@^g&r~6!zhT-x(SA zULHah4B<;oy9VVH>QgDZ2a!HvXhUH{e$1)TX47!bXfL^x2DInWPFi7|+qRq+r5(fC z%KqF&vRp|j$gy}d*q9!RI+gj~MrN{md0W@4wk_Z`ezuKHd$ge(Ag3kxM;bS!p3w)Igv4X@pR0(F3u0|Dva%5M-@Y zy57yEy$0o)P`W$O_F7jtt}N5&6voSWDz#N6D(6M+Ymm!n#YFRyntAJe3`eGdwNWZ) z@3L7pjDRW>LE=hn$i+&??T)!Fj=u`0B-Q!c*zstCe44_nGo))Knqi_}w&Y_A6OWl2 zCm)oLzM}9u@N06d#6&afm-fZ zcGFEc)5^>{9p){j0sNOuyUkCU8E7``=1T_j_7Jf^`c_a zDt$lV@ez`x6%lZLan)_HHZ8#P;GAo`)OM+IG^cppWV%NY(fZ}Qux~E2#tsKtL?%Qq zfdzQE{k{;!TI{qUu{vxbf9k`S_5`SWzKFo&AVcjBImC?Y7IShk0ay5!(3Gt&TOsLh z4m^{;Kk)bo_|e~ZEBxHQ{WtLVqmQP0=bd*R{MA>!3V!HS-vU=X?WwRA>;dkOJ3p&q z^1t-jYv2d|KYt%KZu}}(JNul3WbW!T(LeD2|0#I??RPq1o65`IW6;Z!F)dEjwN?Yd zDU37Y#8@ObQO|-WGt>R7_HuNo;%MR&RtBv)$=Q?yex9#ZHZXQXrM7ShP<*3wC85Ti zsTnZz)TB|i^BrTVM^HjzjG{MO8SX?&P`+BBZ!@EvGtBLZ`-B8wCAW-BwWCOLgo+gF zwKBVgvcICwaD@2V=sU!cIMQ^1fz`eNOM+0xz9HwL0R^{Z-(wf5)cbvlu84@_Un>(w zqnl?zr%wusm&_|0XY$_2xuYmKN};8eYjn7*t0HQ52sCC)bOjaw*gz-0SL!)-*j3g> zcYM|{{#1rK1{&*lv_pQPl0jivJa%q$ghO)D(@{~zGNjK<{>&Z53fw%7v+C3zM(dKb(~5ekI)_`j^lFrA z-%vJfLfb4FD4Dl0MywqqqH|dk5JdfM{t?gyDZ&!jqxB>8>Yg;sSZS9LVTehbB@mbe za~VIHec{}fVIhLA*s#NI7PMekddsO9R!AYKP@0^gAUAeDRclOHQ|BBw&6$L@?YVf{BJ)EcYOR4 z>G?V5o(osM^c&%ae&~nbWncLcxa@*+VKuclN9qq_}op{33E9#cTZ(lL_5D5uu^~F@J_KzUDX`d z*|Px}WG~h`1`38;d#gdAdi4Y-lo(E}vUClZAEDU_UkcbF;UKEG<=H`FrhHRs^QN5)hK)b1})4Fl%gH7M_=uD{2Gf4rspoRmqCRsG47dozb~5^duCZ9Th=+q(>sUMQKLiBOQ*uO3)4L z?bW-{M_TVi$9n#*q2P65edmLJ^iXb6Zl9XGM5-h)$JzxT%}xdk_N?hIc1h3{@Gc5T3(e$s-JT9nx>M<#ZP&|pCeefekxKZ=_h73Sou|B z%o{}`-JT_frlP>v_NNy>Q}`FG;qHrWcgUD^UgaL{_@q& zfUkJfO>pT`FHHhsh6f*d7(VpQx54-R;%~qw?)&UuT?m$|-@N`bybY`4+ht+VJ%V~W z>;BbotR4qVK(I(0iDkwZi}w~U<5YlAAL+Ev8fWf_+|3Gn&8d(fn!>AaFA4&Ljk9^) z6h)O|;C<|5L}8j9XcR3AVSrvhE!Txu${Z?{M$-OZhgsC4m5S6FeXUDV{Hp4sa|9xt zi6H;&HN$Dr#)d*)0hIpknCVJ$VQkQX!w`VECg#2qx}P%R++ZV?e%=@o##{aut$8;4 zNKFaTAaVw(O2rsO%g{sGICm1 zb_So!DP$~PB{o96L6z(OdB#}uc+lYaBfYp@?OC~_n7$WnkV-(6+-3!yHa6eu{b+A6(MTvE7 zezwZ{(Z_1mRgT>fWq@xOg(MTo{#qt)TH!haXW(Q&G_l)FSVZ%+h>+~@X$yb$(L3R9 z{g3|?Zn@=+@R`qkHr-#p;39a|#1+T-}5)W9lrX;7sCZ-uP?Qh1l=tJH6D1* zQ=SAb{i?5ofAsy|1K;-jKLnRvc3EPgX?qGEyZv_f;eYni@Xi1G&nG4t2Fh7w-On4N zlc7Ccblw~|ruBf;hhY(ymSx6xY=1c&tbvsF8K9a5dxz{DX9&?~KcyK-&Y+IgeL`1> zQif(AjJgiF46>_Ksz9I%hjD>wQ7tGgpqVZMl-74teK$H9v)OdCglu4_zcBPwd>Uz6 zFkfad=(f~N^+p+-HPp@eyi(YJCrSz@0;8A7_z19LvRXomc{DV?srrp^B_Kj1p3@VA zg%NU6Dh7*PWun!Jmzn6uOK~i!LSe~#*s-G!1C8Anz9&VfSQs0qTW@`8lOByc3HK(| z=ax1WrvLOEbwga|DZYgNq0gH*9v zxKXp63qosvYqC9k7Cflrj?6!#iI}=#yi3zsaI>0}iJ(5Dg1AoQP+8xFe4?u~wOMa` zJ|rbSl{WjGYVOa#8Q3Z8MB}&0+)elvo54Kht?e=&Sg59-?=;T;;Fo?KUi#;^!N2+T zZ-L8i_{#jC(+WTDMK6ZuJ^y;R;R7FpPanS>e*eGzH~7M%j~6{s8=PoB*j}{|O6>*6 zULp6c{gTVz%U|*mxcV7az|)_1y|q!>_l95pb$I=ecfz}F|3r~bTj1`6X||={WN4%n zX5stvd!WU6XWRd}?pE3RQU9Sbc2e%bf{z2fr*X~JbbW<;PO3%Qy6~Q~iRq~|d5OQL zAYY(9)HN;@JZ0M1vRomc!lHJQ<+jbtbZsG%Ppff;xXG0(^984sD5|)zHN?3MV7}az zPwb>nS&j6qTI@)_YT~TKYON?`q7|!n|K%K%)=lF9P`SpSvEgRTX-u@13C8)WpE6P` zQTsuYwpPyuJTEHRkzX(d9Y*$!G*K`UJ_)vT4i?VkMOGO;|q?56&L*QnhJ69|E-*;l&bA^AioR@Uah zE83m_v7+uBaK&I_D`P~NT%}nz&nUJ zb$rfI8EVKy|WvbXXEX1mUQ%$=BV8uk-0bOGP((K*IjoNw^S?r?f3uT zLx~B+d^o#FkkCgc2Nclr`rJRzq+!UW-M2fV4FQR?Dp1KR@ET|rh6RU8unb6}u<1#u zri?jTU6xoNixlNr%t2znw7kwlssj-rV}b1SuXe1PX@@Xr7#6o4PA>@AC2{#a3k$sN ztw;cKU8kY1BC;TeLJBAZ4BCwRSrb70O*`}Kigp1O)im!!BON!ql~(h9!yqa;_#iWH zVc;e%YHoi9X2Wh1t5L$g*K={1y3Zs05ug&B>U+Mdn!t=U-H*TVHD3J4v#58U?!&kLc)s1xkn(40)O-7H9M zN5^?^zMKS{c{&I^pQwV{c#IWKo%Inqp8}mS4e67r06m~rj%DJsYEv=hqjOUkE*wdw zxQJXz(9|kBh8>@0L)AWMw%g-3?xQc z8Rwdb4yFhjoo4!YCt=wLuf|Aq8fQM%tnlQ$8AiVjCedXssZhreJD)lCzJr zEDvyD1DcO?Ua**S(hVuWqxqmPr;$a^$f#x_B`YDSoQYQEw*i*`WJEy5tgBGKmvV+i z&$G5xQABe};q$wVX~3wgd+C8s-vdWK{E?)kPD0V`ZP>o=ZkRrJKRovM<0;uW=bi`aPrek^ zFTFhdUh4{a#>E$PG|%_5b{pXf9srvv5wG?8h3>I;PD%m^wyf#gR{QAM5Eo=AZ)l+U=9 zM+H~Pa0(yL1UhcWaz|Yul@87^bSWv2dL1CO@NkW7QSp+&g|bluMsGR|nd#0D3b>#f z^%sSA%Co86HF6ygYOQ)IQms*itT(rxc3dRiQ}Dn5?!?w2i060mU^64F40O~=dq+Uv zm{Baf1rw3Bw1qc3NqnTQa9$^U|4ivCJ?JCN=Sx55+N7M^c+b%`@mh4 zZ8QfRV@5h1Wvu?vs+B%Ez);7tq}7sn0(~E8Z8JyiRzr{SQg}n&#J6C-6&H)Fw83{9g_w2 zhHb&e@3=iMo*7i)WaiB&&$c*_UU^O~qd^KG|2>a58zPgtRxPxl;0(%0>$!gJPwN_O zhNdbbf(3to0mLgP%6+xvZRx}*1~N?2tdZ8uVGWh}!~so6Um9A2Ml;-J^s)kmox&M2@-q-&r}JUe`5U9K+P#p+vZm%nyh5L7HG*%j9srk|e?DCL zq>JEJzWWt$(F?y4zU1Nyp*d$DqIV!1X#4TRP*a<&eHuQWny<6Yfl=rZe&%zZg@+z~ z1pfGKzYqWH_x=RF@Wn5}{f|BdvtW=2Jk4O)@m}?vg9fKs8}@s@+Ec*dBQSu&NgJ%( z2McrK{99?lCXnfw@gB{3CNxSrLZH>en%3$a=%1vF5+CHqNMoQ4V_Kv@8-{PnUl!+2 zhh##^3cZ^d+hn9^_LIZ&qrtMwF{WJUWVTWvcE&;Ln)&p3Wdqb8GOdvDSTa$hr)Ia*@h*W~%Zr4ahCi=W+)~%pg=@E^z`bo1^ zS`QmfP?>fot@Pdb9O;{m|343^uwm z8We)EDp}0Kp_~}#5f>FWkF_|o=n_DEKfcjerXi2WNQ3&3l#DbEzLlY^vovHD5rs19 zK?*2{RL@(Cb+zos`wBxPqVPb??)vMe&$yP*xc?2A*Y~KFc^QIU^XM@Gg6;WZ3I`h^ zQLIdAF8GOSq~W3or{1laLxd)oQu!gqf83*dQQ@zp6H z*z-G$^4aGGrh1H^8mf#`|A9~c1-$b^x5F16dmMh}|9%tv&h4LqX-f+c)r+`6oDOq- z*|DzQI~^FigRWs;b&O6I7!%-=bF|J>YI+LuGiX)E3xSGJQM$9g$_&+!qpN$X>oQ@={`&&4J9+pFl5%f zA)m@b^VjG;d+pFU(lEeG*O9x&B6jC{u90S#glFmdX6~O&R$q3F-P$VMje}{o!j`%x zr`!8`{8bu(s2=xRo!j@{7308u(l-sLwcS` zbUgYBN{zH>qq|AKe$pEu-OvH#@l3UwJB_po4KmZLO^dH(1X1uzYFf<=mF0-Wh>_0!NVkdPN6p9MmcOA#HmtulhS z3S)x0NMow+_f+y+3+Wn3jL^rs+8;`5m=+wwq#mQ+b@`ssaY`o}t15-CB~XK0lQvrd zpfl2{_)-Cf1__3Wfsb9quqJVQuDa&gxxIjXJXo!nwoe3otobIl+%B*G{G@O2cq~C z7R7E~z@WVLKAUz+p^kjCVq29>x|S5Hr)h=)j?D`+7W|}Z-{|DT9?y?fNr*DkdXDr* zZ-+Digo$R@;6JQ|?mn(e<>X0p&qZf9DRMVQu)8<=4g8J!|LCF0>sk5*@_BIt&L9$) z23p5cbk%U@?RQl16&xMdZCd~(`y1b&vKBBjwD~5TOChHV>{_WKfLpA?82-45!xjNfB~dD_6mD*!g{)u(K@K^Xq-97Y8(xHpW%=?X*r zwV&1zb$PqNNays6&o!eF2A=7&~OdNM*+WmUWtIHUa8a6DMy_{(*a8KZLXQUZs;YV%1nlMjEwV+rC>lA-P#$4|! z4G1uf!&qq7pu75^l?i$jJ-88InBx^5YX=J8*Qel2GzvXMaz93raOQDXfZ5YZqvvZG zD4mHAVi%PbOG!h`@3x*%D-1bf)3uSFYO{1vXyj5!)u7YQjFZWb(jyr^LMZqG%WHs4LM5Gnn;;T=sb5LZKlC(6C!a*bTnMq4R1aiC_j^^Pb0k> zjD^3uXhO$5Rv!p~A}P-2a&~L2%}od0il>Li23kX~8ot_V4P!kHdSuz@w9XdQNDscd zgMOH`qwZwB58>S*CVQ`7ujk}Jhf-_p_l3Yu3|u>-Z=x0CxOEL>KWr!&nH2dNgHU@8 zFQZ9nlXDB~6<%)<<&+su*n}d+>Kf;wG18#|t^7zXn?l#+qi6+xHf~;R)rkz7{LN9- z36z>d^0TKivrhwc^G~HgufF!$egg9P14ZsbdI708%9h~`7ahJJmKDvr$0Byu(Yhm~ zT3vW)z8_p}=Q7g_wV!l^nvrH;rkUM_*|d8S7%-?9kHAnzj6-TJ49ojTuVPV_RNsaA zo4Ed4<;*MJ2p?Oy_7f=2kdDAiG&_{nz|x4zG^f{E6FlYzXw$}XBA zu+u!ugS-7}3NA+EM^CAAF5FA3Uds}`Hk&&0s$(|>^yB0+1IxcfmLz5&twi_JJSiOq z)uw;>Z00sxk_WY*x>zT3{IX*YAV(R`2+f&#WuT2I*4$9rH?XMXz6M%Ta8XOvB5MTm zseI}+1u?0X7uxFGe2GVk9hn87XvC5L3DfQ@sq@(V`G}ZL7t||BCn+COwkUbnhVg-c zx5hSqle#1JM(Q9#Bx+X91BU0(qJZJw%6ZISruK`89xD3`EDls)swLjrOJaN%=MF7! zsV`jA3@JIA@lyB>c?STfaZNNy)LjCL`}%!oS6QiTQs<@KS)#NWKde&TL5DFM7}vyJ zv>B^^y8(r85wT~Ayy||l=zAE}(dh=-e`9@7^taG)h7W`kBGFRUV7R9c;?2ejN-L+b z!L_>6M3-X7WPI#YI_lLKPNj8MEeZ++Xx)ET=3p1D*N?ooI)s_ZlrBj z!8a>0(h8U%eV?exJl85$ypWb_4YQER63da0lxd(g7Zc zLB{xdjNA<)Hv0k^dG5IUj=lg1o(aX|Ql>34rkP<*3qco_%<9INsl0?*Sun!Gf*H(( zfmgo~{Z#2yl8oWd2IloV#tg#)oF|Jlt4oh zC8!uc)VG;f)Vhn-S#hKHPQH-*JB9m7Q1-9T6!JGCiyb$j`YL+68j~1UOapo7rljd3 z0emXKP6!TMf&eQwgWc<;y~=kUVD;||tPZgcR~5`GJN8yyARv3|{uCYG8V^O^N&Ai1 zBiI%pJa!^@vpiPl&nMzK+wV5-biUV`^^?KOp3cI|no*dSE{%dL@W`m9=+NZWjOi0` z^vZa_-?ytzx(0kgt{A~UOIDW=!U9S+>hm_HCDwSOw}phR)_R6{JFABhT`B?vRYs8z z`Y4QcPDk0rk>YvLp&!Hd(A5=QCC|5lntHAAak{69n(AHKCxbL0GudQ;c{z}BdUW^v zU}GCF0MBvF__gsqAA!Zt@nVOntzCar5qtC&VMe#mJ4wFi zX;NYCXy&_N^|CS}t>)c)>=g$bgKD$n1F#_{K(mcVFKUXdtYV))Y1)1B&27?1v(zCn z&uZ$;oqQN_rwcP(Xr^N&SPH@es0?)l(X>1LzD$CNvHibH8ukrPU_WV|XnbYq5g4P_ zVh;MnQhjrY$Q>mMwt>=g1t3c1;_tAnlnX}~v3jU6lm#J&a)ZNgzhsYFAgh3yi3-aw(+7F%Yg~gfa8R2ftztypy9NV( zW25O7CDI3=_SzhJH(-bf->D{gZkco2a~9!HixlmRs5 zLiM}8OwmCa_-aVeqx7c>B$ZK}b+w`tVS0Ni_09AmWUVXm!(!(}&Q&IgUkUmicq7>fc0VQ1ho1Pm0h2Zmp+K^HCXsqH=#~#7)}h59<_v4q(YL2 zB)=>|z{D(5OY)8`W-Xyc15xS{?#uaiRP-f*Mdb@`w!NO{!;tTC4Kb2;!jp&#NqN;5 zNPUaiQ-EnZ6$r00a4?|OB%RDUXg%uRrxny2#C{j=#0IPc1Nd{V@J$gs3h1Qv+it;5 z{GI1nPsMaYmR0+`C+wuH%jAD%uUiZ>s45nu{kRSesXlLIEMZAorCgP+9l>|1#92%H zP@8E^bVU;kX-h3f53c%3+mNKU1MC)nC4=? zqB>wB8ihOxL9==_AAcoGvgK`M>;7m-f^JiI7~w&F?b)xkU}Izc(Z|90B>v6{NVe#$ zeWlF;n3b8#NK3G>W8sM66dXFlxw5v+@{eXv__X@GM5|)`4+ehbSX8>q8W# zMt!7lg{a-D`bgW?O$j5;oV{?T32Q=&11RE_jPfqM2OvdlXg|p zWA+P4z99&fPqt1*_p?q?r8eiC{H#gLph>RMB-;ItMKTweXw@PIbLo@@$oz~4&6bsk z*54x3No7+st#N;8YNRoQ_KxOa0U-wEfX-N#8=d>BP?APU`?-7!eIb2Wng~hz$Cd}d zs0PN6nMzIDY&cY>R|FriD9U@M3LF%|;)$d&*h_8PUc$*_R0nYs5bV^<^gu%-4eItI z?8zLe{Z%~{#Nu<-(kg)*aLit59&OJhI&J2{s<_#LI04MH9vF+~q513=6s{9MbL+io z{%2q@Aj2=@^i83kjZtrwjo)9ANYe&p$9koFPIRK9IUsLS@Trzr{d%UIv*TWhF(e$b zp3|)7N-Na9;{(+YmPRrnERV%Pu=qjS4?TsFCL1 z$-E&18~fIzkxs3*h}TUR9O)Pnwke@kXzaW1cXS$QT}TQw!^h92=-)x|;biKAjrP=p z7eyYnnMOGW#5@U#BTmRQ(i#9Po35jrIhWC=3IMat*>jT)Nb<2p$te$A9_oQrZN?!5 zEz^{kOH9T?159w1GaL0|-Q9A8=53Bx57Di$D}`2F^f+(^`wV53p+g zomSQt2<6_gTiNb{=5Chd!d{Gl?Xxq=eIkGb&^qAwW!@Y+Vu*e!$jWmEq_!o8! z?YW!(}I~gb=n*}5;uscwy5M{PI`oF11OC3?9#K(c&9h)G}08>qE@4k-=L~2J=fdg zG!gvT#ed}jc3nMj?Bi{U3nj39&waGfG0O_a!8OsbKBMPIvrsMpKC!VOAB=qqHl|E;y$H8r_W;Tnt@kg-sUP6oC{V z`+ZE~J4q5K{@{XeT6;%pBoZ)aB8-VuHRQpR(PKPc@w;d(m zR7$`zvYm}cW7;+GY0GexS z*XVBO`)6w!%TM@3OHWR7Cnk)js0?b~ak|v_%(^qMR(kF7ONvojfBIz@eWZt&Xb6mU z0UD=@HPgYYo8i;997(0KLNqba49wr%GLR25(SxTs9YQ}ty5l=Hxm8>KoJ(VVl#)+6 z@%JtHZ9<%U64lB|>6K`E(L@tbG}z^+;+tj1W{q4HnQ+v!RC&l!13gEYfjPN z)-E%PSOz6PpVYICJF@$Ym|!;;%xWA>jUlMG-NnsMnO6)eTkE1oDF*?=q;bwc!>UM$ zlnJ6W$}FKCX@!Jg%fPinJfRiYSe zqx@>|e#z)ft8^*2RvAjmz>c$m1?s8uCEFzTo(+MMy;-rr^jyxz-6K2;QYdNlT)dm-16XhPQm*5=}4a~;n9Ri}r5JMs9Qb2&2T-mH;QR5&Fn2@<`UbyOO?Ece| zPPMF7fUjB%oVr@r6!j1UO;E+srg9cHp#>P)s`<&!GLPzt&%NE_n>LMHUXOt>s5fiG z!947&@smu@;}ZYQz|LTdU_I3Y6?R)t2J^<*1z{55nXsqyb(%HPOhb$|3=yVAxb1xG77@zO&~ME3c7cGz zB&yz_>btyZZKBBBg8DtnRWR-DO`hBkQJCadF@!)~>#?#R$Gnz4)djOmW&Mg4Bg)A_ zXs(hvVsT*X7_10^FWLy7%0n?v#Xi#KzvTKRxzX}XW~S9gI`~S*Bd~70HK;$20L(l? znxT%NH3^^keM_4pNtp*#o>V%BnQ2yVb&Ry>gjW^n?Zn!YG+2mMj=yhmWuu8ju5lhI zX0o+`>Lbl(NYjKYL^*fTWYRA!YNewMJs*SBUFR+0xDNfW>}=84i(5P0`Q7 zPSP{+MPc*rSalL#5fd+g+OEqY^mH8acIEK~U)<#O^H^ z?^(w%?97Z@>r+Z<^>b*$9%9rr?HLobCl1uaYb0V%1?}m{V9fTDVBhUNj+^jauvMC=Yc|Jue9$N=d_<&Cw251Z~>{)r0MMEKsIgR?f4!##*x7X$A0*l~z zouM?$ewxxHx(dd(3uY6bnDv>4gsfm->XMpaMtcP)wdzviArg$7>2DkIz`F9;L;(W8 zAY1j87?^DdS{$_DnRHgA zUH+XJ{7h3P*VC5d=&;hT{KNwv??sJE{7|&k?f4|N-c3Bz#zwjoqjslI&gv)4O3e_p zn_1@vIF^+_@AM_*@mQ&Sxs)m~$fTQ?_6wMX^<#J3X}208JBVJ> zRIUvUnm0l?6Hi`Bz!Ch~EP+BYiODonAu*d$4=tw+i<}pl9UVXtd`$9F5A@CELhP-*HKbnq?W+whk7k~W)u_j|jVBIw* z&=|wD8j~tA(*o((EB?Z6xnfala5#LA*2v6Mv%4?*NgoU5+(!fdIN8+6D1d>%2;q{o zG)qqS=k`0_O{$gN06!y5nP~P4xa+RF(yPiubI`GGJMVoDr$A#QsG(qbQNQ?VQjosN z%%?NbIk_Vw5N$&%XD=6~0~i;k^gBVZBq?y(B*-Z;@@WyFuWgWk+9^7C-!{bCV#FKT zLPT`Z5-~*4ro5m4-bd;KSLlS99r!2758jPD{K#z&6aBg9Rf! zo?kXJag*Uh))9^{(pp|e=VH488#4@u80bc_`Xf1|yq=E30*`^yU29rzf|72Q_7Mzp z8%e~wm%t)`voN9Z-c9}l`m_<+0MF+lugpuZ7jkOgE_5iW0aSQ;Q^6Z|k zcb~t0@nK`6lj2YUE%R@S+|63)j)^`F1JFI+V2yN)*sV~x+QxWRqi0Af^Q=&xAFVKf z>@Ga%nv?>LZRSC=qn0PqS(JIt^gMTtFtSkyw||UuuG0d{v@u}%68P~~6BuTq8FIj} zvJ(|5X1Zq<0K!P~@mCslof+!DM6>xp)JSiDFwtz*-7(gMHu|Z;K=Xw9WcT~>OYpDU z|F(yetIKm*G^~Mvtt+)wAot8Df9#Gsyqi>FKOjLy$_KftpGg$B@Q)U&g(rvca;?fW}DA zAU+V? zajnz7a}_jN9z11?UH2g;?@P}k-?8JlK>IXP(i_)alPoslTUg8#|DMVd zMU?Ux+&&g6)Qog&4{M~4A3qL>nFd!n9+&5X8fgU%G^QZ2tZGJ@`8Z>!=N*An2OMLq zGzT4{O_!3yBbOB_npT5Pk zqNmOeM_}D3mq9e`mRpI5W@eh5<7M!VYkJX6M>B@UK5$#BXGmLEctZ1yNI!)GwaA7< zh5s`^#gm|(^Eew)wjq(4G@D7a3fiD5%MgchAtgOMyoDkN;-D8K&akK_RHD$-=PtW`gGo48a%^eJaDMZ5e!zX$aa4!`3sf z3@n0^PX?q~Rb=!*#4mBb;<~K`b`N??G=S=>HClBmzo&p^KS_h{En6?Y;t`}uhvpMi zq~3zRw+lKM%e0`Zr~{2$@p%n8u2aaq)Z0RHYklh3NU^S}Y(r(R(b}h>d`&S2%0qaq zjD90;v$~)5;FJE9m5a(mGw`?LFbt0mMeSw=T9|0|lh(La>MLDnrH3q!8HQYbCy--p z@n>S5Wq^j5X!Vm8J~j1<^9Q+WmSmzCR$hy`yErFhr(dHCW0rrcmdl&wn~%yRzyIRL{G9+EweG@Qg20I z(-sPbJ*F!pcaljCjKCQ;;6c>FVl@t*_cAD6*+^K-S(T!d5^>#G`n7QY9} z&tus}CSMramNa0On}IJf!eyYvC?r5*o}(E$z<8VeSguT@t4Vq*rv`cRO36#nJ<59o zCVHqab!AnE%Eej0O3Fj=M$krUpfQfxt>;N|Y%AmCSQC91#x>HjAf6}9po0_}uO{9x zC^p#qMYXbC7Iq@o!uW;H;z~is5JxJ$<@0C)G#Iix!p%2(w6=I0RybcQoj)epXqINE zCfbL8lwR&>3sNR-;Zph7ME;rH9D zWo7N`iSGB~-RwOf5&a^{%?rIXepKaO+@}j{=kNFTo zzEJtQFe}e6^}|rOdhEhvR>sc1!zl%{z%}pv^eN2HydIsEU&P6a&RbI!pspJf`Xe4wcw;tUppAAF?yOFrMnEl0rlBjMMNqds8Aqs4eg78+ASjvw;(dl~MEMhUYX>h-J zX8uUAqB`Ybba@>D)`_SY_Yc5ycx9Izx)u9aWp2GOO9u@mn8H1~O&UJzs3rtpUcOiFZ`_ z-*ykBAY=U5Ni;Obm<1YR-~ki{x_9(d&`2ML@{n;hVc^M=w9(*4U|EZ>HI0Nbrx}S7 zia|9`&c=UEkaozKrlZwi1qub)PTvKvBBKto(Ylo3m7babK48^@z_stb$9W>ywYNd}uY1XYSvS(K(Bc-5Y zd~v)g;mMRo8$GhPK1Vt#Qk6f{Ba-<;HPITeJ2f`6MXjV+sT=P3)2;1qfnHQ4mUEVE&d}sN05k~yvXO&0A=Mw>F;NMu9{eUq-Za0a% zGawMn>~@mPjQ7tlEC(Bw8K1s(YJ9EM@14;A?=9>$e%=jy`$QXao#$(E?ItX`PEq3e zs8R@(1cylOM;dj0o<+%pHA$q=5Qd4h`LigitI&9i%p?$$`fsm$BL!=8@BF@11e!~q zglu^mgN>5vn)jC=E!^lXh ze>5MftZu_vTg^$&j8@*X`_0E+Z3^!xe1)2JFO3XVovkPnGjZ?C)lWLEpLCMUnzVtx zhMR9`Qlz!|9O*IO&YW}%G@Eya&SplMr5ijjy>p~l62c%6yCV#pBYj+-4VW-Qjr8F! z{K2t~*}clzGSEaUe#sglc|oK>pStUlFg>xIpGRpGk_QsQxSZUyIxhfUFuEXkDy&hH z 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%0DZG4%ff_d~pJlZPG z8o{5HMza>}&I9XcjGZdaU;PpHV8f(2Zgg-o#(;V^OQmn$wQKMxD~Y~q7LFbLk`Z1) zs41OU!5kM@U5zuSU9ooCMJEK|Do?Zu;Vj3u(oCwwcVd_rjaX8?te8FU8)QZCjP{y_ zQ?hj`^x}badyJenw{~*>Dv31U$uuObD7lR# zZAdk+oTx!q_?aG7>E8LCtEfCP#FZTC7`&vn0HOXbKJ}yT{gr1w0*3+*sZYpGJXPgJ zgYSh*1G@IutdpMv)Rn``ZmPhb>g#dO&tBiZ$-uH3xg0g=Q7SXI=FixG2=%a$o2(c` zJ_ZlfLwwpX>(hIOCHJ69_&?#=*ZZ)guQwZfX zHVmPwm3k%vf3+mNJ(23!XSypUMf0SZL{s27Sv&UJ&6q@U-{r1*_?OOJ`ib_{>+gnV z`jA(aKOhniT@7BkdCfM`2*tbjo$Zd7N7K@&cQgzBf;4*RstQqwj8u9Ve8&^$d-q(t zXgC;yuyKnM;dvBr`_@a2U)>f8-Yd`u-XwbGoepibrQ}&f1RCny%;DPpJn%fr|JEpz zNrg>xVh)3A5k!Qs?m7)S;Hx$KSP%IH#A1o>BXl$Vtw7y{_MKZQ5=-i4<6kCTju)+5Sge zzVexj*+ll>Fpl!H&l7EjNi?)POFoRm6}h_0lZ%lL04k5K&(5Ftg@5;nzx&k(^nh|m zg>g)zIRr0#w9tyRa=ye2)k>p5q(P#+z|aDYmfwHhCg=LOa~g4^A(h_R64yeTH}%qu zaKjK&-o0Dwv(c0GRN)9Zfz&E)Q{iMfaK1IHm6b||OcIk0g^jc|^$Fh_m$yT&AR{xB zwGPMNx!b!aUk|F>MAmVbm{|aU#v*m%t@pMz#iD-1l{N)XqSCB3U@s&mmA>l=8fpj8 ztO?*rbnxUYRJv{aG(R(wl|UOv5^aAkE~r$ad-wi*8_&&d%L9HNHwK<*VjGCx{*j;j z#wnt&cC&qDNU3A46X!Oj?f0WK*y2(W_R( zB<0gI+TKn|{;^cLpX_50xK%`Arg?}7HQ}!NTMx?UNHO3vhDYSMB6pOUm4+` z4fP9H;(ShH!O!cKSQo-Yn8R8U%?8o%KLwlUySv(v=#@B~l0@IUS>1$K>zKn}ahNNR zX!z5@l~_v>?U7DIjOv>`^rz?|rZnZetWmljupYVB5O`Y!D&3~M-u#_Aiivb7uCytv zO;fNd=Fdu^&pU}U4p}|^Bxtxr2#e)or9t2O`R5hX8^EWxS?z%ei8KHrZ4LN&w&#hf z#PF0?<-MCF(@q)2930Tw zZ@=9r&h&AUNXvW#CPB(G2y!;A_vmFNx!*L7Q<6D}^<`?IfEse6o|$+ z%1>M+WA0Q6t(kFqiE4|~E3f^~-~asH#lNuHsVrn$_+Y=Ydw-V}uPxGpCy!OaOb_*W6uUu3IZ#vUfa1&<^y%W^Ax6QKb*9-^?Wwauzoht}5{6=lTHhSxhCDKwP zY3XztKbl>38xn2fN2e0$)LS>uCc*L6LRe&$H%Hg!h;ot7&e^r!rXgY^&c?K`i&lP# zW)j$F90VHcwJ-zWAob)|Z$vq_k!(wQcJ>g5_+^jI-_=-yKtH;D*AZ%2=-vStVC?{y zM0>EIeU3y!wc8r*^A3cQ-DzXx?G#ar zIlca=9Bz%%-R3ja|U?8q3vBgeE?p)r-?q#*VN-(M#5`|WJp|EQwg zkGh^0r0-$YQO1{*J7njpRY;3q=xYkY}&%9VbcdT301$Gzhg9{ci|oV-b-C zyi^)kNmUJmMA`-uH#03;rjnfW6$l3Ql1$4AH7|%Xu#Eqp`fc`eT(-!Q_xH-G77UIj z-SGj{?LKcKjrD?WNdL#3KmGXs{O*I_>u7yZlHlArMb&;j23QrOPRB~7VLROos`l8? z_*mH4aND`j*db@;a}w8n?6KBBar@~di>8wd3Z zFA^)#(xX&5DyKw3Im7f|-jL@@m!7p`I%*42Fc@u9b$jv0qPprPXkWke>_heQwtO!m{M+Aq$3`WB)-9YXM^THs z6dHh_5#fUo{phi9IA*ncVIK|EZVyoDm6erp*emjaPZ>AbFB_|gKdgW?*Xpdsa=W;n zE>A{`dc-$Uwo{rRkQENV3maP?o&smTbC~= zwwY$Mgu^k}fB;tf{>iOZKKDlF>2LNjC{Lx+ITe#g71eA%di03C|NZY%H>m8s=GAIa zRoWOKeY20>z|f6I_cI8}4JgNQ%!A-hEG70`2Xiu?@h% z*phHA#-^oGD^|vh-WK=W_dcMQ=Un#=mmyGuaM7xD69sAXV-9`gaZ76WZr;(GD|=Cf z28nbUuK11@infbghVg~?(Luc%cY|#-3tp4S3#Z6!JBgvIa;F%Hhbf__9(JjeM9Ys1 zOR8x38FK%8_W0>)SUz_sX;LC%;4ukQzMbB0BPF0hxaFm+;UeMtsMSPF6|LGe?r|Yl8r1pb3Ek2&K>DG?Uoj*qxFJ81H z+O`X8j+!}9YQHJrxjQ!@95`Sx#ymGS{|lQh|M0gLG9;R9q#ryed?|rIKX`H>BwlL0 z?y@SkAkq86K6+c+TXGpoqP;0=SSKVJ>sXoFg%}P$R&H9(Wj9kNW2`}(hAnOvn``7E zHTfUfsd4+$9WxXHR|osc%}mm$F%lxpM&E_8v^Tf$HUp80H`_}CSebpu)HQ0`84GN$ z^Nrh3-n{q4tPg;y3^L7&JQho)uco&OF37BX1YYq+e)1d7wC2Ce$GMa5wFB#R{<(AK z=+dQ2T|Igq=G!m{oo+varlTZLO#gEGC8`FM)L5; zHo_CQp$~_Q!m*NAAL%JfUBHgo9vpqYIY6Wb<3+sbBY z+l&0${*;ZaIM)#RDp4I+U3FyJlITrSkSlJ#oIy$T{Vm|Z8>-$nZn{eLzVqH4+`|hS zf^2B4owzdZUMVUrlj+54*P?UKC^|`8I0?*3?V0uOf99vYBFS_=HkeI58x6qRDe75xKNQgf}xg-^=?%^)#6oJ}h!X_|W&PBZ|p~H##p8SJJ>B z)eGgi3Zs(t$@C0D8z8D@y4kY_`TP`+Mzj{N|kKOe1MLOy3dp zJxc7$Xj>fS8B+s4=<8H;kAp^Ed82$AP+pZ=N)(BLV?os~L!V)+P`SUv%uIf7;CL5f z-_xg0C)%^c`TR4eho_Te@)A{yb99ofXAFt{?#-1iFL+^D6|7n}6u7rMT^bh@;Z@ znHM-93+~{_sdZaBf{zJrcHedLIs1F>R92ovQ?c0vK%m%fKGZ3hmbTIiZa{WcYR~Nh znLe%NzM6Yhs{&W$7}lVBTA<`id*)A~ZgA2x|0*5cO+fxf z1VB;gL)!?d;l2T3lB9iHhpOIpnCjN!z%-7f6~z-j!^B}pg(CPmRZH=80#X64aUB#5f$ExhX|4CwqNns+V76U zf^q^zjKPg0`fDK3d|oaPF2?_GGPb+*p1yj@X|OVxmiz&Z#;|4*4dToTelL@YG88UY zUbZXCZ@eF9sq!n;1J#j&ySsaylXD_ygG}=x9!pNMB&TWR0 z^V|)IwD90Qqc3RRd42t2_5E{^BpJBQohlS3-q#^Qu)+>7B9x!jXlWYCROfOl@76 zdeT~Wt`w5$DVAgf39XvEcgfj{9U5KgOA{@bUXW@r3`(n^3Udmci=|{jg^xG)hW)(X zp!1~)x%?T%v#Ta{ib3Y&I+z^9w11!o`a;=bhKN5QnbjL=*iCLE2)DLR3t|6#EO`CS1roIBHMlt#>t#|7F-KX(P>2Xu5JyLBln&k6tp2WA7ckE$+=`sE8TOYTXPQ@|S;j z8)-|TMffZB*3BBdFp&-0FWpyh35+YvG8gA`9fdmDt*Zq#I@+ui$V8IvxZ?Kf>XlY=TU zJt^;BS10>P@3_eHxaw3oK1lnha9)k3&LAiGRJdm|6zQyg`k?Z6Htv}mAW99wTUiJR za!KeE$g&EO=bYe)$#M!l*Gi&aE+od)z3 za(@ncg>5F$kU*aiA+M}WGz%ZoxY5!}H)CT%Z@}!9gcQ1+oa4h_SwC1t5^Xh+`A&gQ zC))yS-NupWhn`29_wRLcl{>80=I9HHpcw~14 zy%{CTIv&GfD#&fWkG<1@P(vEMwMAV41AeGX5CWU~ean=_mIj6P72c5OR7TAt+BTSH zFDTiV*abciH9)ifk6!-U|LCM@eIqz^6N4E!h)LH?wsRjzgvVM~SSUFntF67t%>cts zA^U8eeN4)b_JvaA*{zz{G#}>Kz3iW%8ne2c#~|wMFzS9CbeE+cOnUv$ha8Kf-y4Zh zm0LFyPEdsueIP`xxNk}xj}o%ZDKjLxm-0Sry>s{Itz8bYC&`t2&Ibwq%`h6AJb989 zKC(d1cvWs&PHs@@%0Y~ut#n!xO=&Dm?i}ldJBdg_qWn+I&3*m%Kl#`Gq5a|g9Z8c- zsB(v~{j<&vn#r>abtR+y%w4%us$k$8tlGUz8C-ucBGK2+UDnsV3O5LJQ0Mj}n)wji zib0**a;B6-`;b=wQ16CR+K_0LO>eB;iL{C>f5W!-(rqI&aUpQNu_T)LU+A+bDkEPO zhxsJ;h4J+2x-b&AvpTFI!6JL!2IOy(nO1@gFW#!Hct&Fl|H+`V+UDycL(Cg7l1d!|AD$lZVO-#qRd{A219=?q&+pmU@ew$qSK zv+Z=HN|f)Xr03xo)o6yOJp8QbIMQ$|2=$oqw-<~>s;4T{+?rf^1nSOlQj0%K{mKys z?zd#$KS>x#d&>1IQ_$BmL9TuGDwS_s22+-2jiRWGqdz~UKv*k;cePUJv@RvTL)m2{ z)e#B~?vOdz{Q|Z-ZySm8^RZ1dgl5(^5}XUa`(AX1-TRcqfe5E-^;{vD zOPn5W`*q1CnmBIsWzDMF_q%J1uV-Ax1BeCQ-k*ZV-CLQtHU6qK)g5nq0{x z+mkY~lIkvL4ke)S(ps@&;5drf0!JAk+DOKXqz(vYg|RA==tvUXTVdu;i|l4wYu!FM=*w7`u^i={MJq2%7pkdYCI1|ZO6p=O(6o+f@< z0jWihIO`x(#qZ<;qC`)ieaNd(lW1U^qhak0!d+&t_cbg9u}*#qM`QN)nqQm3g+v;9 z_3}8w%!X{-xuaq1E@w?_%rgN(sZ`d6!0(1fyJbV1Q#%7P z4K8&&#$NvT_nub~`JZ0?sV_Gr z(^WHUsY9Gpl_iy2L&f{z#f$Xpv(LJ)0el~-!|@rAHbs-cChK$z`{SRg_^11hERI>V zY*LS+!G8}piYkl4uzQ~*NYjylKu@m3Z4`MQ-dE*SdK+U3nov$vz6zD^K8E)k<~QwF zXmMrGFWK$)S#>~M=;xk$E{soE!d!AN$M>nys<8|?9s|1{6q|6E{VnAv7D)8(EVvL? zP~*lpy~;KkYpH>{Xe7?y0uZj*c+m;0-=&jzg1wC;afBS<{kNuN`81pMI>Bqf2i-W7mGQ?ypc&&L(pK}= zS6J2+cJ9kL(~wz-eKcTWN$WK(5Erz&jR4+8BF*aF?c`}@CS<`#qU9XPido=YPM&t_ z{9Vni+yU4I1Tu|T8K^gSLJcy__5@6#p%QV=|K9eh-H0m<2V~fW%J7$n@FP{4Y=qQZfukqMYuN$PsG*-Vb3r z4N?usrL`RqL+RZ8XXuW|X4*}64sB+>>cbbM;fUifrHK4vPF$wW~?OAk&i)tBF(T*1bzk`*}vNza(!SLAoy~ct6(+5>;)O->ItZuCNjfRtK#W1*&*#dOD|F)I$>Kng(`#ANls$Fxe%M6s8fmi>uvuKYW>vbS5H7{GUoTVP zp_`9c&H`!l^%w0r5NJcFAK!V^o`-$lKhVw%B$|YmZcnHKk6NK>upg^5estTL<|-$3 zhDtXUjv-x~*A8Ub0#a&Q4$8Uf9wUhc#zLf(516gR%z`*rWD>6d>CIdD%$H~E7qkuJkr^UV%9f&1+p_VA|w`jwF8(?^V-@<8`8`G zndVI@mtiUk^2JsL;R`MM|i<-RHQYj%?`U zZx}dEWVsIg4r-bb)5BsA1FybpovFTm==Qv6u2+K?==POwV*nmO;l3gaRg-GHq$kpB z8Y4;Q1*y8{AW)KgO-WubkPqEVda^{hOPguh9@2Y_n{+n8C?v6iM6dY?i7PKDhCPlb znU5sTVLNCLXvBraQAL#1uye?Kw{<~^c7$b;}vM25#iB>76#)brLgrLoBr6qbY586I|9F4w+{N^cvem zE9Y>`OZCHAYA3r44{KKI9v3E}h1*P!ndWvIYo6^+Ft$U0yh zjtMjB2bUi!NT?rB9Hc#j!+PTZwVu1EK&sV+50rlIwEjBo;B+eOBowyFtJHlP?bRL=fJ*cr~fS*H_(^TpkblgWRyg& zDz9}~B*zuQF3)iy*Y4%9I#uDr#6^dY2J2qytk<>X8QZLAZ7A&-5nMkwtEbO39iV#;fAcem9f|7xW zBHL&~o~hrNP2_btPfm`KB0_vU8daBS0XtUb@MR?Xjr`CEl*cbgnf^Uk5+v3nKd z8d}CkOWA4X7)SyCN@IjmZPP_T|Nu(nrjc;AXj>a)arTOE%zTUD`To|8Qv@^?k zTOr{0s`M7ekR%$Un!{m9Rd39?2=xUkjTR&tm5@m^q|=f_O9Bln?>w;gSSClN;k|pw z+fCc;C8yx+8ir{Q-c$GDHMar#h+TiL2MCRoA<+QaTsRW#v+zCa+oON}!piG^`Q&q- zZ;^Th`(+21c7{1;W4)+(=Z-@nea>`juu)+Nb(k}uxI>$vK|*NXsGz zYD37rZUfCQAnif2C+{tvG3o)#G)Y*FGMdz#!>C-=*5BDAUA*rIlgiomWriyB@(mjH zcY`I+myHA(>oB>M3@?QMx;*x!LTc^8SjE@d^HS3SrNS>@UbSBNdl!~J!z3E2-0Zuk znn1gwjzGKLC3S9su+5C^q1OE-t90*B2&D@W4PN0%GyoF4&nn%lIZLt7&+-^UqU|=5 zXRqpgn->-=dOmdP?zK2q45yO*r&gFmuL=?kwEYR*IrP>|FRAvb-H|Epy4c5sCb*yW zs?9V37<(evSll@*_Z3;r?q(&_AcYGyg?>_)q=mnOt1b5dz5jo#SM zscfBSp!(@KVx zW{{GWn%7wAw zZC^HBx4Rva`{XgGfj@ongueg&`?PN))RG`7Iwm2ODv(MyvNNLG2E_JEBJI$KNRL1& z-6a9DG8-U{qeQyf{@k&CaFnI3y<*ULJ588Lq-U5!SPAqq&o~J*_ffFIT z8d#x13Y}>ALL$B59Xv|oh$S~Be&kA<~(9LP1htluH`$AG=`j(0q^8}>TqW7cNc zELJ*gNOVhh?zRpKU_)&PG?VDg+oyG~n||@9zH)Bv#4niqe8|@{wUw?S(fnbR+wxHMUq6!Ip3|Y~)xr8D(TydF zBY4Ld#)n)zm-`3R9~>9LR3*JX?iv{5?ngA~Szk6H^y7bJU_JzTd^X06&~RM%$bykT zpAC{^cQYNtgy|SGJFZne1zum+seY$sbQImwk>}9UKD;n@;vX@IUa&H&Jz6++LrCdiCDNXE$@gVHRYA!4#c#GisBK7NPLYnsPCkikqu~gTZTPVbYH>A&q{|pj+;>3wqQc3Z6vV>GfC$##s_+4~|MGlnu z#c;s(pReCK_mQ9c)ukVMjSr_b(F~S37m{fHeMYnPDT7TrG5(kLkis^WLQ8BXzooZs zR_|u8Z>JDD8rrwgL$_aB0`0?HMK@pY!pKA-U6Mpgv^nHe+s+G>xl4fKkd+rXBYV#Xv0c~=GS*>S7U_ml%XGn4h zKqY{~F|1Jod|Wg)`*NEQ5{qpG;0_*Zb{7vkJ@tm><+@pzL`y`K*<+i^4Pi&vJRE>P zW5WknbHjxq)*>5w+Ry+|ypyz_BCs-83GGC$6BX__#IK4TPM9~(#M`#DOj zttJ3@264W0>5|o8gbH^EV`XiaCHXHP)31~BB#Bl+%BhtjZrb15{zccZ3b?!C%-r19 z{@&H)&wxZTdCrmO2UKMr?U0gaVE6ugv+uqg|L=S+iSpyYYTUrKUqj0k3jq6Q4#`Vi zog152Tb1rRuj;3QT(b`-<~sp~L|YzYxKW53y&#CQA<BI5a!IJk*40>~Zy_bpJX?W@jWu$TXpm}QA8miH z^Y1pUx02~nLU=~SN~1U3zL#E7R>1+YFqn-2JgElG2&uGH@#eLuizly_rPRQ-u$|^( z%M^R^c2a4UOB2CM9~=*``UimDS8Zr4*ZdZ5ysREPC^uC|q(P>ooiv;u%q^d=lPK`$ zjrEWH*}wSN_w~UqnI9jMsxbY0Amnv*5^lSly+hHl!It`okx)PR-~)Q{FOhWGgNB~1ZkM<(`beavTCV@+rw zk!G9dwn$jpOQeHcG!dKa29*HmshhQu1-xx^B;Xq-ChAKNNOegCLlp!%f}&uk&PM9% zX6K!aV9+j&+W|NpTeZsFPFtTVf&F2_U@=z07TX2{&vhP>NCUx(_mk&Us@{!ltV3Y* ztCy8^G*+SF4H9iV^pTTHW4ra_eM_dexFb6BBwp0NO6cTyx$As?HzU#`#9_)^4S#T}OB>UVk^`<0YDR%PLkkfq+aS=~ z?qt7}_F?HHm=e{^vfaPG^Hz8* zXv_wIA0;8K$Vs8ux$(la?hT>R-Oemt*lC@OrJPQB z>IRq#3Nk%zd*~b{?n@xOc$f6!t?jd)rHFppD}86{$#pxqaodwkuiAZlcsr21~M6(w=29s%aCx2b2N!$~*)7M{&le3+K$eK5e12anVmQXtv-e^4V z%ID(7U9&;h87!e@B8?DPcKg{2CCRiT)K)SL_3phrVKWUZg!BKS@BaEPeSiPyFWOwK zaW2+P#XCKxs$)*Sm&N|_z)$Yq-`}@{8pImgjijm*h(QikrMl!GKk!u~aE8O<&=SaF zgc*@(h9+v6IlKK)qU%8Y5Tv;;ba`IYcW8#mgl9GYKK6{}R zM&Pj@?lPoA+S)@)Ur2^bLkhjNXXDzX6s?W8dlxwc#bwC7Wre zcyDf!jV--b===vF&4J1N{;fp4+wLPztc9)g{L*DJQxsS5d*8ih_Fr|^8|n1?;zGEW zBhhFmkW8D#bw5rf6KP4PA3VYKpG8g#a>z@iWBezt{_BtZ$&>eg?SS;Bs?KR5d2TA5 z&USpZM|Is>q%Kb74;!{2t+wR)L+7jvzh@W>swPclXpUaU%?#C;O+0i*ohtlLrObU` zQqt3n*w2XcbfG6A-6K?3&+0%^zy}V}F-R+6YkE?#u_m2))K_A1?N@)GA{>LO9$c2gb1e2@vW)R>r<0qA5B z=~T6wM5anF-a66A;&PF$(^ItFif2tgq$BlidvF6aMFsV4;jM0Kfm%W3fgF*xmGbs& zy7&3dv}}dF^QuNjEYw*{`pEdw0IGRJq7%$Nf$D|~D(!8h;dIQac|$r~wws3c?&^6k zZrqW*^vOrHg!;$s{>y*-=-|WuyrcEUQneqTP6Aygy-x3Aw=>7^XTxFn@^;lSZUw7(8;54Kr!}^r4?gqh78#%5_5b z_&SZFTtwT`muJH+a}Z`MAj-VP0ts{#S>@k0O-e;l>7c5e5UKE+;<00CLQG}6Z!>?8 z_bfzsVZW6^pEOeF>rM)-E}T>Pz4z@+q&oM5H_Z6@WiyUO*yu;!>pU>REa{mW1p2{~ z$BNfDw&-KD+^ohOdFE!vVi9jLT zou$)|OmnbvJ|^Q#&tJW4x0g+Ymnz=#!UG@exJIe?Zu=sYsz^E<_p<=#{WtI2S7c zq`FNVf^ZUKx-E{~x#2<%8y*ImXy#{@NV`mT=j8;XVmlGyP28w>vWYaS@?wU9)wko5 z3p;74)(y19x=p2USQaUPMnG|Rn`3}TuTXH}&2gn~`h-N>I5gj$km zNTpHfL8hU8F)s-Suew>{ogza>W1AW(NVoW%yGPCj8LO5mJUX%` z+-$n!z5PeVy-$=lf0`D0N))x$*j~$}t0V5y6XD8ffMnh?+FwzgVfI)a6Zc5VH9GFK z3UZE*>NFsdtSO~A?wrGaq9}A+COUp*NK0BSx%*S8(~l;1(!oo%jQn|A7o$m_w63O? zs_t>%b82jSo*lPzG?gbT%ac)IVvCCE*=zfc>WhDlH0`Lmw)8tGgJ_^Q@$J8pq^*^$ zPx9GX6j8SQL;6#pc~c@y6Wabep&sZX)Be+YcWeLJ4>r^9U9O$mx|g;OQ5SRdC`|(# zS86@J_8$n1DEEHaf102Dw*NrpxEw;>QK`&bwHVCzze)RVCGBAL{ikf2du{*b`L92J z;_R1x>-yh(1z}=2vWu-LsLtp%6D|Ybg zq|n&5&c!@wUN?fzHH0tD^*2@Z%k6iyWhRlXMvh2F11-*IPn?5|w2U{+2J2SEdyOJ5 z-uAd#LA~4ANIU)h$X?pavTVXunjnu}3A?2SZ;)#8q&kpjz-&jJ@%*(Zk(RJCNx$=l z8tUF4(ugm;BOH&hdN*-HgZc+%usoS&Np#0MFo42H>%(UiJ#RMOFw66lMU_O_`y;cE z>MQ_4Wj*Tb|58rfTQ?a{)Ib#%=RdGSB{GtGE&3=+e* zv02-#EvuvrQ-eB{^E02Yt5=;1!Z)HN@it#8-RQoTkrHN|)wyx>8uO*W0zvbH0K)?U> z?Z1=P>P4I&h(qRNAR+a8X-T50b(Rw$Z4XsxSS zcoARBotSTER!WWIYXzBZuTxp&V1w9;x0q82;F*~7@Z5ddyMZSvsd+Pkx;Na%n^~TF zA34>M6`E&;QbH{y(#zz6tg}ZxxVlHYI7h6V>i3+tp}_WTg_<`c(;(HY4otql~)gcb!&|4$SzF)U4rD2zoO^bMEIhipKG)Y$&bx@I> zhUJ$Vi1hSqdA}}`54q=O>k)M+?_{7wVO+)ohv<=H7 zyi+$s=}QOa#j&H({wWz$hQWK6bQblS8nu5dPRgYhM_UO=C`e(Erk=`@x~Hq_IYiyt zf99JpiS57P4Tusl)=d?+s%&N2v*}Wj(8YbnxY~a`Ij5nw|6JX$ZM?Gmy9u^l)bIQK z{%0}l?|;(%2Zl-c{#$R{C%*R6=Rfwg}%086Dg%vEYa+a^lmMpJvuZLg7&M1z|#((*~wyj5&Bt!Ap- zy+JpzmzE!Uz>?@SEeDEbXAurdx?%^cLA+D(Mo6qZQ%S4?GIs4QB-4PDP6KIJtl)sm zR9dKahc$`HZPq+<1OmNp8UxmBBMlNQ$+V0yy%Z$V0#`1o2T$I2jXSZs0FkEWg=)8v zPIpecs~0c7tR7_M(5{MY>qtRJrgL!i({KIKQ>}kCJy!SeOh1CTkD(IxiDn$#7rpVo zCOp$$!0Kz2gW$S*XO8tUU<#eQ&Z{NK4;D)w!+5IUGpYvty+A$_v+bm-)$O%=C`kzb z=WF_YT?Y=CHlBO;%7JB<4{hBbx35WxF3)L_=0ITNpaIusRCBZU-~n#cU_W_>p6W-F zfoJ8V)oCgXf+crIp4n@;q!OdBJq7KbCEJaOK?a9u|Dn(Jg;CZ1`8n=f8hiUM(oGZF z{;LoT`0b7!Nw^aC(e-Hw(ny=Hs(ZRr^Y2b$Eh#!g`&aQ(dTAT|wtqQEk?RkO@k;kL z*UR@`p5F^*-~ZGoWAPEYnB@+_=aMDViET6!X>3Dl7N)7Ue*WjJHm&6>k%O^K3ZZ{f z2V*(h^fu90?j(d-`lI4~AkY}EXcx#TGRat}f zn=h!xcV5+4r>Yf_RP)SIm|;p{Oal>_-aV^#KY6l+7;`y^G^>pqJa|W+cd$(ZoMn&3kgM?5XHTPk1mm45deGIh|dqf{S zcaQXADre*qnlW4fHDSL#07isvcOC#&FEvBS%znd0lnS$P_@= zomV71cfY2C9k$=(yH#D2E32*&Hti;)=ls3h`M%u=HEKD?f@G*;cC>6B#Py^|J9TaU zkzJ&`RAgLT`&U)Z&b%WjRo#|2MIy~S_^z$HRIj!fo}E9T7(gp0ZKJfGrJDMY=5MB* z)wTb0667eh|MZ;nSbTFP*~N3Be4(1OX*yKeflP~Y5$ej?KL>0^Td6wtW)L{8Qe-mAM4Hj|Yw1{w>qn^A ze!mQTrK|+n9pd`q+DQ+sV6^D-D>PbY8&SHf;_DB_jWraMDhkK|9^)cHEoM(P?%YwU z-gP^PSZF*O6B*lYI&XGR_r7)anzkgHDO^U`Rm;{C*_c+W3+ zwQeTUkPnbOL}}miX;>fa|*UnCxk-Lw$n`zok^D4~K65f>s1aOkLiIs9F0j zC4^r+du=s=D5rnJ(f*}0HP_}U$#SUY=|rk3 zy=Sid*OlKW+JE-D;C?j!ex>JR+kZ1u_KO4g{@0(!$GBeG&SUaQibF^LR9DA+=qF*T&nSA(A- z3Iv*^(Lu;19E=qad1AY0CefBSC!unslQD}@h${zcADwvWw!*$!UiA0Nzosc7(Mh~$ zL86&J%X4kKXb|PZ!I<+=g#uW2+lZ*d>f9WjSgLP}ed~UE%@b?x3T6`NJ`o5sk)5Hy z8kxMtssLONa+^O=W_#VL3y^cS?$@SRVKMD+M@Xd&nT~9vg*|{I(yZpqM4C^RcGJO| z_Y2q5jaTnGA}wFc+ekaxXsBgu7Y*a;WyP`KfMrjjnLsb`43#-$XE7$!jNLBbv8<|z zZ}fKNtc#jA$I8RHto{;%kN;;ozx(k&e)Q+RC?(YC2Rd9+^U?MP_{6YXK2K!_H+9#z z^NKHaBuS_li1Gd1fQI5hJ?T=4ni3&u@ND_Ja*)P1RB<{=&!c!|I7RiuLHy2~CQ|XW zsdPnU(pfy8#QT%T+4!kqf|9h(r>hS6!Ks*x2vsd#C*#2oU!8lusys>u&P84|ouy~U z`X=we?=62U1GA|fi4bMg|E`PQxd%Y6Y2+JB1tx#hN+t=r)y@x)MC@2l=fHT5z(+0q9F z+x~q$P41EVF7Un5e8{G;Vf!!jx4LR#U;yo(>dBJMw4u^D@*7#v{?mNr{r={q^2w%U zz~6s6EmKvFSZf;S_doYO!)pJzZ%#Liwf#3pR|XGH&&_}BlP4~I<5yo;c`YO}JC^m% z#k_wpI1}4@`hlt<(&>XFiGGke6k}ZT-p8Qc?bW;kkrvT~ySXE9p#zbU?<(4Ut}_ zf;eOQhAHUP;APGidfT7C>fRM`rK5@^{s)O>^$2M*9gO<@Y>N4T*F(;mSn?Z{De7deQtQ@%w?7QnQ+OW#>TEYTh|W3H5)rv-$CV z_x*>TeedAIUotngVY6yyZ8M!|)B%f5x%5HFd}K=l;$)B#(vf_;bLmO5~KSG(F*7loAX7PNXWHUA`ZmuVrVXsPx{&yUQ_3K?Eo_VwH!f>Rq&zo^?9K04RF4 z>^zHv6oXl_HAmE_EI5@1A`Rt~rRj6Oa+4M1fk;u;C_{q9&8bOepI(=iML`8c`SAlN z9`vQ@=I6`zkb{eqJdhv-X&S@x-NWKKs*3xu2l0qhBx#a^q?D}Gwf`bd3IdaBr*aUh z{WU7Qq|AZ-+P@q$Gm$R87nS=d>ZSebQvW5}zeHLVX+4(D?biOee#wEaOdCHh{Epgx zerTJvrBc7xrTxbf6r%o8lE;+kBgB#6xBsNAQo}wV`Gyr)pi1qvuKhE?3vE!8b5VCx z-|fHadsLiP*Z%o-~Jna|9fozxxP!L zEweMc^2pnNiCj~*jdKFc1jobE^YdT(;=+qx`#&xJ)rYA$VoIc)r|x+C3w3U409NIe zs3OuJ%|#3zj>uE?(%m#>v~)5C0)5g;rP-_$`z@IUX}(MqBMfr^J2oLlEp8v{4<6FlRg z5<|5+bvgfCw?abziDp{|wv}F9UUrSftgV+mf1IV#i;tdKZ$#|j4=Ub}M(@1&(EgSr z8j|SUMBUq}d3zF#jv%)6c-L-+SknvMOQBd-0batngZkB_mDhgv<)8k>cW(UMn-}L! zd})qazr*M0ijS*2hIPjeUdsak*)dbNUX!L+QYW5AV%8Yfg+?7WTz+2Imd_&|ROX4k zPRK@%>`U;yTzZJ28E{<;8sZO$_TO(EcQ*bnC06`gIXF|vAexBtnF0}UZ>Pea%rBSh zqHIXC)J`-WRU%(9A7B5la1Xwx$osG+9X+#?3<{i@wJNE>^1ag!Gv|M40IZ5tsGH*X zak)?^i}aakJyJ3+qjdX$hb{(s+|Q|y-@26V@_CF-crS_vEQ&&2hD58(;EG}r?ee~; z?@?Qm^-t9OcraC@Cr4i7^K&GcFV-P%bW{(DG#2gO_8Hi(4%hzOb2`N!nlkM_87TJJ z{yERXH59*BbYGbv{(idD2FmTfG?7J|zhbOIX?aGgO#6@9qD)6xCwpoCMg8>8$lQ-F zi~3_lqR-5L|yxr@6YLt&L@!;6<;6Tmj?6w=Q>!tguLeP-~Vu5@ow_`>hFK^_8;1Esr^%E z|K<1Y_Wd7y`;Y3GtfQj5%^35QkDfgHx4wPzKVJHuUjFGX{}<2Qc$deck~m{~L5yP~ zwQh1GI*flwjD-WP+HkX2x{~N9j`WVz8gXbb5y19sA=Ep0#3f{Ma60p4EP%+h$t^a|a&yICq+JHz8_rQ>5P znf4X?DZSx5c|R%Cyk%@@XDfX<`pw%VFW!Da>i|;ellBZ+Jh`N8L;c=PM5t{8|I!eRGH`PqsUM=2cvt`@rA3hFN=nP@B~^Snc~m z-T9p90Iif-&R{a)4+ljZXPA}sA6p(2xTZ(tk1Kz0DVFxdgE0z&jna&+b_4ThHaJ0a zKAz&Am)Ic z_Nr9_$msU=VDavXa)S^}rNO;&4v}>7KDqqx2cm1!4{`F!PRZ$*NzAmTf zQpuo9rX@SyuZR;C(j}iElOOJ-GlM1-OWM-wOVFYYQc(`sbZYVJaFPo3J0&e#kJABR zsr@Te8ZgUIprV3A@%!*w_uKwuyHk9vyC`~xC@;IT|ByFYT!0nHt6=BzC+XYpZnGow~EUt zLc{h?;axR6bvsX*f*EhcC_P1{qB)aW=QCXhlp0~yypHT7IZV#L1+LP9}(zsLNwyE4M zTL-E;s4+v)6hJ#$X-leA=+Zo7!xx>kT}zTp@U-4mve4IvD4J1`p1c_@$avlbyioO~ zBrH~l%eEk-{+>*;0|0ENF{M*TkKUM}LW5gQ&H=GzHE(9sY&Q)uJ(t)_TW{VsKHlPv zfB|oV>GL6(ejuEYG0@4xd#Z`F^zx10QpM(P-uqXdd+_vwpEacVXR`yJs(TW}9d1Qc z?&Y50e0S6Ek*>N&_z-12DA@$Ni=t=2>6A=oc#mAYPVYs<$0ogZbgnLMtAvzv{2;Wr zUou!!RPzz5cwPeQZJkKO-PDofx)(Gl*D%=1yniqEtbA6N`|-65E$USE9^t8!yI7vkzV6KSFO8lnjK-w^a!2gyJGGivkhua%xv zQs>^-0I7Dxl~d(z7u)M%dyTw5DksP+6KCGX5PVJag5jv_M<)@Jow^L{3`N?>V5R+M zD%a@%f>g6tI4hA3&c+fFE$yU1q}%OIs89?L>6czo^vmybXvGID-@6%~Bb<;$NbIH? z5o&VYys;*zefW6O?3}=1Df}Nf9ZO=@Nmw%NgU2(OW^aU63Y`R=4;{-J4~#_mqJKtr ziF6(QFK=%>`~Thh?iaq_IrzedorAxHee#1ZJ8iqK(UIqZsz#b)!4f0YJ`Ke3XKM4BGq+0^JhMf-QxaC<4z zR_qVybgUrzj=6M3?K6{hd7aeykP{@0+kfuZgtvcp0S&bM^TduC)Ej5oKex}2u}Pio zdEz6%B!2(-RcpW773nh(l^ef#J7*7F zN1z!Hq@^LQf?YI+w4!PUW9+5dhUpbH(UEsf9ttp(Q5XMmh&ua!NTu96r9;uUz(e6g1YW-qDz?0Mh9g)*D5| z*+2#JBpP1pf+QN1?;TH~A(2i=G=nQI>=eX$i>d)f0s9m;54*H@qF!HRQUsns62x%ACrBg;u~hu(QN?Z2D-YqM=}8F)Z~B2 zSAGHUOj&Qb4xv<`X6Npts}ft;cgZyQn`9o7xqmoa=3mjSVrfX1@((0OJ~K@ORi{~! z=%ifbpp5Hsn26EEeRwGi#%M6@pWCMPFQ--W_U}_nb&!*O{QM>;>YA_5Jh?+n+doyb z|D;_db*OkBO-Z*A=X*u_SK>F@Te`HR_m9&OCNe78ze@V(6vDbQ+^aG0`==(3*Kfgl{-+xG+zj5Wnsh|1c#UJ>ge|zKa{N!)H{Dp7)(kDLm9-mN0q8U6k zEYo)_kt%gf7dfuAIA z6D&ya=w(F)Xk9Rj!EfT z-L*Ub<8zxJ9gK#y>&aBF`DibzJeEk_s7BHtW<{H*F~gZzJkU=D35u#`+LPzW?NFyO z^{}=a$;US)ojj+ej6|ApQjFTNPo7;R&9nDtwMy@!#i&Z!v&+G*atR~t2dO@x<$LkD zA@Su>&P$o8w*BkU9Xz)Y?V_^%dm`OrG@Z*gRwYmCkc;=r1lpx5*G{Y2e=5mtQpUNy zleI^9VxvhtvG>wtsa2@6N&DC0|E#GC4YK`HL^9L%PwBI2(oxlS532o#2>^;E>s9T) zvJMWY{THv)Tl+74caru`#FE}3ZzIVsmCL>=&DnFQzWvwXD1ZMOA3tpSZ?GQ@!%nu; z?_4@@@|B$0c0G!*rFACu(1mX05UzGVw!QN(NuslA+;32bY~zUZ1L}w{SFnkeQF8E` zyu;t!D;L$G+1?QZnwBV>Xq4? z%i5K{YwEhBCD^P{P5=(m4~zvqlf`#UbViX)G!^?~+-bkh8pX5zKITu_>y(DXS~vf# zt$tH&cyHby(;P=FOQ=(cG!tsJmrm5Yw}g5($C;KY-T)J6*hg3|edc&wXe_9F@9Y#a zU@V!olN+tiswi9mj0%=1FssSmWWDHCRIcu8Z>qx^R=WnIhW7lusy|oB`C4` zFO?Lg`61s$`T9y!esCR`?$-WmiI_aEVf$B==aw1VpxS?qNaxyrnijrCzD`rAy*6q8 z=`)I(6+L9AbEE=^x&s_Z6=|rAfL0wEy@-H6iW4INq)O*QK?% zU&Fkn%)8XoxA+;e?|=99uez4|VcNgA(ZiOaZ=Y1HZ$EeP)W2GJ=GwPeWxEQw@uCY~ zh4Eye!|leLdv;BpAnzq)xm6J#8s?4j=RewlCS|zc^H)g=RPw1rjcZtI9RW1G2H9bZ#kay@0}zt9BE$-+gQFaH4L6rpeX6t5)$+INV z_Fitau^PvdUJd_e!eo()Grf{J9kT~E$-18RWO^$TSDJ}5h_aMQvn|B-58rGpKX^++ z<(s@jnz3vawv}cT@5r;anfa1t)N`hRL)DvS(yGw<&`76GoY5^GZ~7{$a(gv!?sQT+ zYBy(BD8XR6C5Uv<;l<$n(%z*B!T#|-`{n1+GIeTrXiQ^9C4%u1H~%xo+Hax@TOc(+&SWT#ZAIMvP0#1Se4FfJ1CJu zUysDCiu{#(`a@OwFJ3Kf|7>%qr?CAiqA1z z)AnDHKKU*w*_C-kL|w}*Cnb*TZhc)y+rN0V#_hk9Hx=bx*Z$KBx=l<}wf|7Bqj!rZ zLiz5xhBTJbPCd2%W|Km39q$Fl>H9C+zszsOpxS>+sc)Z9bANi0)SrB0{><U?mK#Z@sip<^-iS1og>qbOfS8^--(1}hCo{Zo0mvqT_VyV+-}LinDfqU)w;n? zT)gPJmS9`QW3^=ZW?}Nmp@Lb1cU5TbO2=Va|d^ni@xF(%L~p$^Ukq{P~j>TUmX*{?yOL8v8}c3!=mB$^vJ zJ0z2i5n7ob^4JH*Vu(ARmU zL>e2n|L`(#y3(?(rgv0B*!=_gX#Y{th_d}_+UDifxNC*9>X? z&I#3eZNAld{e=@3f9LCe`3tWfZ0~j)8O}+Sn`tIG>;;K4#*Tq-Cl-TURkw2xB)aqF zyP6gkof+hx{+Zpj_wr+9jGuR+NI5=2bR@vqA?LhkCnC@sktdgg{hbFzIt_t-nt1BI z!H&i!2Ta8=Hce`jsZokmd&8l|mwrj9b!p!X=vZHR7J$L)H zT3hRos_ri)9aEWdPpFHrifiq~38~6J_{|>3}l{a8r}wUtCCsw^Q~mihev)G~ms=Pkg*wJ|TZ_@5BZ!B|mBXi}E(9lcoC0=_ab4q!EKN z=~X{E7ZU0WDYNJM-%PsWfx3$7X;EHj+RFn@u2*=5)TC(n&x5MT3rh1V-9H8GzdW(f zd;6DU#y+R2{a28XChfm?5Am+HF%%gZ&W+l?3h$lfm(CE}9O;quCRc}=qSXE?+G0u; z{mVx6CiJJBZtb64nw9JFr_D}pe&Dww3MrAwc z))%Jfl<7T=?O##cmd$tmHQwJ+&H=3HS6`na_0V*@@1B`I@%o(750~c8f9J;Oi|?kY z*}3tXJYGnen~vq2Y2cL)KI}w$GhwWHA5$9FGA@rN_!WRh|bIliv@Z_HAbB7R~J3153Ee z*VM+}^Xokkk6PMHTS$K01-;E=HoWJDCT*9mL=y2T2{;2Egt_I#R#Spsbq}m_AC}zx z({rMamU#z#;9f+~xpUHc zcgt(OUoYiUd(TWA9u&IeeXngYG<{WEl;8I?9nzqHgrtCUcQX>wDUE=1cbAeP-7!OV zw=_~CIl$1}LwDD_eE+}Cdvh+Ii)Wu*>#V(3RZC}~-|UOkaW}c;aZqh~6I}06_450~ zv57DSOSJ`DIBxVFk1vZtJl9t%R!;9ByVSuzSt-9Z4j6UrVn?QMYjZwE+cEQU0s@&B z*1`amsjGFQ@_ZOgjX`MMqL3e4iuo?FxAU(0DYX!_DhPr8Ga*HI-&@~RehESSd(+H5|vj=nAagh>`W zkEXCcs6MH|w*PMn_b4B#jE#)i~Y9+b?FQ|T*zd+GIi7nq(h2Zs~)LO&~J z?H|I}?c|GU;Jc>_8T`17v0*>!mM;6RLjaHXdP|$6mIIRcdcf~%kVH1Nci@e;rZ7K| zSb#|ZtLJlXaHiMcFRxcwqXwS3$IspfHB2O|q7K7u7tqw`0+6%zsEh{W`q0Bwx0n``aO3j|}+nKNS%M zNEtmD^Gdj=+^Z5PqJX!bxeSSTuIQr6!z?tQ{CJwAc3!O?kZ7RiaZJCQvSTt&JY`$d z`2n2#I+}S9<&N;{2MKj4{yS8(s78;W@rV02L=1MB=DDr$x-Wr4zB8j!mBU|T!-X^7081vpxEe5C#_w(#~5y?8P(t`J$R*IAd$la%i z?|35FQolTM>L*-sJDnmaG#vt3FFh0wit1ECSKKYNtKAwZv~N|=gZ^78yAOUH?bn?P zD69}ad)g>s-}8u9M;E%2hb9&4IgUtGQ&5+{X2u-nipas+_JPpDHXyVr+v5F*hyI%D z&zrv7{a{(~n(_~`IKey5ZJjbTgq0Lg!(uI%mdD*>|7XOGp#S_ei1(Pvyd|vmc(I!t z%Q#>mtfH5;M&fS0?^Oj_=FV&|`mBj=pTqwwnI0M_AL+8QxswJ|p#9gVwG;Sa%O3SM zL&9=!fK>L>_`WNVe`>bSH81kr81oA28Ld+y<|eDMfP>bDIC3)yC!UaTA(rO#J;~qi zm?PcD)c;{2R9Uk9{q8Zd0FZek&iv!x!rn|1;7Ib_cjW`glx3b7EyPmFG}U(w7pQEOMD7B|oo%HQhU0K-vmffq@i36<3sE{2@dpmsUelAo;V7|yoC#K z702QnF{=!)uq^G?ojZzd%t6 z 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

W@XON4ZY67VXlnmztpxu`J%_T6KZXu_K8DOlV2 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 mWj`~1jm-XE2UC)4r53!}<@A&BV=e1c?bu=8Lo| Bool { - FirebaseApp.configure() + + // Extra Stuff GMSServices.provideAPIKey("AIzaSyCzj49x2EaAt7T3G6fTQQU06m9bwAls2AA") GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } + + override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { + let firebaseAuth = Auth.auth() + firebaseAuth.setAPNSToken(deviceToken, type: AuthAPNSTokenType.unknown) + } } diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements index 903def2a..98ff2408 100644 --- a/ios/Runner/Runner.entitlements +++ b/ios/Runner/Runner.entitlements @@ -3,6 +3,6 @@ aps-environment - development + unknown diff --git a/lib/models/user/user.model.dart b/lib/models/user/user.model.dart index 91870742..349efa2f 100644 --- a/lib/models/user/user.model.dart +++ b/lib/models/user/user.model.dart @@ -28,6 +28,24 @@ class User { ); } + User copyWith({ + String? id, + String? name, + String? picturePath, + String? phone, + DateTime? joined, + int? credits, + }) { + return User( + id: id ?? this.id, + name: name ?? this.name, + phone: phone ?? this.phone, + picturePath: this.picturePath, + joined: joined ?? this.joined, + credits: credits ?? this.credits, + ); + } + Map toMap() => { "id": id, "name": name, diff --git a/lib/neuances.dart b/lib/neuances.dart index 7b448864..8f2fb34e 100644 --- a/lib/neuances.dart +++ b/lib/neuances.dart @@ -10,7 +10,7 @@ final Uri kRateAppUrl = Uri.parse("https://joinsafe.me"); final Uri kGitHubUrl = Uri.parse("https://github.com/safedotme/safe"); final Uri kEmailUrl = Uri.parse("mailto:mark@joinsafe.me"); final Uri kStoryUrl = Uri.parse("https://docs.joinsafe.me/story"); -const String kAppVersion = "1.0.1"; +const String kAppVersion = "1.0.0"; final Uri kMarcoCalzadaMemory = Uri.parse("https://youtu.be/GVdFoKvmMtU"); final Uri kTermsOfService = Uri.parse( "https://docs.joinsafe.me/termsofservice", @@ -18,7 +18,10 @@ final Uri kTermsOfService = Uri.parse( final Uri kPrivacyPolicy = Uri.parse("https://docs.joinsafe.me/privacy"); final Uri kMediaKit = Uri.parse("https://docs.joinsafe.me/media-kit"); final Uri kCollaborators = Uri.parse("https://docs.joinsafe.me/collaborators"); +final Uri kDeleteIncident = + Uri.parse("https://docs.joinsafe.me/deletion-policy"); final Uri kHelpCenter = Uri.parse("https://docs.joinsafe.me"); final Uri kGiveFeedback = Uri.parse( "https://docs.joinsafe.me/contributors", ); +final Uri kWidgetInfo = Uri.parse("https://docs.joinsafe.me/widget"); diff --git a/lib/screens/auth/local_widgets/legal_checkmark.widget.dart b/lib/screens/auth/local_widgets/legal_checkmark.widget.dart new file mode 100644 index 00000000..ffc3095e --- /dev/null +++ b/lib/screens/auth/local_widgets/legal_checkmark.widget.dart @@ -0,0 +1,60 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:safe/core.dart'; +import 'package:safe/utils/constants/constants.util.dart'; +import 'package:safe/utils/icon/icon.util.dart'; +import 'package:safe/widgets/mutable_icon/mutable_icon.widget.dart'; + +class LegalCheckmark extends StatefulWidget { + final bool isAllowed; + + LegalCheckmark(this.isAllowed); + + @override + State createState() => _LegalCheckmarkState(); +} + +class _LegalCheckmarkState extends State { + late Core core; + + @override + void initState() { + core = Provider.of(context, listen: false); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Container( + height: 22, + width: 22, + decoration: BoxDecoration( + border: !widget.isAllowed + ? Border.all( + width: kBorderWidth, + color: kColorMap[MutableColor.neutral4]!, + ) + : Border.all( + width: kBorderWidth, + color: Colors.white.withOpacity(0.3), + ), + boxShadow: + widget.isAllowed ? core.utils.color.applyGradientShadow(20) : null, + image: widget.isAllowed + ? DecorationImage( + image: AssetImage("assets/images/gradient.png"), + ) + : null, + borderRadius: BorderRadius.circular(6), + ), + child: widget.isAllowed + ? Center( + child: MutableIcon( + MutableIcons.checkmark, + size: Size(12, 12), + color: kIconColorInGradientFill, + )) + : null, + ); + } +} diff --git a/lib/screens/auth/local_widgets/legal_checkpoint.widget.dart b/lib/screens/auth/local_widgets/legal_checkpoint.widget.dart new file mode 100644 index 00000000..5fa439f5 --- /dev/null +++ b/lib/screens/auth/local_widgets/legal_checkpoint.widget.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_mobx/flutter_mobx.dart'; +import 'package:provider/provider.dart'; +import 'package:safe/core.dart'; +import 'package:safe/neuances.dart'; +import 'package:safe/screens/auth/local_widgets/legal_checkmark.widget.dart'; +import 'package:safe/utils/constants/constants.util.dart'; +import 'package:safe/widgets/mutable_button/mutable_button.widget.dart'; +import 'package:safe/widgets/mutable_text/mutable_text.widget.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class LegalCheckpoint extends StatefulWidget { + @override + State createState() => _LegalCheckpointState(); +} + +class _LegalCheckpointState extends State { + late Core core; + + @override + void initState() { + core = Provider.of(context, listen: false); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.only(bottom: 12), + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + color: kColorMap[MutableColor.neutral8]!.withOpacity(0.15), + border: Border.all( + width: kBorderWidth, + color: kColorMap[MutableColor.neutral8]!, + ), + borderRadius: BorderRadius.circular(12), + ), + child: Row( + children: [ + MutableButton( + scale: 0.9, + onTap: () { + core.state.auth.setAcceptedLegal( + !core.state.auth.acceptedLegal, + ); + }, + child: Observer( + builder: (_) => LegalCheckmark(core.state.auth.acceptedLegal), + ), + ), + SizedBox(width: 10), + Expanded( + child: MutableButton( + onTap: () { + launchUrl(kTermsOfService); + }, + child: MutableText( + core.utils.language + .langMap[core.state.preferences.language]!["auth"] + ["phone_verification"]["terms"], + size: 12, + weight: TypeWeight.medium, + color: MutableColor.neutral2, + ), + )), + ], + ), + ); + } +} diff --git a/lib/screens/auth/phone_verification.screen.dart b/lib/screens/auth/phone_verification.screen.dart index 1dce339f..e01da9f2 100644 --- a/lib/screens/auth/phone_verification.screen.dart +++ b/lib/screens/auth/phone_verification.screen.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:provider/provider.dart'; import 'package:safe/core.dart'; -import 'package:safe/neuances.dart'; +import 'package:safe/screens/auth/local_widgets/legal_checkpoint.widget.dart'; import 'package:safe/utils/constants/constants.util.dart'; import 'package:safe/utils/icon/icon.util.dart'; import 'package:safe/widgets/mutable_banner/mutable_banner.widget.dart'; @@ -11,7 +11,6 @@ import 'package:safe/widgets/mutable_popup/mutable_popup.widget.dart'; import 'package:safe/widgets/mutable_submit_textfield_button/mutable_submit_textfield_button.widget.dart'; import 'package:safe/widgets/mutable_text_field/local_widgets/phone_extention_display.widget.dart'; import 'package:safe/widgets/mutable_text_field/mutable_text_field.widget.dart'; -import 'package:url_launcher/url_launcher.dart'; class PhoneVerificationScreen extends StatefulWidget { @override @@ -88,6 +87,11 @@ class _PhoneVerificationScreenState extends State } void submit() async { + if (!core.state.auth.acceptedLegal) { + handleError("not-accepted-legal"); + return; + } + if (core.state.auth.authType == AuthType.login) { bool userExists = await checkUserExists( "${core.state.auth.countryDialCode} ${core.state.auth.phoneNumber}"); @@ -237,12 +241,7 @@ class _PhoneVerificationScreenState extends State ], ), ), - aboveButtonText: core.utils.language - .langMap[core.state.preferences.language]!["auth"] - ["phone_verification"]["terms"], - aboveButtonOnTap: () { - launchUrl(kTermsOfService); - }, + aboveButtonWidget: LegalCheckpoint(), resizeToAvoidBottomInsets: true, // Display related properties title: core.utils.language diff --git a/lib/screens/home/home.screen.dart b/lib/screens/home/home.screen.dart index 2d9083f9..cf879d57 100644 --- a/lib/screens/home/home.screen.dart +++ b/lib/screens/home/home.screen.dart @@ -1,6 +1,5 @@ import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/material.dart' hide BoxShadow; -import 'package:flutter/services.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:provider/provider.dart'; import 'package:safe/core.dart'; @@ -15,6 +14,7 @@ import 'package:safe/screens/home/local_widgets/incident_limit_home_banner.widge import 'package:safe/screens/home/local_widgets/event_home_banner.widget.dart.dart'; import 'package:safe/screens/home/local_widgets/tutorial_banner.widget.dart'; import 'package:safe/screens/incident/incident.screen.dart'; +import 'package:safe/screens/incident/local_widgets/widget_showcase_popup.widget.dart'; import 'package:safe/screens/incident_log/incident_log.screen.dart'; import 'package:safe/screens/play/play.screen.dart'; import 'package:safe/screens/settings/settings.screen.dart'; @@ -153,6 +153,7 @@ class _HomeScreenState extends State { ContactScreen(), ContactEditorScreen(), ImportContactPopup(), + WidgetShowcasePopup(), CustomCupertinoContactPopup(), ContactCountryCodeSelector(), CaptureScreen(), @@ -201,8 +202,6 @@ class _HomeScreenState extends State { duration: kFadeInDuration, child: MutableSafeButton( onTap: () async { - HapticFeedback.heavyImpact(); - bool shouldCapture = await core.utils.credit.shouldCapture( TriggerIdentifier.primary, core, diff --git a/lib/screens/home/local_widgets/incident_limit_home_banner.widget.dart b/lib/screens/home/local_widgets/incident_limit_home_banner.widget.dart index 0cfdf74e..b79ae62b 100644 --- a/lib/screens/home/local_widgets/incident_limit_home_banner.widget.dart +++ b/lib/screens/home/local_widgets/incident_limit_home_banner.widget.dart @@ -5,8 +5,10 @@ import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import 'package:safe/core.dart'; +import 'package:safe/services/analytics/helper_classes/analytics_log_model.service.dart'; import 'package:safe/utils/constants/constants.util.dart'; import 'package:safe/utils/credit/credit.util.dart'; +import 'package:safe/widgets/mutable_banner/mutable_banner.widget.dart'; import 'package:safe/widgets/mutable_home_message.widget.dart/mutable_home_banner.widget.dart'; import 'package:safe/widgets/mutable_pill/mutable_pill.widget.dart'; import 'package:safe/widgets/mutable_text/mutable_text.widget.dart'; @@ -110,7 +112,23 @@ class _IncidentLimitHomeBannerState extends State { } if (core.state.capture.limErrState == LimitErrorState.maxed) { - core.state.incidentLog.controller.open(); + core.services.analytics.log( + AnalyticsLog( + channel: "request-credits", + event: "maxed-credit-request", + description: "User has requested incident credits.", + tags: { + "userid": core.services.auth.currentUser!.uid, + }, + icon: "💰", + ), + ); + + core.state.preferences.actionController.trigger( + core.utils.language.langMap[core.state.preferences.language]![ + "credit_request"]["notification"]!, + MessageType.success, + ); return; } }, diff --git a/lib/screens/incident/local_widgets/widget_showcase_popup.widget.dart b/lib/screens/incident/local_widgets/widget_showcase_popup.widget.dart new file mode 100644 index 00000000..62dde9e5 --- /dev/null +++ b/lib/screens/incident/local_widgets/widget_showcase_popup.widget.dart @@ -0,0 +1,139 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:provider/provider.dart'; +import 'package:safe/core.dart'; +import 'package:safe/neuances.dart'; +import 'package:safe/utils/constants/constants.util.dart'; +import 'package:safe/widgets/mutable_divider/mutable_divider.widget.dart'; +import 'package:safe/widgets/mutable_input_popup_action/mutable_input_popup_action.widget.dart'; +import 'package:safe/widgets/mutable_popup/local_widgets/mutable_popup_style.widget.dart'; +import 'package:safe/widgets/mutable_popup/mutable_popup.widget.dart'; +import 'package:safe/widgets/mutable_shimmer/mutable_shimmer.widget.dart'; +import 'package:safe/widgets/mutable_text/mutable_text.widget.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class WidgetShowcasePopup extends StatefulWidget { + const WidgetShowcasePopup({super.key}); + + @override + State createState() => _WidgetShowcasePopupState(); +} + +class _WidgetShowcasePopupState extends State { + late Core core; + double panelState = 0; + + @override + void initState() { + core = Provider.of(context, listen: false); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Visibility( + visible: panelState != 0, + child: Opacity( + opacity: panelState, + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color.alphaBlend( + kColorMap[MutableColor.primaryRed]!.withOpacity(0), + kColorMap[MutableColor.neutral10]!.withOpacity(0.8), + ), + Color.alphaBlend( + kColorMap[MutableColor.primaryRed]!.withOpacity(0.2), + kColorMap[MutableColor.neutral10]!.withOpacity(0.8), + ), + ], + ), + ), + ), + ), + ), + MutablePopup( + type: PopupType.input, + isExcited: true, + style: MutablePopupStyle( + backdropColor: Colors.transparent, + backdropOpacity: 0, + ), + onClosed: () { + core.utils.tutorial.handleOnLeave(core); + }, + onSlide: (state) { + setState(() { + panelState = state; + }); + }, + height: 390, + controller: core.state.incident.widgetShowcasePopupController, + body: Padding( + padding: EdgeInsets.fromLTRB( + kSideScreenMargin, + 27, + kSideScreenMargin, + 0, + ), + child: Column( + children: [ + MutableShimmer( + animateToColor: + kColorMap[MutableColor.primaryRed]!.withOpacity(0.3), + speed: Speed.slow, + child: Image.asset( + "assets/images/widget_showcase.png", + height: 134, + ), + ), + SizedBox(height: 12), + MutableText( + core.utils.language.langMap[core.state.preferences.language]![ + "incident_log"]["widget_showcase"]["header"], + size: 20, + weight: TypeWeight.heavy, + ), + SizedBox(height: 5), + MutableText( + core.utils.language.langMap[core.state.preferences.language]![ + "incident_log"]["widget_showcase"]["desc"], + size: 14, + align: TextAlign.center, + color: MutableColor.neutral2, + ), + SizedBox(height: 30), + MutableDivider(color: MutableColor.excitedBorder), + MutableInputPopupAction( + text: core.utils.language.langMap[core.state.preferences + .language]!["incident_log"]["widget_showcase"]["confirm"], + active: true, + onTap: () { + HapticFeedback.lightImpact(); + core.state.incident.widgetShowcasePopupController.close(); + }, + ), + MutableDivider(color: MutableColor.excitedBorder), + MutableInputPopupAction( + text: core.utils.language.langMap[ + core.state.preferences.language]!["incident_log"] + ["widget_showcase"]["learn_more"], + secondaryColor: MutableColor.excitedGrey, + onTap: () { + HapticFeedback.lightImpact(); + launchUrl(kWidgetInfo); + }, + ), + ], + ), + ), + ), + ], + ); + } +} diff --git a/lib/screens/incident_log/local_widgets/incident_log_body.widget.dart b/lib/screens/incident_log/local_widgets/incident_log_body.widget.dart index e349e00f..83e0c6dd 100644 --- a/lib/screens/incident_log/local_widgets/incident_log_body.widget.dart +++ b/lib/screens/incident_log/local_widgets/incident_log_body.widget.dart @@ -81,9 +81,11 @@ class _IncidentLogBodyState extends State { sortedIncidents.length, (i) => Padding( padding: EdgeInsets.only( - bottom: i + 1 == sortedIncidents.length - ? 0 - : kIncidentLogCardSpacing, + bottom: !(i + 1 == sortedIncidents.length) + ? kIncidentLogCardSpacing + : sortedIncidents.length > 1 + ? 50 + : 0, ), child: MutableIncidentCard(sortedIncidents[i]), ) // Add spacing between incidents, diff --git a/lib/screens/play/local_widgets/player_progress_indicator.widget.dart b/lib/screens/play/local_widgets/player_progress_indicator.widget.dart index 881c135c..f2b93eb3 100644 --- a/lib/screens/play/local_widgets/player_progress_indicator.widget.dart +++ b/lib/screens/play/local_widgets/player_progress_indicator.widget.dart @@ -157,7 +157,7 @@ class _PlayerProgressIndicatorState extends State { ), SizedBox(width: 3), SizedBox( - width: 85, + width: 95, child: MutableText( core.state.incident.playDate, size: 12, diff --git a/lib/screens/settings/local_widgets/danger_zone_block.widget.dart b/lib/screens/settings/local_widgets/danger_zone_block.widget.dart index b21db112..4bb33053 100644 --- a/lib/screens/settings/local_widgets/danger_zone_block.widget.dart +++ b/lib/screens/settings/local_widgets/danger_zone_block.widget.dart @@ -1,8 +1,9 @@ import 'package:flutter/cupertino.dart'; import 'package:provider/provider.dart'; import 'package:safe/core.dart'; -import 'package:safe/screens/settings/local_widgets/delete_account_alert_dialog.widget.dart'; +import 'package:safe/services/server/erase.service.dart'; import 'package:safe/utils/constants/constants.util.dart'; +import 'package:safe/widgets/mutable_banner/mutable_banner.widget.dart'; import 'package:safe/widgets/mutable_settings_block/local_widgets/settings_block_item.widget.dart'; import 'package:safe/widgets/mutable_settings_block/mutable_settings_block.widget.dart'; @@ -96,10 +97,99 @@ class _DangerZoneBlockState extends State { .langMap[core.state.preferences.language]!["settings"] ["danger"]["delete_acc"]["header"], onTap: () { - showCupertinoDialog( + showCupertinoModalPopup( context: context, - barrierDismissible: true, - builder: (_) => DeleteAccountAlertDialog(), + builder: (_) => CupertinoActionSheet( + title: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + core.utils.language.langMap[ + core.state.preferences.language]!["settings"] + ["danger"]["delete_acc"]["modal"]["header"], + style: TextStyle( + fontWeight: FontWeight.w600, + ), + ), + SizedBox(height: 6), + Text( + core.utils.language.langMap[ + core.state.preferences.language]!["settings"] + ["danger"]["delete_acc"]["modal"]["desc"], + ), + SizedBox(height: 10), + ], // + ), + actions: [ + CupertinoActionSheetAction( + isDestructiveAction: true, + onPressed: () async { + bool shouldAuth = + await core.services.localAuth.isAvailable(); + + if (shouldAuth) { + bool authed = + await core.services.localAuth.authenticate( + "Authenticate to delete account", + ); + + if (!authed) { + core.state.preferences.actionController.trigger( + "Failed to authenticate", + MessageType.error, + ); + return; + } + } + + // ignore: use_build_context_synchronously + Navigator.pop(context); + core.state.preferences.setOverlayText( + core.utils.language.langMap[ + core.state.preferences.language]!["settings"] + ["danger"]["delete_acc"]["loader"], + ); + + await core.state.preferences.overlayController.show(); + + // Delete account + + bool erased = await EraseServer.eraseUserContents(core); + + await core.state.incidentLog.controller.close(); + core.state.preferences.overlayController.hide(); + + if (!erased) { + core.state.preferences.actionController.open( + core.utils.language.langMap[ + core.state.preferences.language]!["settings"] + ["danger"]["delete_acc"]["failed"], + MessageType.error, + ); + return; + } + + core.services.auth.signOut(); + }, + child: Text( + core.utils.language.langMap[ + core.state.preferences.language]!["settings"] + ["danger"]["delete_acc"]["modal"]["button"], + ), + ) + ], + cancelButton: CupertinoActionSheetAction( + isDefaultAction: true, + onPressed: () { + Navigator.pop(context); + }, + child: Text( + core.utils.language.langMap[ + core.state.preferences.language]!["settings"] + ["danger"]["delete_acc"]["modal"]["cancel"], + ), + ), + ), ); }, textColor: MutableColor.secondaryRed, diff --git a/lib/screens/settings/local_widgets/support_block.widget.dart b/lib/screens/settings/local_widgets/support_block.widget.dart index ebc49552..ad7a8363 100644 --- a/lib/screens/settings/local_widgets/support_block.widget.dart +++ b/lib/screens/settings/local_widgets/support_block.widget.dart @@ -70,6 +70,14 @@ class _SupportBlockState extends State { launchUrl(kHelpCenter); }, ), + SettingsBlockItem( + text: core.utils.language + .langMap[core.state.preferences.language]!["settings"] + ["support"]["deletion_policy"], + onTap: () { + launchUrl(kDeleteIncident); + }, + ), SettingsBlockItem( text: core.utils.language .langMap[core.state.preferences.language]!["settings"] diff --git a/lib/screens/settings/local_widgets/user_preferences_block.widget.dart b/lib/screens/settings/local_widgets/user_preferences_block.widget.dart index 271f1936..67245eef 100644 --- a/lib/screens/settings/local_widgets/user_preferences_block.widget.dart +++ b/lib/screens/settings/local_widgets/user_preferences_block.widget.dart @@ -125,6 +125,15 @@ class _UserPreferencesBlockState extends State { ); }, ), + SettingsBlockItem( + text: core.utils.language + .langMap[core.state.preferences.language]!["settings"] + ["preferences"]["widget"]["header"], + onTap: () { + HapticFeedback.lightImpact(); + core.state.incident.widgetShowcasePopupController.open(); + }, + ), SettingsBlockItem( text: core.utils.language .langMap[core.state.preferences.language]!["settings"] diff --git a/lib/services/auth/auth.service.dart b/lib/services/auth/auth.service.dart index 2d41e792..6dcc214f 100644 --- a/lib/services/auth/auth.service.dart +++ b/lib/services/auth/auth.service.dart @@ -94,6 +94,10 @@ class AuthService { return core.utils.language .langMap[core.state.preferences.language]!["auth"] ["firebase_errors"][error]; + case "not-accepted-legal": + return core.utils.language + .langMap[core.state.preferences.language]!["auth"] + ["firebase_errors"][error]; case "invalid-verification-code": return core.utils.language .langMap[core.state.preferences.language]!["auth"] diff --git a/lib/services/permissions/permissions.service.dart b/lib/services/permissions/permissions.service.dart index 3357105e..9a802d68 100644 --- a/lib/services/permissions/permissions.service.dart +++ b/lib/services/permissions/permissions.service.dart @@ -89,7 +89,7 @@ class PermissionsService { core.state.auth.setBannerTitle(response["header"]); core.state.auth.setBannerMessage(response["desc"]); core.state.auth.setOnBannerTap(() { - // Opens app settings when clicked + // Opens app settings when tapped openAppSettings(); }); core.state.auth.bannerController.show(); diff --git a/lib/services/server/erase.service.dart b/lib/services/server/erase.service.dart new file mode 100644 index 00000000..98a0ee75 --- /dev/null +++ b/lib/services/server/erase.service.dart @@ -0,0 +1,40 @@ +import 'package:safe/core.dart'; +import 'package:safe/models/contact/contact.model.dart'; +import 'package:safe/models/incident/incident.model.dart'; +import 'package:safe/models/user/user.model.dart'; + +class EraseServer { + static Future eraseUserContents(Core core) async { + // Fetch & delete incidents + List incidents = core.state.incidentLog.incidents ?? []; + + for (Incident i in incidents) { + await core.services.server.incidents.delete(i.id); + } + + // Fetch & delete contacts + List contacts = core.state.contact.contacts ?? []; + + for (Contact c in contacts) { + await core.services.server.contacts.delete(c.id); + } + + // Erase user + String? id = core.services.auth.currentUser?.uid; + + if (id == null) return false; + + User? user = await core.services.server.user.readFromIdOnce(id: id); + + if (user == null) return false; + + user = user.copyWith( + name: "", + phone: "", + ); + + await core.services.server.user.upsert(user); + + return true; + } +} diff --git a/lib/state/auth/auth.store.dart b/lib/state/auth/auth.store.dart index 3492f539..e190d101 100644 --- a/lib/state/auth/auth.store.dart +++ b/lib/state/auth/auth.store.dart @@ -32,6 +32,12 @@ abstract class _AuthStore with Store { @action void setBannerState(MessageType t) => bannerState = t; + @observable + bool acceptedLegal = false; + + @action + void setAcceptedLegal(bool v) => acceptedLegal = v; + @observable String bannerTitle = ""; diff --git a/lib/state/auth/auth.store.g.dart b/lib/state/auth/auth.store.g.dart index cdf94909..581cc4ed 100644 --- a/lib/state/auth/auth.store.g.dart +++ b/lib/state/auth/auth.store.g.dart @@ -73,6 +73,22 @@ mixin _$AuthStore on _AuthStore, Store { }); } + late final _$acceptedLegalAtom = + Atom(name: '_AuthStore.acceptedLegal', context: context); + + @override + bool get acceptedLegal { + _$acceptedLegalAtom.reportRead(); + return super.acceptedLegal; + } + + @override + set acceptedLegal(bool value) { + _$acceptedLegalAtom.reportWrite(value, super.acceptedLegal, () { + super.acceptedLegal = value; + }); + } + late final _$bannerTitleAtom = Atom(name: '_AuthStore.bannerTitle', context: context); @@ -483,6 +499,17 @@ mixin _$AuthStore on _AuthStore, Store { } } + @override + void setAcceptedLegal(bool v) { + final _$actionInfo = _$_AuthStoreActionController.startAction( + name: '_AuthStore.setAcceptedLegal'); + try { + return super.setAcceptedLegal(v); + } finally { + _$_AuthStoreActionController.endAction(_$actionInfo); + } + } + @override void setBannerTitle(String t) { final _$actionInfo = _$_AuthStoreActionController.startAction( @@ -677,6 +704,7 @@ authType: ${authType}, actionController: ${actionController}, bannerController: ${bannerController}, bannerState: ${bannerState}, +acceptedLegal: ${acceptedLegal}, bannerTitle: ${bannerTitle}, bannerMessage: ${bannerMessage}, onBannerTap: ${onBannerTap}, diff --git a/lib/state/incident/incident.store.dart b/lib/state/incident/incident.store.dart index dcc1bf97..e9161094 100644 --- a/lib/state/incident/incident.store.dart +++ b/lib/state/incident/incident.store.dart @@ -25,6 +25,9 @@ abstract class _IncidentStore with Store { @action void setContacts(List c) => contacts = c; + @observable + PanelController widgetShowcasePopupController = PanelController(); + @observable PanelController contactPopupController = PanelController(); diff --git a/lib/state/incident/incident.store.g.dart b/lib/state/incident/incident.store.g.dart index 2ff26820..ecbd64a2 100644 --- a/lib/state/incident/incident.store.g.dart +++ b/lib/state/incident/incident.store.g.dart @@ -57,6 +57,23 @@ mixin _$IncidentStore on _IncidentStore, Store { }); } + late final _$widgetShowcasePopupControllerAtom = Atom( + name: '_IncidentStore.widgetShowcasePopupController', context: context); + + @override + PanelController get widgetShowcasePopupController { + _$widgetShowcasePopupControllerAtom.reportRead(); + return super.widgetShowcasePopupController; + } + + @override + set widgetShowcasePopupController(PanelController value) { + _$widgetShowcasePopupControllerAtom + .reportWrite(value, super.widgetShowcasePopupController, () { + super.widgetShowcasePopupController = value; + }); + } + late final _$contactPopupControllerAtom = Atom(name: '_IncidentStore.contactPopupController', context: context); @@ -467,6 +484,7 @@ mixin _$IncidentStore on _IncidentStore, Store { scrollController: ${scrollController}, overlayController: ${overlayController}, contacts: ${contacts}, +widgetShowcasePopupController: ${widgetShowcasePopupController}, contactPopupController: ${contactPopupController}, contactPopupValuesController: ${contactPopupValuesController}, incidentId: ${incidentId}, diff --git a/lib/state/preferences/preferences.store.dart b/lib/state/preferences/preferences.store.dart index 7b47519b..34e3ec06 100644 --- a/lib/state/preferences/preferences.store.dart +++ b/lib/state/preferences/preferences.store.dart @@ -33,6 +33,18 @@ abstract class _PreferencesStore with Store { duration: kConfettiDuration, ); + @observable + bool seenWidgetPreview = false; + + @action + void setSeenWidgetPreview(bool v) => seenWidgetPreview = v; + + @observable + bool tutorialCalled = false; + + @action + void setTutorialCalled(bool v) => tutorialCalled = v; + @observable PanelController tutorialBannerController = PanelController(); diff --git a/lib/state/preferences/preferences.store.g.dart b/lib/state/preferences/preferences.store.g.dart index 5f668aea..2b7683b0 100644 --- a/lib/state/preferences/preferences.store.g.dart +++ b/lib/state/preferences/preferences.store.g.dart @@ -57,6 +57,38 @@ mixin _$PreferencesStore on _PreferencesStore, Store { }); } + late final _$seenWidgetPreviewAtom = + Atom(name: '_PreferencesStore.seenWidgetPreview', context: context); + + @override + bool get seenWidgetPreview { + _$seenWidgetPreviewAtom.reportRead(); + return super.seenWidgetPreview; + } + + @override + set seenWidgetPreview(bool value) { + _$seenWidgetPreviewAtom.reportWrite(value, super.seenWidgetPreview, () { + super.seenWidgetPreview = value; + }); + } + + late final _$tutorialCalledAtom = + Atom(name: '_PreferencesStore.tutorialCalled', context: context); + + @override + bool get tutorialCalled { + _$tutorialCalledAtom.reportRead(); + return super.tutorialCalled; + } + + @override + set tutorialCalled(bool value) { + _$tutorialCalledAtom.reportWrite(value, super.tutorialCalled, () { + super.tutorialCalled = value; + }); + } + late final _$tutorialBannerControllerAtom = Atom( name: '_PreferencesStore.tutorialBannerController', context: context); @@ -260,6 +292,28 @@ mixin _$PreferencesStore on _PreferencesStore, Store { } } + @override + void setSeenWidgetPreview(bool v) { + final _$actionInfo = _$_PreferencesStoreActionController.startAction( + name: '_PreferencesStore.setSeenWidgetPreview'); + try { + return super.setSeenWidgetPreview(v); + } finally { + _$_PreferencesStoreActionController.endAction(_$actionInfo); + } + } + + @override + void setTutorialCalled(bool v) { + final _$actionInfo = _$_PreferencesStoreActionController.startAction( + name: '_PreferencesStore.setTutorialCalled'); + try { + return super.setTutorialCalled(v); + } finally { + _$_PreferencesStoreActionController.endAction(_$actionInfo); + } + } + @override void setDisabledPermissions(List p) { final _$actionInfo = _$_PreferencesStoreActionController.startAction( @@ -321,6 +375,8 @@ mixin _$PreferencesStore on _PreferencesStore, Store { language: ${language}, isFirstTime: ${isFirstTime}, confettiController: ${confettiController}, +seenWidgetPreview: ${seenWidgetPreview}, +tutorialCalled: ${tutorialCalled}, tutorialBannerController: ${tutorialBannerController}, disabledPermissions: ${disabledPermissions}, actionController: ${actionController}, diff --git a/lib/utils/capture/capture.util.dart b/lib/utils/capture/capture.util.dart index 4b8c60c6..1a16f3c0 100644 --- a/lib/utils/capture/capture.util.dart +++ b/lib/utils/capture/capture.util.dart @@ -562,6 +562,8 @@ USER ID: ${_core!.state.capture.incident!.userId} "{NAME_POSESSIVE}": _core!.utils.name.genFirstName(user.name, true), "{BATTERY}": battery.toString(), "{LINK}": "https://live.joinsafe.me/${incident.id}", + "{LINK_END}": + "https://download.joinsafe.me/${incident.stream.channelName}", }; for (String key in replacementMap.keys) { diff --git a/lib/utils/capture/messages.capture.dart b/lib/utils/capture/messages.capture.dart index 05986da6..629fb516 100644 --- a/lib/utils/capture/messages.capture.dart +++ b/lib/utils/capture/messages.capture.dart @@ -83,7 +83,7 @@ The app continues to record {NAME_POSESSIVE} camera and track {NAME_POSESSIVE} e This message was sent by the Safe app. Learn more about Safe at joinsafe dot me. """; - static const String contactMessageTemplateStart = """ + static const String contactLongMessageTemplateStart = """ {FULL_NAME} is actively in an emergency. {NAME} listed you, {FULL_CONTACT_NAME}, as an emergency contact. @@ -97,15 +97,17 @@ The app continues to record {NAME_POSESSIVE} camera and track {NAME_POSESSIVE} e This message was sent by the Safe app. Learn more about Safe at https://joinsafe.me. """; - static const String contactMessageTemplateEnd = """ + static const String contactLongMessageTemplateEnd = """ {NAME} has stopped capturing the incident at {TIME_END}. The emergency began at {TIME} and is listed as a {TYPE}. {LOCATION} +Tap on this link to view the camera recording of the incident: {LINK_END} + This message was sent by the Safe app. Learn more about Safe at https://joinsafe.me. """; - static const String contactMessageBatteryTemplate = """ + static const String contactLongMessageBatteryTemplate = """ {NAME_POSESSIVE} battery is at {BATTERY}%, which is dangerously low. When it runs out, the app will stop capturing the incident. @@ -116,4 +118,24 @@ You will receive a message when {NAME} stops capturing the incident. This message was sent by the Safe app. Learn more about Safe at https://joinsafe.me. """; + +// SHORT + + static const String contactMessageTemplateStart = """ +{FULL_NAME} is actively in an emergency. + +Watch a livestream of the incident here: {LINK} +"""; + + static const String contactMessageBatteryTemplate = """ +{NAME_POSESSIVE} battery is at {BATTERY}%, which is dangerously low. + +When it runs out, the app will stop capturing the incident. +"""; + + static const String contactMessageTemplateEnd = """ +{NAME} has stopped capturing the incident at {TIME_END}. + +View the incident here: {LINK_END} +"""; } diff --git a/lib/utils/constants/constants.util.dart b/lib/utils/constants/constants.util.dart index b801b32d..830f4ed5 100644 --- a/lib/utils/constants/constants.util.dart +++ b/lib/utils/constants/constants.util.dart @@ -123,6 +123,11 @@ enum MutableColor { overlaySecondaryRed, overlaySecondaryYellow, + excitedPrimary, + excitedBackground, + excitedBorder, + excitedGrey, + iosGrey, iosDarkGrey, mapBackground, @@ -145,6 +150,12 @@ const Map kColorMap = { MutableColor.iosGrey: Color(0xff1E1920), MutableColor.iosDarkGrey: Color(0xff252525), + // -> EXCITED STATE COLORS + MutableColor.excitedPrimary: Color(0XFFE53872), + MutableColor.excitedBackground: Color(0xff0C0A0A), + MutableColor.excitedBorder: Color(0xff27141C), + MutableColor.excitedGrey: Color(0xff7A6066), + // -> MAP SPECIFIC MutableColor.mapBackground: Color(0xff1e1e1e), @@ -261,6 +272,9 @@ const double kBorderWidth = 1.5; const double kLargeButtonHeight = 50; const double kLargeButtonBorderRadius = kLargeButtonHeight / 2; +// EXCITED STATE VALUES +const double kExcitedBorderWidth = 2.5; + // BUTTONS const double kScaleDownButtonPercentage = 0.97; const Duration kScaleDownButtonTime = Duration(milliseconds: 125); diff --git a/lib/utils/language/language.util.dart b/lib/utils/language/language.util.dart index 9f635f11..ade5e9ee 100644 --- a/lib/utils/language/language.util.dart +++ b/lib/utils/language/language.util.dart @@ -28,6 +28,10 @@ class LanguageUtil { "header": "This account does not exist", "desc": "Don't have an account? Try creating one instead.", }, + "not-accepted-legal": { + "header": "Hold up! You forgot to accept the terms of service", + "desc": "Check the box below and resubmit the form", + }, "invalid-phone-number": { "header": "Hold up! You're phone number is invalid", "desc": "Check your phone number before continuing", @@ -124,7 +128,7 @@ class LanguageUtil { "desc": "We'll send you a SMS code to verify your\n account", "buttonText": "Send SMS", "terms": - "By creating an account, you agree to Safe's terms of service. Click here to read them.", + "By checking this checkbox, you agree to Safe's terms of service. Tap here to read them.", "smsSentMsg": { "header": "SMS sent to {PHONE}", "body": "Check your SMS messages.", @@ -184,7 +188,7 @@ class LanguageUtil { LimitErrorState.noConnection: "We cannot capture an incident without an internet connection. Try checking your connection.", LimitErrorState.maxed: - "No worries, simply delete a previous incident to gain back the ability to capture one.", + "For more incidents, tap here to request more incidents from the Safe team.", LimitErrorState.missingContacts: "Without contacts, no one will be notified when you activate Safe.", LimitErrorState.permissions: @@ -193,7 +197,7 @@ class LanguageUtil { }, "button": { LimitErrorState.emergency: "Emergency Activate", - LimitErrorState.maxed: "Delete an Incident", + LimitErrorState.maxed: "Request More", LimitErrorState.missingContacts: "Add Contacts", LimitErrorState.permissions: "Go to Settings", LimitErrorState.noConnection: "Go to Settings", @@ -201,6 +205,9 @@ class LanguageUtil { }, } }, + "credit_request": { + "notification": "The team has been notified", + }, "contacts": { "types": { MessageType.start: "Incident Started ✅", @@ -212,6 +219,12 @@ class LanguageUtil { "tutorial": {"button": "Add a Contact"}, "incident_log": { "header": "Incident Log", + "widget_showcase": { + "header": "Add the Safe Widget", + "desc": "Seamlessly activate Safe from\nyour lock-screen", + "confirm": "Got it!", + "learn_more": "How to add →", + }, "counter": "{count} Incidents", "subheader": "All Incidents", "contacts_button": "Contacts", @@ -264,6 +277,9 @@ class LanguageUtil { "notify": "Notify", } }, + "widget": { + "header": "Add Lock Screen Widget", + }, "quality": { "header": "Capped Video Quality", "loading": "Loading quality...", @@ -286,6 +302,7 @@ class LanguageUtil { "collaborators": "Collaborators", "media_kit": "Media Kit", }, + "deletion_policy": "Delete an Incident", "help": "Help", "feedback": "Give feedback" }, @@ -306,15 +323,18 @@ class LanguageUtil { "modal": { "header": "Delete Account", "desc": - "Deleting an account is currently unavailable due to the highly sensitive nature of Safe accounts and the information they store. We're actively working on finding a secure way make this possible.", - "button": "Ok", + "All data tied to this account will be lost. This action is irreversable.", + "button": "Delete", + "cancel": "Cancel", }, + "loader": "Deleting account", + "failed": "Failed to delete account", }, }, "story": { "header": "The Safe Story", "body": - "The Safe App is a social impact venture developed by Mark Music. Tap here to view his story.", + "The Safe App is a social impact venture developed by a teenager in Costa Rica. Tap here to view Mark's story.", }, "reach_out": { "header": "Reach Out", diff --git a/lib/utils/tutorial/tutorial.util.dart b/lib/utils/tutorial/tutorial.util.dart index ed47dcca..e52371d1 100644 --- a/lib/utils/tutorial/tutorial.util.dart +++ b/lib/utils/tutorial/tutorial.util.dart @@ -20,6 +20,14 @@ class TutorialUtil { Future handleOnLeave(Core core) async { if (!core.state.preferences.isFirstTime) return; + if (core.state.preferences.tutorialCalled) return; + + if (!core.state.preferences.seenWidgetPreview) { + core.state.incident.widgetShowcasePopupController.open(); + core.state.preferences.setSeenWidgetPreview(true); + return; + } + await core.state.incidentLog.controller.close(); if (core.state.capture.limErrState != null) { @@ -31,6 +39,8 @@ class TutorialUtil { // Trigger fireworks and success message core.state.preferences.confettiController.play(); core.state.preferences.tutorialBannerController.open(); + + core.state.preferences.setTutorialCalled(true); } void handleCaptureTutorial(Core core) { diff --git a/lib/widgets/mutable_auth_wrapper/mutable_auth_wrapper.widget.dart b/lib/widgets/mutable_auth_wrapper/mutable_auth_wrapper.widget.dart index 756d52c8..97e7e8a2 100644 --- a/lib/widgets/mutable_auth_wrapper/mutable_auth_wrapper.widget.dart +++ b/lib/widgets/mutable_auth_wrapper/mutable_auth_wrapper.widget.dart @@ -77,6 +77,16 @@ class _MutableAuthWrapperState extends State { id: fbUser.uid, ); + if (user == null) { + genUser(null, fbUser); + return; + } + + if (user.name.isEmpty) { + genUser(null, fbUser); + return; + } + genUser(user, fbUser); } catch (e) { genUser(null, fbUser); diff --git a/lib/widgets/mutable_gradient_border/local_widgets/gradient_border_painter.widget.dart b/lib/widgets/mutable_gradient_border/local_widgets/gradient_border_painter.widget.dart index 18970bfd..634374c6 100644 --- a/lib/widgets/mutable_gradient_border/local_widgets/gradient_border_painter.widget.dart +++ b/lib/widgets/mutable_gradient_border/local_widgets/gradient_border_painter.widget.dart @@ -6,11 +6,13 @@ class GradientBorderPainter extends CustomPainter { final Alignment? begin; final Alignment? end; final double borderRadius; + final List? colors; GradientBorderPainter({ required this.width, required this.borderRadius, this.begin, + this.colors, this.end, }); @@ -23,7 +25,7 @@ class GradientBorderPainter extends CustomPainter { Paint paint = Paint() ..shader = LinearGradient( - colors: kPrimaryGradientColors, + colors: colors ?? kPrimaryGradientColors, begin: begin ?? kPrimaryGradientAlignmentBegin, end: end ?? kPrimaryGradientAlignmentEnd, ).createShader(rect) diff --git a/lib/widgets/mutable_input_panel/mutable_input_panel.widget.dart b/lib/widgets/mutable_input_panel/mutable_input_panel.widget.dart index e2f98cb0..11c3a864 100644 --- a/lib/widgets/mutable_input_panel/mutable_input_panel.widget.dart +++ b/lib/widgets/mutable_input_panel/mutable_input_panel.widget.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:safe/utils/constants/constants.util.dart'; import 'package:safe/utils/icon/icon.util.dart'; -import 'package:safe/widgets/mutable_button/mutable_button.widget.dart'; import 'package:safe/widgets/mutable_handle/mutable_handle.dart'; import 'package:safe/widgets/mutable_icon_sphere/mutable_icon_sphere.widget.dart'; import 'package:safe/widgets/mutable_large_button/mutable_large_button.widget.dart'; @@ -13,9 +12,8 @@ class MutableInputPanel extends StatefulWidget { final void Function()? onTap; final Size? iconSize; final bool isActive; + final Widget? aboveButtonWidget; final String buttonText; - final String? aboveButtonText; - final void Function()? aboveButtonOnTap; final String title; final bool shimmer; final bool accomodateBottomInsets; @@ -27,8 +25,7 @@ class MutableInputPanel extends StatefulWidget { this.accomodateBottomInsets = false, required this.body, this.onTap, - this.aboveButtonText, - this.aboveButtonOnTap, + this.aboveButtonWidget, required this.icon, this.shimmer = false, this.iconSize, @@ -133,21 +130,9 @@ class _MutableInputPanelState extends State { }, ) : Spacer(), - widget.aboveButtonText == null + widget.aboveButtonWidget == null ? SizedBox() - : MutableButton( - scale: 0.9, - onTap: widget.aboveButtonOnTap, - child: Padding( - padding: EdgeInsets.fromLTRB(18, 0, 18, 18), - child: MutableText( - widget.aboveButtonText!, - size: 12, - color: MutableColor.neutral3, - align: TextAlign.center, - ), - ), - ), + : widget.aboveButtonWidget!, MutableLargeButton( onTap: widget.onTap, text: widget.buttonText, diff --git a/lib/widgets/mutable_input_popup_action/mutable_input_popup_action.widget.dart b/lib/widgets/mutable_input_popup_action/mutable_input_popup_action.widget.dart index 10da401c..fc015450 100644 --- a/lib/widgets/mutable_input_popup_action/mutable_input_popup_action.widget.dart +++ b/lib/widgets/mutable_input_popup_action/mutable_input_popup_action.widget.dart @@ -9,10 +9,12 @@ class MutableInputPopupAction extends StatelessWidget { final void Function()? onTap; final String text; final MutableIcon? icon; + final MutableColor secondaryColor; MutableInputPopupAction({ required this.text, this.onTap, + this.secondaryColor = MutableColor.neutral3, this.icon, this.active = false, }); @@ -34,8 +36,8 @@ class MutableInputPopupAction extends StatelessWidget { kPrimaryGradientColors.length - 1, ) : [ - kColorMap[MutableColor.neutral3]!, - kColorMap[MutableColor.neutral3]!, + kColorMap[secondaryColor]!, + kColorMap[secondaryColor]!, ], ).createShader(rect), child: Row( diff --git a/lib/widgets/mutable_popup/local_widgets/non_pannel_body.widget.dart b/lib/widgets/mutable_popup/local_widgets/non_pannel_body.widget.dart index c3d86d76..6963d212 100644 --- a/lib/widgets/mutable_popup/local_widgets/non_pannel_body.widget.dart +++ b/lib/widgets/mutable_popup/local_widgets/non_pannel_body.widget.dart @@ -1,30 +1,80 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:safe/core.dart'; +import 'package:safe/utils/constants/constants.util.dart'; +import 'package:safe/widgets/mutable_gradient_border/local_widgets/gradient_border_painter.widget.dart'; import 'package:safe/widgets/mutable_popup/local_widgets/mutable_popup_style.widget.dart'; -class NonPannelBody extends StatelessWidget { +class NonPannelBody extends StatefulWidget { final Size size; final MutablePopupStyle style; final Widget? body; + final bool isExcited; NonPannelBody({ required this.size, required this.style, + required this.isExcited, this.body, }); + @override + State createState() => _NonPannelBodyState(); +} + +class _NonPannelBodyState extends State { + late Core core; + + @override + void initState() { + core = Provider.of(context, listen: false); + + super.initState(); + } + @override Widget build(BuildContext context) { return Align( alignment: Alignment.topCenter, child: Container( - height: size.height, - width: size.width, + height: widget.size.height, + width: widget.size.width, decoration: BoxDecoration( - color: style.backgroundColor, - border: style.border, - borderRadius: style.borderRadius, + color: widget.style.backgroundColor, + gradient: !widget.isExcited + ? null + : LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color.alphaBlend( + kColorMap[MutableColor.excitedPrimary]!.withOpacity(0.1), + kColorMap[MutableColor.excitedBackground]!, + ), + Color.alphaBlend( + kColorMap[MutableColor.excitedPrimary]!.withOpacity(0.03), + kColorMap[MutableColor.excitedBackground]!, + ), + ], + ), + border: !widget.isExcited ? widget.style.border : null, + borderRadius: widget.style.borderRadius, ), - child: body, + child: !widget.isExcited + ? widget.body + : CustomPaint( + painter: GradientBorderPainter( + width: kExcitedBorderWidth, + borderRadius: widget.style.borderRadius!.topRight.y, + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + kColorMap[MutableColor.excitedPrimary]!, + kColorMap[MutableColor.excitedPrimary]!.withOpacity(0.2), + kColorMap[MutableColor.excitedPrimary]!.withOpacity(0.1), + ]), + child: widget.body, + ), ), ); } diff --git a/lib/widgets/mutable_popup/mutable_popup.widget.dart b/lib/widgets/mutable_popup/mutable_popup.widget.dart index 346b8b8c..95582f84 100644 --- a/lib/widgets/mutable_popup/mutable_popup.widget.dart +++ b/lib/widgets/mutable_popup/mutable_popup.widget.dart @@ -26,6 +26,7 @@ class MutablePopup extends StatefulWidget { final bool enableBorder; final double bottomInsets; final double maxHeight; + final bool isExcited; final MutablePopupStyle? style; final Widget? body; @@ -37,6 +38,7 @@ class MutablePopup extends StatefulWidget { MutablePopup({ this.type = PopupType.pannel, this.enableBorder = true, + this.isExcited = false, this.onOpened, this.bottomInsets = 0, this.scrollBuilder, @@ -148,6 +150,7 @@ class _MutablePopupState extends State { ? widget.body : NonPannelBody( size: size, + isExcited: widget.isExcited, style: style, body: widget.body, ), diff --git a/shaders.json b/shaders.json index 0957fd2c..1cd49906 100644 --- a/shaders.json +++ b/shaders.json @@ -1 +1 @@ -{"platform":"ios","name":"Mark’s iPhone","engineRevision":"b24591ed328a2d4ce6505819e2f5898a78132f7f","data":{"GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAHADEHC6BAAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAMAMY4LYEAAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAQBTTRPAQAAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAAAZ5YHQIIAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBCTZQ7BQUAAAAAAAIAAAADEZAZRYXQIAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABQAAGQAAAAKFIDMVQUAAAAABIAAAAAQAAAABEERFAUBWKYKAAAIAAQAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAMoPAABjb25zdCBpbnQga0ZpbGxCV19TMl9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMl9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMl9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKGxlbmd0aChfdG1wXzNfY29vcmRzKSksIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFJhZGlhbExheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAJwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MrAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzJfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABwAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HTQAAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAQAHAAAAAQAAAAAAAQQGAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRFZGdlCgl2UXVhZEVkZ2VfUzAgPSBpblF1YWRFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAiwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0Owp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkRWRnZQoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodlF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodlF1YWRFZGdlX1MwLnh5KSk7CglpZiAodlF1YWRFZGdlX1MwLnogPiAwLjAgJiYgdlF1YWRFZGdlX1MwLncgPiAwLjApIAoJewoJCWVkZ2VBbHBoYSA9IGhhbGYobWluKG1pbih2UXVhZEVkZ2VfUzAueiwgdlF1YWRFZGdlX1MwLncpICsgMC41LCAxLjApKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjIgZ0YgPSBoYWxmMihoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeC54IC0gZHV2ZHgueSksICAgICAgICAgICAgICAgICBoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeS54IC0gZHV2ZHkueSkpOwoJCWVkZ2VBbHBoYSA9IGhhbGYodlF1YWRFZGdlX1MwLngqdlF1YWRFZGdlX1MwLnggLSB2UXVhZEVkZ2VfUzAueSk7CgkJZWRnZUFscGhhID0gc2F0dXJhdGUoMC41IC0gZWRnZUFscGhhIC8gbGVuZ3RoKGdGKSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQHAAAAAAAAAEAAAABJOQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NPAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzhdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAClBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbOF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jkcyk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8ODsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAAAAEAAAABJYQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTNdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADIAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1MDAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTgwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAL0GAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgQ2lyY2xlQmx1cl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYyIHZlYyA9IGhhbGYyKChza19GcmFnQ29vcmQueHkgLSBmbG9hdDIodWNpcmNsZURhdGFfUzFfYzAueHkpKSAqIGZsb2F0KHVjaXJjbGVEYXRhX1MxX2MwLncpKTsKCWhhbGYgZGlzdCA9IGxlbmd0aCh2ZWMpICsgKDAuNSAtIHVjaXJjbGVEYXRhX1MxX2MwLnopICogdWNpcmNsZURhdGFfUzFfYzAudzsKCXJldHVybiBoYWxmNChNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIGZsb2F0MihoYWxmMihkaXN0LCAwLjUpKSkud3d3dyk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShDaXJjbGVCbHVyX1MxX2MwKF9zcmMpLCBfc3JjKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OrBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAdQ0AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAACQAAAAAABQIQCAAAAUAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAGAAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACyAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogQ292ZXJhZ2UgU2V0IE9wCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAA5AAAAAAABAAAAACAZAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADLAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQKAAAAAAABAEAAAABJUQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMV07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzExXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDExOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCEIBAACAAAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAOQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpLjAwMHI7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCQlza19GcmFnQ29sb3IgPSBza19GcmFnQ29sb3IuYTAwMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAGIAAAAACAAAAADZEAIAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1MAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMV9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAFgUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzFfYzAuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdCBkeDEgPSBza19GcmFnQ29vcmQueCAtIHVpbm5lclJlY3RfUzFfYzAuUjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeHkwLngsIGR4MSksIGR4eTAueSksIDAuMCk7CgloYWxmIGJvdHRvbUFscGhhID0gaGFsZihzYXR1cmF0ZSh1aW5uZXJSZWN0X1MxX2MwLkIgLSBza19GcmFnQ29vcmQueSkpOwoJaGFsZiBhbHBoYSA9IGJvdHRvbUFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzFfYzAueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBDaXJjdWxhclJSZWN0X1MxX2MwKF9pbnB1dCkgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAGIAHSACAAAAQAAAAAA5AAAAAAABAAAAACAZAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1PfAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IGZpbGxCb3VuZHM7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgbG9jYXRpb25zOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIERyYXdBdGxhc1BhdGhTaGFkZXIKCWZsb2F0MiB1bml0Q29vcmQgPSBmbG9hdDIoc2tfVmVydGV4SUQgJiAxLCBza19WZXJ0ZXhJRCA+PiAxKTsKCWZsb2F0MiBkZXZDb29yZCA9IG1peChmaWxsQm91bmRzLnh5LCBmaWxsQm91bmRzLnp3LCB1bml0Q29vcmQpOwoJZmxvYXQyIGF0bGFzVG9wTGVmdCA9IGZsb2F0MihhYnMobG9jYXRpb25zLngpIC0gMSwgbG9jYXRpb25zLnkpOwoJZmxvYXQyIGRldlRvcExlZnQgPSBsb2NhdGlvbnMuenc7Cglib29sIHRyYW5zcG9zZWQgPSBsb2NhdGlvbnMueCA8IDA7CglmbG9hdDIgYXRsYXNDb29yZCA9IGRldkNvb3JkIC0gZGV2VG9wTGVmdDsKCWlmICh0cmFuc3Bvc2VkKSAKCXsKCQlhdGxhc0Nvb3JkID0gYXRsYXNDb29yZC55eDsKCX0KCWF0bGFzQ29vcmQgKz0gYXRsYXNUb3BMZWZ0OwoJdmF0bGFzQ29vcmRfUzAgPSBhdGxhc0Nvb3JkICogdWF0bGFzX2FkanVzdF9TMDsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBkZXZDb29yZC54eTAxOwp9CgAAAAAAIgQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRHJhd0F0bGFzUGF0aFNoYWRlcgoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGYgYXRsYXNDb3ZlcmFnZSA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdmF0bGFzQ29vcmRfUzApLjAwMHIuYTsKCW91dHB1dENvdmVyYWdlX1MwICo9IGF0bGFzQ292ZXJhZ2U7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABSAAGQAAAAKFIDMVQUAAAAABIAAAAGIAMAAAEAAAAAJBEJIFANSWCQAACAAEAAAAAAAAAAABYSA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAJ4HAABjb25zdCBpbnQga0ZpbGxCV19TMV9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMV9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMV9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZsb2NhbENvb3JkX1MwOwpoYWxmNCBSZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MxX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMV9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzFfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzFfYzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxX2MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxX2MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzFfYzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBDaXJjdWxhclJSZWN0X1MxX2MxKF9zcmMpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIG91dHB1dENvbG9yX1MwKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAABAEAAAABJSQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMF07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEwOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQHAAAAAAAAAEAAAABJOQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NPAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzhdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAClBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbOF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jkcyk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8ODsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAAAAEAAAABJKQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNl07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw2OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAHADEHC6BAAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAMAMY4LYEAAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAQBTTRPAQAAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAAAZ5YHQIIAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBCTZQ7BQUAAAAAAAIAAAADEZAZRYXQIAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABAAOAAAABAAAAAAABBAMRQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1NnBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAACoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBSYWRpYWxMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYobGVuZ3RoKF90bXBfM19jb29yZHMpKSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAA+wUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAAAAEAAAABJSQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTBdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEwOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1OtAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAABgFAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IENpcmNsZUJsdXJfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmMiB2ZWMgPSBoYWxmMigoc2tfRnJhZ0Nvb3JkLnh5IC0gZmxvYXQyKHVjaXJjbGVEYXRhX1MxX2MwLnh5KSkgKiBmbG9hdCh1Y2lyY2xlRGF0YV9TMV9jMC53KSk7CgloYWxmIGRpc3QgPSBsZW5ndGgodmVjKSArICgwLjUgLSB1Y2lyY2xlRGF0YV9TMV9jMC56KSAqIHVjaXJjbGVEYXRhX1MxX2MwLnc7CglyZXR1cm4gaGFsZjQoTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIoZGlzdCwgMC41KSkpLnd3d3cpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoQ2lyY2xlQmx1cl9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAAGATHIBICYCAAAEBP2LBIPAAAAAIAAAAAEARRALJ3F5SMAAAABQAAAABABTUEURMBAAACAH5FYUHQAAAAAAAEAAAAAZ4RGGRCQFAEAAAAAAAAAGARP2LVJPAAAAAAAAEAAAABSKRXZFAUHQAAAAAAAAAACAA4AAAACAAAAAAACCAYAEMAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1PpAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAAA/BwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwLCB1ZW5kX1MxX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENsYW1wZWRHcmFkaWVudF9TMV9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAHUAAAAABABLFMNCQCAAAKAAAAAEAAAAABAEMIRA5SWCRAAAAAFAAAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1OLAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAsQ4AAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAAAAEAAAABJKQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNl07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw2OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1PrAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAZAsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0IGNvdmVyYWdlID0gdmNvdmVyYWdlX1MwOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGNvdmVyYWdlKSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAABAAAAAAAAAAQAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAJAAAADAAAAAEAAAAdAAAAEAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABAAOAAAABAAAAAAABBAMAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1PMAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAABvAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogb3V0cHV0Q29sb3JfUzApKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAHUAAAAABABLFMNCQCAAAKAAAAACADYAABAAAAAAIBDCEIHMVQUIAAAABIAAAAAAAAAAAOAQHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1PpAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDQgdWlubmVyUmVjdF9TMl9jMTsKCWxheW91dChvZmZzZXQ9MTkyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzJfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAAQxAAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0NCB1aW5uZXJSZWN0X1MyX2MxOwoJbGF5b3V0KG9mZnNldD0xOTIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMl9jMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgUmVjdF9TMl9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzdfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDIpID09IGtGaWxsQldfUzJfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMl9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzJfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MyX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyX2MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMl9jMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMl9jMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyX2MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgQ2lyY3VsYXJSUmVjdF9TMl9jMShfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAAAAEAAAABJWQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTJdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEyOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","AZAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1N4AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bG9jYWxNYXRyaXhfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGZsb2F0M3gyKHVsb2NhbE1hdHJpeF9TMCkgKiBpblBvc2l0aW9uLnh5MTsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAnQIAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAJwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAAGATHIBICYCAAAEBP2LBIPAAAAAIAAAAAEARRALJ3F5SMAAAABQAAAABABTUEURMBAAACAH5FYUHQAAAAAAAEAAAAAZ4RGGRCQFAEAAAAAAAAAGARP2LVJPAAAAAAAAEAAAABSKRXZFAUHQAAAAAAAAAACAA4AAAACAAAAAAACCAYAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1PpAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAAA/BwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwLCB1ZW5kX1MxX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENsYW1wZWRHcmFkaWVudF9TMV9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAA","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1PzAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAACxDQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQ2lyY3VsYXJSUmVjdF9TMihvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AZAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1N4AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bG9jYWxNYXRyaXhfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGZsb2F0M3gyKHVsb2NhbE1hdHJpeF9TMCkgKiBpblBvc2l0aW9uLnh5MTsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAnQIAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAIMDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0IGR4MSA9IHNrX0ZyYWdDb29yZC54IC0gdWlubmVyUmVjdF9TMS5SOwoJZmxvYXQyIGR4eSA9IG1heChmbG9hdDIobWF4KGR4eTAueCwgZHgxKSwgZHh5MC55KSwgMC4wKTsKCWhhbGYgYm90dG9tQWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVpbm5lclJlY3RfUzEuQiAtIHNrX0ZyYWdDb29yZC55KSk7CgloYWxmIGFscGhhID0gYm90dG9tQWxwaGEgKiBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AY7SRAADQAAAOAEARAFQJAABBADAAAILBYAACCYUAAAQWGUAAEECAAAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGhhbGYzIGluQ2xpcFBsYW5lOwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBoYWxmMyBpbklzZWN0UGxhbmU7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGhhbGYzIGluVW5pb25QbGFuZTsKbGF5b3V0KGxvY2F0aW9uID0gNikgaW4gZmxvYXQ0IGluUm91bmRDYXBDZW50ZXJzOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmMyB2aW5DbGlwUGxhbmVfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBoYWxmMyB2aW5Jc2VjdFBsYW5lX1MwOwpsYXlvdXQobG9jYXRpb24gPSAzKSBvdXQgaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgb3V0IGZsb2F0NCB2aW5Sb3VuZENhcENlbnRlcnNfUzA7CmxheW91dChsb2NhdGlvbiA9IDUpIGZsYXQgb3V0IGZsb2F0IHZjYXBSYWRpdXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDYpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5DbGlwUGxhbmVfUzAgPSBpbkNsaXBQbGFuZTsKCXZpbklzZWN0UGxhbmVfUzAgPSBpbklzZWN0UGxhbmU7Cgl2aW5VbmlvblBsYW5lX1MwID0gaW5VbmlvblBsYW5lOwoJdmluUm91bmRDYXBDZW50ZXJzX1MwID0gaW5Sb3VuZENhcENlbnRlcnM7Cgl2Y2FwUmFkaXVzX1MwID0gKDEuMCAtIGluQ2lyY2xlRWRnZS53KSAvIDIuMDsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAABeBwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYzIHZpbkNsaXBQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgdmluSXNlY3RQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gNSkgZmxhdCBpbiBmbG9hdCB2Y2FwUmFkaXVzX1MwOwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjMgY2xpcFBsYW5lOwoJY2xpcFBsYW5lID0gdmluQ2xpcFBsYW5lX1MwOwoJaGFsZjMgaXNlY3RQbGFuZTsKCWlzZWN0UGxhbmUgPSB2aW5Jc2VjdFBsYW5lX1MwOwoJaGFsZjMgdW5pb25QbGFuZTsKCXVuaW9uUGxhbmUgPSB2aW5VbmlvblBsYW5lX1MwOwoJZmxvYXQ0IHJvdW5kQ2FwQ2VudGVyczsKCXJvdW5kQ2FwQ2VudGVycyA9IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGYgY2xpcCA9IGhhbGYoc2F0dXJhdGUoY2lyY2xlRWRnZS56ICogZG90KGNpcmNsZUVkZ2UueHksIGNsaXBQbGFuZS54eSkgKyBjbGlwUGxhbmUueikpOwoJY2xpcCAqPSBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCBpc2VjdFBsYW5lLnh5KSArIGlzZWN0UGxhbmUueikpOwoJY2xpcCA9IHNhdHVyYXRlKGNsaXAgKyBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCB1bmlvblBsYW5lLnh5KSArIHVuaW9uUGxhbmUueikpKTsKCWVkZ2VBbHBoYSAqPSBjbGlwOwoJaGFsZiBkY2FwMSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKHZjYXBSYWRpdXNfUzAgLSBsZW5ndGgoY2lyY2xlRWRnZS54eSAtIHJvdW5kQ2FwQ2VudGVycy54eSkpKTsKCWhhbGYgZGNhcDIgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICh2Y2FwUmFkaXVzX1MwIC0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkgLSByb3VuZENhcENlbnRlcnMuencpKSk7CgloYWxmIGNhcEFscGhhID0gKDEgLSBjbGlwKSAqIChtYXgoZGNhcDEsIDApICsgbWF4KGRjYXAyLCAwKSk7CgllZGdlQWxwaGEgPSBtaW4oZWRnZUFscGhhICsgY2FwQWxwaGEsIDEuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAABAAAAAAAAAAcAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAeAAAAHAAAAAEAAAAeAAAAKAAAAAEAAAAeAAAANAAAAAEAAAAfAAAAQAAAAAEAAABQAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAAHJXMYEEAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZ5G5DCQYAAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAADAsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgQXBwbHlQYWludEFscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNChfaW5wdXQueHl6LCAxLjApKSAqIF9pbnB1dC53KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IEFwcGx5UGFpbnRBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1MqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAF0MAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAAHAAAAAgAAAABAAAACQAAAAwAAAABAAAAHQAAABAAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAAYQADAAAEAFEURUKQKAAAIAAQAAAAAIAAAABSCICWKY2FAEAAAUAAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OuAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAA6BgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBSZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MxX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMV9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzFfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","B2ABSAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MCAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IGNvbG9yID0gdUNvbG9yX1MwOwoJY29sb3IgPSBjb2xvciAqIGluQ292ZXJhZ2U7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8zX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAJsBAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGIBIAAABAAAAANAEAAAAAAAAAAAAAABAAOAAAABAAAAAAABBAMAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAQAAAAAAAA":"CgAAAExTS1MoAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAB0DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAPsMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAEIQCAAEAAAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAaBwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCkuMDAwcjsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTM7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HTQAAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAQAHAAAAAQAAAAAAAQQGAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRFZGdlCgl2UXVhZEVkZ2VfUzAgPSBpblF1YWRFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAiwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0Owp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkRWRnZQoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodlF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodlF1YWRFZGdlX1MwLnh5KSk7CglpZiAodlF1YWRFZGdlX1MwLnogPiAwLjAgJiYgdlF1YWRFZGdlX1MwLncgPiAwLjApIAoJewoJCWVkZ2VBbHBoYSA9IGhhbGYobWluKG1pbih2UXVhZEVkZ2VfUzAueiwgdlF1YWRFZGdlX1MwLncpICsgMC41LCAxLjApKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjIgZ0YgPSBoYWxmMihoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeC54IC0gZHV2ZHgueSksICAgICAgICAgICAgICAgICBoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeS54IC0gZHV2ZHkueSkpOwoJCWVkZ2VBbHBoYSA9IGhhbGYodlF1YWRFZGdlX1MwLngqdlF1YWRFZGdlX1MwLnggLSB2UXVhZEVkZ2VfUzAueSk7CgkJZWRnZUFscGhhID0gc2F0dXJhdGUoMC41IC0gZWRnZUFscGhhIC8gbGVuZ3RoKGdGKSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAAHAJRUYWBAAAAA2DXZFAQHAAAAAAAAEAAAAABAEMFPYMZ2AAAAAAAQFV566JAAAAAAYAAAADQEY2EKAUAQAAFA34SQKDYAAAACAAAAABAEMIC263PESAAAAAMAAAAAYCM5AFALAIAAAQF7JMFB4AAAACAAAAAAQAGHEJRUYWBAAAAAAAAAAAFQEL6S4KLYAAAAAAABAAAAAMWU56JIEBYAAAAAAAAAACYIEAAAAEAAAABUARCAIAAAAAAAAAAAUABQAAAAEAAAAAAAEEBQAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1NVBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAAALQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OrBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAdQ0AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OrBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAdQ0AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAAUKQGZLBIAAAAACQAAAA4QAQAAAIAAAABSCICSKI2FIFAAAEAAIAAAAAAAAAAADZEBYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1PdAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAALEGAABjb25zdCBpbnQga0ZpbGxCV19TMV9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMV9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMV9jMCA9IDM7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxX2MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxX2MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMV9jMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzFfYzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzFfYzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMV9jMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKFJlY3RfUzFfYzAoX3NyYyksIENpcmN1bGFyUlJlY3RfUzFfYzEoX3NyYykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQDAAAAAAAAAEAAAABJGQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzRdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw0OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADIAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1MDAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTgwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAL0GAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgQ2lyY2xlQmx1cl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYyIHZlYyA9IGhhbGYyKChza19GcmFnQ29vcmQueHkgLSBmbG9hdDIodWNpcmNsZURhdGFfUzFfYzAueHkpKSAqIGZsb2F0KHVjaXJjbGVEYXRhX1MxX2MwLncpKTsKCWhhbGYgZGlzdCA9IGxlbmd0aCh2ZWMpICsgKDAuNSAtIHVjaXJjbGVEYXRhX1MxX2MwLnopICogdWNpcmNsZURhdGFfUzFfYzAudzsKCXJldHVybiBoYWxmNChNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIGZsb2F0MihoYWxmMihkaXN0LCAwLjUpKSkud3d3dyk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShDaXJjbGVCbHVyX1MxX2MwKF9zcmMpLCBfc3JjKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGQBIAAABAAAAANAEAAAAAAAAAAAAAADQAB4QAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADCBAAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dF9TMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzI7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCGAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAQAQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAAAAAAAAIAAAABSEIAL7YYDQAAAAAAACAAAAABQEKAAAAIAAAADIBAQGIAAAAAAAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAACAA4AAAACAAAAAAACCAYAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1ODAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTEyKSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAbQYAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTEpIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8xX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xMTIpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMV9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMV9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfMV9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF8xX2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAAAQAAAAGQCEIBAAAAAAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PAAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAABAwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJCXNrX0ZyYWdDb2xvciA9IHNrX0ZyYWdDb2xvci5hMDAwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAIBAEAAAABJWQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMl07CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMjsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCBAMQAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAAAAEAAAABJIQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNV07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw1OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCEIBAAAAIAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAOQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpLjAwMHI7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCQlza19GcmFnQ29sb3IgPSBza19GcmFnQ29sb3IuYTAwMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIBAEAAAABJYQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMzsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQDAAAAAAAAAEAAAABJGQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzRdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw0OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAiAMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdCBkeDEgPSBza19GcmFnQ29vcmQueCAtIHVpbm5lclJlY3RfUzEuUjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeHkwLngsIGR4MSksIGR4eTAueSksIDAuMCk7CgloYWxmIGJvdHRvbUFscGhhID0gaGFsZihzYXR1cmF0ZSh1aW5uZXJSZWN0X1MxLkIgLSBza19GcmFnQ29vcmQueSkpOwoJaGFsZiBhbHBoYSA9IGJvdHRvbUFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1OtAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAABgFAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IENpcmNsZUJsdXJfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmMiB2ZWMgPSBoYWxmMigoc2tfRnJhZ0Nvb3JkLnh5IC0gZmxvYXQyKHVjaXJjbGVEYXRhX1MxX2MwLnh5KSkgKiBmbG9hdCh1Y2lyY2xlRGF0YV9TMV9jMC53KSk7CgloYWxmIGRpc3QgPSBsZW5ndGgodmVjKSArICgwLjUgLSB1Y2lyY2xlRGF0YV9TMV9jMC56KSAqIHVjaXJjbGVEYXRhX1MxX2MwLnc7CglyZXR1cm4gaGFsZjQoTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIoZGlzdCwgMC41KSkpLnd3d3cpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoQ2lyY2xlQmx1cl9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DASAAAAAQAAWAABAYAAQBYH7777Z6QQBAEAAAAAAEAAAAAAAEBSAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OYAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAC2AgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEJpdG1hcFRleHQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApOwoJfQoJb3V0cHV0Q29sb3JfUzAgPSBvdXRwdXRDb2xvcl9TMCAqIHRleENvbG9yOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAA0AAAAIAAAAAQAAAAwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1MQAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBpbkVsbGlwc2VPZmZzZXQ7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCBpbkVsbGlwc2VSYWRpaTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2RWxsaXBzZU9mZnNldHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDQgdkVsbGlwc2VSYWRpaV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCXZFbGxpcHNlT2Zmc2V0c19TMCA9IGluRWxsaXBzZU9mZnNldDsKCXZFbGxpcHNlUmFkaWlfUzAgPSBpbkVsbGlwc2VSYWRpaTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAA4BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdDIgb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5OwoJb2Zmc2V0ICo9IHZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCB0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWZsb2F0MiBncmFkID0gMi4wKm9mZnNldCp2RWxsaXBzZVJhZGlpX1MwLnh5OwoJZmxvYXQgZ3JhZF9kb3QgPSBkb3QoZ3JhZCwgZ3JhZCk7CglncmFkX2RvdCA9IG1heChncmFkX2RvdCwgMS4xNzU1ZS0zOCk7CglmbG9hdCBpbnZsZW4gPSBpbnZlcnNlc3FydChncmFkX2RvdCk7CglmbG9hdCBlZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUtdGVzdCppbnZsZW4pOwoJb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5KnZFbGxpcHNlUmFkaWlfUzAuenc7Cgl0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAuenc7CglncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWVkZ2VBbHBoYSAqPSBzYXR1cmF0ZSgwLjUrdGVzdCppbnZsZW4pOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGVkZ2VBbHBoYSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAAB8AAAAUAAAAAQAAACQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQGAAAAAAIBAEAAAABJMQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs3XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzddOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDc7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","B3IBQAAADAAAIAABBYAAAEIXBAAACDQMAAABIFAAAAAAAAAAAAAABFIBBYSAO7ICAAAAACX4GM5AAAAAAAIAAAAACAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAAAAAAQAAAAAEARQUPBT7IAAAAAACAAAAAAQFU5S6ZGAAAAAYAAAAAYCEOGAEGBAAAAAH5FYUXQAAAAAAACAAAAAMQEAIAAAANDMXXJYBAAAGAAAAAAABDRYBRQIQAAAAPJO5E4AAQAAAAAQAAAAGIBBCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAABAAAAAAIEDIYOAOMCEAAAAAAAAAAAFREL6S4KDYAAAACAAAAAAAAM6U52JYEBQAAAAAAAAAACYIEAIAAAAAAABUARCAIAAAAAAAAAABUABAAAAAEAAAAAIBEABIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGluTG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBjb2xvciA9IGluQ29sb3I7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cgl2aW5Db3ZlcmFnZV9TMCA9IGluQ292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGluTG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAVgwAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYgdmluQ292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAHAAAABQAAAABAAAAGAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAIAD2AAAAAAQAVSWGRIBAAADAAAAACAAAAAAQCGEIQOZLBIQAAAABQAAAAAAAAAAAAFAAMAAAABAAAAAAABBAMAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MNAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gdXNob3J0MiBpblRleHR1cmVDb29yZHM7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRleHR1cmVDb29yZHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGZsYXQgb3V0IGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAAAwBgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQyIHVBdGxhc1NpemVJbnZfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgxKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQml0bWFwVGV4dAoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZjQgdGV4Q29sb3I7Cgl7CgkJdGV4Q29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHZUZXh0dXJlQ29vcmRzX1MwKS5ycnJyOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSB0ZXhDb2xvcjsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAGIAHSACAAAAQAAAAAA5AAAAAAABAAAAACAZAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1NmAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGluRWxsaXBzZU9mZnNldDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQ0IGluRWxsaXBzZVJhZGlpOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0NCB2RWxsaXBzZVJhZGlpX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEVsbGlwc2VHZW9tZXRyeVByb2Nlc3NvcgoJdkVsbGlwc2VPZmZzZXRzX1MwID0gaW5FbGxpcHNlT2Zmc2V0OwoJdkVsbGlwc2VSYWRpaV9TMCA9IGluRWxsaXBzZVJhZGlpOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAA3QUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0MiBvZmZzZXQgPSB2RWxsaXBzZU9mZnNldHNfUzAueHk7CglvZmZzZXQgKj0gdkVsbGlwc2VSYWRpaV9TMC54eTsKCWZsb2F0IHRlc3QgPSBkb3Qob2Zmc2V0LCBvZmZzZXQpIC0gMS4wOwoJZmxvYXQyIGdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCBncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWdyYWRfZG90ID0gbWF4KGdyYWRfZG90LCAxLjE3NTVlLTM4KTsKCWZsb2F0IGludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWZsb2F0IGVkZ2VBbHBoYSA9IHNhdHVyYXRlKDAuNS10ZXN0Kmludmxlbik7CglvZmZzZXQgPSB2RWxsaXBzZU9mZnNldHNfUzAueHkqdkVsbGlwc2VSYWRpaV9TMC56dzsKCXRlc3QgPSBkb3Qob2Zmc2V0LCBvZmZzZXQpIC0gMS4wOwoJZ3JhZCA9IDIuMCpvZmZzZXQqdkVsbGlwc2VSYWRpaV9TMC56dzsKCWdyYWRfZG90ID0gZG90KGdyYWQsIGdyYWQpOwoJaW52bGVuID0gaW52ZXJzZXNxcnQoZ3JhZF9kb3QpOwoJZWRnZUFscGhhICo9IHNhdHVyYXRlKDAuNSt0ZXN0Kmludmxlbik7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoZWRnZUFscGhhKSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAHwAAABQAAAABAAAAJAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABAAOAAAABAAAAAAABBAMAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1PMAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAABvAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogb3V0cHV0Q29sb3JfUzApKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAQAQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAIBAEAAAABJSQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMF07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMDsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAAAOMAHQAABAAAAAAAAAA5AAAAAAABAAAAACAZABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MHAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmIGluQ292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cgl2aW5Db3ZlcmFnZV9TMCA9IGluQ292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABuAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGYgdmluQ292ZXJhZ2VfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHVDb2xvcl9TMDsKCWhhbGYgYWxwaGEgPSAxLjA7CglhbHBoYSA9IHZpbkNvdmVyYWdlX1MwOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChhbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAQAQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQHAAAAAAIBAEAAAABJOQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs4XTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzhdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDg7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAAAAEAAAABJIQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNV07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw1OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAAUKQGZLBIAAAAACQAAAA4QAQAAAIAAAABSCICSKI2FIFAAAEAAIAAAAAAAAAAADZEBYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PYAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAACsBgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMV9jMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMV9jMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgUmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDIpID09IGtGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMV9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzFfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MxX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQUFfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMV9jMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMV9jMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxX2MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMV9jMChfc3JjKSwgQ2lyY3VsYXJSUmVjdF9TMV9jMShfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAEADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGRQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1M8DQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCByYWRpaV9zZWxlY3RvcjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IGNvcm5lcl9hbmRfcmFkaXVzX291dHNldHM7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBhYV9ibG9hdF9hbmRfY292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCByYWRpaV94OwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBmbG9hdDQgcmFkaWlfeTsKbGF5b3V0KGxvY2F0aW9uID0gNSkgaW4gZmxvYXQ0IHNrZXc7CmxheW91dChsb2NhdGlvbiA9IDYpIGluIGZsb2F0MiB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlOwpsYXlvdXQobG9jYXRpb24gPSA3KSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRmlsbFJSZWN0T3A6OlByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7CglmbG9hdCBhYV9ibG9hdF9tdWx0aXBsaWVyID0gMTsKCWZsb2F0MiBjb3JuZXIgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnh5OwoJZmxvYXQyIHJhZGl1c19vdXRzZXQgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnp3OwoJZmxvYXQyIGFhX2Jsb2F0X2RpcmVjdGlvbiA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS54eTsKCWZsb2F0IGlzX2xpbmVhcl9jb3ZlcmFnZSA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS53OwoJZmxvYXQyIHBpeGVsbGVuZ3RoID0gaW52ZXJzZXNxcnQoZmxvYXQyKGRvdChza2V3Lnh6LCBza2V3Lnh6KSwgZG90KHNrZXcueXcsIHNrZXcueXcpKSk7CglmbG9hdDQgbm9ybWFsaXplZF9heGlzX2RpcnMgPSBza2V3ICogcGl4ZWxsZW5ndGgueHl4eTsKCWZsb2F0MiBheGlzd2lkdGhzID0gKGFicyhub3JtYWxpemVkX2F4aXNfZGlycy54eSkgKyBhYnMobm9ybWFsaXplZF9heGlzX2RpcnMuencpKTsKCWZsb2F0MiBhYV9ibG9hdHJhZGl1cyA9IGF4aXN3aWR0aHMgKiBwaXhlbGxlbmd0aCAqIC41OwoJZmxvYXQ0IHJhZGlpX2FuZF9uZWlnaGJvcnMgPSByYWRpaV9zZWxlY3RvciogZmxvYXQ0eDQocmFkaWlfeCwgcmFkaWlfeSwgcmFkaWlfeC55eHd6LCByYWRpaV95Lnd6eXgpOwoJZmxvYXQyIHJhZGlpID0gcmFkaWlfYW5kX25laWdoYm9ycy54eTsKCWZsb2F0MiBuZWlnaGJvcl9yYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMuenc7CglmbG9hdCBjb3ZlcmFnZV9tdWx0aXBsaWVyID0gMTsKCWlmIChhbnkoZ3JlYXRlclRoYW4oYWFfYmxvYXRyYWRpdXMsIGZsb2F0MigxKSkpKSAKCXsKCQljb3JuZXIgPSBtYXgoYWJzKGNvcm5lciksIGFhX2Jsb2F0cmFkaXVzKSAqIHNpZ24oY29ybmVyKTsKCQljb3ZlcmFnZV9tdWx0aXBsaWVyID0gMSAvIChtYXgoYWFfYmxvYXRyYWRpdXMueCwgMSkgKiBtYXgoYWFfYmxvYXRyYWRpdXMueSwgMSkpOwoJCXJhZGlpID0gZmxvYXQyKDApOwoJfQoJZmxvYXQgY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UuejsKCWlmIChhbnkobGVzc1RoYW4ocmFkaWksIGFhX2Jsb2F0cmFkaXVzICogMS41KSkpIAoJewoJCXJhZGlpID0gZmxvYXQyKDApOwoJCWFhX2Jsb2F0X2RpcmVjdGlvbiA9IHNpZ24oY29ybmVyKTsKCQlpZiAoY292ZXJhZ2UgPiAuNSkgCgkJewoJCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSAtYWFfYmxvYXRfZGlyZWN0aW9uOwoJCX0KCQlpc19saW5lYXJfY292ZXJhZ2UgPSAxOwoJfQoJZWxzZSAKCXsKCQlyYWRpaSA9IGNsYW1wKHJhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQluZWlnaGJvcl9yYWRpaSA9IGNsYW1wKG5laWdoYm9yX3JhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQlmbG9hdDIgc3BhY2luZyA9IDIgLSByYWRpaSAtIG5laWdoYm9yX3JhZGlpOwoJCWZsb2F0MiBleHRyYV9wYWQgPSBtYXgocGl4ZWxsZW5ndGggKiAuMDYyNSAtIHNwYWNpbmcsIGZsb2F0MigwKSk7CgkJcmFkaWkgLT0gZXh0cmFfcGFkICogLjU7Cgl9CglmbG9hdDIgYWFfb3V0c2V0ID0gYWFfYmxvYXRfZGlyZWN0aW9uICogYWFfYmxvYXRyYWRpdXMgKiBhYV9ibG9hdF9tdWx0aXBsaWVyOwoJZmxvYXQyIHZlcnRleHBvcyA9IGNvcm5lciArIHJhZGl1c19vdXRzZXQgKiByYWRpaSArIGFhX291dHNldDsKCWlmIChjb3ZlcmFnZSA+IC41KSAKCXsKCQlpZiAoYWFfYmxvYXRfZGlyZWN0aW9uLnggIT0gMCAmJiB2ZXJ0ZXhwb3MueCAqIGNvcm5lci54IDwgMCkgCgkJewoJCQlmbG9hdCBiYWNrc2V0ID0gYWJzKHZlcnRleHBvcy54KTsKCQkJdmVydGV4cG9zLnggPSAwOwoJCQl2ZXJ0ZXhwb3MueSArPSBiYWNrc2V0ICogc2lnbihjb3JuZXIueSkgKiBwaXhlbGxlbmd0aC55L3BpeGVsbGVuZ3RoLng7CgkJCWNvdmVyYWdlID0gKGNvdmVyYWdlIC0gLjUpICogYWJzKGNvcm5lci54KSAvIChhYnMoY29ybmVyLngpICsgYmFja3NldCkgKyAuNTsKCQl9CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi55ICE9IDAgJiYgdmVydGV4cG9zLnkgKiBjb3JuZXIueSA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueSk7CgkJCXZlcnRleHBvcy55ID0gMDsKCQkJdmVydGV4cG9zLnggKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLngpICogcGl4ZWxsZW5ndGgueC9waXhlbGxlbmd0aC55OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueSkgLyAoYWJzKGNvcm5lci55KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJfQoJZmxvYXQyeDIgc2tld21hdHJpeCA9IGZsb2F0MngyKHNrZXcueHksIHNrZXcuencpOwoJZmxvYXQyIGRldmNvb3JkID0gdmVydGV4cG9zICogc2tld21hdHJpeCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUueHk7CglpZiAoMCAhPSBpc19saW5lYXJfY292ZXJhZ2UpIAoJewoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MigwLCBjb3ZlcmFnZSAqIGNvdmVyYWdlX211bHRpcGxpZXIpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgYXJjY29vcmQgPSAxIC0gYWJzKHJhZGl1c19vdXRzZXQpICsgYWFfb3V0c2V0L3JhZGlpICogY29ybmVyOwoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MihhcmNjb29yZC54KzEsIGFyY2Nvb3JkLnkpOwoJfQoJc2tfUG9zaXRpb24gPSBkZXZjb29yZC54eTAxOwp9CgAAAABwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBGaWxsUlJlY3RPcDo6UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgeF9wbHVzXzE9dmFyY2Nvb3JkX1MwLngsIHk9dmFyY2Nvb3JkX1MwLnk7CgloYWxmIGNvdmVyYWdlOwoJaWYgKDAgPT0geF9wbHVzXzEpIAoJewoJCWNvdmVyYWdlID0gaGFsZih5KTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQgZm4gPSB4X3BsdXNfMSAqICh4X3BsdXNfMSAtIDIpOwoJCWZuID0gZm1hKHkseSwgZm4pOwoJCWZsb2F0IGZud2lkdGggPSBmd2lkdGgoZm4pOwoJCWNvdmVyYWdlID0gLjUgLSBoYWxmKGZuL2Zud2lkdGgpOwoJCWNvdmVyYWdlID0gY2xhbXAoY292ZXJhZ2UsIDAsIDEpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChjb3ZlcmFnZSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCBAMQACAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAAUKQGZLBIAAAAACQAAAA4QAQAAAIAAAABSCICSKI2FIFAAAEAAIAAAAAAAAAAADZEBYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAIAAAAAAAA":"CgAAAExTS1PdAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAALEGAABjb25zdCBpbnQga0ZpbGxCV19TMV9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMV9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMV9jMCA9IDM7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxX2MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxX2MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMV9jMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzFfYzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzFfYzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMV9jMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKFJlY3RfUzFfYzAoX3NyYyksIENpcmN1bGFyUlJlY3RfUzFfYzEoX3NyYykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAA+wUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQKAAAAAAIBAEAAAABJUQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMV07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzExXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMTsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABADI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAAAAEAAAAAZFE5PDAYAIAAAAABITF56OQIAAAQAAQAAAARGWBRHUQAAAAB2DXJHAQGAAAAAEAAAAASAIYRFV5O4JAAAAAAYAAAABEWJRHQQQCAAAKBXZFAUHQAAAAIAAAAACAAYJVSMJ4EEAQAAAAAAAABMBC7UXCS6AAAAAAAAIAAAADFVHPSKBAOAAAAAAAAAAAWCBAAAABAAAAANAEIQCAAAAAAAAAAABQAAGQAAAAKFIDMVQUAAAAAAYAAAAAQAAAADEEQFEURUKQKAAAYAAAAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc182X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAIBEAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgQXBwbHlQYWludEFscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNChfaW5wdXQueHl6LCAxLjApKSAqIF9pbnB1dC53KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IEFwcGx5UGFpbnRBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMSkgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDEpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRFZGdlCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2UXVhZEVkZ2VfUzAueHkpKTsKCWhhbGYyIGR1dmR5ID0gaGFsZjIoZEZkeSh2UXVhZEVkZ2VfUzAueHkpKTsKCWlmICh2UXVhZEVkZ2VfUzAueiA+IDAuMCAmJiB2UXVhZEVkZ2VfUzAudyA+IDAuMCkgCgl7CgkJZWRnZUFscGhhID0gaGFsZihtaW4obWluKHZRdWFkRWRnZV9TMC56LCB2UXVhZEVkZ2VfUzAudykgKyAwLjUsIDEuMCkpOwoJfQoJZWxzZSAKCXsKCQloYWxmMiBnRiA9IGhhbGYyKGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR4LnggLSBkdXZkeC55KSwgICAgICAgICAgICAgICAgIGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR5LnggLSBkdXZkeS55KSk7CgkJZWRnZUFscGhhID0gaGFsZih2UXVhZEVkZ2VfUzAueCp2UXVhZEVkZ2VfUzAueCAtIHZRdWFkRWRnZV9TMC55KTsKCQllZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUgLSBlZGdlQWxwaGEgLyBsZW5ndGgoZ0YpKTsKCX0KCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBCbGVuZF9TMihvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQHAAAAAAABAEAAAABJOQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs4XTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzhdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8ODsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1MQAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBpbkVsbGlwc2VPZmZzZXQ7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCBpbkVsbGlwc2VSYWRpaTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2RWxsaXBzZU9mZnNldHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDQgdkVsbGlwc2VSYWRpaV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCXZFbGxpcHNlT2Zmc2V0c19TMCA9IGluRWxsaXBzZU9mZnNldDsKCXZFbGxpcHNlUmFkaWlfUzAgPSBpbkVsbGlwc2VSYWRpaTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAA4BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdDIgb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5OwoJb2Zmc2V0ICo9IHZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCB0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWZsb2F0MiBncmFkID0gMi4wKm9mZnNldCp2RWxsaXBzZVJhZGlpX1MwLnh5OwoJZmxvYXQgZ3JhZF9kb3QgPSBkb3QoZ3JhZCwgZ3JhZCk7CglncmFkX2RvdCA9IG1heChncmFkX2RvdCwgMS4xNzU1ZS0zOCk7CglmbG9hdCBpbnZsZW4gPSBpbnZlcnNlc3FydChncmFkX2RvdCk7CglmbG9hdCBlZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUtdGVzdCppbnZsZW4pOwoJb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5KnZFbGxpcHNlUmFkaWlfUzAuenc7Cgl0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAuenc7CglncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWVkZ2VBbHBoYSAqPSBzYXR1cmF0ZSgwLjUrdGVzdCppbnZsZW4pOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGVkZ2VBbHBoYSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAAB8AAAAUAAAAAQAAACQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABBACUIAAAAABAAOAAAABAAAAAAABBAMAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1O5AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW52UmFkaWlMVFJCX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAMUEAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWludlJhZGlpTFRSQl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKaGFsZjQgRWxsaXB0aWNhbFJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJZmxvYXQyIFogPSBtYXgobWF4KGR4eTAgKiB1aW52UmFkaWlMVFJCX1MxLnh5LCBkeHkxICogdWludlJhZGlpTFRSQl9TMS56dyksIDAuMCk7CgloYWxmIGltcGxpY2l0ID0gaGFsZihkb3QoWiwgZHh5KSAtIDEuMCk7CgloYWxmIGdyYWRfZG90ID0gaGFsZig0LjAgKiBkb3QoWiwgWikpOwoJZ3JhZF9kb3QgPSBtYXgoZ3JhZF9kb3QsIDEuMGUtNCk7CgloYWxmIGFwcHJveF9kaXN0ID0gaW1wbGljaXQgKiBoYWxmKGludmVyc2VzcXJ0KGdyYWRfZG90KSk7CgloYWxmIGFscGhhID0gY2xhbXAoMC41IC0gYXBwcm94X2Rpc3QsIDAuMCwgMS4wKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIGhhbGY0KDEpKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRWxsaXB0aWNhbFJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","B2ABSAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MCAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IGNvbG9yID0gdUNvbG9yX1MwOwoJY29sb3IgPSBjb2xvciAqIGluQ292ZXJhZ2U7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8zX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAJsBAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAAKUAQFAACYAAAAAIAAAABLBAABAAAAABAEGABBAMAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAIAAAAAAAA":"CgAAAExTS1MpAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdUtlcm5lbF9TMVs3XTsKCWxheW91dChvZmZzZXQ9MTIwKSBoYWxmMiB1S2VybmVsT2Zmc2V0X1MxOwoJbGF5b3V0KG9mZnNldD0xMjQpIGhhbGYgdUdhaW5fUzE7CglsYXlvdXQob2Zmc2V0PTEyNikgaGFsZiB1Qmlhc19TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdkxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdkxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABPFQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmNCB1S2VybmVsX1MxWzddOwoJbGF5b3V0KG9mZnNldD0xMjApIGhhbGYyIHVLZXJuZWxPZmZzZXRfUzE7CglsYXlvdXQob2Zmc2V0PTEyNCkgaGFsZiB1R2Fpbl9TMTsKCWxheW91dChvZmZzZXQ9MTI2KSBoYWxmIHVCaWFzX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZMb2NhbENvb3JkX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgTWF0cml4Q29udm9sdXRpb25fUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgc3VtID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2TG9jYWxDb29yZF9TMCAtIHVLZXJuZWxPZmZzZXRfUzE7Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigwLCAwKTsKCQlrID0gdUtlcm5lbF9TMVswXVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDAsIDEpOwoJCWsgPSB1S2VybmVsX1MxWzFdWzFdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMCwgMik7CgkJayA9IHVLZXJuZWxfUzFbMl1bMl07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigwLCAzKTsKCQlrID0gdUtlcm5lbF9TMVszXVszXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDAsIDQpOwoJCWsgPSB1S2VybmVsX1MxWzVdWzBdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMSwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMF1bMV07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigxLCAxKTsKCQlrID0gdUtlcm5lbF9TMVsxXVsyXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDEsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzJdWzNdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMSwgMyk7CgkJayA9IHVLZXJuZWxfUzFbNF1bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigxLCA0KTsKCQlrID0gdUtlcm5lbF9TMVs1XVsxXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDIsIDApOwoJCWsgPSB1S2VybmVsX1MxWzBdWzJdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMiwgMSk7CgkJayA9IHVLZXJuZWxfUzFbMV1bM107CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigyLCAyKTsKCQlrID0gdUtlcm5lbF9TMVszXVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDIsIDMpOwoJCWsgPSB1S2VybmVsX1MxWzRdWzFdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMiwgNCk7CgkJayA9IHVLZXJuZWxfUzFbNV1bMl07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigzLCAwKTsKCQlrID0gdUtlcm5lbF9TMVswXVszXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDMsIDEpOwoJCWsgPSB1S2VybmVsX1MxWzJdWzBdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMywgMik7CgkJayA9IHVLZXJuZWxfUzFbM11bMV07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigzLCAzKTsKCQlrID0gdUtlcm5lbF9TMVs0XVsyXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDMsIDQpOwoJCWsgPSB1S2VybmVsX1MxWzVdWzNdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoNCwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMV1bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMig0LCAxKTsKCQlrID0gdUtlcm5lbF9TMVsyXVsxXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDQsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzNdWzJdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoNCwgMyk7CgkJayA9IHVLZXJuZWxfUzFbNF1bM107CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMig0LCA0KTsKCQlrID0gdUtlcm5lbF9TMVs2XVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCWhhbGY0IGNvbG9yOwoJY29sb3IgPSBzdW0gKiB1R2Fpbl9TMSArIHVCaWFzX1MxOwoJY29sb3IuYSA9IHNhdHVyYXRlKGNvbG9yLmEpOwoJY29sb3IucmdiID0gY2xhbXAoY29sb3IucmdiLCAwLjAsIGNvbG9yLmEpOwoJcmV0dXJuIGNvbG9yOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4Q29udm9sdXRpb25fUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAAHAJRUYWBAAAAA2DXZFAQHAAAAAAAAEAAAAABAEMFPYMZ2AAAAAAAQFV566JAAAAAAYAAAADQEY2EKAUAQAAFA34SQKDYAAAACAAAAABAEMIC263PESAAAAAMAAAAAYCM5AFALAIAAAQF7JMFB4AAAACAAAAAAQAGHEJRUYWBAAAAAAAAAAAFQEL6S4KLYAAAAAAABAAAAAMWU56JIEBYAAAAAAAAAACYIEAAAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OtBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE5MikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc182X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAANQMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xOTIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQ2lyY3VsYXJSUmVjdF9TMihvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADIAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1MDAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTgwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAL0GAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgQ2lyY2xlQmx1cl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYyIHZlYyA9IGhhbGYyKChza19GcmFnQ29vcmQueHkgLSBmbG9hdDIodWNpcmNsZURhdGFfUzFfYzAueHkpKSAqIGZsb2F0KHVjaXJjbGVEYXRhX1MxX2MwLncpKTsKCWhhbGYgZGlzdCA9IGxlbmd0aCh2ZWMpICsgKDAuNSAtIHVjaXJjbGVEYXRhX1MxX2MwLnopICogdWNpcmNsZURhdGFfUzFfYzAudzsKCXJldHVybiBoYWxmNChNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIGZsb2F0MihoYWxmMihkaXN0LCAwLjUpKSkud3d3dyk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShDaXJjbGVCbHVyX1MxX2MwKF9zcmMpLCBfc3JjKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMADSAB4QAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1MiAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAFAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBvdXRwdXRDb2xvcl9TMCkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAIBAEAAAABJKQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs2XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDY7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAGQ56JIEBYAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAKBXZFAUHQAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAIC7UWCQ6AAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBC7UXKS6AAAAAAAAIAAAADEVDPSKBIPAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABAAOAAAABAAAAAAABBAMRQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1NnBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAACwMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAAAAEAAAABJYQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTNdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAAAAIAAAABLAIABAAAAABAEGQCEAAAAAAAAAAAAAAB2AAAAAAACAAAAAQ2EAAAAACQAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PGAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAHQDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfM19TMCkuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKE1hdHJpeEVmZmVjdF9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb2xvcl9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJCXNrX0ZyYWdDb2xvciA9IHNrX0ZyYWdDb2xvci5hMDAwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAAGAAAAAAAAAIAAAAAPAIABAAAAACYGEAAAAEAAAABUARCAIAAAAAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MCAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNF9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogcG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAOYDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc180X1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIHZUcmFuc2Zvcm1lZENvb3Jkc180X1MwKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQpOwp9CmhhbGY0IERldmljZVNwYWNlX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX2RzdF9pbihEZXZpY2VTcGFjZV9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GEMAAAYAAEHAAAARC4EAAAQWBQAAAAAAAAAQAAAAIBCAAAGQAEAAAAAQAAAABAEQAEAAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1P9AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgaW5TaGFkb3dQYXJhbXM7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUlJlY3RTaGFkb3cKCXZpblNoYWRvd1BhcmFtc19TMCA9IGluU2hhZG93UGFyYW1zOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAqgIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUlJlY3RTaGFkb3cKCWhhbGYzIHNoYWRvd1BhcmFtczsKCXNoYWRvd1BhcmFtcyA9IHZpblNoYWRvd1BhcmFtc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZCA9IGxlbmd0aChzaGFkb3dQYXJhbXMueHkpOwoJZmxvYXQyIHV2ID0gZmxvYXQyKHNoYWRvd1BhcmFtcy56ICogKDEuMCAtIGQpLCAwLjUpOwoJaGFsZiBmYWN0b3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHV2KS4wMDByLmE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGZhY3Rvcik7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAeAAAADAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAAAAEAAAABJSQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTBdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEwOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAGoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAAAQAAAAGQCBAMQAAAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PAAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAADYAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQKAAAAAAAAAEAAAABJUQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzExXTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTFdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDExOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAAFCUBWKYKAAAAAAUAAAAHEAEAAACAAAAAMQSAUSSGRKBIAABAACAAAAAAAAAAAA6JAOAAACAAAAAAAUABQAAAAEAAAAAAAEEBVAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1PuAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAABYBwAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxX2MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxX2MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZsb2NhbENvb3JkX1MwOwpoYWxmNCBSZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MxX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMV9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzFfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzFfYzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxX2MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxX2MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzFfYzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBDaXJjdWxhclJSZWN0X1MxX2MxKF9zcmMpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIGhhbGY0KDEpKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAA0QQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAAAQBCFODCOJAAAAAPUXKS6AAAAAAAAQAAAADEGCIRLQYTCIAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MnAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAABwCAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzEoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1MQAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBpbkVsbGlwc2VPZmZzZXQ7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCBpbkVsbGlwc2VSYWRpaTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2RWxsaXBzZU9mZnNldHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDQgdkVsbGlwc2VSYWRpaV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCXZFbGxpcHNlT2Zmc2V0c19TMCA9IGluRWxsaXBzZU9mZnNldDsKCXZFbGxpcHNlUmFkaWlfUzAgPSBpbkVsbGlwc2VSYWRpaTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAA4BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdDIgb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5OwoJb2Zmc2V0ICo9IHZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCB0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWZsb2F0MiBncmFkID0gMi4wKm9mZnNldCp2RWxsaXBzZVJhZGlpX1MwLnh5OwoJZmxvYXQgZ3JhZF9kb3QgPSBkb3QoZ3JhZCwgZ3JhZCk7CglncmFkX2RvdCA9IG1heChncmFkX2RvdCwgMS4xNzU1ZS0zOCk7CglmbG9hdCBpbnZsZW4gPSBpbnZlcnNlc3FydChncmFkX2RvdCk7CglmbG9hdCBlZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUtdGVzdCppbnZsZW4pOwoJb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5KnZFbGxpcHNlUmFkaWlfUzAuenc7Cgl0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAuenc7CglncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWVkZ2VBbHBoYSAqPSBzYXR1cmF0ZSgwLjUrdGVzdCppbnZsZW4pOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGVkZ2VBbHBoYSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAAB8AAAAUAAAAAQAAACQAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1O0AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAALgMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NDBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAsNAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAIBAIAAAABLCIIBAAAAABAEGABBAMAACAIAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMCkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAAaQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAIMDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0IGR4MSA9IHNrX0ZyYWdDb29yZC54IC0gdWlubmVyUmVjdF9TMS5SOwoJZmxvYXQyIGR4eSA9IG1heChmbG9hdDIobWF4KGR4eTAueCwgZHgxKSwgZHh5MC55KSwgMC4wKTsKCWhhbGYgYm90dG9tQWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVpbm5lclJlY3RfUzEuQiAtIHNrX0ZyYWdDb29yZC55KSk7CgloYWxmIGFscGhhID0gYm90dG9tQWxwaGEgKiBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAAFAAAAAACDIQAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADiAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogQ292ZXJhZ2UgU2V0IE9wCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAACgAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAAAAIAAAABLAIABAAAAABAEGABBAMAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PGAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAEsDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfM19TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAAAAAABAAAAAAAAAA==","IYBAAAAABAAACAABBYAAAKAAAMAAGEAAAABRAEAAAEHCAAAAAAAABCAAAAAABAEQAEAAAAAKAAAAABAAAAAP2AAAAAAQAAAAAAAAAAACAAAAAAAAAAAA":"CgAAAExTS1P9DwAAY29uc3QgZmxvYXQgUFJFQ0lTSU9OID0gNC4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9SRVNPTFZFX0xFVkVMID0gNS4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9TRUdNRU5UUyA9IDMyLjAwMDAwMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHJlc29sdmVMZXZlbF9hbmRfaWR4OwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDQgcDAxOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgcDIzOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDIgZmFuUG9pbnRBdHRyaWI7CmZsb2F0IHdhbmdzX2Zvcm11bGFfbWF4X2ZkaWZmX3AyKGZsb2F0MiBwMCwgZmxvYXQyIHAxLCBmbG9hdDIgcDIsIGZsb2F0MiBwMyxmbG9hdDJ4MiBtYXRyaXgpIAp7CglmbG9hdDIgZDAgPSBtYXRyaXggKiAoZm1hKGZsb2F0MigtMiksIHAxLCBwMikgKyBwMCk7CglmbG9hdDIgZDEgPSBtYXRyaXggKiAoZm1hKGZsb2F0MigtMiksIHAyLCBwMykgKyBwMSk7CglyZXR1cm4gbWF4KGRvdChkMCxkMCksIGRvdChkMSxkMSkpOwp9CmZsb2F0IHdhbmdzX2Zvcm11bGFfY3ViaWMoZmxvYXQgX3ByZWNpc2lvbl8sIGZsb2F0MiBwMCwgZmxvYXQyIHAxLCBmbG9hdDIgcDIsIGZsb2F0MiBwMyxmbG9hdDJ4MiBtYXRyaXgpIAp7CglmbG9hdCBtID0gd2FuZ3NfZm9ybXVsYV9tYXhfZmRpZmZfcDIocDAsIHAxLCBwMiwgcDMsIG1hdHJpeCk7CglyZXR1cm4gbWF4KGNlaWwoc3FydCgwLjc1ICogX3ByZWNpc2lvbl8gKiBzcXJ0KG0pKSksIDEuMCk7Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jdWJpY19sb2cyKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdDIgcDMsZmxvYXQyeDIgbWF0cml4KSAKewoJZmxvYXQgbSA9IHdhbmdzX2Zvcm11bGFfbWF4X2ZkaWZmX3AyKHAwLCBwMSwgcDIsIHAzLCBtYXRyaXgpOwoJcmV0dXJuIGNlaWwobG9nMihtYXgoMC41NjI1ICogX3ByZWNpc2lvbl8gKiBfcHJlY2lzaW9uXyAqIG0sIDEuMCkpICogLjI1KTsKfQpmbG9hdCB3YW5nc19mb3JtdWxhX2NvbmljX3AyKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdCB3KSAKewoJZmxvYXQyIEMgPSAobWluKG1pbihwMCwgcDEpLCBwMikgKyBtYXgobWF4KHAwLCBwMSksIHAyKSkgKiAwLjU7CglwMCAtPSBDOwoJcDEgLT0gQzsKCXAyIC09IEM7CglmbG9hdCBtID0gc3FydChtYXgobWF4KGRvdChwMCxwMCksIGRvdChwMSxwMSkpLCBkb3QocDIscDIpKSk7CglmbG9hdDIgZHAgPSBmbWEoZmxvYXQyKC0yLjAgKiB3KSwgcDEsIHAwKSArIHAyOwoJZmxvYXQgZHcgPSBhYnMoZm1hKC0yLjAsIHcsIDIuMCkpOwoJZmxvYXQgcnBfbWludXNfMSA9IG1heCgwLjAsIGZtYShtLCBfcHJlY2lzaW9uXywgLTEuMCkpOwoJZmxvYXQgbnVtZXIgPSBsZW5ndGgoZHApICogX3ByZWNpc2lvbl8gKyBycF9taW51c18xICogZHc7CglmbG9hdCBkZW5vbSA9IDQgKiBtaW4odywgMS4wKTsKCXJldHVybiBudW1lci9kZW5vbTsKfQpmbG9hdCB3YW5nc19mb3JtdWxhX2NvbmljKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdCB3KSAKewoJZmxvYXQgbjIgPSB3YW5nc19mb3JtdWxhX2NvbmljX3AyKF9wcmVjaXNpb25fLCBwMCwgcDEsIHAyLCB3KTsKCXJldHVybiBtYXgoY2VpbChzcXJ0KG4yKSksIDEuMCk7Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jb25pY19sb2cyKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdCB3KSAKewoJZmxvYXQgbjIgPSB3YW5nc19mb3JtdWxhX2NvbmljX3AyKF9wcmVjaXNpb25fLCBwMCwgcDEsIHAyLCB3KTsKCXJldHVybiBjZWlsKGxvZzIobWF4KG4yLCAxLjApKSAqIC41KTsKfQpib29sIGlzX2NvbmljX2N1cnZlKCkgCnsKCXJldHVybiBpc2luZihwMjMudyk7Cn0KYm9vbCBpc190cmlhbmd1bGFyX2NvbmljX2N1cnZlKCkgCnsKCXJldHVybiBpc2luZihwMjMueik7Cn0KZmxvYXQgbGRleHBfcG9ydGFibGUoZmxvYXQgeCwgZmxvYXQgcCkgCnsKCXJldHVybiB4ICogZXhwMihwKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciB0ZXNzZWxsYXRlX01pZGRsZU91dFNoYWRlcgoJZmxvYXQyeDIgQUZGSU5FX01BVFJJWCA9IGZsb2F0MngyKHVhZmZpbmVNYXRyaXhfUzAueHksIHVhZmZpbmVNYXRyaXhfUzAuencpOwoJZmxvYXQyIFRSQU5TTEFURSA9IHV0cmFuc2xhdGVfUzA7CglmbG9hdCByZXNvbHZlTGV2ZWwgPSByZXNvbHZlTGV2ZWxfYW5kX2lkeC54OwoJZmxvYXQgaWR4SW5SZXNvbHZlTGV2ZWwgPSByZXNvbHZlTGV2ZWxfYW5kX2lkeC55OwoJZmxvYXQyIGxvY2FsY29vcmQ7CglpZiAocmVzb2x2ZUxldmVsIDwgMCkgCgl7CgkJbG9jYWxjb29yZCA9IGZhblBvaW50QXR0cmliOwoJfQoJZWxzZSBpZiAoaXNfdHJpYW5ndWxhcl9jb25pY19jdXJ2ZSgpKSAKCXsKCQlsb2NhbGNvb3JkID0gKHJlc29sdmVMZXZlbCAhPSAwKSA/IHAwMS56dzogKGlkeEluUmVzb2x2ZUxldmVsICE9IDApID8gcDIzLnh5OiBwMDEueHk7Cgl9CgllbHNlIAoJewoJCWZsb2F0MiBwMD1wMDEueHksIHAxPXAwMS56dywgcDI9cDIzLnh5LCBwMz1wMjMuenc7CgkJZmxvYXQgdyA9IC0xOwoJCWZsb2F0IG1heFJlc29sdmVMZXZlbDsKCQlpZiAoaXNfY29uaWNfY3VydmUoKSkgCgkJewoJCQl3ID0gcDMueDsKCQkJbWF4UmVzb2x2ZUxldmVsID0gd2FuZ3NfZm9ybXVsYV9jb25pY19sb2cyKFBSRUNJU0lPTiwgQUZGSU5FX01BVFJJWCAqIHAwLEFGRklORV9NQVRSSVggKiBwMSxBRkZJTkVfTUFUUklYICogcDIsIHcpOwoJCQlwMSAqPSB3OwoJCQlwMyA9IHAyOwoJCX0KCQllbHNlIAoJCXsKCQkJbWF4UmVzb2x2ZUxldmVsID0gd2FuZ3NfZm9ybXVsYV9jdWJpY19sb2cyKFBSRUNJU0lPTiwgcDAsIHAxLCBwMiwgcDMsQUZGSU5FX01BVFJJWCk7CgkJfQoJCWlmIChyZXNvbHZlTGV2ZWwgPiBtYXhSZXNvbHZlTGV2ZWwpIAoJCXsKCQkJaWR4SW5SZXNvbHZlTGV2ZWwgPSBmbG9vcihsZGV4cF9wb3J0YWJsZShpZHhJblJlc29sdmVMZXZlbCxtYXhSZXNvbHZlTGV2ZWwgLSByZXNvbHZlTGV2ZWwpKTsKCQkJcmVzb2x2ZUxldmVsID0gbWF4UmVzb2x2ZUxldmVsOwoJCX0KCQlmbG9hdCBmaXhlZFZlcnRleElEID0gZmxvb3IoLjUgKyBsZGV4cF9wb3J0YWJsZShpZHhJblJlc29sdmVMZXZlbCwgTUFYX0ZJWEVEX1JFU09MVkVfTEVWRUwgLSByZXNvbHZlTGV2ZWwpKTsKCQlpZiAoMCA8IGZpeGVkVmVydGV4SUQgJiYgZml4ZWRWZXJ0ZXhJRCA8IE1BWF9GSVhFRF9TRUdNRU5UUykgCgkJewoJCQlmbG9hdCBUID0gZml4ZWRWZXJ0ZXhJRCAqICgxIC8gTUFYX0ZJWEVEX1NFR01FTlRTKTsKCQkJZmxvYXQyIGFiID0gbWl4KHAwLCBwMSwgVCk7CgkJCWZsb2F0MiBiYyA9IG1peChwMSwgcDIsIFQpOwoJCQlmbG9hdDIgY2QgPSBtaXgocDIsIHAzLCBUKTsKCQkJZmxvYXQyIGFiYyA9IG1peChhYiwgYmMsIFQpOwoJCQlmbG9hdDIgYmNkID0gbWl4KGJjLCBjZCwgVCk7CgkJCWZsb2F0MiBhYmNkID0gbWl4KGFiYywgYmNkLCBUKTsKCQkJZmxvYXQgdSA9IG1peCgxLjAsIHcsIFQpOwoJCQlmbG9hdCB2ID0gdyArIDEgLSB1OwoJCQlmbG9hdCB1diA9IG1peCh1LCB2LCBUKTsKCQkJbG9jYWxjb29yZCA9ICh3IDwgMCkgP2FiY2Q6YWJjL3V2OwoJCX0KCQllbHNlIAoJCXsKCQkJbG9jYWxjb29yZCA9IChmaXhlZFZlcnRleElEID09IDApID8gcDAueHkgOiBwMy54eTsKCQl9Cgl9CglmbG9hdDIgdmVydGV4cG9zID0gQUZGSU5FX01BVFJJWCAqIGxvY2FsY29vcmQgKyBUUkFOU0xBVEU7Cglza19Qb3NpdGlvbiA9IHZlcnRleHBvcy54eTAxOwp9CgAAAAAAAACFAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIHRlc3NlbGxhdGVfTWlkZGxlT3V0U2hhZGVyCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IHVjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IERpc2FibGUgQ29sb3IKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAQAAAAIAAAABAAAAHQAAAAAAAAABAAAACAAAAAMAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAdAAAAIAAAAAIAAAAoAAAACgAAAAAAAAAAAAAA/QAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQKAAAAAAAAAEAAAABJUQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzExXTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTFdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDExOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","GEMAAAYAAEHAAAARC4EAAAQWBQAAAAAAAAAQAAAAIBCAAAGQAEAAAAAQAAAABAEQAEAAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1P9AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgaW5TaGFkb3dQYXJhbXM7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUlJlY3RTaGFkb3cKCXZpblNoYWRvd1BhcmFtc19TMCA9IGluU2hhZG93UGFyYW1zOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAqgIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUlJlY3RTaGFkb3cKCWhhbGYzIHNoYWRvd1BhcmFtczsKCXNoYWRvd1BhcmFtcyA9IHZpblNoYWRvd1BhcmFtc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZCA9IGxlbmd0aChzaGFkb3dQYXJhbXMueHkpOwoJZmxvYXQyIHV2ID0gZmxvYXQyKHNoYWRvd1BhcmFtcy56ICogKDEuMCAtIGQpLCAwLjUpOwoJaGFsZiBmYWN0b3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHV2KS4wMDByLmE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGZhY3Rvcik7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAeAAAADAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCBAMQACAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAYEIBAAAAFAAAAAAQAAAAH5AAAAAAIAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACmAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCQlza19GcmFnQ29sb3IgPSBza19GcmFnQ29sb3IuYTAwMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAAoAAAAAAAAAAQAAAP0AAAA=","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABAAAAAAIA2GZPMTQCAAAMAAAAAEACHDQCDARAAAAAPGD4GCQAAAAAAAAABAAAAAGJJHLYYGACAAAAAAAEAAAACRGL345AQAABAABAAAAARQ4A4YEIAAAADYAZBYXAIAAAAAIAAAABSAQBAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAGAGMOF4CAAAAACAAAAABAEMIC263PESAAAAAMAAAAAMDCHCACDAQAAAAGPOB4CCAAAAAAACAAAAAMTJYRYQAQQEAAAAAAAAAGARJ4INQYLAEAAAAAEAAAABSEQM44LYEAAAAAAAAAAADAAUAQAAQAAAAGQCAIBCAAAAAAAAAAAYAADIAAAABCEDWKYKEAAAAAMAAAAAIAAAAACAI2RKA3FMFAAAAAAGAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1O5BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAANgRAABjb25zdCBpbnQga0ZpbGxCV19TMl9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMl9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMl9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKGxlbmd0aChfdG1wXzNfY29vcmRzKSksIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFJhZGlhbExheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBBcHBseVBhaW50QWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0KF9pbnB1dC54eXosIDEuMCkpICogX2lucHV0LncpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gQXBwbHlQYWludEFscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IFJlY3RfUzJfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF83X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgxKSA9PSBrRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzJfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MyX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMl9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzIoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MyX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZEVkZ2UKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZWRnZUFscGhhOwoJaGFsZjIgZHV2ZHggPSBoYWxmMihkRmR4KHZRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZHV2ZHkgPSBoYWxmMihkRmR5KHZRdWFkRWRnZV9TMC54eSkpOwoJaWYgKHZRdWFkRWRnZV9TMC56ID4gMC4wICYmIHZRdWFkRWRnZV9TMC53ID4gMC4wKSAKCXsKCQllZGdlQWxwaGEgPSBoYWxmKG1pbihtaW4odlF1YWRFZGdlX1MwLnosIHZRdWFkRWRnZV9TMC53KSArIDAuNSwgMS4wKSk7Cgl9CgllbHNlIAoJewoJCWhhbGYyIGdGID0gaGFsZjIoaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHgueCAtIGR1dmR4LnkpLCAgICAgICAgICAgICAgICAgaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHkueCAtIGR1dmR5LnkpKTsKCQllZGdlQWxwaGEgPSBoYWxmKHZRdWFkRWRnZV9TMC54KnZRdWFkRWRnZV9TMC54IC0gdlF1YWRFZGdlX1MwLnkpOwoJCWVkZ2VBbHBoYSA9IHNhdHVyYXRlKDAuNSAtIGVkZ2VBbHBoYSAvIGxlbmd0aChnRikpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IEJsZW5kX1MyKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1MDBQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MzIwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAABwPAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTMwNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTMyMCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJOwoJOwoJaW50IGNodW5rID0gMDsKCTsKCWludCBwb3M7CglpZiAodCA8IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwW2NodW5rXS55KSAKCXsKCQlwb3MgPSBpbnQodCA8IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwW2NodW5rXS54ID8gMCA6IDEpOwoJfQoJZWxzZSAKCXsKCQlwb3MgPSBpbnQodCA8IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwW2NodW5rXS56ID8gMiA6IDMpOwoJfQoJOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogdXNjYWxlX1MxX2MwX2MwX2MwX2MwW3Bvc10gKyB1Ymlhc19TMV9jMF9jMF9jMF9jMFtwb3NdKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQGAAAAAAABAEAAAABJMQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs3XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzddOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8NzsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","IYAAAAAABAAACAABBYAAAIAAAIAAGEAAAABRAEAAAAAAAAEIAAAAAAEASAAQAAAABIAAAAAEAAAAB7IAAAAACAAAAAAAAAAAAIAAAAAAAAAAA":"CgAAAExTS1OMDwAAY29uc3QgZmxvYXQgUFJFQ0lTSU9OID0gNC4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9SRVNPTFZFX0xFVkVMID0gNS4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9TRUdNRU5UUyA9IDMyLjAwMDAwMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHJlc29sdmVMZXZlbF9hbmRfaWR4OwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDQgcDAxOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgcDIzOwpmbG9hdCB3YW5nc19mb3JtdWxhX21heF9mZGlmZl9wMihmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdDIgcDMsZmxvYXQyeDIgbWF0cml4KSAKewoJZmxvYXQyIGQwID0gbWF0cml4ICogKGZtYShmbG9hdDIoLTIpLCBwMSwgcDIpICsgcDApOwoJZmxvYXQyIGQxID0gbWF0cml4ICogKGZtYShmbG9hdDIoLTIpLCBwMiwgcDMpICsgcDEpOwoJcmV0dXJuIG1heChkb3QoZDAsZDApLCBkb3QoZDEsZDEpKTsKfQpmbG9hdCB3YW5nc19mb3JtdWxhX2N1YmljKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdDIgcDMsZmxvYXQyeDIgbWF0cml4KSAKewoJZmxvYXQgbSA9IHdhbmdzX2Zvcm11bGFfbWF4X2ZkaWZmX3AyKHAwLCBwMSwgcDIsIHAzLCBtYXRyaXgpOwoJcmV0dXJuIG1heChjZWlsKHNxcnQoMC43NSAqIF9wcmVjaXNpb25fICogc3FydChtKSkpLCAxLjApOwp9CmZsb2F0IHdhbmdzX2Zvcm11bGFfY3ViaWNfbG9nMihmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQyIHAzLGZsb2F0MngyIG1hdHJpeCkgCnsKCWZsb2F0IG0gPSB3YW5nc19mb3JtdWxhX21heF9mZGlmZl9wMihwMCwgcDEsIHAyLCBwMywgbWF0cml4KTsKCXJldHVybiBjZWlsKGxvZzIobWF4KDAuNTYyNSAqIF9wcmVjaXNpb25fICogX3ByZWNpc2lvbl8gKiBtLCAxLjApKSAqIC4yNSk7Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jb25pY19wMihmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQgdykgCnsKCWZsb2F0MiBDID0gKG1pbihtaW4ocDAsIHAxKSwgcDIpICsgbWF4KG1heChwMCwgcDEpLCBwMikpICogMC41OwoJcDAgLT0gQzsKCXAxIC09IEM7CglwMiAtPSBDOwoJZmxvYXQgbSA9IHNxcnQobWF4KG1heChkb3QocDAscDApLCBkb3QocDEscDEpKSwgZG90KHAyLHAyKSkpOwoJZmxvYXQyIGRwID0gZm1hKGZsb2F0MigtMi4wICogdyksIHAxLCBwMCkgKyBwMjsKCWZsb2F0IGR3ID0gYWJzKGZtYSgtMi4wLCB3LCAyLjApKTsKCWZsb2F0IHJwX21pbnVzXzEgPSBtYXgoMC4wLCBmbWEobSwgX3ByZWNpc2lvbl8sIC0xLjApKTsKCWZsb2F0IG51bWVyID0gbGVuZ3RoKGRwKSAqIF9wcmVjaXNpb25fICsgcnBfbWludXNfMSAqIGR3OwoJZmxvYXQgZGVub20gPSA0ICogbWluKHcsIDEuMCk7CglyZXR1cm4gbnVtZXIvZGVub207Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jb25pYyhmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQgdykgCnsKCWZsb2F0IG4yID0gd2FuZ3NfZm9ybXVsYV9jb25pY19wMihfcHJlY2lzaW9uXywgcDAsIHAxLCBwMiwgdyk7CglyZXR1cm4gbWF4KGNlaWwoc3FydChuMikpLCAxLjApOwp9CmZsb2F0IHdhbmdzX2Zvcm11bGFfY29uaWNfbG9nMihmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQgdykgCnsKCWZsb2F0IG4yID0gd2FuZ3NfZm9ybXVsYV9jb25pY19wMihfcHJlY2lzaW9uXywgcDAsIHAxLCBwMiwgdyk7CglyZXR1cm4gY2VpbChsb2cyKG1heChuMiwgMS4wKSkgKiAuNSk7Cn0KYm9vbCBpc19jb25pY19jdXJ2ZSgpIAp7CglyZXR1cm4gaXNpbmYocDIzLncpOwp9CmJvb2wgaXNfdHJpYW5ndWxhcl9jb25pY19jdXJ2ZSgpIAp7CglyZXR1cm4gaXNpbmYocDIzLnopOwp9CmZsb2F0IGxkZXhwX3BvcnRhYmxlKGZsb2F0IHgsIGZsb2F0IHApIAp7CglyZXR1cm4geCAqIGV4cDIocCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgdGVzc2VsbGF0ZV9NaWRkbGVPdXRTaGFkZXIKCWZsb2F0MngyIEFGRklORV9NQVRSSVggPSBmbG9hdDJ4Mih1YWZmaW5lTWF0cml4X1MwLnh5LCB1YWZmaW5lTWF0cml4X1MwLnp3KTsKCWZsb2F0MiBUUkFOU0xBVEUgPSB1dHJhbnNsYXRlX1MwOwoJZmxvYXQgcmVzb2x2ZUxldmVsID0gcmVzb2x2ZUxldmVsX2FuZF9pZHgueDsKCWZsb2F0IGlkeEluUmVzb2x2ZUxldmVsID0gcmVzb2x2ZUxldmVsX2FuZF9pZHgueTsKCWZsb2F0MiBsb2NhbGNvb3JkOwoJaWYgKGlzX3RyaWFuZ3VsYXJfY29uaWNfY3VydmUoKSkgCgl7CgkJbG9jYWxjb29yZCA9IChyZXNvbHZlTGV2ZWwgIT0gMCkgPyBwMDEuenc6IChpZHhJblJlc29sdmVMZXZlbCAhPSAwKSA/IHAyMy54eTogcDAxLnh5OwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgcDA9cDAxLnh5LCBwMT1wMDEuencsIHAyPXAyMy54eSwgcDM9cDIzLnp3OwoJCWZsb2F0IHcgPSAtMTsKCQlmbG9hdCBtYXhSZXNvbHZlTGV2ZWw7CgkJaWYgKGlzX2NvbmljX2N1cnZlKCkpIAoJCXsKCQkJdyA9IHAzLng7CgkJCW1heFJlc29sdmVMZXZlbCA9IHdhbmdzX2Zvcm11bGFfY29uaWNfbG9nMihQUkVDSVNJT04sIEFGRklORV9NQVRSSVggKiBwMCxBRkZJTkVfTUFUUklYICogcDEsQUZGSU5FX01BVFJJWCAqIHAyLCB3KTsKCQkJcDEgKj0gdzsKCQkJcDMgPSBwMjsKCQl9CgkJZWxzZSAKCQl7CgkJCW1heFJlc29sdmVMZXZlbCA9IHdhbmdzX2Zvcm11bGFfY3ViaWNfbG9nMihQUkVDSVNJT04sIHAwLCBwMSwgcDIsIHAzLEFGRklORV9NQVRSSVgpOwoJCX0KCQlpZiAocmVzb2x2ZUxldmVsID4gbWF4UmVzb2x2ZUxldmVsKSAKCQl7CgkJCWlkeEluUmVzb2x2ZUxldmVsID0gZmxvb3IobGRleHBfcG9ydGFibGUoaWR4SW5SZXNvbHZlTGV2ZWwsbWF4UmVzb2x2ZUxldmVsIC0gcmVzb2x2ZUxldmVsKSk7CgkJCXJlc29sdmVMZXZlbCA9IG1heFJlc29sdmVMZXZlbDsKCQl9CgkJZmxvYXQgZml4ZWRWZXJ0ZXhJRCA9IGZsb29yKC41ICsgbGRleHBfcG9ydGFibGUoaWR4SW5SZXNvbHZlTGV2ZWwsIE1BWF9GSVhFRF9SRVNPTFZFX0xFVkVMIC0gcmVzb2x2ZUxldmVsKSk7CgkJaWYgKDAgPCBmaXhlZFZlcnRleElEICYmIGZpeGVkVmVydGV4SUQgPCBNQVhfRklYRURfU0VHTUVOVFMpIAoJCXsKCQkJZmxvYXQgVCA9IGZpeGVkVmVydGV4SUQgKiAoMSAvIE1BWF9GSVhFRF9TRUdNRU5UUyk7CgkJCWZsb2F0MiBhYiA9IG1peChwMCwgcDEsIFQpOwoJCQlmbG9hdDIgYmMgPSBtaXgocDEsIHAyLCBUKTsKCQkJZmxvYXQyIGNkID0gbWl4KHAyLCBwMywgVCk7CgkJCWZsb2F0MiBhYmMgPSBtaXgoYWIsIGJjLCBUKTsKCQkJZmxvYXQyIGJjZCA9IG1peChiYywgY2QsIFQpOwoJCQlmbG9hdDIgYWJjZCA9IG1peChhYmMsIGJjZCwgVCk7CgkJCWZsb2F0IHUgPSBtaXgoMS4wLCB3LCBUKTsKCQkJZmxvYXQgdiA9IHcgKyAxIC0gdTsKCQkJZmxvYXQgdXYgPSBtaXgodSwgdiwgVCk7CgkJCWxvY2FsY29vcmQgPSAodyA8IDApID9hYmNkOmFiYy91djsKCQl9CgkJZWxzZSAKCQl7CgkJCWxvY2FsY29vcmQgPSAoZml4ZWRWZXJ0ZXhJRCA9PSAwKSA/IHAwLnh5IDogcDMueHk7CgkJfQoJfQoJZmxvYXQyIHZlcnRleHBvcyA9IEFGRklORV9NQVRSSVggKiBsb2NhbGNvb3JkICsgVFJBTlNMQVRFOwoJc2tfUG9zaXRpb24gPSB2ZXJ0ZXhwb3MueHkwMTsKfQoAAAAAhQEAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVhZmZpbmVNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDIgdXRyYW5zbGF0ZV9TMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVjb2xvcl9TMDsKfQo7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCB0ZXNzZWxsYXRlX01pZGRsZU91dFNoYWRlcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSB1Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBEaXNhYmxlIENvbG9yCgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAEAAAACAAAAAQAAAB0AAAAAAAAAAQAAAAgAAAACAAAAHwAAAAAAAAACAAAAHwAAABAAAAACAAAAIAAAAAoAAAAAAAAAAAAAAP0AAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAAAAIAAAABLAIABAAAAABAEGABBAMAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PGAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAEsDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfM19TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OlBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAAAkDQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTY4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DASAAAAAQAAWAABAYAAQBYH7777Z6QQBAEAAAAAAEAAAAAAAEBSAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OYAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAC2AgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEJpdG1hcFRleHQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApOwoJfQoJb3V0cHV0Q29sb3JfUzAgPSBvdXRwdXRDb2xvcl9TMCAqIHRleENvbG9yOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAA0AAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HTQAAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAQAHAAAAAQAAAAAAAQQGAAAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRFZGdlCgl2UXVhZEVkZ2VfUzAgPSBpblF1YWRFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAiwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0Owp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkRWRnZQoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodlF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodlF1YWRFZGdlX1MwLnh5KSk7CglpZiAodlF1YWRFZGdlX1MwLnogPiAwLjAgJiYgdlF1YWRFZGdlX1MwLncgPiAwLjApIAoJewoJCWVkZ2VBbHBoYSA9IGhhbGYobWluKG1pbih2UXVhZEVkZ2VfUzAueiwgdlF1YWRFZGdlX1MwLncpICsgMC41LCAxLjApKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjIgZ0YgPSBoYWxmMihoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeC54IC0gZHV2ZHgueSksICAgICAgICAgICAgICAgICBoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeS54IC0gZHV2ZHkueSkpOwoJCWVkZ2VBbHBoYSA9IGhhbGYodlF1YWRFZGdlX1MwLngqdlF1YWRFZGdlX1MwLnggLSB2UXVhZEVkZ2VfUzAueSk7CgkJZWRnZUFscGhhID0gc2F0dXJhdGUoMC41IC0gZWRnZUFscGhhIC8gbGVuZ3RoKGdGKSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAEADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1M8DQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCByYWRpaV9zZWxlY3RvcjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IGNvcm5lcl9hbmRfcmFkaXVzX291dHNldHM7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBhYV9ibG9hdF9hbmRfY292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCByYWRpaV94OwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBmbG9hdDQgcmFkaWlfeTsKbGF5b3V0KGxvY2F0aW9uID0gNSkgaW4gZmxvYXQ0IHNrZXc7CmxheW91dChsb2NhdGlvbiA9IDYpIGluIGZsb2F0MiB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlOwpsYXlvdXQobG9jYXRpb24gPSA3KSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRmlsbFJSZWN0T3A6OlByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7CglmbG9hdCBhYV9ibG9hdF9tdWx0aXBsaWVyID0gMTsKCWZsb2F0MiBjb3JuZXIgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnh5OwoJZmxvYXQyIHJhZGl1c19vdXRzZXQgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnp3OwoJZmxvYXQyIGFhX2Jsb2F0X2RpcmVjdGlvbiA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS54eTsKCWZsb2F0IGlzX2xpbmVhcl9jb3ZlcmFnZSA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS53OwoJZmxvYXQyIHBpeGVsbGVuZ3RoID0gaW52ZXJzZXNxcnQoZmxvYXQyKGRvdChza2V3Lnh6LCBza2V3Lnh6KSwgZG90KHNrZXcueXcsIHNrZXcueXcpKSk7CglmbG9hdDQgbm9ybWFsaXplZF9heGlzX2RpcnMgPSBza2V3ICogcGl4ZWxsZW5ndGgueHl4eTsKCWZsb2F0MiBheGlzd2lkdGhzID0gKGFicyhub3JtYWxpemVkX2F4aXNfZGlycy54eSkgKyBhYnMobm9ybWFsaXplZF9heGlzX2RpcnMuencpKTsKCWZsb2F0MiBhYV9ibG9hdHJhZGl1cyA9IGF4aXN3aWR0aHMgKiBwaXhlbGxlbmd0aCAqIC41OwoJZmxvYXQ0IHJhZGlpX2FuZF9uZWlnaGJvcnMgPSByYWRpaV9zZWxlY3RvciogZmxvYXQ0eDQocmFkaWlfeCwgcmFkaWlfeSwgcmFkaWlfeC55eHd6LCByYWRpaV95Lnd6eXgpOwoJZmxvYXQyIHJhZGlpID0gcmFkaWlfYW5kX25laWdoYm9ycy54eTsKCWZsb2F0MiBuZWlnaGJvcl9yYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMuenc7CglmbG9hdCBjb3ZlcmFnZV9tdWx0aXBsaWVyID0gMTsKCWlmIChhbnkoZ3JlYXRlclRoYW4oYWFfYmxvYXRyYWRpdXMsIGZsb2F0MigxKSkpKSAKCXsKCQljb3JuZXIgPSBtYXgoYWJzKGNvcm5lciksIGFhX2Jsb2F0cmFkaXVzKSAqIHNpZ24oY29ybmVyKTsKCQljb3ZlcmFnZV9tdWx0aXBsaWVyID0gMSAvIChtYXgoYWFfYmxvYXRyYWRpdXMueCwgMSkgKiBtYXgoYWFfYmxvYXRyYWRpdXMueSwgMSkpOwoJCXJhZGlpID0gZmxvYXQyKDApOwoJfQoJZmxvYXQgY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UuejsKCWlmIChhbnkobGVzc1RoYW4ocmFkaWksIGFhX2Jsb2F0cmFkaXVzICogMS41KSkpIAoJewoJCXJhZGlpID0gZmxvYXQyKDApOwoJCWFhX2Jsb2F0X2RpcmVjdGlvbiA9IHNpZ24oY29ybmVyKTsKCQlpZiAoY292ZXJhZ2UgPiAuNSkgCgkJewoJCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSAtYWFfYmxvYXRfZGlyZWN0aW9uOwoJCX0KCQlpc19saW5lYXJfY292ZXJhZ2UgPSAxOwoJfQoJZWxzZSAKCXsKCQlyYWRpaSA9IGNsYW1wKHJhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQluZWlnaGJvcl9yYWRpaSA9IGNsYW1wKG5laWdoYm9yX3JhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQlmbG9hdDIgc3BhY2luZyA9IDIgLSByYWRpaSAtIG5laWdoYm9yX3JhZGlpOwoJCWZsb2F0MiBleHRyYV9wYWQgPSBtYXgocGl4ZWxsZW5ndGggKiAuMDYyNSAtIHNwYWNpbmcsIGZsb2F0MigwKSk7CgkJcmFkaWkgLT0gZXh0cmFfcGFkICogLjU7Cgl9CglmbG9hdDIgYWFfb3V0c2V0ID0gYWFfYmxvYXRfZGlyZWN0aW9uICogYWFfYmxvYXRyYWRpdXMgKiBhYV9ibG9hdF9tdWx0aXBsaWVyOwoJZmxvYXQyIHZlcnRleHBvcyA9IGNvcm5lciArIHJhZGl1c19vdXRzZXQgKiByYWRpaSArIGFhX291dHNldDsKCWlmIChjb3ZlcmFnZSA+IC41KSAKCXsKCQlpZiAoYWFfYmxvYXRfZGlyZWN0aW9uLnggIT0gMCAmJiB2ZXJ0ZXhwb3MueCAqIGNvcm5lci54IDwgMCkgCgkJewoJCQlmbG9hdCBiYWNrc2V0ID0gYWJzKHZlcnRleHBvcy54KTsKCQkJdmVydGV4cG9zLnggPSAwOwoJCQl2ZXJ0ZXhwb3MueSArPSBiYWNrc2V0ICogc2lnbihjb3JuZXIueSkgKiBwaXhlbGxlbmd0aC55L3BpeGVsbGVuZ3RoLng7CgkJCWNvdmVyYWdlID0gKGNvdmVyYWdlIC0gLjUpICogYWJzKGNvcm5lci54KSAvIChhYnMoY29ybmVyLngpICsgYmFja3NldCkgKyAuNTsKCQl9CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi55ICE9IDAgJiYgdmVydGV4cG9zLnkgKiBjb3JuZXIueSA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueSk7CgkJCXZlcnRleHBvcy55ID0gMDsKCQkJdmVydGV4cG9zLnggKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLngpICogcGl4ZWxsZW5ndGgueC9waXhlbGxlbmd0aC55OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueSkgLyAoYWJzKGNvcm5lci55KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJfQoJZmxvYXQyeDIgc2tld21hdHJpeCA9IGZsb2F0MngyKHNrZXcueHksIHNrZXcuencpOwoJZmxvYXQyIGRldmNvb3JkID0gdmVydGV4cG9zICogc2tld21hdHJpeCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUueHk7CglpZiAoMCAhPSBpc19saW5lYXJfY292ZXJhZ2UpIAoJewoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MigwLCBjb3ZlcmFnZSAqIGNvdmVyYWdlX211bHRpcGxpZXIpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgYXJjY29vcmQgPSAxIC0gYWJzKHJhZGl1c19vdXRzZXQpICsgYWFfb3V0c2V0L3JhZGlpICogY29ybmVyOwoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MihhcmNjb29yZC54KzEsIGFyY2Nvb3JkLnkpOwoJfQoJc2tfUG9zaXRpb24gPSBkZXZjb29yZC54eTAxOwp9CgAAAABwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBGaWxsUlJlY3RPcDo6UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgeF9wbHVzXzE9dmFyY2Nvb3JkX1MwLngsIHk9dmFyY2Nvb3JkX1MwLnk7CgloYWxmIGNvdmVyYWdlOwoJaWYgKDAgPT0geF9wbHVzXzEpIAoJewoJCWNvdmVyYWdlID0gaGFsZih5KTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQgZm4gPSB4X3BsdXNfMSAqICh4X3BsdXNfMSAtIDIpOwoJCWZuID0gZm1hKHkseSwgZm4pOwoJCWZsb2F0IGZud2lkdGggPSBmd2lkdGgoZm4pOwoJCWNvdmVyYWdlID0gLjUgLSBoYWxmKGZuL2Zud2lkdGgpOwoJCWNvdmVyYWdlID0gY2xhbXAoY292ZXJhZ2UsIDAsIDEpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChjb3ZlcmFnZSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCBAMQAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAA5AAAAAAABAAAAACAZAAAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADLAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGIBIAAABAAAAANAEAAAAAAAAAAAAAABAAOAAAABAAAAAAABBAMAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1MoAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAB0DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAiAMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdCBkeDEgPSBza19GcmFnQ29vcmQueCAtIHVpbm5lclJlY3RfUzEuUjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeHkwLngsIGR4MSksIGR4eTAueSksIDAuMCk7CgloYWxmIGJvdHRvbUFscGhhID0gaGFsZihzYXR1cmF0ZSh1aW5uZXJSZWN0X1MxLkIgLSBza19GcmFnQ29vcmQueSkpOwoJaGFsZiBhbHBoYSA9IGJvdHRvbUFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABSAAGQAAAAKFIDMVQUAAAAABIAAAAAQAAAABEERFAUBWKYKAAAIAAQAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1P6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAOBgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIG91dHB1dENvbG9yX1MwKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQGAAAAAAAAAEAAAABJMQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzddOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbN107CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw3OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAAGIAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAC8EAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQgZHgxID0gc2tfRnJhZ0Nvb3JkLnggLSB1aW5uZXJSZWN0X1MxLlI7CglmbG9hdDIgZHh5ID0gbWF4KGZsb2F0MihtYXgoZHh5MC54LCBkeDEpLCBkeHkwLnkpLCAwLjApOwoJaGFsZiBib3R0b21BbHBoYSA9IGhhbGYoc2F0dXJhdGUodWlubmVyUmVjdF9TMS5CIC0gc2tfRnJhZ0Nvb3JkLnkpKTsKCWhhbGYgYWxwaGEgPSBib3R0b21BbHBoYSAqIGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAABAEAAAABJIQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs1XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8NTsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCEIBAACAIAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAFgQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKS4wMDByOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OCBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAEDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgY292ZXJhZ2UgPSB2Y292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoY292ZXJhZ2UpKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NDBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAsNAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQDAAAAAAABAEAAAABJGQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8NDsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGIBIAAABAAAAANAEAAAAAAAAAAAAAABAAOAAAABAAAAAAABBAMAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1MoAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAB0DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAAAAAAQFV5W6JEAAAAAYAAAABEGIRLQQSCIAACAH5FYUHQAAAAEAAAAABAAMQEAAAAEANDMXWJYBAAAGAAAAABACEK4GE4SAAAAA7JOVF4AAAAAAAAQAAAAGIBFCMXXZ2BAAACAACAAAACE2YGE6SAAAAAHIO5E4CAYAAAABAAAAACIMCRCWBRHUQAAAAAAAAAAAVREL6SYKDYAAAACAAAAABAAM6W52JYABAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAAIQAAQAAAAAAAA":"CgAAAExTS1M8AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAG8JAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIxNikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","B3IBQAAADAAAIAABBYAAAEIXBAAACDQMAAABIFAAAAAAAAAAAAAABFIBBYSAO7ICAAAAACX4GM5AAAAAAAIAAAAACAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAAAAAAQAAAAAEARQUPBT7IAAAAAACAAAAAAQFU5S6ZGAAAAAYAAAAAYCEOGAEGBAAAAAH5FYUXQAAAAAAACAAAAAMQEAIAAAANDMXXJYBAAAGAAAAAAABDRYBRQIQAAAAPJO5E4AAQAAAAAQAAAAGIBBCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAABAAAAAAIEDIYOAOMCEAAAAAAAAAAAFREL6S4KDYAAAACAAAAAAAAM6U52JYEBQAAAAAAAAAACYIEAIAAAAAAABUARCAIAAAAAAAAAABUABAAAAAEAAAAAIBEABKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGluTG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBjb2xvciA9IGluQ29sb3I7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cgl2aW5Db3ZlcmFnZV9TMCA9IGluQ292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGluTG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAVgwAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYgdmluQ292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAHAAAABQAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1O0AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAALgMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAAAAAAAAIAAAABSEIAL7YYDQAAAAAAACAAAAABQEKAAAAIAAAADIBAQGIAAAAAAAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAACAA4AAAACAAAAAAACCAYAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1ODAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTEyKSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAbQYAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTEpIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8xX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xMTIpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMV9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMV9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfMV9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF8xX2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAABAARY4AQYEIAAAAPUXKS6AAAAAAAAQAAAADE2CEOGAEGBAAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAEMAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MhAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAAB8IAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAARgAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAAAAAAQFV5W6JEAAAAAYAAAABEGIRLQQSCIAACAH5FYUHQAAAAEAAAAABAAMQEAAAAEANDMXWJYBAAAGAAAAABACEK4GE4SAAAAA7JOVF4AAAAAAAAQAAAAGIBFCMXXZ2BAAACAACAAAACE2YGE6SAAAAAHIO5E4CAYAAAABAAAAACIMCRCWBRHUQAAAAAAAAAAAVREL6SYKDYAAAACAAAAABAAM6W52JYABAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAAAIQAAQAAAAAAAA":"CgAAAExTS1M8AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAG8JAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIxNikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAARgAAAAEAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAAAAEAAAABJYQAAAAAAAAIAAAAAWCBAAAABAAAAANAEIQCAAAAAAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAADQBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTNdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTM7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAACgAAAAAAAAABAAAAAAAAAA==","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAHADEHC6BAAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAMAMY4LYEAAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAQBTTRPAQAAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAAAZ5YHQIIAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBCTZQ7BQUAAAAAAAIAAAADEZAZRYXQIAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABAAOAAAABAAAAAAABBAMUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1NnBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAACoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBSYWRpYWxMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYobGVuZ3RoKF90bXBfM19jb29yZHMpKSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1PrAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAZAsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0IGNvdmVyYWdlID0gdmNvdmVyYWdlX1MwOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGNvdmVyYWdlKSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAABAAAAAAAAAAQAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAJAAAADAAAAAEAAAAdAAAAEAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1ObAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAAYQADAAAEAFEURUKQKAAAIAAQAAAAAIAAAABSCICWKY2FAEAAAUAAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1PaBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAFREAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCBAMQACAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAAHGADYAAAQAAAAAAAAAOQAAAAAAAQAAAABAMQAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MnAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluSGFpclF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZAoJdkhhaXJRdWFkRWRnZV9TMCA9IGluSGFpclF1YWRFZGdlOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8xX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAsFAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmNCB2SGFpclF1YWRFZGdlX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZHV2ZHkgPSBoYWxmMihkRmR5KHZIYWlyUXVhZEVkZ2VfUzAueHkpKTsKCWhhbGYyIGdGID0gaGFsZjIoMi4wICogdkhhaXJRdWFkRWRnZV9TMC54ICogZHV2ZHgueCAtIGR1dmR4LnksICAgICAgICAgICAgICAgMi4wICogdkhhaXJRdWFkRWRnZV9TMC54ICogZHV2ZHkueCAtIGR1dmR5LnkpOwoJZWRnZUFscGhhID0gaGFsZih2SGFpclF1YWRFZGdlX1MwLnggKiB2SGFpclF1YWRFZGdlX1MwLnggLSB2SGFpclF1YWRFZGdlX1MwLnkpOwoJZWRnZUFscGhhID0gc3FydChlZGdlQWxwaGEgKiBlZGdlQWxwaGEgLyBkb3QoZ0YsIGdGKSk7CgllZGdlQWxwaGEgPSBtYXgoMS4wIC0gZWRnZUFscGhhLCAwLjApOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCh1Q292ZXJhZ2VfUzAgKiBlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAABUAAAAARCB3FMFCAAAAAKAAAAAEAAAAABAENIVANSWCQAAAAAFAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MEAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAD1BwAAY29uc3QgaW50IGtGaWxsQldfUzJfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzJfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzJfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IFJlY3RfUzJfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzJfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MyX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMl9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzIoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MyX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0X1MxLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzI7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAABAEAAAABJWQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMl07CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEyOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OCBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAEDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgY292ZXJhZ2UgPSB2Y292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoY292ZXJhZ2UpKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1P9BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjU2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAAAyw4AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjU2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAGoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABAAAAAAIA2GZPMTQCAAAMAAAAAEACHDQCDARAAAAAPGD4GCQAAAAAAAAABAAAAAGJJHLYYGACAAAAAAAEAAAACRGL345AQAABAABAAAAARQ4A4YEIAAAADYAZBYXAIAAAAAIAAAABSAQBAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAGAGMOF4CAAAAACAAAAABAEMIC263PESAAAAAMAAAAAMDCHCACDAQAAAAGPOB4CCAAAAAAACAAAAAMTJYRYQAQQEAAAAAAAAAGARJ4INQYLAEAAAAAEAAAABSEQM44LYEAAAAAAAAAAADAAUAQAAQAAAAGQCAIBCAAAAAAAAAAAYAADIAAAABCEDWKYKEAAAAAMAAAAAIAAAAACAI2RKA3FMFAAAAAAGAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1O5BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAANgRAABjb25zdCBpbnQga0ZpbGxCV19TMl9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMl9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMl9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKGxlbmd0aChfdG1wXzNfY29vcmRzKSksIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFJhZGlhbExheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBBcHBseVBhaW50QWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0KF9pbnB1dC54eXosIDEuMCkpICogX2lucHV0LncpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gQXBwbHlQYWludEFscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IFJlY3RfUzJfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF83X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgxKSA9PSBrRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzJfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MyX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMl9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzIoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MyX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZEVkZ2UKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZWRnZUFscGhhOwoJaGFsZjIgZHV2ZHggPSBoYWxmMihkRmR4KHZRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZHV2ZHkgPSBoYWxmMihkRmR5KHZRdWFkRWRnZV9TMC54eSkpOwoJaWYgKHZRdWFkRWRnZV9TMC56ID4gMC4wICYmIHZRdWFkRWRnZV9TMC53ID4gMC4wKSAKCXsKCQllZGdlQWxwaGEgPSBoYWxmKG1pbihtaW4odlF1YWRFZGdlX1MwLnosIHZRdWFkRWRnZV9TMC53KSArIDAuNSwgMS4wKSk7Cgl9CgllbHNlIAoJewoJCWhhbGYyIGdGID0gaGFsZjIoaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHgueCAtIGR1dmR4LnkpLCAgICAgICAgICAgICAgICAgaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHkueCAtIGR1dmR5LnkpKTsKCQllZGdlQWxwaGEgPSBoYWxmKHZRdWFkRWRnZV9TMC54KnZRdWFkRWRnZV9TMC54IC0gdlF1YWRFZGdlX1MwLnkpOwoJCWVkZ2VBbHBoYSA9IHNhdHVyYXRlKDAuNSAtIGVkZ2VBbHBoYSAvIGxlbmd0aChnRikpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IEJsZW5kX1MyKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAEIQCAAAAQAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAaBwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCkuMDAwcjsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTM7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAACQAAAAAABQIQCAAAAUAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACyAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogQ292ZXJhZ2UgU2V0IE9wCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQDAAAAAAIBAEAAAABJGQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDQ7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAAHAJRUYWBAAAAA2DXZFAQHAAAAAAAAEAAAAABAEMFPYMZ2AAAAAAAQFV566JAAAAAAYAAAADQEY2EKAUAQAAFA34SQKDYAAAACAAAAABAEMIC263PESAAAAAMAAAAAYCM5AFALAIAAAQF7JMFB4AAAACAAAAAAQAGHEJRUYWBAAAAAAAAAAAFQEL6S4KLYAAAAAAABAAAAAMWU56JIEBYAAAAAAAAAACYIEAAAAEAAAABUARCAIAAAAAAAAAAAUABQAAAAEAAAAAAAEEBQAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1NVBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAAALQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAA+wUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GAAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OrAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5IYWlyUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2SGFpclF1YWRFZGdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkCgl2SGFpclF1YWRFZGdlX1MwID0gaW5IYWlyUXVhZEVkZ2U7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAMQMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHwAAAAgAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAIBAEAAAABJIQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs1XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDU7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAAKUAQDAABYAAABAIAAAABLBAIBAAAAABAEGABBAMAAAAIAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAIAAAAAAAA":"CgAAAExTS1NUAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVLZXJuZWxfUzFbM107CglsYXlvdXQob2Zmc2V0PTEwNCkgaGFsZjIgdUtlcm5lbE9mZnNldF9TMTsKCWxheW91dChvZmZzZXQ9MTA4KSBoYWxmIHVHYWluX1MxOwoJbGF5b3V0KG9mZnNldD0xMTApIGhhbGYgdUJpYXNfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZMb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZMb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAA8AsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVLZXJuZWxfUzFbM107CglsYXlvdXQob2Zmc2V0PTEwNCkgaGFsZjIgdUtlcm5lbE9mZnNldF9TMTsKCWxheW91dChvZmZzZXQ9MTA4KSBoYWxmIHVHYWluX1MxOwoJbGF5b3V0KG9mZnNldD0xMTApIGhhbGYgdUJpYXNfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdkxvY2FsQ29vcmRfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IE1hdHJpeENvbnZvbHV0aW9uX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IHN1bSA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdkxvY2FsQ29vcmRfUzAgLSB1S2VybmVsT2Zmc2V0X1MxOwoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMCwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMF1bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigwLCAxKTsKCQlrID0gdUtlcm5lbF9TMVswXVszXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDAsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzFdWzJdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMSwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMF1bMV07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigxLCAxKTsKCQlrID0gdUtlcm5lbF9TMVsxXVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDEsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzFdWzNdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMiwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMF1bMl07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigyLCAxKTsKCQlrID0gdUtlcm5lbF9TMVsxXVsxXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDIsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzJdWzBdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJaGFsZjQgY29sb3I7Cgljb2xvciA9IHN1bSAqIHVHYWluX1MxICsgdUJpYXNfUzE7Cgljb2xvci5hID0gc2F0dXJhdGUoY29sb3IuYSk7Cgljb2xvci5yZ2IgPSBjbGFtcChjb2xvci5yZ2IsIDAuMCwgY29sb3IuYSk7CglyZXR1cm4gY29sb3I7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhDb252b2x1dGlvbl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAAAQBCFODCOJAAAAAPUXKS6AAAAAAAAQAAAADEGCIRLQYTCIAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAEMAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MnAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAABwCAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzEoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAARgAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAEIQCAAAAQAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAaBwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCkuMDAwcjsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTM7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAAUKQGZLBIAAAAACQAAAABAAAAAGIJAKJJDIVAUAAAQABAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1OBAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAAAhBQAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgUmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDIpID09IGtGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMV9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzFfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MxX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQUFfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKFJlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OCBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAEDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgY292ZXJhZ2UgPSB2Y292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoY292ZXJhZ2UpKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OlBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAAAkDQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTY4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DASAAAAAQAAWAABAYAAQBYH7777Z6QQBAEAAAAAAEAAAAAAAEBSAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OYAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAC2AgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEJpdG1hcFRleHQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApOwoJfQoJb3V0cHV0Q29sb3JfUzAgPSBvdXRwdXRDb2xvcl9TMCAqIHRleENvbG9yOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAA0AAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NDBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAsNAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","B3IBQAAADAAAIAABBYAAAEIXBAAACDQMAAABIFAAAAAAAAAAAAAABFIBBYSAO7ICAAAAACX4GM5AAAAAAAIAAAAACAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAAAAAAQAAAAAEARQUPBT7IAAAAAACAAAAAAQFU5S6ZGAAAAAYAAAAAYCEOGAEGBAAAAAH5FYUXQAAAAAAACAAAAAMQEAIAAAANDMXXJYBAAAGAAAAAAABDRYBRQIQAAAAPJO5E4AAQAAAAAQAAAAGIBBCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAABAAAAAAIEDIYOAOMCEAAAAAAAAAAAFREL6S4KDYAAAACAAAAAAAAM6U52JYEBQAAAAAAAAAACYIEAIAAAAAAABUARCAIAAAAAAAAAABUABAAAAAEAAAAAIBEABKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGluTG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBjb2xvciA9IGluQ29sb3I7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cgl2aW5Db3ZlcmFnZV9TMCA9IGluQ292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGluTG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAVgwAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYgdmluQ292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAHAAAABQAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PuBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MzIwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAACiDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0zMjApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmIGRpc3RhbmNlVG9Jbm5lckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqIChkIC0gY2lyY2xlRWRnZS53KSk7CgloYWxmIGlubmVyQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvSW5uZXJFZGdlKTsKCWVkZ2VBbHBoYSAqPSBpbm5lckFscGhhOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAAAAEAAAABJWQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTJdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEyOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1MqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAF0MAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAAHAAAAAgAAAABAAAACQAAAAwAAAABAAAAHQAAABAAAAABAAAAGAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMADSAB4QAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1MiAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAFAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBvdXRwdXRDb2xvcl9TMCkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAACIDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAACIDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MrAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzJfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABwAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","GAAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OrAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5IYWlyUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2SGFpclF1YWRFZGdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkCgl2SGFpclF1YWRFZGdlX1MwID0gaW5IYWlyUXVhZEVkZ2U7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAMQMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHwAAAAgAAAABAAAAGAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAIBAIAAAABLCIIBAAAAABAEGABBAMAACAIAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMCkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAAaQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAACIDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCBAMQAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAPsMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MrAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzJfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABwAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AY7SRAADQAAAOAEARAFQJAABBADAAAILBYAACCYUAAAQWGUAAEECAAAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGhhbGYzIGluQ2xpcFBsYW5lOwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBoYWxmMyBpbklzZWN0UGxhbmU7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGhhbGYzIGluVW5pb25QbGFuZTsKbGF5b3V0KGxvY2F0aW9uID0gNikgaW4gZmxvYXQ0IGluUm91bmRDYXBDZW50ZXJzOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmMyB2aW5DbGlwUGxhbmVfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBoYWxmMyB2aW5Jc2VjdFBsYW5lX1MwOwpsYXlvdXQobG9jYXRpb24gPSAzKSBvdXQgaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgb3V0IGZsb2F0NCB2aW5Sb3VuZENhcENlbnRlcnNfUzA7CmxheW91dChsb2NhdGlvbiA9IDUpIGZsYXQgb3V0IGZsb2F0IHZjYXBSYWRpdXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDYpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5DbGlwUGxhbmVfUzAgPSBpbkNsaXBQbGFuZTsKCXZpbklzZWN0UGxhbmVfUzAgPSBpbklzZWN0UGxhbmU7Cgl2aW5VbmlvblBsYW5lX1MwID0gaW5VbmlvblBsYW5lOwoJdmluUm91bmRDYXBDZW50ZXJzX1MwID0gaW5Sb3VuZENhcENlbnRlcnM7Cgl2Y2FwUmFkaXVzX1MwID0gKDEuMCAtIGluQ2lyY2xlRWRnZS53KSAvIDIuMDsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAABeBwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYzIHZpbkNsaXBQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgdmluSXNlY3RQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gNSkgZmxhdCBpbiBmbG9hdCB2Y2FwUmFkaXVzX1MwOwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjMgY2xpcFBsYW5lOwoJY2xpcFBsYW5lID0gdmluQ2xpcFBsYW5lX1MwOwoJaGFsZjMgaXNlY3RQbGFuZTsKCWlzZWN0UGxhbmUgPSB2aW5Jc2VjdFBsYW5lX1MwOwoJaGFsZjMgdW5pb25QbGFuZTsKCXVuaW9uUGxhbmUgPSB2aW5VbmlvblBsYW5lX1MwOwoJZmxvYXQ0IHJvdW5kQ2FwQ2VudGVyczsKCXJvdW5kQ2FwQ2VudGVycyA9IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGYgY2xpcCA9IGhhbGYoc2F0dXJhdGUoY2lyY2xlRWRnZS56ICogZG90KGNpcmNsZUVkZ2UueHksIGNsaXBQbGFuZS54eSkgKyBjbGlwUGxhbmUueikpOwoJY2xpcCAqPSBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCBpc2VjdFBsYW5lLnh5KSArIGlzZWN0UGxhbmUueikpOwoJY2xpcCA9IHNhdHVyYXRlKGNsaXAgKyBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCB1bmlvblBsYW5lLnh5KSArIHVuaW9uUGxhbmUueikpKTsKCWVkZ2VBbHBoYSAqPSBjbGlwOwoJaGFsZiBkY2FwMSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKHZjYXBSYWRpdXNfUzAgLSBsZW5ndGgoY2lyY2xlRWRnZS54eSAtIHJvdW5kQ2FwQ2VudGVycy54eSkpKTsKCWhhbGYgZGNhcDIgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICh2Y2FwUmFkaXVzX1MwIC0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkgLSByb3VuZENhcENlbnRlcnMuencpKSk7CgloYWxmIGNhcEFscGhhID0gKDEgLSBjbGlwKSAqIChtYXgoZGNhcDEsIDApICsgbWF4KGRjYXAyLCAwKSk7CgllZGdlQWxwaGEgPSBtaW4oZWRnZUFscGhhICsgY2FwQWxwaGEsIDEuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAABAAAAAAAAAAcAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAeAAAAHAAAAAEAAAAeAAAAKAAAAAEAAAAeAAAANAAAAAEAAAAfAAAAQAAAAAEAAABQAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAPsMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAHUAAAAABABLFMNCQCAAAKAAAAAEAAAAABAEMIRA5SWCRAAAAAFAAAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1OLAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAsQ4AAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAA5AAAAAAABAAAAACAZAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADLAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","FABQMYAAMAAAEADAAABAEYAAAICIACWAABQAAAQAMAAAEATAAABAIYAAAIDGAAACBAQOEAQKAAAAAAFAGLAIDZFAJ4AAAACAQF7UMBYAAAAABITF56OQIAAAQAAQAAAATQEU3MJAAAAAB5F3UTQACAAAAAAAACAAAAAMRCAC76GA4AAAAAAEJS66HMEQAAAAAMAAAABYCONGEQIAAAAOQ52JYEBQAAAABAAAAAEQCGEJNPLXCIAAAAAGAAAAA4BGGTCYEAAAADIO7EUCA4AAAABAAAAAAIEDTQEU3MJAAAAAAAAAAAAKYSF7JMFB4AAAABAAAAAAQAGPLO5E4AAQAAAAAAAAAAFMEAAEAAAAAAAA2AIRAEAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1NjDwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDQgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gZmxvYXQ0IGxvY2FscmVjdDsKbGF5b3V0KGxvY2F0aW9uID0gOCkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJZmxvYXQyIFQgPSB2ZXJ0ZXhwb3MgKiAuNSArIC41OwoJZmxvYXQyIGxvY2FsY29vcmQgPSBsb2NhbHJlY3QueHkgKiAoMSAtIFQpICsgbG9jYWxyZWN0Lnp3ICogVCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUuencgKiBULnl4OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogbG9jYWxjb29yZC54eTE7Cgl9Cn0KAAAAAABbCwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAAAAgAAAAMAAAAfAAAAAAAAAAEAAAAfAAAAEAAAAAEAAAAfAAAAIAAAAAEAAAAwAAAABgAAAB8AAAAAAAAAAgAAAB8AAAAQAAAAAgAAAB8AAAAgAAAAAgAAAB8AAAAwAAAAAgAAAB8AAABAAAAAAgAAAAkAAABQAAAAAgAAAFQAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","B3IBQAAADAAAIAABBYAAAEIXBAAACDQMAAABIFAAAAAAAAAAAAAABFQBBYSAO7ICAAAAACX4GM5AAAAAAAIAAAAACAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAAAAAAQAAAAAEARQUPBT7IAAAAAACAAAAAAQFU5S6ZGAAAAAYAAAAAYCEOGAEGBAAAAAH5FYUXQAAAAAAACAAAAAMQEAIAAAANDMXXJYBAAAGAAAAAAABDRYBRQIQAAAAPJO5E4AAQAAAAAQAAAAGIBBCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAABAAAAAAIEDIYOAOMCEAAAAAAAAAAAFREL6S4KDYAAAACAAAAAAAAM6U52JYEBQAAAAAAAAAACYIEAIAAAAAAABUARCAIAAAAAAAAAAAGEAAYAABABIFANSWCQAACAAAAAAAACAAAAAMQSAVSWGRIBAAABAAAAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAAAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OFBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgaW5Mb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBoYWxmIGluQ292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmIHZpbkNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IGNvbG9yID0gaW5Db2xvcjsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXZpbkNvdmVyYWdlX1MwID0gaW5Db3ZlcmFnZTsKCXNrX1Bvc2l0aW9uID0gX3RtcF8xX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogaW5Mb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAA9g8AAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgUmVjdF9TMl9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzdfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDApID09IGtGaWxsQldfUzJfYzAgfHwgaW50KDApID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMl9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzJfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MyX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgwKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCB8fCBpbnQoMCkgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBCbGVuZF9TMihoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKFJlY3RfUzJfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CgloYWxmIGFscGhhID0gMS4wOwoJYWxwaGEgPSB2aW5Db3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoYWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IEJsZW5kX1MyKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABwAAAAUAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAHUAAAAABABLFMNCQCAAAKAAAAACADYAABAAAAAAIBDCEIHMVQUIAAAABIAAAAAAAAAAAOAQHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1PpAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDQgdWlubmVyUmVjdF9TMl9jMTsKCWxheW91dChvZmZzZXQ9MTkyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzJfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAAQxAAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0NCB1aW5uZXJSZWN0X1MyX2MxOwoJbGF5b3V0KG9mZnNldD0xOTIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMl9jMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgUmVjdF9TMl9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzdfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDIpID09IGtGaWxsQldfUzJfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMl9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzJfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MyX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyX2MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMl9jMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMl9jMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyX2MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgQ2lyY3VsYXJSUmVjdF9TMl9jMShfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABADI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAAAAEAAAAAZFE5PDAYAIAAAAABITF56OQIAAAQAAQAAAARGWBRHUQAAAAB2DXJHAQGAAAAAEAAAAASAIYRFV5O4JAAAAAAYAAAABEWJRHQQQCAAAKBXZFAUHQAAAAIAAAAACAAYJVSMJ4EEAQAAAAAAAABMBC7UXCS6AAAAAAAAIAAAADFVHPSKBAOAAAAAAAAAAAWCBAAAABAAAAANAEIQCAAAAAAAAAAABQAAGQAAAAKFIDMVQUAAAAAAYAAAAAQAAAADEEQFEURUKQKAAAYAAAAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc182X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAIBEAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgQXBwbHlQYWludEFscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNChfaW5wdXQueHl6LCAxLjApKSAqIF9pbnB1dC53KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IEFwcGx5UGFpbnRBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMSkgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDEpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRFZGdlCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2UXVhZEVkZ2VfUzAueHkpKTsKCWhhbGYyIGR1dmR5ID0gaGFsZjIoZEZkeSh2UXVhZEVkZ2VfUzAueHkpKTsKCWlmICh2UXVhZEVkZ2VfUzAueiA+IDAuMCAmJiB2UXVhZEVkZ2VfUzAudyA+IDAuMCkgCgl7CgkJZWRnZUFscGhhID0gaGFsZihtaW4obWluKHZRdWFkRWRnZV9TMC56LCB2UXVhZEVkZ2VfUzAudykgKyAwLjUsIDEuMCkpOwoJfQoJZWxzZSAKCXsKCQloYWxmMiBnRiA9IGhhbGYyKGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR4LnggLSBkdXZkeC55KSwgICAgICAgICAgICAgICAgIGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR5LnggLSBkdXZkeS55KSk7CgkJZWRnZUFscGhhID0gaGFsZih2UXVhZEVkZ2VfUzAueCp2UXVhZEVkZ2VfUzAueCAtIHZRdWFkRWRnZV9TMC55KTsKCQllZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUgLSBlZGdlQWxwaGEgLyBsZW5ndGgoZ0YpKTsKCX0KCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBCbGVuZF9TMihvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCGAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAAFCUBWKYKAAAAAAUAAAAAIAAAABSCICSKI2FIFAAAEAAIAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1OSAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAyAUAAGNvbnN0IGludCBrRmlsbEJXX1MxX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MxX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MxX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIGhhbGY0KDEpKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","AZAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1N4AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bG9jYWxNYXRyaXhfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGZsb2F0M3gyKHVsb2NhbE1hdHJpeF9TMCkgKiBpblBvc2l0aW9uLnh5MTsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAnQIAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1OtAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAABgFAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IENpcmNsZUJsdXJfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmMiB2ZWMgPSBoYWxmMigoc2tfRnJhZ0Nvb3JkLnh5IC0gZmxvYXQyKHVjaXJjbGVEYXRhX1MxX2MwLnh5KSkgKiBmbG9hdCh1Y2lyY2xlRGF0YV9TMV9jMC53KSk7CgloYWxmIGRpc3QgPSBsZW5ndGgodmVjKSArICgwLjUgLSB1Y2lyY2xlRGF0YV9TMV9jMC56KSAqIHVjaXJjbGVEYXRhX1MxX2MwLnc7CglyZXR1cm4gaGFsZjQoTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIoZGlzdCwgMC41KSkpLnd3d3cpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoQ2lyY2xlQmx1cl9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIBAEAAAABJYQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMzsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAABAEAAAABJKQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs2XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8NjsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAEADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1M8DQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCByYWRpaV9zZWxlY3RvcjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IGNvcm5lcl9hbmRfcmFkaXVzX291dHNldHM7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBhYV9ibG9hdF9hbmRfY292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCByYWRpaV94OwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBmbG9hdDQgcmFkaWlfeTsKbGF5b3V0KGxvY2F0aW9uID0gNSkgaW4gZmxvYXQ0IHNrZXc7CmxheW91dChsb2NhdGlvbiA9IDYpIGluIGZsb2F0MiB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlOwpsYXlvdXQobG9jYXRpb24gPSA3KSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRmlsbFJSZWN0T3A6OlByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7CglmbG9hdCBhYV9ibG9hdF9tdWx0aXBsaWVyID0gMTsKCWZsb2F0MiBjb3JuZXIgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnh5OwoJZmxvYXQyIHJhZGl1c19vdXRzZXQgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnp3OwoJZmxvYXQyIGFhX2Jsb2F0X2RpcmVjdGlvbiA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS54eTsKCWZsb2F0IGlzX2xpbmVhcl9jb3ZlcmFnZSA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS53OwoJZmxvYXQyIHBpeGVsbGVuZ3RoID0gaW52ZXJzZXNxcnQoZmxvYXQyKGRvdChza2V3Lnh6LCBza2V3Lnh6KSwgZG90KHNrZXcueXcsIHNrZXcueXcpKSk7CglmbG9hdDQgbm9ybWFsaXplZF9heGlzX2RpcnMgPSBza2V3ICogcGl4ZWxsZW5ndGgueHl4eTsKCWZsb2F0MiBheGlzd2lkdGhzID0gKGFicyhub3JtYWxpemVkX2F4aXNfZGlycy54eSkgKyBhYnMobm9ybWFsaXplZF9heGlzX2RpcnMuencpKTsKCWZsb2F0MiBhYV9ibG9hdHJhZGl1cyA9IGF4aXN3aWR0aHMgKiBwaXhlbGxlbmd0aCAqIC41OwoJZmxvYXQ0IHJhZGlpX2FuZF9uZWlnaGJvcnMgPSByYWRpaV9zZWxlY3RvciogZmxvYXQ0eDQocmFkaWlfeCwgcmFkaWlfeSwgcmFkaWlfeC55eHd6LCByYWRpaV95Lnd6eXgpOwoJZmxvYXQyIHJhZGlpID0gcmFkaWlfYW5kX25laWdoYm9ycy54eTsKCWZsb2F0MiBuZWlnaGJvcl9yYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMuenc7CglmbG9hdCBjb3ZlcmFnZV9tdWx0aXBsaWVyID0gMTsKCWlmIChhbnkoZ3JlYXRlclRoYW4oYWFfYmxvYXRyYWRpdXMsIGZsb2F0MigxKSkpKSAKCXsKCQljb3JuZXIgPSBtYXgoYWJzKGNvcm5lciksIGFhX2Jsb2F0cmFkaXVzKSAqIHNpZ24oY29ybmVyKTsKCQljb3ZlcmFnZV9tdWx0aXBsaWVyID0gMSAvIChtYXgoYWFfYmxvYXRyYWRpdXMueCwgMSkgKiBtYXgoYWFfYmxvYXRyYWRpdXMueSwgMSkpOwoJCXJhZGlpID0gZmxvYXQyKDApOwoJfQoJZmxvYXQgY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UuejsKCWlmIChhbnkobGVzc1RoYW4ocmFkaWksIGFhX2Jsb2F0cmFkaXVzICogMS41KSkpIAoJewoJCXJhZGlpID0gZmxvYXQyKDApOwoJCWFhX2Jsb2F0X2RpcmVjdGlvbiA9IHNpZ24oY29ybmVyKTsKCQlpZiAoY292ZXJhZ2UgPiAuNSkgCgkJewoJCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSAtYWFfYmxvYXRfZGlyZWN0aW9uOwoJCX0KCQlpc19saW5lYXJfY292ZXJhZ2UgPSAxOwoJfQoJZWxzZSAKCXsKCQlyYWRpaSA9IGNsYW1wKHJhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQluZWlnaGJvcl9yYWRpaSA9IGNsYW1wKG5laWdoYm9yX3JhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQlmbG9hdDIgc3BhY2luZyA9IDIgLSByYWRpaSAtIG5laWdoYm9yX3JhZGlpOwoJCWZsb2F0MiBleHRyYV9wYWQgPSBtYXgocGl4ZWxsZW5ndGggKiAuMDYyNSAtIHNwYWNpbmcsIGZsb2F0MigwKSk7CgkJcmFkaWkgLT0gZXh0cmFfcGFkICogLjU7Cgl9CglmbG9hdDIgYWFfb3V0c2V0ID0gYWFfYmxvYXRfZGlyZWN0aW9uICogYWFfYmxvYXRyYWRpdXMgKiBhYV9ibG9hdF9tdWx0aXBsaWVyOwoJZmxvYXQyIHZlcnRleHBvcyA9IGNvcm5lciArIHJhZGl1c19vdXRzZXQgKiByYWRpaSArIGFhX291dHNldDsKCWlmIChjb3ZlcmFnZSA+IC41KSAKCXsKCQlpZiAoYWFfYmxvYXRfZGlyZWN0aW9uLnggIT0gMCAmJiB2ZXJ0ZXhwb3MueCAqIGNvcm5lci54IDwgMCkgCgkJewoJCQlmbG9hdCBiYWNrc2V0ID0gYWJzKHZlcnRleHBvcy54KTsKCQkJdmVydGV4cG9zLnggPSAwOwoJCQl2ZXJ0ZXhwb3MueSArPSBiYWNrc2V0ICogc2lnbihjb3JuZXIueSkgKiBwaXhlbGxlbmd0aC55L3BpeGVsbGVuZ3RoLng7CgkJCWNvdmVyYWdlID0gKGNvdmVyYWdlIC0gLjUpICogYWJzKGNvcm5lci54KSAvIChhYnMoY29ybmVyLngpICsgYmFja3NldCkgKyAuNTsKCQl9CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi55ICE9IDAgJiYgdmVydGV4cG9zLnkgKiBjb3JuZXIueSA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueSk7CgkJCXZlcnRleHBvcy55ID0gMDsKCQkJdmVydGV4cG9zLnggKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLngpICogcGl4ZWxsZW5ndGgueC9waXhlbGxlbmd0aC55OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueSkgLyAoYWJzKGNvcm5lci55KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJfQoJZmxvYXQyeDIgc2tld21hdHJpeCA9IGZsb2F0MngyKHNrZXcueHksIHNrZXcuencpOwoJZmxvYXQyIGRldmNvb3JkID0gdmVydGV4cG9zICogc2tld21hdHJpeCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUueHk7CglpZiAoMCAhPSBpc19saW5lYXJfY292ZXJhZ2UpIAoJewoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MigwLCBjb3ZlcmFnZSAqIGNvdmVyYWdlX211bHRpcGxpZXIpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgYXJjY29vcmQgPSAxIC0gYWJzKHJhZGl1c19vdXRzZXQpICsgYWFfb3V0c2V0L3JhZGlpICogY29ybmVyOwoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MihhcmNjb29yZC54KzEsIGFyY2Nvb3JkLnkpOwoJfQoJc2tfUG9zaXRpb24gPSBkZXZjb29yZC54eTAxOwp9CgAAAABwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBGaWxsUlJlY3RPcDo6UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgeF9wbHVzXzE9dmFyY2Nvb3JkX1MwLngsIHk9dmFyY2Nvb3JkX1MwLnk7CgloYWxmIGNvdmVyYWdlOwoJaWYgKDAgPT0geF9wbHVzXzEpIAoJewoJCWNvdmVyYWdlID0gaGFsZih5KTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQgZm4gPSB4X3BsdXNfMSAqICh4X3BsdXNfMSAtIDIpOwoJCWZuID0gZm1hKHkseSwgZm4pOwoJCWZsb2F0IGZud2lkdGggPSBmd2lkdGgoZm4pOwoJCWNvdmVyYWdlID0gLjUgLSBoYWxmKGZuL2Zud2lkdGgpOwoJCWNvdmVyYWdlID0gY2xhbXAoY292ZXJhZ2UsIDAsIDEpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChjb3ZlcmFnZSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCEIBAACAIAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAFgQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKS4wMDByOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAABAARY4AQYEIAAAAPUXKS6AAAAAAAAQAAAADE2CEOGAEGBAAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MhAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAAB8IAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACGAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AY7SRAADQAAAOAEARAFQJAABBADAAAILBYAACCYUAAAQWGUAAEECAAAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGhhbGYzIGluQ2xpcFBsYW5lOwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBoYWxmMyBpbklzZWN0UGxhbmU7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGhhbGYzIGluVW5pb25QbGFuZTsKbGF5b3V0KGxvY2F0aW9uID0gNikgaW4gZmxvYXQ0IGluUm91bmRDYXBDZW50ZXJzOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmMyB2aW5DbGlwUGxhbmVfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBoYWxmMyB2aW5Jc2VjdFBsYW5lX1MwOwpsYXlvdXQobG9jYXRpb24gPSAzKSBvdXQgaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgb3V0IGZsb2F0NCB2aW5Sb3VuZENhcENlbnRlcnNfUzA7CmxheW91dChsb2NhdGlvbiA9IDUpIGZsYXQgb3V0IGZsb2F0IHZjYXBSYWRpdXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDYpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5DbGlwUGxhbmVfUzAgPSBpbkNsaXBQbGFuZTsKCXZpbklzZWN0UGxhbmVfUzAgPSBpbklzZWN0UGxhbmU7Cgl2aW5VbmlvblBsYW5lX1MwID0gaW5VbmlvblBsYW5lOwoJdmluUm91bmRDYXBDZW50ZXJzX1MwID0gaW5Sb3VuZENhcENlbnRlcnM7Cgl2Y2FwUmFkaXVzX1MwID0gKDEuMCAtIGluQ2lyY2xlRWRnZS53KSAvIDIuMDsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAABeBwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYzIHZpbkNsaXBQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgdmluSXNlY3RQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gNSkgZmxhdCBpbiBmbG9hdCB2Y2FwUmFkaXVzX1MwOwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjMgY2xpcFBsYW5lOwoJY2xpcFBsYW5lID0gdmluQ2xpcFBsYW5lX1MwOwoJaGFsZjMgaXNlY3RQbGFuZTsKCWlzZWN0UGxhbmUgPSB2aW5Jc2VjdFBsYW5lX1MwOwoJaGFsZjMgdW5pb25QbGFuZTsKCXVuaW9uUGxhbmUgPSB2aW5VbmlvblBsYW5lX1MwOwoJZmxvYXQ0IHJvdW5kQ2FwQ2VudGVyczsKCXJvdW5kQ2FwQ2VudGVycyA9IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGYgY2xpcCA9IGhhbGYoc2F0dXJhdGUoY2lyY2xlRWRnZS56ICogZG90KGNpcmNsZUVkZ2UueHksIGNsaXBQbGFuZS54eSkgKyBjbGlwUGxhbmUueikpOwoJY2xpcCAqPSBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCBpc2VjdFBsYW5lLnh5KSArIGlzZWN0UGxhbmUueikpOwoJY2xpcCA9IHNhdHVyYXRlKGNsaXAgKyBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCB1bmlvblBsYW5lLnh5KSArIHVuaW9uUGxhbmUueikpKTsKCWVkZ2VBbHBoYSAqPSBjbGlwOwoJaGFsZiBkY2FwMSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKHZjYXBSYWRpdXNfUzAgLSBsZW5ndGgoY2lyY2xlRWRnZS54eSAtIHJvdW5kQ2FwQ2VudGVycy54eSkpKTsKCWhhbGYgZGNhcDIgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICh2Y2FwUmFkaXVzX1MwIC0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkgLSByb3VuZENhcENlbnRlcnMuencpKSk7CgloYWxmIGNhcEFscGhhID0gKDEgLSBjbGlwKSAqIChtYXgoZGNhcDEsIDApICsgbWF4KGRjYXAyLCAwKSk7CgllZGdlQWxwaGEgPSBtaW4oZWRnZUFscGhhICsgY2FwQWxwaGEsIDEuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAABAAAAAAAAAAcAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAeAAAAHAAAAAEAAAAeAAAAKAAAAAEAAAAeAAAANAAAAAEAAAAfAAAAQAAAAAEAAABQAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1ObAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1ObAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","I4EAAAIAAEHAAAAAAAAAAAAAAAAIQAAAAAAIBEABAAAAACQAAAAAIAAAAD6QAAAAAEAAAAAAAAAAAAQAAAAAAAAAAA":"CgAAAExTS1M2AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGlucHV0UG9pbnQ7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIHRlc3NlbGxhdGVfU2ltcGxlVHJpYW5nbGVTaGFkZXIKCWZsb2F0MngyIEFGRklORV9NQVRSSVggPSBmbG9hdDJ4Mih1YWZmaW5lTWF0cml4X1MwLnh5LCB1YWZmaW5lTWF0cml4X1MwLnp3KTsKCWZsb2F0MiBUUkFOU0xBVEUgPSB1dHJhbnNsYXRlX1MwOwoJZmxvYXQyIGxvY2FsY29vcmQgPSBpbnB1dFBvaW50OwoJZmxvYXQyIHZlcnRleHBvcyA9IEFGRklORV9NQVRSSVggKiBsb2NhbGNvb3JkICsgVFJBTlNMQVRFOwoJc2tfUG9zaXRpb24gPSB2ZXJ0ZXhwb3MueHkwMTsKfQoAAAAAAACKAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIHRlc3NlbGxhdGVfU2ltcGxlVHJpYW5nbGVTaGFkZXIKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gdWNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogRGlzYWJsZSBDb2xvcgoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAEAAAAAAAAAAQAAAB0AAAAAAAAAAQAAAAgAAAAAAAAACgAAAAAAAAAAAAAA/QAAAA=="}} \ No newline at end of file +{"platform":"ios","name":"Mark’s iPhone","engineRevision":"b24591ed328a2d4ce6505819e2f5898a78132f7f","data":{"GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQKAAAAAAABAEAAAABJUQAAAAAACAIAAAAAWCBAAAIBAAAAANAEIQCAAAAQAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMV07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAaBwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzExXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCkuMDAwcjsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTE7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAHADEHC6BAAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAMAMY4LYEAAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAQBTTRPAQAAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAAAZ5YHQIIAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBCTZQ7BQUAAAAAAAIAAAADEZAZRYXQIAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABQAAGQAAAAKFIDMVQUAAAAABIAAAAAQAAAABEERFAUBWKYKAAAIAAQAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAMoPAABjb25zdCBpbnQga0ZpbGxCV19TMl9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMl9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMl9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKGxlbmd0aChfdG1wXzNfY29vcmRzKSksIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFJhZGlhbExheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAJwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MrAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzJfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABwAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGQBIAAABAAAAANAEAAAAAAAAAAAAAABQAAGQAAAAFJ3XASIUAAAAAAYAAAAAQAAAAAAEQCGKTXOBEBIAABAABAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NRAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVjaXJjbGVfUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAANAYAAGNvbnN0IGludCBrRmlsbEFBX1MyX2MwID0gMTsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWNpcmNsZV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2lyY2xlX1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBkOwoJaWYgKGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzApIAoJewoJCWQgPSBoYWxmKChsZW5ndGgoKHVjaXJjbGVfUzJfYzAueHkgLSBza19GcmFnQ29vcmQueHkpICogdWNpcmNsZV9TMl9jMC53KSAtIDEuMCkgKiB1Y2lyY2xlX1MyX2MwLnopOwoJfQoJZWxzZSAKCXsKCQlkID0gaGFsZigoMS4wIC0gbGVuZ3RoKCh1Y2lyY2xlX1MyX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzJfYzAudykpICogdWNpcmNsZV9TMl9jMC56KTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChpbnQoMSkgPT0ga0ZpbGxBQV9TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzAgPyBzYXR1cmF0ZShkKSA6IGhhbGYoZCA+IDAuNSA/IDEgOiAwKSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoX3NyYywgQ2lyY2xlX1MyX2MwKF9zcmMpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBCbGVuZF9TMihvdXRwdXRfUzEsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HTQAAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAQAHAAAAAQAAAAAAAQQGAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRFZGdlCgl2UXVhZEVkZ2VfUzAgPSBpblF1YWRFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAiwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0Owp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkRWRnZQoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodlF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodlF1YWRFZGdlX1MwLnh5KSk7CglpZiAodlF1YWRFZGdlX1MwLnogPiAwLjAgJiYgdlF1YWRFZGdlX1MwLncgPiAwLjApIAoJewoJCWVkZ2VBbHBoYSA9IGhhbGYobWluKG1pbih2UXVhZEVkZ2VfUzAueiwgdlF1YWRFZGdlX1MwLncpICsgMC41LCAxLjApKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjIgZ0YgPSBoYWxmMihoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeC54IC0gZHV2ZHgueSksICAgICAgICAgICAgICAgICBoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeS54IC0gZHV2ZHkueSkpOwoJCWVkZ2VBbHBoYSA9IGhhbGYodlF1YWRFZGdlX1MwLngqdlF1YWRFZGdlX1MwLnggLSB2UXVhZEVkZ2VfUzAueSk7CgkJZWRnZUFscGhhID0gc2F0dXJhdGUoMC41IC0gZWRnZUFscGhhIC8gbGVuZ3RoKGdGKSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAAAAEAAAABJYQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTNdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADIAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1MDAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTgwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAL0GAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgQ2lyY2xlQmx1cl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYyIHZlYyA9IGhhbGYyKChza19GcmFnQ29vcmQueHkgLSBmbG9hdDIodWNpcmNsZURhdGFfUzFfYzAueHkpKSAqIGZsb2F0KHVjaXJjbGVEYXRhX1MxX2MwLncpKTsKCWhhbGYgZGlzdCA9IGxlbmd0aCh2ZWMpICsgKDAuNSAtIHVjaXJjbGVEYXRhX1MxX2MwLnopICogdWNpcmNsZURhdGFfUzFfYzAudzsKCXJldHVybiBoYWxmNChNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIGZsb2F0MihoYWxmMihkaXN0LCAwLjUpKSkud3d3dyk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShDaXJjbGVCbHVyX1MxX2MwKF9zcmMpLCBfc3JjKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OrBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAdQ0AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAACQAAAAAABQIQCAAAAUAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAGAAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACyAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogQ292ZXJhZ2UgU2V0IE9wCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAA5AAAAAAABAAAAACAZAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADLAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCEIBAACAAAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAOQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpLjAwMHI7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCQlza19GcmFnQ29sb3IgPSBza19GcmFnQ29sb3IuYTAwMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQIAAAAAAAAAEAAAABJQQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NPAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzldOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAClBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbOV07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jkcyk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8OTsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAGIAAAAACAAAAADZEAIAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1MAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMV9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAFgUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzFfYzAuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdCBkeDEgPSBza19GcmFnQ29vcmQueCAtIHVpbm5lclJlY3RfUzFfYzAuUjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeHkwLngsIGR4MSksIGR4eTAueSksIDAuMCk7CgloYWxmIGJvdHRvbUFscGhhID0gaGFsZihzYXR1cmF0ZSh1aW5uZXJSZWN0X1MxX2MwLkIgLSBza19GcmFnQ29vcmQueSkpOwoJaGFsZiBhbHBoYSA9IGJvdHRvbUFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzFfYzAueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBDaXJjdWxhclJSZWN0X1MxX2MwKF9pbnB1dCkgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAGIAHSACAAAAQAAAAAA5AAAAAAABAAAAACAZAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1PfAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IGZpbGxCb3VuZHM7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgbG9jYXRpb25zOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIERyYXdBdGxhc1BhdGhTaGFkZXIKCWZsb2F0MiB1bml0Q29vcmQgPSBmbG9hdDIoc2tfVmVydGV4SUQgJiAxLCBza19WZXJ0ZXhJRCA+PiAxKTsKCWZsb2F0MiBkZXZDb29yZCA9IG1peChmaWxsQm91bmRzLnh5LCBmaWxsQm91bmRzLnp3LCB1bml0Q29vcmQpOwoJZmxvYXQyIGF0bGFzVG9wTGVmdCA9IGZsb2F0MihhYnMobG9jYXRpb25zLngpIC0gMSwgbG9jYXRpb25zLnkpOwoJZmxvYXQyIGRldlRvcExlZnQgPSBsb2NhdGlvbnMuenc7Cglib29sIHRyYW5zcG9zZWQgPSBsb2NhdGlvbnMueCA8IDA7CglmbG9hdDIgYXRsYXNDb29yZCA9IGRldkNvb3JkIC0gZGV2VG9wTGVmdDsKCWlmICh0cmFuc3Bvc2VkKSAKCXsKCQlhdGxhc0Nvb3JkID0gYXRsYXNDb29yZC55eDsKCX0KCWF0bGFzQ29vcmQgKz0gYXRsYXNUb3BMZWZ0OwoJdmF0bGFzQ29vcmRfUzAgPSBhdGxhc0Nvb3JkICogdWF0bGFzX2FkanVzdF9TMDsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBkZXZDb29yZC54eTAxOwp9CgAAAAAAIgQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRHJhd0F0bGFzUGF0aFNoYWRlcgoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGYgYXRsYXNDb3ZlcmFnZSA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdmF0bGFzQ29vcmRfUzApLjAwMHIuYTsKCW91dHB1dENvdmVyYWdlX1MwICo9IGF0bGFzQ292ZXJhZ2U7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQKAAAAAAAAAEAAAABJUQAAAAAAAAIAAAAAWCBAAAABAAAAANAEIQCAAAAAAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzExXTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAADQBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTFdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTE7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAACgAAAAAAAAABAAAAAAAAAA==","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABSAAGQAAAAKFIDMVQUAAAAABIAAAAGIAMAAAEAAAAAJBEJIFANSWCQAACAAEAAAAAAAAAAABYSA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAJ4HAABjb25zdCBpbnQga0ZpbGxCV19TMV9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMV9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMV9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZsb2NhbENvb3JkX1MwOwpoYWxmNCBSZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MxX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMV9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzFfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzFfYzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxX2MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxX2MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzFfYzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBDaXJjdWxhclJSZWN0X1MxX2MxKF9zcmMpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIG91dHB1dENvbG9yX1MwKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAABAEAAAABJSQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMF07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEwOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAAAAEAAAABJKQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNl07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw2OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAHADEHC6BAAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAMAMY4LYEAAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAQBTTRPAQAAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAAAZ5YHQIIAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBCTZQ7BQUAAAAAAAIAAAADEZAZRYXQIAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABAAOAAAABAAAAAAABBAMRQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1NnBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAACoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBSYWRpYWxMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYobGVuZ3RoKF90bXBfM19jb29yZHMpKSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAA+wUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAAAAEAAAABJSQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTBdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEwOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAGQ56JIEBYAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAKBXZFAUHQAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAIC7UWCQ6AAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBC7UXKS6AAAAAAAAIAAAADEVDPSKBIPAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABAAOAAAABAAAAAAABBAMUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1NnBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAACwMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1OtAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAABgFAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IENpcmNsZUJsdXJfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmMiB2ZWMgPSBoYWxmMigoc2tfRnJhZ0Nvb3JkLnh5IC0gZmxvYXQyKHVjaXJjbGVEYXRhX1MxX2MwLnh5KSkgKiBmbG9hdCh1Y2lyY2xlRGF0YV9TMV9jMC53KSk7CgloYWxmIGRpc3QgPSBsZW5ndGgodmVjKSArICgwLjUgLSB1Y2lyY2xlRGF0YV9TMV9jMC56KSAqIHVjaXJjbGVEYXRhX1MxX2MwLnc7CglyZXR1cm4gaGFsZjQoTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIoZGlzdCwgMC41KSkpLnd3d3cpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoQ2lyY2xlQmx1cl9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAAAAEAAAABJKQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNl07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw2OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1PrAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAZAsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0IGNvdmVyYWdlID0gdmNvdmVyYWdlX1MwOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGNvdmVyYWdlKSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAABAAAAAAAAAAQAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAJAAAADAAAAAEAAAAdAAAAEAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABAAOAAAABAAAAAAABBAMAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1PMAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAABvAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogb3V0cHV0Q29sb3JfUzApKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAAAAEAAAABJWQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTJdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEyOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","AZAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1N4AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bG9jYWxNYXRyaXhfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGZsb2F0M3gyKHVsb2NhbE1hdHJpeF9TMCkgKiBpblBvc2l0aW9uLnh5MTsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAnQIAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAJwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAAGATHIBICYCAAAEBP2LBIPAAAAAIAAAAAEARRALJ3F5SMAAAABQAAAABABTUEURMBAAACAH5FYUHQAAAAAAAEAAAAAZ4RGGRCQFAEAAAAAAAAAGARP2LVJPAAAAAAAAEAAAABSKRXZFAUHQAAAAAAAAAACAA4AAAACAAAAAAACCAYAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1PpAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAAA/BwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzVfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwLCB1ZW5kX1MxX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENsYW1wZWRHcmFkaWVudF9TMV9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAA","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1PzAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAACxDQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQ2lyY3VsYXJSUmVjdF9TMihvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAAHAJRUYWBAAAAA2DXZFAQHAAAAAAAAEAAAAABAEMFPYMZ2AAAAAAAQFV566JAAAAAAYAAAADQEY2EKAUAQAAFA34SQKDYAAAACAAAAABAEMIC263PESAAAAAMAAAAAYCM5AFALAIAAAQF7JMFB4AAAACAAAAAAQAGHEJRUYWBAAAAAAAAAAAFQEL6S4KLYAAAAAAABAAAAAMWU56JIEBYAAAAAAAAAACYIEAAAAEAAAABUARCAIAAAAAAAAAAAUABQAAAAEAAAAAAAEEBQAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1NVBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAAALQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AZAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1N4AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bG9jYWxNYXRyaXhfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGZsb2F0M3gyKHVsb2NhbE1hdHJpeF9TMCkgKiBpblBvc2l0aW9uLnh5MTsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAnQIAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAIMDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0IGR4MSA9IHNrX0ZyYWdDb29yZC54IC0gdWlubmVyUmVjdF9TMS5SOwoJZmxvYXQyIGR4eSA9IG1heChmbG9hdDIobWF4KGR4eTAueCwgZHgxKSwgZHh5MC55KSwgMC4wKTsKCWhhbGYgYm90dG9tQWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVpbm5lclJlY3RfUzEuQiAtIHNrX0ZyYWdDb29yZC55KSk7CgloYWxmIGFscGhhID0gYm90dG9tQWxwaGEgKiBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AY7SRAADQAAAOAEARAFQJAABBADAAAILBYAACCYUAAAQWGUAAEECAAAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGhhbGYzIGluQ2xpcFBsYW5lOwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBoYWxmMyBpbklzZWN0UGxhbmU7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGhhbGYzIGluVW5pb25QbGFuZTsKbGF5b3V0KGxvY2F0aW9uID0gNikgaW4gZmxvYXQ0IGluUm91bmRDYXBDZW50ZXJzOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmMyB2aW5DbGlwUGxhbmVfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBoYWxmMyB2aW5Jc2VjdFBsYW5lX1MwOwpsYXlvdXQobG9jYXRpb24gPSAzKSBvdXQgaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgb3V0IGZsb2F0NCB2aW5Sb3VuZENhcENlbnRlcnNfUzA7CmxheW91dChsb2NhdGlvbiA9IDUpIGZsYXQgb3V0IGZsb2F0IHZjYXBSYWRpdXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDYpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5DbGlwUGxhbmVfUzAgPSBpbkNsaXBQbGFuZTsKCXZpbklzZWN0UGxhbmVfUzAgPSBpbklzZWN0UGxhbmU7Cgl2aW5VbmlvblBsYW5lX1MwID0gaW5VbmlvblBsYW5lOwoJdmluUm91bmRDYXBDZW50ZXJzX1MwID0gaW5Sb3VuZENhcENlbnRlcnM7Cgl2Y2FwUmFkaXVzX1MwID0gKDEuMCAtIGluQ2lyY2xlRWRnZS53KSAvIDIuMDsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAABeBwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYzIHZpbkNsaXBQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgdmluSXNlY3RQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gNSkgZmxhdCBpbiBmbG9hdCB2Y2FwUmFkaXVzX1MwOwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjMgY2xpcFBsYW5lOwoJY2xpcFBsYW5lID0gdmluQ2xpcFBsYW5lX1MwOwoJaGFsZjMgaXNlY3RQbGFuZTsKCWlzZWN0UGxhbmUgPSB2aW5Jc2VjdFBsYW5lX1MwOwoJaGFsZjMgdW5pb25QbGFuZTsKCXVuaW9uUGxhbmUgPSB2aW5VbmlvblBsYW5lX1MwOwoJZmxvYXQ0IHJvdW5kQ2FwQ2VudGVyczsKCXJvdW5kQ2FwQ2VudGVycyA9IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGYgY2xpcCA9IGhhbGYoc2F0dXJhdGUoY2lyY2xlRWRnZS56ICogZG90KGNpcmNsZUVkZ2UueHksIGNsaXBQbGFuZS54eSkgKyBjbGlwUGxhbmUueikpOwoJY2xpcCAqPSBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCBpc2VjdFBsYW5lLnh5KSArIGlzZWN0UGxhbmUueikpOwoJY2xpcCA9IHNhdHVyYXRlKGNsaXAgKyBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCB1bmlvblBsYW5lLnh5KSArIHVuaW9uUGxhbmUueikpKTsKCWVkZ2VBbHBoYSAqPSBjbGlwOwoJaGFsZiBkY2FwMSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKHZjYXBSYWRpdXNfUzAgLSBsZW5ndGgoY2lyY2xlRWRnZS54eSAtIHJvdW5kQ2FwQ2VudGVycy54eSkpKTsKCWhhbGYgZGNhcDIgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICh2Y2FwUmFkaXVzX1MwIC0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkgLSByb3VuZENhcENlbnRlcnMuencpKSk7CgloYWxmIGNhcEFscGhhID0gKDEgLSBjbGlwKSAqIChtYXgoZGNhcDEsIDApICsgbWF4KGRjYXAyLCAwKSk7CgllZGdlQWxwaGEgPSBtaW4oZWRnZUFscGhhICsgY2FwQWxwaGEsIDEuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAABAAAAAAAAAAcAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAeAAAAHAAAAAEAAAAeAAAAKAAAAAEAAAAeAAAANAAAAAEAAAAfAAAAQAAAAAEAAABQAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAAHJXMYEEAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZ5G5DCQYAAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAADAsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgQXBwbHlQYWludEFscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNChfaW5wdXQueHl6LCAxLjApKSAqIF9pbnB1dC53KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IEFwcGx5UGFpbnRBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1MqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAF0MAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAAHAAAAAgAAAABAAAACQAAAAwAAAABAAAAHQAAABAAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAAYQADAAAEAFEURUKQKAAAIAAQAAAAAIAAAABSCICWKY2FAEAAAUAAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OuAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAA6BgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBSZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MxX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMV9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzFfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PuBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MzIwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAARDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0zMjApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQ2lyY3VsYXJSUmVjdF9TMihvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","B2ABSAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MCAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IGNvbG9yID0gdUNvbG9yX1MwOwoJY29sb3IgPSBjb2xvciAqIGluQ292ZXJhZ2U7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8zX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAJsBAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGIBIAAABAAAAANAEAAAAAAAAAAAAAABAAOAAAABAAAAAAABBAMAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAQAAAAAAAA":"CgAAAExTS1MoAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAB0DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQIAAAAAAABAEAAAABJQQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs5XTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzldOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8OTsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAPsMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAEIQCAAEAAAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAaBwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCkuMDAwcjsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTM7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HTQAAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAQAHAAAAAQAAAAAAAQQGAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRFZGdlCgl2UXVhZEVkZ2VfUzAgPSBpblF1YWRFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAiwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0Owp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkRWRnZQoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodlF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodlF1YWRFZGdlX1MwLnh5KSk7CglpZiAodlF1YWRFZGdlX1MwLnogPiAwLjAgJiYgdlF1YWRFZGdlX1MwLncgPiAwLjApIAoJewoJCWVkZ2VBbHBoYSA9IGhhbGYobWluKG1pbih2UXVhZEVkZ2VfUzAueiwgdlF1YWRFZGdlX1MwLncpICsgMC41LCAxLjApKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjIgZ0YgPSBoYWxmMihoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeC54IC0gZHV2ZHgueSksICAgICAgICAgICAgICAgICBoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeS54IC0gZHV2ZHkueSkpOwoJCWVkZ2VBbHBoYSA9IGhhbGYodlF1YWRFZGdlX1MwLngqdlF1YWRFZGdlX1MwLnggLSB2UXVhZEVkZ2VfUzAueSk7CgkJZWRnZUFscGhhID0gc2F0dXJhdGUoMC41IC0gZWRnZUFscGhhIC8gbGVuZ3RoKGdGKSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQGAAAAAAAAAEAAAABJMQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzddOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbN107CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw3OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAAHAJRUYWBAAAAA2DXZFAQHAAAAAAAAEAAAAABAEMFPYMZ2AAAAAAAQFV566JAAAAAAYAAAADQEY2EKAUAQAAFA34SQKDYAAAACAAAAABAEMIC263PESAAAAAMAAAAAYCM5AFALAIAAAQF7JMFB4AAAACAAAAAAQAGHEJRUYWBAAAAAAAAAAAFQEL6S4KLYAAAAAAABAAAAAMWU56JIEBYAAAAAAAAAACYIEAAAAEAAAABUARCAIAAAAAAAAAAAUABQAAAAEAAAAAAAEEBQAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1NVBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAAALQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OrBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAdQ0AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OrBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAdQ0AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAAUKQGZLBIAAAAACQAAAA4QAQAAAIAAAABSCICSKI2FIFAAAEAAIAAAAAAAAAAADZEBYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1PdAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAALEGAABjb25zdCBpbnQga0ZpbGxCV19TMV9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMV9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMV9jMCA9IDM7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxX2MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxX2MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMV9jMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzFfYzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzFfYzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMV9jMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKFJlY3RfUzFfYzAoX3NyYyksIENpcmN1bGFyUlJlY3RfUzFfYzEoX3NyYykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGQBIAAABAAAAANAEAAAAAAAAAAAAAADQAB4QAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIACGAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADCBAAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dF9TMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzI7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAAKUAQFAACYAAABAIAAAABLBAIBAAAAABAEGABBAMAAAAIAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAIAAAAAAAA":"CgAAAExTS1NUAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVLZXJuZWxfUzFbN107CglsYXlvdXQob2Zmc2V0PTEzNikgaGFsZjIgdUtlcm5lbE9mZnNldF9TMTsKCWxheW91dChvZmZzZXQ9MTQwKSBoYWxmIHVHYWluX1MxOwoJbGF5b3V0KG9mZnNldD0xNDIpIGhhbGYgdUJpYXNfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZMb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZMb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAkBYAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVLZXJuZWxfUzFbN107CglsYXlvdXQob2Zmc2V0PTEzNikgaGFsZjIgdUtlcm5lbE9mZnNldF9TMTsKCWxheW91dChvZmZzZXQ9MTQwKSBoYWxmIHVHYWluX1MxOwoJbGF5b3V0KG9mZnNldD0xNDIpIGhhbGYgdUJpYXNfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdkxvY2FsQ29vcmRfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IE1hdHJpeENvbnZvbHV0aW9uX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IHN1bSA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdkxvY2FsQ29vcmRfUzAgLSB1S2VybmVsT2Zmc2V0X1MxOwoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMCwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMF1bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigwLCAxKTsKCQlrID0gdUtlcm5lbF9TMVsxXVsxXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDAsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzJdWzJdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMCwgMyk7CgkJayA9IHVLZXJuZWxfUzFbM11bM107CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigwLCA0KTsKCQlrID0gdUtlcm5lbF9TMVs1XVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDEsIDApOwoJCWsgPSB1S2VybmVsX1MxWzBdWzFdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMSwgMSk7CgkJayA9IHVLZXJuZWxfUzFbMV1bMl07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigxLCAyKTsKCQlrID0gdUtlcm5lbF9TMVsyXVszXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDEsIDMpOwoJCWsgPSB1S2VybmVsX1MxWzRdWzBdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMSwgNCk7CgkJayA9IHVLZXJuZWxfUzFbNV1bMV07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigyLCAwKTsKCQlrID0gdUtlcm5lbF9TMVswXVsyXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDIsIDEpOwoJCWsgPSB1S2VybmVsX1MxWzFdWzNdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMiwgMik7CgkJayA9IHVLZXJuZWxfUzFbM11bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigyLCAzKTsKCQlrID0gdUtlcm5lbF9TMVs0XVsxXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDIsIDQpOwoJCWsgPSB1S2VybmVsX1MxWzVdWzJdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMywgMCk7CgkJayA9IHVLZXJuZWxfUzFbMF1bM107CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigzLCAxKTsKCQlrID0gdUtlcm5lbF9TMVsyXVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDMsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzNdWzFdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMywgMyk7CgkJayA9IHVLZXJuZWxfUzFbNF1bMl07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigzLCA0KTsKCQlrID0gdUtlcm5lbF9TMVs1XVszXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDQsIDApOwoJCWsgPSB1S2VybmVsX1MxWzFdWzBdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoNCwgMSk7CgkJayA9IHVLZXJuZWxfUzFbMl1bMV07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMig0LCAyKTsKCQlrID0gdUtlcm5lbF9TMVszXVsyXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDQsIDMpOwoJCWsgPSB1S2VybmVsX1MxWzRdWzNdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoNCwgNCk7CgkJayA9IHVLZXJuZWxfUzFbNl1bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9CgloYWxmNCBjb2xvcjsKCWNvbG9yID0gc3VtICogdUdhaW5fUzEgKyB1Qmlhc19TMTsKCWNvbG9yLmEgPSBzYXR1cmF0ZShjb2xvci5hKTsKCWNvbG9yLnJnYiA9IGNsYW1wKGNvbG9yLnJnYiwgMC4wLCBjb2xvci5hKTsKCXJldHVybiBjb2xvcjsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeENvbnZvbHV0aW9uX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADIAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1MDAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTgwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAL0GAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgQ2lyY2xlQmx1cl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYyIHZlYyA9IGhhbGYyKChza19GcmFnQ29vcmQueHkgLSBmbG9hdDIodWNpcmNsZURhdGFfUzFfYzAueHkpKSAqIGZsb2F0KHVjaXJjbGVEYXRhX1MxX2MwLncpKTsKCWhhbGYgZGlzdCA9IGxlbmd0aCh2ZWMpICsgKDAuNSAtIHVjaXJjbGVEYXRhX1MxX2MwLnopICogdWNpcmNsZURhdGFfUzFfYzAudzsKCXJldHVybiBoYWxmNChNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIGZsb2F0MihoYWxmMihkaXN0LCAwLjUpKSkud3d3dyk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShDaXJjbGVCbHVyX1MxX2MwKF9zcmMpLCBfc3JjKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQIAAAAAAAAAEAAAABJQQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NPAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzldOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAClBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbOV07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jkcyk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8OTsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1NcAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGQBIAAABAAAAANAEAAAAAAAAAAAAAADQAB4QAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADCBAAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dF9TMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzI7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCGAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAQAQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAAAAAAAAIAAAABSEIAL7YYDQAAAAAAACAAAAABQEKAAAAIAAAADIBAQGIAAAAAAAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAACAA4AAAACAAAAAAACCAYAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1ODAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTEyKSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAbQYAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTEpIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8xX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xMTIpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMV9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMV9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfMV9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF8xX2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAAAQAAAAGQCEIBAAAAAAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PAAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAABAwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJCXNrX0ZyYWdDb2xvciA9IHNrX0ZyYWdDb2xvci5hMDAwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAIBAEAAAABJWQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMl07CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMjsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCBAMQAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAAAAEAAAABJIQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNV07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw1OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCEIBAAAAIAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAOQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpLjAwMHI7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCQlza19GcmFnQ29sb3IgPSBza19GcmFnQ29sb3IuYTAwMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIBAEAAAABJYQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMzsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAiAMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdCBkeDEgPSBza19GcmFnQ29vcmQueCAtIHVpbm5lclJlY3RfUzEuUjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeHkwLngsIGR4MSksIGR4eTAueSksIDAuMCk7CgloYWxmIGJvdHRvbUFscGhhID0gaGFsZihzYXR1cmF0ZSh1aW5uZXJSZWN0X1MxLkIgLSBza19GcmFnQ29vcmQueSkpOwoJaGFsZiBhbHBoYSA9IGJvdHRvbUFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1OtAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAABgFAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IENpcmNsZUJsdXJfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmMiB2ZWMgPSBoYWxmMigoc2tfRnJhZ0Nvb3JkLnh5IC0gZmxvYXQyKHVjaXJjbGVEYXRhX1MxX2MwLnh5KSkgKiBmbG9hdCh1Y2lyY2xlRGF0YV9TMV9jMC53KSk7CgloYWxmIGRpc3QgPSBsZW5ndGgodmVjKSArICgwLjUgLSB1Y2lyY2xlRGF0YV9TMV9jMC56KSAqIHVjaXJjbGVEYXRhX1MxX2MwLnc7CglyZXR1cm4gaGFsZjQoTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIoZGlzdCwgMC41KSkpLnd3d3cpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoQ2lyY2xlQmx1cl9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DASAAAAAQAAWAABAYAAQBYH7777Z6QQBAEAAAAAAEAAAAAAAEBSAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OYAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAC2AgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEJpdG1hcFRleHQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApOwoJfQoJb3V0cHV0Q29sb3JfUzAgPSBvdXRwdXRDb2xvcl9TMCAqIHRleENvbG9yOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAA0AAAAIAAAAAQAAAAwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1MQAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBpbkVsbGlwc2VPZmZzZXQ7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCBpbkVsbGlwc2VSYWRpaTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2RWxsaXBzZU9mZnNldHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDQgdkVsbGlwc2VSYWRpaV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCXZFbGxpcHNlT2Zmc2V0c19TMCA9IGluRWxsaXBzZU9mZnNldDsKCXZFbGxpcHNlUmFkaWlfUzAgPSBpbkVsbGlwc2VSYWRpaTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAA4BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdDIgb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5OwoJb2Zmc2V0ICo9IHZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCB0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWZsb2F0MiBncmFkID0gMi4wKm9mZnNldCp2RWxsaXBzZVJhZGlpX1MwLnh5OwoJZmxvYXQgZ3JhZF9kb3QgPSBkb3QoZ3JhZCwgZ3JhZCk7CglncmFkX2RvdCA9IG1heChncmFkX2RvdCwgMS4xNzU1ZS0zOCk7CglmbG9hdCBpbnZsZW4gPSBpbnZlcnNlc3FydChncmFkX2RvdCk7CglmbG9hdCBlZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUtdGVzdCppbnZsZW4pOwoJb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5KnZFbGxpcHNlUmFkaWlfUzAuenc7Cgl0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAuenc7CglncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWVkZ2VBbHBoYSAqPSBzYXR1cmF0ZSgwLjUrdGVzdCppbnZsZW4pOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGVkZ2VBbHBoYSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAAB8AAAAUAAAAAQAAACQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQGAAAAAAIBAEAAAABJMQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs3XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzddOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDc7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAAAAEAAAABJYQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTNdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQAGAAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAoQQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0IGR4MSA9IHNrX0ZyYWdDb29yZC54IC0gdWlubmVyUmVjdF9TMS5SOwoJZmxvYXQyIGR4eSA9IG1heChmbG9hdDIobWF4KGR4eTAueCwgZHgxKSwgZHh5MC55KSwgMC4wKTsKCWhhbGYgYm90dG9tQWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVpbm5lclJlY3RfUzEuQiAtIHNrX0ZyYWdDb29yZC55KSk7CgloYWxmIGFscGhhID0gYm90dG9tQWxwaGEgKiBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAIAD2AAAAAAQAVSWGRIBAAADAAAAACAAAAAAQCGEIQOZLBIQAAAABQAAAAAAAAAAAAFAAMAAAABAAAAAAABBAMAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MNAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gdXNob3J0MiBpblRleHR1cmVDb29yZHM7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRleHR1cmVDb29yZHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGZsYXQgb3V0IGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAAAwBgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQyIHVBdGxhc1NpemVJbnZfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgxKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQml0bWFwVGV4dAoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZjQgdGV4Q29sb3I7Cgl7CgkJdGV4Q29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHZUZXh0dXJlQ29vcmRzX1MwKS5ycnJyOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSB0ZXhDb2xvcjsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAGIAHSACAAAAQAAAAAA5AAAAAAABAAAAACAZAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1NmAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGluRWxsaXBzZU9mZnNldDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQ0IGluRWxsaXBzZVJhZGlpOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0NCB2RWxsaXBzZVJhZGlpX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEVsbGlwc2VHZW9tZXRyeVByb2Nlc3NvcgoJdkVsbGlwc2VPZmZzZXRzX1MwID0gaW5FbGxpcHNlT2Zmc2V0OwoJdkVsbGlwc2VSYWRpaV9TMCA9IGluRWxsaXBzZVJhZGlpOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAA3QUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0MiBvZmZzZXQgPSB2RWxsaXBzZU9mZnNldHNfUzAueHk7CglvZmZzZXQgKj0gdkVsbGlwc2VSYWRpaV9TMC54eTsKCWZsb2F0IHRlc3QgPSBkb3Qob2Zmc2V0LCBvZmZzZXQpIC0gMS4wOwoJZmxvYXQyIGdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCBncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWdyYWRfZG90ID0gbWF4KGdyYWRfZG90LCAxLjE3NTVlLTM4KTsKCWZsb2F0IGludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWZsb2F0IGVkZ2VBbHBoYSA9IHNhdHVyYXRlKDAuNS10ZXN0Kmludmxlbik7CglvZmZzZXQgPSB2RWxsaXBzZU9mZnNldHNfUzAueHkqdkVsbGlwc2VSYWRpaV9TMC56dzsKCXRlc3QgPSBkb3Qob2Zmc2V0LCBvZmZzZXQpIC0gMS4wOwoJZ3JhZCA9IDIuMCpvZmZzZXQqdkVsbGlwc2VSYWRpaV9TMC56dzsKCWdyYWRfZG90ID0gZG90KGdyYWQsIGdyYWQpOwoJaW52bGVuID0gaW52ZXJzZXNxcnQoZ3JhZF9kb3QpOwoJZWRnZUFscGhhICo9IHNhdHVyYXRlKDAuNSt0ZXN0Kmludmxlbik7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoZWRnZUFscGhhKSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAHwAAABQAAAABAAAAJAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABAAOAAAABAAAAAAABBAMAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1PMAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAABvAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogb3V0cHV0Q29sb3JfUzApKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAQAQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAIBAEAAAABJSQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMF07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMDsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAAAOMAHQAABAAAAAAAAAA5AAAAAAABAAAAACAZABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MHAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmIGluQ292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cgl2aW5Db3ZlcmFnZV9TMCA9IGluQ292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABuAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGYgdmluQ292ZXJhZ2VfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHVDb2xvcl9TMDsKCWhhbGYgYWxwaGEgPSAxLjA7CglhbHBoYSA9IHZpbkNvdmVyYWdlX1MwOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChhbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAQAQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OlBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAAC1DQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTY4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmIGRpc3RhbmNlVG9Jbm5lckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqIChkIC0gY2lyY2xlRWRnZS53KSk7CgloYWxmIGlubmVyQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvSW5uZXJFZGdlKTsKCWVkZ2VBbHBoYSAqPSBpbm5lckFscGhhOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAAAAEAAAABJIQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbNV07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw1OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAAUKQGZLBIAAAAACQAAAA4QAQAAAIAAAABSCICSKI2FIFAAAEAAIAAAAAAAAAAADZEBYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PYAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAACsBgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMV9jMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMV9jMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgUmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDIpID09IGtGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMV9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzFfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MxX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQUFfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMV9jMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMV9jMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxX2MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMV9jMChfc3JjKSwgQ2lyY3VsYXJSUmVjdF9TMV9jMShfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAEADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGRQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1M8DQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCByYWRpaV9zZWxlY3RvcjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IGNvcm5lcl9hbmRfcmFkaXVzX291dHNldHM7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBhYV9ibG9hdF9hbmRfY292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCByYWRpaV94OwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBmbG9hdDQgcmFkaWlfeTsKbGF5b3V0KGxvY2F0aW9uID0gNSkgaW4gZmxvYXQ0IHNrZXc7CmxheW91dChsb2NhdGlvbiA9IDYpIGluIGZsb2F0MiB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlOwpsYXlvdXQobG9jYXRpb24gPSA3KSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRmlsbFJSZWN0T3A6OlByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7CglmbG9hdCBhYV9ibG9hdF9tdWx0aXBsaWVyID0gMTsKCWZsb2F0MiBjb3JuZXIgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnh5OwoJZmxvYXQyIHJhZGl1c19vdXRzZXQgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnp3OwoJZmxvYXQyIGFhX2Jsb2F0X2RpcmVjdGlvbiA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS54eTsKCWZsb2F0IGlzX2xpbmVhcl9jb3ZlcmFnZSA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS53OwoJZmxvYXQyIHBpeGVsbGVuZ3RoID0gaW52ZXJzZXNxcnQoZmxvYXQyKGRvdChza2V3Lnh6LCBza2V3Lnh6KSwgZG90KHNrZXcueXcsIHNrZXcueXcpKSk7CglmbG9hdDQgbm9ybWFsaXplZF9heGlzX2RpcnMgPSBza2V3ICogcGl4ZWxsZW5ndGgueHl4eTsKCWZsb2F0MiBheGlzd2lkdGhzID0gKGFicyhub3JtYWxpemVkX2F4aXNfZGlycy54eSkgKyBhYnMobm9ybWFsaXplZF9heGlzX2RpcnMuencpKTsKCWZsb2F0MiBhYV9ibG9hdHJhZGl1cyA9IGF4aXN3aWR0aHMgKiBwaXhlbGxlbmd0aCAqIC41OwoJZmxvYXQ0IHJhZGlpX2FuZF9uZWlnaGJvcnMgPSByYWRpaV9zZWxlY3RvciogZmxvYXQ0eDQocmFkaWlfeCwgcmFkaWlfeSwgcmFkaWlfeC55eHd6LCByYWRpaV95Lnd6eXgpOwoJZmxvYXQyIHJhZGlpID0gcmFkaWlfYW5kX25laWdoYm9ycy54eTsKCWZsb2F0MiBuZWlnaGJvcl9yYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMuenc7CglmbG9hdCBjb3ZlcmFnZV9tdWx0aXBsaWVyID0gMTsKCWlmIChhbnkoZ3JlYXRlclRoYW4oYWFfYmxvYXRyYWRpdXMsIGZsb2F0MigxKSkpKSAKCXsKCQljb3JuZXIgPSBtYXgoYWJzKGNvcm5lciksIGFhX2Jsb2F0cmFkaXVzKSAqIHNpZ24oY29ybmVyKTsKCQljb3ZlcmFnZV9tdWx0aXBsaWVyID0gMSAvIChtYXgoYWFfYmxvYXRyYWRpdXMueCwgMSkgKiBtYXgoYWFfYmxvYXRyYWRpdXMueSwgMSkpOwoJCXJhZGlpID0gZmxvYXQyKDApOwoJfQoJZmxvYXQgY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UuejsKCWlmIChhbnkobGVzc1RoYW4ocmFkaWksIGFhX2Jsb2F0cmFkaXVzICogMS41KSkpIAoJewoJCXJhZGlpID0gZmxvYXQyKDApOwoJCWFhX2Jsb2F0X2RpcmVjdGlvbiA9IHNpZ24oY29ybmVyKTsKCQlpZiAoY292ZXJhZ2UgPiAuNSkgCgkJewoJCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSAtYWFfYmxvYXRfZGlyZWN0aW9uOwoJCX0KCQlpc19saW5lYXJfY292ZXJhZ2UgPSAxOwoJfQoJZWxzZSAKCXsKCQlyYWRpaSA9IGNsYW1wKHJhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQluZWlnaGJvcl9yYWRpaSA9IGNsYW1wKG5laWdoYm9yX3JhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQlmbG9hdDIgc3BhY2luZyA9IDIgLSByYWRpaSAtIG5laWdoYm9yX3JhZGlpOwoJCWZsb2F0MiBleHRyYV9wYWQgPSBtYXgocGl4ZWxsZW5ndGggKiAuMDYyNSAtIHNwYWNpbmcsIGZsb2F0MigwKSk7CgkJcmFkaWkgLT0gZXh0cmFfcGFkICogLjU7Cgl9CglmbG9hdDIgYWFfb3V0c2V0ID0gYWFfYmxvYXRfZGlyZWN0aW9uICogYWFfYmxvYXRyYWRpdXMgKiBhYV9ibG9hdF9tdWx0aXBsaWVyOwoJZmxvYXQyIHZlcnRleHBvcyA9IGNvcm5lciArIHJhZGl1c19vdXRzZXQgKiByYWRpaSArIGFhX291dHNldDsKCWlmIChjb3ZlcmFnZSA+IC41KSAKCXsKCQlpZiAoYWFfYmxvYXRfZGlyZWN0aW9uLnggIT0gMCAmJiB2ZXJ0ZXhwb3MueCAqIGNvcm5lci54IDwgMCkgCgkJewoJCQlmbG9hdCBiYWNrc2V0ID0gYWJzKHZlcnRleHBvcy54KTsKCQkJdmVydGV4cG9zLnggPSAwOwoJCQl2ZXJ0ZXhwb3MueSArPSBiYWNrc2V0ICogc2lnbihjb3JuZXIueSkgKiBwaXhlbGxlbmd0aC55L3BpeGVsbGVuZ3RoLng7CgkJCWNvdmVyYWdlID0gKGNvdmVyYWdlIC0gLjUpICogYWJzKGNvcm5lci54KSAvIChhYnMoY29ybmVyLngpICsgYmFja3NldCkgKyAuNTsKCQl9CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi55ICE9IDAgJiYgdmVydGV4cG9zLnkgKiBjb3JuZXIueSA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueSk7CgkJCXZlcnRleHBvcy55ID0gMDsKCQkJdmVydGV4cG9zLnggKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLngpICogcGl4ZWxsZW5ndGgueC9waXhlbGxlbmd0aC55OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueSkgLyAoYWJzKGNvcm5lci55KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJfQoJZmxvYXQyeDIgc2tld21hdHJpeCA9IGZsb2F0MngyKHNrZXcueHksIHNrZXcuencpOwoJZmxvYXQyIGRldmNvb3JkID0gdmVydGV4cG9zICogc2tld21hdHJpeCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUueHk7CglpZiAoMCAhPSBpc19saW5lYXJfY292ZXJhZ2UpIAoJewoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MigwLCBjb3ZlcmFnZSAqIGNvdmVyYWdlX211bHRpcGxpZXIpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgYXJjY29vcmQgPSAxIC0gYWJzKHJhZGl1c19vdXRzZXQpICsgYWFfb3V0c2V0L3JhZGlpICogY29ybmVyOwoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MihhcmNjb29yZC54KzEsIGFyY2Nvb3JkLnkpOwoJfQoJc2tfUG9zaXRpb24gPSBkZXZjb29yZC54eTAxOwp9CgAAAABwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBGaWxsUlJlY3RPcDo6UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgeF9wbHVzXzE9dmFyY2Nvb3JkX1MwLngsIHk9dmFyY2Nvb3JkX1MwLnk7CgloYWxmIGNvdmVyYWdlOwoJaWYgKDAgPT0geF9wbHVzXzEpIAoJewoJCWNvdmVyYWdlID0gaGFsZih5KTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQgZm4gPSB4X3BsdXNfMSAqICh4X3BsdXNfMSAtIDIpOwoJCWZuID0gZm1hKHkseSwgZm4pOwoJCWZsb2F0IGZud2lkdGggPSBmd2lkdGgoZm4pOwoJCWNvdmVyYWdlID0gLjUgLSBoYWxmKGZuL2Zud2lkdGgpOwoJCWNvdmVyYWdlID0gY2xhbXAoY292ZXJhZ2UsIDAsIDEpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChjb3ZlcmFnZSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCBAMQACAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAA+wUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABADI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAAAAEAAAAAZFE5PDAYAIAAAAABITF56OQIAAAQAAQAAAARGWBRHUQAAAAB2DXJHAQGAAAAAEAAAAASAIYRFV5O4JAAAAAAYAAAABEWJRHQQQCAAAKBXZFAUHQAAAAIAAAAACAAYJVSMJ4EEAQAAAAAAAABMBC7UXCS6AAAAAAAAIAAAADFVHPSKBAOAAAAAAAAAAAWCBAAAABAAAAANAEIQCAAAAAAAAAAABQAAGQAAAAKFIDMVQUAAAAAAYAAAAAQAAAADEEQFEURUKQKAAAYAAAAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc182X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAIBEAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgQXBwbHlQYWludEFscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNChfaW5wdXQueHl6LCAxLjApKSAqIF9pbnB1dC53KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IEFwcGx5UGFpbnRBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMSkgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDEpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRFZGdlCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2UXVhZEVkZ2VfUzAueHkpKTsKCWhhbGYyIGR1dmR5ID0gaGFsZjIoZEZkeSh2UXVhZEVkZ2VfUzAueHkpKTsKCWlmICh2UXVhZEVkZ2VfUzAueiA+IDAuMCAmJiB2UXVhZEVkZ2VfUzAudyA+IDAuMCkgCgl7CgkJZWRnZUFscGhhID0gaGFsZihtaW4obWluKHZRdWFkRWRnZV9TMC56LCB2UXVhZEVkZ2VfUzAudykgKyAwLjUsIDEuMCkpOwoJfQoJZWxzZSAKCXsKCQloYWxmMiBnRiA9IGhhbGYyKGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR4LnggLSBkdXZkeC55KSwgICAgICAgICAgICAgICAgIGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR5LnggLSBkdXZkeS55KSk7CgkJZWRnZUFscGhhID0gaGFsZih2UXVhZEVkZ2VfUzAueCp2UXVhZEVkZ2VfUzAueCAtIHZRdWFkRWRnZV9TMC55KTsKCQllZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUgLSBlZGdlQWxwaGEgLyBsZW5ndGgoZ0YpKTsKCX0KCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBCbGVuZF9TMihvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAACIDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1MQAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBpbkVsbGlwc2VPZmZzZXQ7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCBpbkVsbGlwc2VSYWRpaTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2RWxsaXBzZU9mZnNldHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDQgdkVsbGlwc2VSYWRpaV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCXZFbGxpcHNlT2Zmc2V0c19TMCA9IGluRWxsaXBzZU9mZnNldDsKCXZFbGxpcHNlUmFkaWlfUzAgPSBpbkVsbGlwc2VSYWRpaTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAA4BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdDIgb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5OwoJb2Zmc2V0ICo9IHZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCB0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWZsb2F0MiBncmFkID0gMi4wKm9mZnNldCp2RWxsaXBzZVJhZGlpX1MwLnh5OwoJZmxvYXQgZ3JhZF9kb3QgPSBkb3QoZ3JhZCwgZ3JhZCk7CglncmFkX2RvdCA9IG1heChncmFkX2RvdCwgMS4xNzU1ZS0zOCk7CglmbG9hdCBpbnZsZW4gPSBpbnZlcnNlc3FydChncmFkX2RvdCk7CglmbG9hdCBlZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUtdGVzdCppbnZsZW4pOwoJb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5KnZFbGxpcHNlUmFkaWlfUzAuenc7Cgl0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAuenc7CglncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWVkZ2VBbHBoYSAqPSBzYXR1cmF0ZSgwLjUrdGVzdCppbnZsZW4pOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGVkZ2VBbHBoYSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAAB8AAAAUAAAAAQAAACQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABBACUIAAAAABAAOAAAABAAAAAAABBAMAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1O5AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW52UmFkaWlMVFJCX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAMUEAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWludlJhZGlpTFRSQl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKaGFsZjQgRWxsaXB0aWNhbFJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJZmxvYXQyIFogPSBtYXgobWF4KGR4eTAgKiB1aW52UmFkaWlMVFJCX1MxLnh5LCBkeHkxICogdWludlJhZGlpTFRSQl9TMS56dyksIDAuMCk7CgloYWxmIGltcGxpY2l0ID0gaGFsZihkb3QoWiwgZHh5KSAtIDEuMCk7CgloYWxmIGdyYWRfZG90ID0gaGFsZig0LjAgKiBkb3QoWiwgWikpOwoJZ3JhZF9kb3QgPSBtYXgoZ3JhZF9kb3QsIDEuMGUtNCk7CgloYWxmIGFwcHJveF9kaXN0ID0gaW1wbGljaXQgKiBoYWxmKGludmVyc2VzcXJ0KGdyYWRfZG90KSk7CgloYWxmIGFscGhhID0gY2xhbXAoMC41IC0gYXBwcm94X2Rpc3QsIDAuMCwgMS4wKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIGhhbGY0KDEpKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRWxsaXB0aWNhbFJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","B2ABSAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MCAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEZWZhdWx0R2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IGNvbG9yID0gdUNvbG9yX1MwOwoJY29sb3IgPSBjb2xvciAqIGluQ292ZXJhZ2U7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8zX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAJsBAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERlZmF1bHRHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAIAAAAAAAAAACAAAAAABLBAABAAAAABAEGQCEAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O8AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdWNvdmVyYWdlSW52ZXJ0X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAPQEAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dChtZXRhbCwgYmluZGluZz0xKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdWNvdmVyYWdlSW52ZXJ0X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZsb2NhbENvb3JkX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBHck1vZHVsYXRlQXRsYXNDb3ZlcmFnZUZQX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGYgY292ZXJhZ2UgPSAwOwoJewoJCWNvdmVyYWdlID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgc2tfRnJhZ0Nvb3JkLnh5KS5hOwoJfQoJY292ZXJhZ2UgPSBjb3ZlcmFnZSAqIHVjb3ZlcmFnZUludmVydF9TMS54ICsgdWNvdmVyYWdlSW52ZXJ0X1MxLnk7CglyZXR1cm4gX2lucHV0ICogY292ZXJhZ2U7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEdyTW9kdWxhdGVBdGxhc0NvdmVyYWdlRlBfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAA6IAAAAACAAAAADZEBYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1MAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMV9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAEwUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzFfYzAuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzFfYzAuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMV9jMC54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0IGR4MSA9IHNrX0ZyYWdDb29yZC54IC0gdWlubmVyUmVjdF9TMS5SOwoJZmxvYXQyIGR4eSA9IG1heChmbG9hdDIobWF4KGR4eTAueCwgZHgxKSwgZHh5MC55KSwgMC4wKTsKCWhhbGYgYm90dG9tQWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVpbm5lclJlY3RfUzEuQiAtIHNrX0ZyYWdDb29yZC55KSk7CgloYWxmIGFscGhhID0gYm90dG9tQWxwaGEgKiBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBDaXJjdWxhclJSZWN0X1MxX2MwKF9pbnB1dCkgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAAKUAQFAACYAAAAAIAAAABLBAABAAAAABAEGABBAMAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAIAAAAAAAA":"CgAAAExTS1MpAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdUtlcm5lbF9TMVs3XTsKCWxheW91dChvZmZzZXQ9MTIwKSBoYWxmMiB1S2VybmVsT2Zmc2V0X1MxOwoJbGF5b3V0KG9mZnNldD0xMjQpIGhhbGYgdUdhaW5fUzE7CglsYXlvdXQob2Zmc2V0PTEyNikgaGFsZiB1Qmlhc19TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdkxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdkxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABPFQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmNCB1S2VybmVsX1MxWzddOwoJbGF5b3V0KG9mZnNldD0xMjApIGhhbGYyIHVLZXJuZWxPZmZzZXRfUzE7CglsYXlvdXQob2Zmc2V0PTEyNCkgaGFsZiB1R2Fpbl9TMTsKCWxheW91dChvZmZzZXQ9MTI2KSBoYWxmIHVCaWFzX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZMb2NhbENvb3JkX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgTWF0cml4Q29udm9sdXRpb25fUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgc3VtID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2TG9jYWxDb29yZF9TMCAtIHVLZXJuZWxPZmZzZXRfUzE7Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigwLCAwKTsKCQlrID0gdUtlcm5lbF9TMVswXVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDAsIDEpOwoJCWsgPSB1S2VybmVsX1MxWzFdWzFdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMCwgMik7CgkJayA9IHVLZXJuZWxfUzFbMl1bMl07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigwLCAzKTsKCQlrID0gdUtlcm5lbF9TMVszXVszXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDAsIDQpOwoJCWsgPSB1S2VybmVsX1MxWzVdWzBdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMSwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMF1bMV07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigxLCAxKTsKCQlrID0gdUtlcm5lbF9TMVsxXVsyXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDEsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzJdWzNdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMSwgMyk7CgkJayA9IHVLZXJuZWxfUzFbNF1bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigxLCA0KTsKCQlrID0gdUtlcm5lbF9TMVs1XVsxXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDIsIDApOwoJCWsgPSB1S2VybmVsX1MxWzBdWzJdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMiwgMSk7CgkJayA9IHVLZXJuZWxfUzFbMV1bM107CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigyLCAyKTsKCQlrID0gdUtlcm5lbF9TMVszXVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDIsIDMpOwoJCWsgPSB1S2VybmVsX1MxWzRdWzFdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMiwgNCk7CgkJayA9IHVLZXJuZWxfUzFbNV1bMl07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigzLCAwKTsKCQlrID0gdUtlcm5lbF9TMVswXVszXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDMsIDEpOwoJCWsgPSB1S2VybmVsX1MxWzJdWzBdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoMywgMik7CgkJayA9IHVLZXJuZWxfUzFbM11bMV07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMigzLCAzKTsKCQlrID0gdUtlcm5lbF9TMVs0XVsyXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDMsIDQpOwoJCWsgPSB1S2VybmVsX1MxWzVdWzNdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoNCwgMCk7CgkJayA9IHVLZXJuZWxfUzFbMV1bMF07CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMig0LCAxKTsKCQlrID0gdUtlcm5lbF9TMVsyXVsxXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCXsKCQloYWxmIGs7CgkJaGFsZjIgc291cmNlT2Zmc2V0OwoJCXNvdXJjZU9mZnNldCA9IGhhbGYyKDQsIDIpOwoJCWsgPSB1S2VybmVsX1MxWzNdWzJdOwoJCWhhbGY0IGMgPSBNYXRyaXhFZmZlY3RfUzFfYzAoX2lucHV0LCBjb29yZCArIHNvdXJjZU9mZnNldCk7CgkJc3VtICs9IGMgKiBrOwoJfQoJewoJCWhhbGYgazsKCQloYWxmMiBzb3VyY2VPZmZzZXQ7CgkJc291cmNlT2Zmc2V0ID0gaGFsZjIoNCwgMyk7CgkJayA9IHVLZXJuZWxfUzFbNF1bM107CgkJaGFsZjQgYyA9IE1hdHJpeEVmZmVjdF9TMV9jMChfaW5wdXQsIGNvb3JkICsgc291cmNlT2Zmc2V0KTsKCQlzdW0gKz0gYyAqIGs7Cgl9Cgl7CgkJaGFsZiBrOwoJCWhhbGYyIHNvdXJjZU9mZnNldDsKCQlzb3VyY2VPZmZzZXQgPSBoYWxmMig0LCA0KTsKCQlrID0gdUtlcm5lbF9TMVs2XVswXTsKCQloYWxmNCBjID0gTWF0cml4RWZmZWN0X1MxX2MwKF9pbnB1dCwgY29vcmQgKyBzb3VyY2VPZmZzZXQpOwoJCXN1bSArPSBjICogazsKCX0KCWhhbGY0IGNvbG9yOwoJY29sb3IgPSBzdW0gKiB1R2Fpbl9TMSArIHVCaWFzX1MxOwoJY29sb3IuYSA9IHNhdHVyYXRlKGNvbG9yLmEpOwoJY29sb3IucmdiID0gY2xhbXAoY29sb3IucmdiLCAwLjAsIGNvbG9yLmEpOwoJcmV0dXJuIGNvbG9yOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4Q29udm9sdXRpb25fUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAAHAJRUYWBAAAAA2DXZFAQHAAAAAAAAEAAAAABAEMFPYMZ2AAAAAAAQFV566JAAAAAAYAAAADQEY2EKAUAQAAFA34SQKDYAAAACAAAAABAEMIC263PESAAAAAMAAAAAYCM5AFALAIAAAQF7JMFB4AAAACAAAAAAQAGHEJRUYWBAAAAAAAAAAAFQEL6S4KLYAAAAAAABAAAAAMWU56JIEBYAAAAAAAAAACYIEAAAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OtBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE5MikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc182X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAANQMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xOTIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CglyZXR1cm4gaGFsZjQobWl4KHVzdGFydF9TMV9jMF9jMF9jMCwgdWVuZF9TMV9jMF9jMF9jMCwgaGFsZihfdG1wXzFfY29vcmRzLngpKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQ2lyY3VsYXJSUmVjdF9TMihvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADIAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1MDAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTgwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAL0GAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgQ2lyY2xlQmx1cl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYyIHZlYyA9IGhhbGYyKChza19GcmFnQ29vcmQueHkgLSBmbG9hdDIodWNpcmNsZURhdGFfUzFfYzAueHkpKSAqIGZsb2F0KHVjaXJjbGVEYXRhX1MxX2MwLncpKTsKCWhhbGYgZGlzdCA9IGxlbmd0aCh2ZWMpICsgKDAuNSAtIHVjaXJjbGVEYXRhX1MxX2MwLnopICogdWNpcmNsZURhdGFfUzFfYzAudzsKCXJldHVybiBoYWxmNChNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIGZsb2F0MihoYWxmMihkaXN0LCAwLjUpKSkud3d3dyk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShDaXJjbGVCbHVyX1MxX2MwKF9zcmMpLCBfc3JjKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMADSAB4QAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1MiAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAFAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBvdXRwdXRDb2xvcl9TMCkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAIBAEAAAABJKQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs2XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDY7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAGQ56JIEBYAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAKBXZFAUHQAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAIC7UWCQ6AAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBC7UXKS6AAAAAAAAIAAAADEVDPSKBIPAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABAAOAAAABAAAAAAABBAMRQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1NnBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAACwMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAAAAEAAAABJYQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTNdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAAAAIAAAABLAIABAAAAABAEGQCEAAAAAAAAAAAAAAB2AAAAAAACAAAAAQ2EAAAAACQAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PGAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAHQDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfM19TMCkuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKE1hdHJpeEVmZmVjdF9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb2xvcl9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJCXNrX0ZyYWdDb2xvciA9IHNrX0ZyYWdDb2xvci5hMDAwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAAGAAAAAAAAAIAAAAAPAIABAAAAACYGEAAAAEAAAABUARCAIAAAAAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MCAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNF9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogcG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAOYDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc180X1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIHZUcmFuc2Zvcm1lZENvb3Jkc180X1MwKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQpOwp9CmhhbGY0IERldmljZVNwYWNlX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX2RzdF9pbihEZXZpY2VTcGFjZV9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GEMAAAYAAEHAAAARC4EAAAQWBQAAAAAAAAAQAAAAIBCAAAGQAEAAAAAQAAAABAEQAEAAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1P9AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgaW5TaGFkb3dQYXJhbXM7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUlJlY3RTaGFkb3cKCXZpblNoYWRvd1BhcmFtc19TMCA9IGluU2hhZG93UGFyYW1zOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAqgIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUlJlY3RTaGFkb3cKCWhhbGYzIHNoYWRvd1BhcmFtczsKCXNoYWRvd1BhcmFtcyA9IHZpblNoYWRvd1BhcmFtc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZCA9IGxlbmd0aChzaGFkb3dQYXJhbXMueHkpOwoJZmxvYXQyIHV2ID0gZmxvYXQyKHNoYWRvd1BhcmFtcy56ICogKDEuMCAtIGQpLCAwLjUpOwoJaGFsZiBmYWN0b3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHV2KS4wMDByLmE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGZhY3Rvcik7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAeAAAADAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQJAAAAAAAAAEAAAABJSQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEwXTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTBdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEwOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAGoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAAAQAAAAGQCBAMQAAAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PAAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAADYAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAAFCUBWKYKAAAAAAUAAAAHEAEAAACAAAAAMQSAUSSGRKBIAABAACAAAAAAAAAAAA6JAOAAACAAAAAAAUABQAAAAEAAAAAAAEEBVAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1PuAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzFfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAABYBwAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxX2MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxX2MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZsb2NhbENvb3JkX1MwOwpoYWxmNCBSZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MxX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMV9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzFfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzFfYzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxX2MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxX2MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzFfYzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBDaXJjdWxhclJSZWN0X1MxX2MxKF9zcmMpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIGhhbGY0KDEpKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAA0QQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAAAQBCFODCOJAAAAAPUXKS6AAAAAAAAQAAAADEGCIRLQYTCIAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MnAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAABwCAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzEoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","CMRQCIAABBYAAAEIXBAAACDQMAABRAFAAAAAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1MQAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBpbkVsbGlwc2VPZmZzZXQ7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCBpbkVsbGlwc2VSYWRpaTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2RWxsaXBzZU9mZnNldHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDQgdkVsbGlwc2VSYWRpaV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBFbGxpcHNlR2VvbWV0cnlQcm9jZXNzb3IKCXZFbGxpcHNlT2Zmc2V0c19TMCA9IGluRWxsaXBzZU9mZnNldDsKCXZFbGxpcHNlUmFkaWlfUzAgPSBpbkVsbGlwc2VSYWRpaTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAA4BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZFbGxpcHNlT2Zmc2V0c19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IHZFbGxpcHNlUmFkaWlfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRWxsaXBzZUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdDIgb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5OwoJb2Zmc2V0ICo9IHZFbGxpcHNlUmFkaWlfUzAueHk7CglmbG9hdCB0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWZsb2F0MiBncmFkID0gMi4wKm9mZnNldCp2RWxsaXBzZVJhZGlpX1MwLnh5OwoJZmxvYXQgZ3JhZF9kb3QgPSBkb3QoZ3JhZCwgZ3JhZCk7CglncmFkX2RvdCA9IG1heChncmFkX2RvdCwgMS4xNzU1ZS0zOCk7CglmbG9hdCBpbnZsZW4gPSBpbnZlcnNlc3FydChncmFkX2RvdCk7CglmbG9hdCBlZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUtdGVzdCppbnZsZW4pOwoJb2Zmc2V0ID0gdkVsbGlwc2VPZmZzZXRzX1MwLnh5KnZFbGxpcHNlUmFkaWlfUzAuenc7Cgl0ZXN0ID0gZG90KG9mZnNldCwgb2Zmc2V0KSAtIDEuMDsKCWdyYWQgPSAyLjAqb2Zmc2V0KnZFbGxpcHNlUmFkaWlfUzAuenc7CglncmFkX2RvdCA9IGRvdChncmFkLCBncmFkKTsKCWludmxlbiA9IGludmVyc2VzcXJ0KGdyYWRfZG90KTsKCWVkZ2VBbHBoYSAqPSBzYXR1cmF0ZSgwLjUrdGVzdCppbnZsZW4pOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGVkZ2VBbHBoYSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAAB8AAAAUAAAAAQAAACQAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAAYIAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAACkEAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQgZHgwID0gdWlubmVyUmVjdF9TMS5MIC0gc2tfRnJhZ0Nvb3JkLng7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzEuUkI7CglmbG9hdDIgZHh5ID0gbWF4KGZsb2F0MihtYXgoZHgwLCBkeHkxLngpLCBkeHkxLnkpLCAwLjApOwoJaGFsZiB0b3BBbHBoYSA9IGhhbGYoc2F0dXJhdGUoc2tfRnJhZ0Nvb3JkLnkgLSB1aW5uZXJSZWN0X1MxLlQpKTsKCWhhbGYgYWxwaGEgPSB0b3BBbHBoYSAqIGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1O0AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAALgMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NDBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAsNAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAIBAIAAAABLCIIBAAAAABAEGABBAMAACAIAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMCkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAAaQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAIMDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0IGR4MSA9IHNrX0ZyYWdDb29yZC54IC0gdWlubmVyUmVjdF9TMS5SOwoJZmxvYXQyIGR4eSA9IG1heChmbG9hdDIobWF4KGR4eTAueCwgZHgxKSwgZHh5MC55KSwgMC4wKTsKCWhhbGYgYm90dG9tQWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVpbm5lclJlY3RfUzEuQiAtIHNrX0ZyYWdDb29yZC55KSk7CgloYWxmIGFscGhhID0gYm90dG9tQWxwaGEgKiBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMS54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAAFAAAAAACDIQAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADiAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogQ292ZXJhZ2UgU2V0IE9wCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAACgAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAAAAIAAAABLAIABAAAAABAEGABBAMAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PGAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAEsDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfM19TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAAAAAABAAAAAAAAAA==","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAGIAGCACAAAAQAAAAAA5AAAAAAABAAAAACAZAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1PfAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IGZpbGxCb3VuZHM7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgbG9jYXRpb25zOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIERyYXdBdGxhc1BhdGhTaGFkZXIKCWZsb2F0MiB1bml0Q29vcmQgPSBmbG9hdDIoc2tfVmVydGV4SUQgJiAxLCBza19WZXJ0ZXhJRCA+PiAxKTsKCWZsb2F0MiBkZXZDb29yZCA9IG1peChmaWxsQm91bmRzLnh5LCBmaWxsQm91bmRzLnp3LCB1bml0Q29vcmQpOwoJZmxvYXQyIGF0bGFzVG9wTGVmdCA9IGZsb2F0MihhYnMobG9jYXRpb25zLngpIC0gMSwgbG9jYXRpb25zLnkpOwoJZmxvYXQyIGRldlRvcExlZnQgPSBsb2NhdGlvbnMuenc7Cglib29sIHRyYW5zcG9zZWQgPSBsb2NhdGlvbnMueCA8IDA7CglmbG9hdDIgYXRsYXNDb29yZCA9IGRldkNvb3JkIC0gZGV2VG9wTGVmdDsKCWlmICh0cmFuc3Bvc2VkKSAKCXsKCQlhdGxhc0Nvb3JkID0gYXRsYXNDb29yZC55eDsKCX0KCWF0bGFzQ29vcmQgKz0gYXRsYXNUb3BMZWZ0OwoJdmF0bGFzQ29vcmRfUzAgPSBhdGxhc0Nvb3JkICogdWF0bGFzX2FkanVzdF9TMDsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBkZXZDb29yZC54eTAxOwp9CgAAAAAAfQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdCBkeDAgPSB1aW5uZXJSZWN0X1MxLkwgLSBza19GcmFnQ29vcmQueDsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeDAsIGR4eTEueCksIGR4eTEueSksIDAuMCk7CgloYWxmIHRvcEFscGhhID0gaGFsZihzYXR1cmF0ZShza19GcmFnQ29vcmQueSAtIHVpbm5lclJlY3RfUzEuVCkpOwoJaGFsZiBhbHBoYSA9IHRvcEFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERyYXdBdGxhc1BhdGhTaGFkZXIKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmIGF0bGFzQ292ZXJhZ2UgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHZhdGxhc0Nvb3JkX1MwKS4wMDByLmE7CglvdXRwdXRDb3ZlcmFnZV9TMCAqPSBhdGxhc0NvdmVyYWdlOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAQAAAAAAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","IYBAAAAABAAACAABBYAAAKAAAMAAGEAAAABRAEAAAEHCAAAAAAAABCAAAAAABAEQAEAAAAAKAAAAABAAAAAP2AAAAAAQAAAAAAAAAAACAAAAAAAAAAAA":"CgAAAExTS1P9DwAAY29uc3QgZmxvYXQgUFJFQ0lTSU9OID0gNC4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9SRVNPTFZFX0xFVkVMID0gNS4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9TRUdNRU5UUyA9IDMyLjAwMDAwMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHJlc29sdmVMZXZlbF9hbmRfaWR4OwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDQgcDAxOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgcDIzOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDIgZmFuUG9pbnRBdHRyaWI7CmZsb2F0IHdhbmdzX2Zvcm11bGFfbWF4X2ZkaWZmX3AyKGZsb2F0MiBwMCwgZmxvYXQyIHAxLCBmbG9hdDIgcDIsIGZsb2F0MiBwMyxmbG9hdDJ4MiBtYXRyaXgpIAp7CglmbG9hdDIgZDAgPSBtYXRyaXggKiAoZm1hKGZsb2F0MigtMiksIHAxLCBwMikgKyBwMCk7CglmbG9hdDIgZDEgPSBtYXRyaXggKiAoZm1hKGZsb2F0MigtMiksIHAyLCBwMykgKyBwMSk7CglyZXR1cm4gbWF4KGRvdChkMCxkMCksIGRvdChkMSxkMSkpOwp9CmZsb2F0IHdhbmdzX2Zvcm11bGFfY3ViaWMoZmxvYXQgX3ByZWNpc2lvbl8sIGZsb2F0MiBwMCwgZmxvYXQyIHAxLCBmbG9hdDIgcDIsIGZsb2F0MiBwMyxmbG9hdDJ4MiBtYXRyaXgpIAp7CglmbG9hdCBtID0gd2FuZ3NfZm9ybXVsYV9tYXhfZmRpZmZfcDIocDAsIHAxLCBwMiwgcDMsIG1hdHJpeCk7CglyZXR1cm4gbWF4KGNlaWwoc3FydCgwLjc1ICogX3ByZWNpc2lvbl8gKiBzcXJ0KG0pKSksIDEuMCk7Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jdWJpY19sb2cyKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdDIgcDMsZmxvYXQyeDIgbWF0cml4KSAKewoJZmxvYXQgbSA9IHdhbmdzX2Zvcm11bGFfbWF4X2ZkaWZmX3AyKHAwLCBwMSwgcDIsIHAzLCBtYXRyaXgpOwoJcmV0dXJuIGNlaWwobG9nMihtYXgoMC41NjI1ICogX3ByZWNpc2lvbl8gKiBfcHJlY2lzaW9uXyAqIG0sIDEuMCkpICogLjI1KTsKfQpmbG9hdCB3YW5nc19mb3JtdWxhX2NvbmljX3AyKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdCB3KSAKewoJZmxvYXQyIEMgPSAobWluKG1pbihwMCwgcDEpLCBwMikgKyBtYXgobWF4KHAwLCBwMSksIHAyKSkgKiAwLjU7CglwMCAtPSBDOwoJcDEgLT0gQzsKCXAyIC09IEM7CglmbG9hdCBtID0gc3FydChtYXgobWF4KGRvdChwMCxwMCksIGRvdChwMSxwMSkpLCBkb3QocDIscDIpKSk7CglmbG9hdDIgZHAgPSBmbWEoZmxvYXQyKC0yLjAgKiB3KSwgcDEsIHAwKSArIHAyOwoJZmxvYXQgZHcgPSBhYnMoZm1hKC0yLjAsIHcsIDIuMCkpOwoJZmxvYXQgcnBfbWludXNfMSA9IG1heCgwLjAsIGZtYShtLCBfcHJlY2lzaW9uXywgLTEuMCkpOwoJZmxvYXQgbnVtZXIgPSBsZW5ndGgoZHApICogX3ByZWNpc2lvbl8gKyBycF9taW51c18xICogZHc7CglmbG9hdCBkZW5vbSA9IDQgKiBtaW4odywgMS4wKTsKCXJldHVybiBudW1lci9kZW5vbTsKfQpmbG9hdCB3YW5nc19mb3JtdWxhX2NvbmljKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdCB3KSAKewoJZmxvYXQgbjIgPSB3YW5nc19mb3JtdWxhX2NvbmljX3AyKF9wcmVjaXNpb25fLCBwMCwgcDEsIHAyLCB3KTsKCXJldHVybiBtYXgoY2VpbChzcXJ0KG4yKSksIDEuMCk7Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jb25pY19sb2cyKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdCB3KSAKewoJZmxvYXQgbjIgPSB3YW5nc19mb3JtdWxhX2NvbmljX3AyKF9wcmVjaXNpb25fLCBwMCwgcDEsIHAyLCB3KTsKCXJldHVybiBjZWlsKGxvZzIobWF4KG4yLCAxLjApKSAqIC41KTsKfQpib29sIGlzX2NvbmljX2N1cnZlKCkgCnsKCXJldHVybiBpc2luZihwMjMudyk7Cn0KYm9vbCBpc190cmlhbmd1bGFyX2NvbmljX2N1cnZlKCkgCnsKCXJldHVybiBpc2luZihwMjMueik7Cn0KZmxvYXQgbGRleHBfcG9ydGFibGUoZmxvYXQgeCwgZmxvYXQgcCkgCnsKCXJldHVybiB4ICogZXhwMihwKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciB0ZXNzZWxsYXRlX01pZGRsZU91dFNoYWRlcgoJZmxvYXQyeDIgQUZGSU5FX01BVFJJWCA9IGZsb2F0MngyKHVhZmZpbmVNYXRyaXhfUzAueHksIHVhZmZpbmVNYXRyaXhfUzAuencpOwoJZmxvYXQyIFRSQU5TTEFURSA9IHV0cmFuc2xhdGVfUzA7CglmbG9hdCByZXNvbHZlTGV2ZWwgPSByZXNvbHZlTGV2ZWxfYW5kX2lkeC54OwoJZmxvYXQgaWR4SW5SZXNvbHZlTGV2ZWwgPSByZXNvbHZlTGV2ZWxfYW5kX2lkeC55OwoJZmxvYXQyIGxvY2FsY29vcmQ7CglpZiAocmVzb2x2ZUxldmVsIDwgMCkgCgl7CgkJbG9jYWxjb29yZCA9IGZhblBvaW50QXR0cmliOwoJfQoJZWxzZSBpZiAoaXNfdHJpYW5ndWxhcl9jb25pY19jdXJ2ZSgpKSAKCXsKCQlsb2NhbGNvb3JkID0gKHJlc29sdmVMZXZlbCAhPSAwKSA/IHAwMS56dzogKGlkeEluUmVzb2x2ZUxldmVsICE9IDApID8gcDIzLnh5OiBwMDEueHk7Cgl9CgllbHNlIAoJewoJCWZsb2F0MiBwMD1wMDEueHksIHAxPXAwMS56dywgcDI9cDIzLnh5LCBwMz1wMjMuenc7CgkJZmxvYXQgdyA9IC0xOwoJCWZsb2F0IG1heFJlc29sdmVMZXZlbDsKCQlpZiAoaXNfY29uaWNfY3VydmUoKSkgCgkJewoJCQl3ID0gcDMueDsKCQkJbWF4UmVzb2x2ZUxldmVsID0gd2FuZ3NfZm9ybXVsYV9jb25pY19sb2cyKFBSRUNJU0lPTiwgQUZGSU5FX01BVFJJWCAqIHAwLEFGRklORV9NQVRSSVggKiBwMSxBRkZJTkVfTUFUUklYICogcDIsIHcpOwoJCQlwMSAqPSB3OwoJCQlwMyA9IHAyOwoJCX0KCQllbHNlIAoJCXsKCQkJbWF4UmVzb2x2ZUxldmVsID0gd2FuZ3NfZm9ybXVsYV9jdWJpY19sb2cyKFBSRUNJU0lPTiwgcDAsIHAxLCBwMiwgcDMsQUZGSU5FX01BVFJJWCk7CgkJfQoJCWlmIChyZXNvbHZlTGV2ZWwgPiBtYXhSZXNvbHZlTGV2ZWwpIAoJCXsKCQkJaWR4SW5SZXNvbHZlTGV2ZWwgPSBmbG9vcihsZGV4cF9wb3J0YWJsZShpZHhJblJlc29sdmVMZXZlbCxtYXhSZXNvbHZlTGV2ZWwgLSByZXNvbHZlTGV2ZWwpKTsKCQkJcmVzb2x2ZUxldmVsID0gbWF4UmVzb2x2ZUxldmVsOwoJCX0KCQlmbG9hdCBmaXhlZFZlcnRleElEID0gZmxvb3IoLjUgKyBsZGV4cF9wb3J0YWJsZShpZHhJblJlc29sdmVMZXZlbCwgTUFYX0ZJWEVEX1JFU09MVkVfTEVWRUwgLSByZXNvbHZlTGV2ZWwpKTsKCQlpZiAoMCA8IGZpeGVkVmVydGV4SUQgJiYgZml4ZWRWZXJ0ZXhJRCA8IE1BWF9GSVhFRF9TRUdNRU5UUykgCgkJewoJCQlmbG9hdCBUID0gZml4ZWRWZXJ0ZXhJRCAqICgxIC8gTUFYX0ZJWEVEX1NFR01FTlRTKTsKCQkJZmxvYXQyIGFiID0gbWl4KHAwLCBwMSwgVCk7CgkJCWZsb2F0MiBiYyA9IG1peChwMSwgcDIsIFQpOwoJCQlmbG9hdDIgY2QgPSBtaXgocDIsIHAzLCBUKTsKCQkJZmxvYXQyIGFiYyA9IG1peChhYiwgYmMsIFQpOwoJCQlmbG9hdDIgYmNkID0gbWl4KGJjLCBjZCwgVCk7CgkJCWZsb2F0MiBhYmNkID0gbWl4KGFiYywgYmNkLCBUKTsKCQkJZmxvYXQgdSA9IG1peCgxLjAsIHcsIFQpOwoJCQlmbG9hdCB2ID0gdyArIDEgLSB1OwoJCQlmbG9hdCB1diA9IG1peCh1LCB2LCBUKTsKCQkJbG9jYWxjb29yZCA9ICh3IDwgMCkgP2FiY2Q6YWJjL3V2OwoJCX0KCQllbHNlIAoJCXsKCQkJbG9jYWxjb29yZCA9IChmaXhlZFZlcnRleElEID09IDApID8gcDAueHkgOiBwMy54eTsKCQl9Cgl9CglmbG9hdDIgdmVydGV4cG9zID0gQUZGSU5FX01BVFJJWCAqIGxvY2FsY29vcmQgKyBUUkFOU0xBVEU7Cglza19Qb3NpdGlvbiA9IHZlcnRleHBvcy54eTAxOwp9CgAAAAAAAACFAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIHRlc3NlbGxhdGVfTWlkZGxlT3V0U2hhZGVyCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IHVjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IERpc2FibGUgQ29sb3IKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAAAQAAAAIAAAABAAAAHQAAAAAAAAABAAAACAAAAAMAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAdAAAAIAAAAAIAAAAoAAAACgAAAAAAAAAAAAAA/QAAAA==","GEMAAAYAAEHAAAARC4EAAAQWBQAAAAAAAAAQAAAAIBCAAAGQAEAAAAAQAAAABAEQAEAAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1P9AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgaW5TaGFkb3dQYXJhbXM7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUlJlY3RTaGFkb3cKCXZpblNoYWRvd1BhcmFtc19TMCA9IGluU2hhZG93UGFyYW1zOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAqgIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmMyB2aW5TaGFkb3dQYXJhbXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUlJlY3RTaGFkb3cKCWhhbGYzIHNoYWRvd1BhcmFtczsKCXNoYWRvd1BhcmFtcyA9IHZpblNoYWRvd1BhcmFtc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZCA9IGxlbmd0aChzaGFkb3dQYXJhbXMueHkpOwoJZmxvYXQyIHV2ID0gZmxvYXQyKHNoYWRvd1BhcmFtcy56ICogKDEuMCAtIGQpLCAwLjUpOwoJaGFsZiBmYWN0b3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHV2KS4wMDByLmE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGZhY3Rvcik7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAeAAAADAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCBAMQACAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAYEIBAAAAFAAAAAAQAAAAH5AAAAAAIAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACmAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCQlza19GcmFnQ29sb3IgPSBza19GcmFnQ29sb3IuYTAwMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAAoAAAAAAAAAAQAAAP0AAAA=","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABAAAAAAIA2GZPMTQCAAAMAAAAAEACHDQCDARAAAAAPGD4GCQAAAAAAAAABAAAAAGJJHLYYGACAAAAAAAEAAAACRGL345AQAABAABAAAAARQ4A4YEIAAAADYAZBYXAIAAAAAIAAAABSAQBAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAGAGMOF4CAAAAACAAAAABAEMIC263PESAAAAAMAAAAAMDCHCACDAQAAAAGPOB4CCAAAAAAACAAAAAMTJYRYQAQQEAAAAAAAAAGARJ4INQYLAEAAAAAEAAAABSEQM44LYEAAAAAAAAAAADAAUAQAAQAAAAGQCAIBCAAAAAAAAAAAYAADIAAAABCEDWKYKEAAAAAMAAAAAIAAAAACAI2RKA3FMFAAAAAAGAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1O5BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAANgRAABjb25zdCBpbnQga0ZpbGxCV19TMl9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMl9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMl9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKGxlbmd0aChfdG1wXzNfY29vcmRzKSksIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFJhZGlhbExheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBBcHBseVBhaW50QWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0KF9pbnB1dC54eXosIDEuMCkpICogX2lucHV0LncpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gQXBwbHlQYWludEFscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IFJlY3RfUzJfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF83X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgxKSA9PSBrRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzJfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MyX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMl9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzIoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MyX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZEVkZ2UKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZWRnZUFscGhhOwoJaGFsZjIgZHV2ZHggPSBoYWxmMihkRmR4KHZRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZHV2ZHkgPSBoYWxmMihkRmR5KHZRdWFkRWRnZV9TMC54eSkpOwoJaWYgKHZRdWFkRWRnZV9TMC56ID4gMC4wICYmIHZRdWFkRWRnZV9TMC53ID4gMC4wKSAKCXsKCQllZGdlQWxwaGEgPSBoYWxmKG1pbihtaW4odlF1YWRFZGdlX1MwLnosIHZRdWFkRWRnZV9TMC53KSArIDAuNSwgMS4wKSk7Cgl9CgllbHNlIAoJewoJCWhhbGYyIGdGID0gaGFsZjIoaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHgueCAtIGR1dmR4LnkpLCAgICAgICAgICAgICAgICAgaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHkueCAtIGR1dmR5LnkpKTsKCQllZGdlQWxwaGEgPSBoYWxmKHZRdWFkRWRnZV9TMC54KnZRdWFkRWRnZV9TMC54IC0gdlF1YWRFZGdlX1MwLnkpOwoJCWVkZ2VBbHBoYSA9IHNhdHVyYXRlKDAuNSAtIGVkZ2VBbHBoYSAvIGxlbmd0aChnRikpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IEJsZW5kX1MyKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1MDBQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MzIwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAABwPAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTMwNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTMyMCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJOwoJOwoJaW50IGNodW5rID0gMDsKCTsKCWludCBwb3M7CglpZiAodCA8IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwW2NodW5rXS55KSAKCXsKCQlwb3MgPSBpbnQodCA8IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwW2NodW5rXS54ID8gMCA6IDEpOwoJfQoJZWxzZSAKCXsKCQlwb3MgPSBpbnQodCA8IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwX2MwW2NodW5rXS56ID8gMiA6IDMpOwoJfQoJOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogdXNjYWxlX1MxX2MwX2MwX2MwX2MwW3Bvc10gKyB1Ymlhc19TMV9jMF9jMF9jMF9jMFtwb3NdKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQGAAAAAAABAEAAAABJMQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs3XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzddOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8NzsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","IYAAAAAABAAACAABBYAAAIAAAIAAGEAAAABRAEAAAAAAAAEIAAAAAAEASAAQAAAABIAAAAAEAAAAB7IAAAAACAAAAAAAAAAAAIAAAAAAAAAAA":"CgAAAExTS1OMDwAAY29uc3QgZmxvYXQgUFJFQ0lTSU9OID0gNC4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9SRVNPTFZFX0xFVkVMID0gNS4wMDAwMDA7CmNvbnN0IGZsb2F0IE1BWF9GSVhFRF9TRUdNRU5UUyA9IDMyLjAwMDAwMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHJlc29sdmVMZXZlbF9hbmRfaWR4OwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDQgcDAxOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgcDIzOwpmbG9hdCB3YW5nc19mb3JtdWxhX21heF9mZGlmZl9wMihmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdDIgcDMsZmxvYXQyeDIgbWF0cml4KSAKewoJZmxvYXQyIGQwID0gbWF0cml4ICogKGZtYShmbG9hdDIoLTIpLCBwMSwgcDIpICsgcDApOwoJZmxvYXQyIGQxID0gbWF0cml4ICogKGZtYShmbG9hdDIoLTIpLCBwMiwgcDMpICsgcDEpOwoJcmV0dXJuIG1heChkb3QoZDAsZDApLCBkb3QoZDEsZDEpKTsKfQpmbG9hdCB3YW5nc19mb3JtdWxhX2N1YmljKGZsb2F0IF9wcmVjaXNpb25fLCBmbG9hdDIgcDAsIGZsb2F0MiBwMSwgZmxvYXQyIHAyLCBmbG9hdDIgcDMsZmxvYXQyeDIgbWF0cml4KSAKewoJZmxvYXQgbSA9IHdhbmdzX2Zvcm11bGFfbWF4X2ZkaWZmX3AyKHAwLCBwMSwgcDIsIHAzLCBtYXRyaXgpOwoJcmV0dXJuIG1heChjZWlsKHNxcnQoMC43NSAqIF9wcmVjaXNpb25fICogc3FydChtKSkpLCAxLjApOwp9CmZsb2F0IHdhbmdzX2Zvcm11bGFfY3ViaWNfbG9nMihmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQyIHAzLGZsb2F0MngyIG1hdHJpeCkgCnsKCWZsb2F0IG0gPSB3YW5nc19mb3JtdWxhX21heF9mZGlmZl9wMihwMCwgcDEsIHAyLCBwMywgbWF0cml4KTsKCXJldHVybiBjZWlsKGxvZzIobWF4KDAuNTYyNSAqIF9wcmVjaXNpb25fICogX3ByZWNpc2lvbl8gKiBtLCAxLjApKSAqIC4yNSk7Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jb25pY19wMihmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQgdykgCnsKCWZsb2F0MiBDID0gKG1pbihtaW4ocDAsIHAxKSwgcDIpICsgbWF4KG1heChwMCwgcDEpLCBwMikpICogMC41OwoJcDAgLT0gQzsKCXAxIC09IEM7CglwMiAtPSBDOwoJZmxvYXQgbSA9IHNxcnQobWF4KG1heChkb3QocDAscDApLCBkb3QocDEscDEpKSwgZG90KHAyLHAyKSkpOwoJZmxvYXQyIGRwID0gZm1hKGZsb2F0MigtMi4wICogdyksIHAxLCBwMCkgKyBwMjsKCWZsb2F0IGR3ID0gYWJzKGZtYSgtMi4wLCB3LCAyLjApKTsKCWZsb2F0IHJwX21pbnVzXzEgPSBtYXgoMC4wLCBmbWEobSwgX3ByZWNpc2lvbl8sIC0xLjApKTsKCWZsb2F0IG51bWVyID0gbGVuZ3RoKGRwKSAqIF9wcmVjaXNpb25fICsgcnBfbWludXNfMSAqIGR3OwoJZmxvYXQgZGVub20gPSA0ICogbWluKHcsIDEuMCk7CglyZXR1cm4gbnVtZXIvZGVub207Cn0KZmxvYXQgd2FuZ3NfZm9ybXVsYV9jb25pYyhmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQgdykgCnsKCWZsb2F0IG4yID0gd2FuZ3NfZm9ybXVsYV9jb25pY19wMihfcHJlY2lzaW9uXywgcDAsIHAxLCBwMiwgdyk7CglyZXR1cm4gbWF4KGNlaWwoc3FydChuMikpLCAxLjApOwp9CmZsb2F0IHdhbmdzX2Zvcm11bGFfY29uaWNfbG9nMihmbG9hdCBfcHJlY2lzaW9uXywgZmxvYXQyIHAwLCBmbG9hdDIgcDEsIGZsb2F0MiBwMiwgZmxvYXQgdykgCnsKCWZsb2F0IG4yID0gd2FuZ3NfZm9ybXVsYV9jb25pY19wMihfcHJlY2lzaW9uXywgcDAsIHAxLCBwMiwgdyk7CglyZXR1cm4gY2VpbChsb2cyKG1heChuMiwgMS4wKSkgKiAuNSk7Cn0KYm9vbCBpc19jb25pY19jdXJ2ZSgpIAp7CglyZXR1cm4gaXNpbmYocDIzLncpOwp9CmJvb2wgaXNfdHJpYW5ndWxhcl9jb25pY19jdXJ2ZSgpIAp7CglyZXR1cm4gaXNpbmYocDIzLnopOwp9CmZsb2F0IGxkZXhwX3BvcnRhYmxlKGZsb2F0IHgsIGZsb2F0IHApIAp7CglyZXR1cm4geCAqIGV4cDIocCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgdGVzc2VsbGF0ZV9NaWRkbGVPdXRTaGFkZXIKCWZsb2F0MngyIEFGRklORV9NQVRSSVggPSBmbG9hdDJ4Mih1YWZmaW5lTWF0cml4X1MwLnh5LCB1YWZmaW5lTWF0cml4X1MwLnp3KTsKCWZsb2F0MiBUUkFOU0xBVEUgPSB1dHJhbnNsYXRlX1MwOwoJZmxvYXQgcmVzb2x2ZUxldmVsID0gcmVzb2x2ZUxldmVsX2FuZF9pZHgueDsKCWZsb2F0IGlkeEluUmVzb2x2ZUxldmVsID0gcmVzb2x2ZUxldmVsX2FuZF9pZHgueTsKCWZsb2F0MiBsb2NhbGNvb3JkOwoJaWYgKGlzX3RyaWFuZ3VsYXJfY29uaWNfY3VydmUoKSkgCgl7CgkJbG9jYWxjb29yZCA9IChyZXNvbHZlTGV2ZWwgIT0gMCkgPyBwMDEuenc6IChpZHhJblJlc29sdmVMZXZlbCAhPSAwKSA/IHAyMy54eTogcDAxLnh5OwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgcDA9cDAxLnh5LCBwMT1wMDEuencsIHAyPXAyMy54eSwgcDM9cDIzLnp3OwoJCWZsb2F0IHcgPSAtMTsKCQlmbG9hdCBtYXhSZXNvbHZlTGV2ZWw7CgkJaWYgKGlzX2NvbmljX2N1cnZlKCkpIAoJCXsKCQkJdyA9IHAzLng7CgkJCW1heFJlc29sdmVMZXZlbCA9IHdhbmdzX2Zvcm11bGFfY29uaWNfbG9nMihQUkVDSVNJT04sIEFGRklORV9NQVRSSVggKiBwMCxBRkZJTkVfTUFUUklYICogcDEsQUZGSU5FX01BVFJJWCAqIHAyLCB3KTsKCQkJcDEgKj0gdzsKCQkJcDMgPSBwMjsKCQl9CgkJZWxzZSAKCQl7CgkJCW1heFJlc29sdmVMZXZlbCA9IHdhbmdzX2Zvcm11bGFfY3ViaWNfbG9nMihQUkVDSVNJT04sIHAwLCBwMSwgcDIsIHAzLEFGRklORV9NQVRSSVgpOwoJCX0KCQlpZiAocmVzb2x2ZUxldmVsID4gbWF4UmVzb2x2ZUxldmVsKSAKCQl7CgkJCWlkeEluUmVzb2x2ZUxldmVsID0gZmxvb3IobGRleHBfcG9ydGFibGUoaWR4SW5SZXNvbHZlTGV2ZWwsbWF4UmVzb2x2ZUxldmVsIC0gcmVzb2x2ZUxldmVsKSk7CgkJCXJlc29sdmVMZXZlbCA9IG1heFJlc29sdmVMZXZlbDsKCQl9CgkJZmxvYXQgZml4ZWRWZXJ0ZXhJRCA9IGZsb29yKC41ICsgbGRleHBfcG9ydGFibGUoaWR4SW5SZXNvbHZlTGV2ZWwsIE1BWF9GSVhFRF9SRVNPTFZFX0xFVkVMIC0gcmVzb2x2ZUxldmVsKSk7CgkJaWYgKDAgPCBmaXhlZFZlcnRleElEICYmIGZpeGVkVmVydGV4SUQgPCBNQVhfRklYRURfU0VHTUVOVFMpIAoJCXsKCQkJZmxvYXQgVCA9IGZpeGVkVmVydGV4SUQgKiAoMSAvIE1BWF9GSVhFRF9TRUdNRU5UUyk7CgkJCWZsb2F0MiBhYiA9IG1peChwMCwgcDEsIFQpOwoJCQlmbG9hdDIgYmMgPSBtaXgocDEsIHAyLCBUKTsKCQkJZmxvYXQyIGNkID0gbWl4KHAyLCBwMywgVCk7CgkJCWZsb2F0MiBhYmMgPSBtaXgoYWIsIGJjLCBUKTsKCQkJZmxvYXQyIGJjZCA9IG1peChiYywgY2QsIFQpOwoJCQlmbG9hdDIgYWJjZCA9IG1peChhYmMsIGJjZCwgVCk7CgkJCWZsb2F0IHUgPSBtaXgoMS4wLCB3LCBUKTsKCQkJZmxvYXQgdiA9IHcgKyAxIC0gdTsKCQkJZmxvYXQgdXYgPSBtaXgodSwgdiwgVCk7CgkJCWxvY2FsY29vcmQgPSAodyA8IDApID9hYmNkOmFiYy91djsKCQl9CgkJZWxzZSAKCQl7CgkJCWxvY2FsY29vcmQgPSAoZml4ZWRWZXJ0ZXhJRCA9PSAwKSA/IHAwLnh5IDogcDMueHk7CgkJfQoJfQoJZmxvYXQyIHZlcnRleHBvcyA9IEFGRklORV9NQVRSSVggKiBsb2NhbGNvb3JkICsgVFJBTlNMQVRFOwoJc2tfUG9zaXRpb24gPSB2ZXJ0ZXhwb3MueHkwMTsKfQoAAAAAhQEAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVhZmZpbmVNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDIgdXRyYW5zbGF0ZV9TMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVjb2xvcl9TMDsKfQo7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCB0ZXNzZWxsYXRlX01pZGRsZU91dFNoYWRlcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSB1Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBEaXNhYmxlIENvbG9yCgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAEAAAACAAAAAQAAAB0AAAAAAAAAAQAAAAgAAAACAAAAHwAAAAAAAAACAAAAHwAAABAAAAACAAAAIAAAAAoAAAAAAAAAAAAAAP0AAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAAAAIAAAABLAIABAAAAABAEGABBAMAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PGAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAEsDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfM19TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OlBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAAAkDQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTY4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGQBIAAABAAAAANAEAAAAAAAAAAAAAABQAAGQAAAAFJ3XASIUAAAAAAYAAAAAQAAAAAAEQCGKTXOBEBIAABAABAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NRAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVjaXJjbGVfUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAANAYAAGNvbnN0IGludCBrRmlsbEFBX1MyX2MwID0gMTsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWNpcmNsZV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2lyY2xlX1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBkOwoJaWYgKGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzApIAoJewoJCWQgPSBoYWxmKChsZW5ndGgoKHVjaXJjbGVfUzJfYzAueHkgLSBza19GcmFnQ29vcmQueHkpICogdWNpcmNsZV9TMl9jMC53KSAtIDEuMCkgKiB1Y2lyY2xlX1MyX2MwLnopOwoJfQoJZWxzZSAKCXsKCQlkID0gaGFsZigoMS4wIC0gbGVuZ3RoKCh1Y2lyY2xlX1MyX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzJfYzAudykpICogdWNpcmNsZV9TMl9jMC56KTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChpbnQoMSkgPT0ga0ZpbGxBQV9TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzAgPyBzYXR1cmF0ZShkKSA6IGhhbGYoZCA+IDAuNSA/IDEgOiAwKSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoX3NyYywgQ2lyY2xlX1MyX2MwKF9zcmMpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBCbGVuZF9TMihvdXRwdXRfUzEsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","DASAAAAAQAAWAABAYAAQBYH7777Z6QQBAEAAAAAAEAAAAAAAEBSAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OYAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAC2AgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEJpdG1hcFRleHQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApOwoJfQoJb3V0cHV0Q29sb3JfUzAgPSBvdXRwdXRDb2xvcl9TMCAqIHRleENvbG9yOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAA0AAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HTQAAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAQAHAAAAAQAAAAAAAQQGAAAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRFZGdlCgl2UXVhZEVkZ2VfUzAgPSBpblF1YWRFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAiwMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0Owp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkRWRnZQoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodlF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodlF1YWRFZGdlX1MwLnh5KSk7CglpZiAodlF1YWRFZGdlX1MwLnogPiAwLjAgJiYgdlF1YWRFZGdlX1MwLncgPiAwLjApIAoJewoJCWVkZ2VBbHBoYSA9IGhhbGYobWluKG1pbih2UXVhZEVkZ2VfUzAueiwgdlF1YWRFZGdlX1MwLncpICsgMC41LCAxLjApKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjIgZ0YgPSBoYWxmMihoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeC54IC0gZHV2ZHgueSksICAgICAgICAgICAgICAgICBoYWxmKDIuMCp2UXVhZEVkZ2VfUzAueCpkdXZkeS54IC0gZHV2ZHkueSkpOwoJCWVkZ2VBbHBoYSA9IGhhbGYodlF1YWRFZGdlX1MwLngqdlF1YWRFZGdlX1MwLnggLSB2UXVhZEVkZ2VfUzAueSk7CgkJZWRnZUFscGhhID0gc2F0dXJhdGUoMC41IC0gZWRnZUFscGhhIC8gbGVuZ3RoKGdGKSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAEADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1M8DQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCByYWRpaV9zZWxlY3RvcjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IGNvcm5lcl9hbmRfcmFkaXVzX291dHNldHM7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBhYV9ibG9hdF9hbmRfY292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCByYWRpaV94OwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBmbG9hdDQgcmFkaWlfeTsKbGF5b3V0KGxvY2F0aW9uID0gNSkgaW4gZmxvYXQ0IHNrZXc7CmxheW91dChsb2NhdGlvbiA9IDYpIGluIGZsb2F0MiB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlOwpsYXlvdXQobG9jYXRpb24gPSA3KSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRmlsbFJSZWN0T3A6OlByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7CglmbG9hdCBhYV9ibG9hdF9tdWx0aXBsaWVyID0gMTsKCWZsb2F0MiBjb3JuZXIgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnh5OwoJZmxvYXQyIHJhZGl1c19vdXRzZXQgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnp3OwoJZmxvYXQyIGFhX2Jsb2F0X2RpcmVjdGlvbiA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS54eTsKCWZsb2F0IGlzX2xpbmVhcl9jb3ZlcmFnZSA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS53OwoJZmxvYXQyIHBpeGVsbGVuZ3RoID0gaW52ZXJzZXNxcnQoZmxvYXQyKGRvdChza2V3Lnh6LCBza2V3Lnh6KSwgZG90KHNrZXcueXcsIHNrZXcueXcpKSk7CglmbG9hdDQgbm9ybWFsaXplZF9heGlzX2RpcnMgPSBza2V3ICogcGl4ZWxsZW5ndGgueHl4eTsKCWZsb2F0MiBheGlzd2lkdGhzID0gKGFicyhub3JtYWxpemVkX2F4aXNfZGlycy54eSkgKyBhYnMobm9ybWFsaXplZF9heGlzX2RpcnMuencpKTsKCWZsb2F0MiBhYV9ibG9hdHJhZGl1cyA9IGF4aXN3aWR0aHMgKiBwaXhlbGxlbmd0aCAqIC41OwoJZmxvYXQ0IHJhZGlpX2FuZF9uZWlnaGJvcnMgPSByYWRpaV9zZWxlY3RvciogZmxvYXQ0eDQocmFkaWlfeCwgcmFkaWlfeSwgcmFkaWlfeC55eHd6LCByYWRpaV95Lnd6eXgpOwoJZmxvYXQyIHJhZGlpID0gcmFkaWlfYW5kX25laWdoYm9ycy54eTsKCWZsb2F0MiBuZWlnaGJvcl9yYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMuenc7CglmbG9hdCBjb3ZlcmFnZV9tdWx0aXBsaWVyID0gMTsKCWlmIChhbnkoZ3JlYXRlclRoYW4oYWFfYmxvYXRyYWRpdXMsIGZsb2F0MigxKSkpKSAKCXsKCQljb3JuZXIgPSBtYXgoYWJzKGNvcm5lciksIGFhX2Jsb2F0cmFkaXVzKSAqIHNpZ24oY29ybmVyKTsKCQljb3ZlcmFnZV9tdWx0aXBsaWVyID0gMSAvIChtYXgoYWFfYmxvYXRyYWRpdXMueCwgMSkgKiBtYXgoYWFfYmxvYXRyYWRpdXMueSwgMSkpOwoJCXJhZGlpID0gZmxvYXQyKDApOwoJfQoJZmxvYXQgY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UuejsKCWlmIChhbnkobGVzc1RoYW4ocmFkaWksIGFhX2Jsb2F0cmFkaXVzICogMS41KSkpIAoJewoJCXJhZGlpID0gZmxvYXQyKDApOwoJCWFhX2Jsb2F0X2RpcmVjdGlvbiA9IHNpZ24oY29ybmVyKTsKCQlpZiAoY292ZXJhZ2UgPiAuNSkgCgkJewoJCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSAtYWFfYmxvYXRfZGlyZWN0aW9uOwoJCX0KCQlpc19saW5lYXJfY292ZXJhZ2UgPSAxOwoJfQoJZWxzZSAKCXsKCQlyYWRpaSA9IGNsYW1wKHJhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQluZWlnaGJvcl9yYWRpaSA9IGNsYW1wKG5laWdoYm9yX3JhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQlmbG9hdDIgc3BhY2luZyA9IDIgLSByYWRpaSAtIG5laWdoYm9yX3JhZGlpOwoJCWZsb2F0MiBleHRyYV9wYWQgPSBtYXgocGl4ZWxsZW5ndGggKiAuMDYyNSAtIHNwYWNpbmcsIGZsb2F0MigwKSk7CgkJcmFkaWkgLT0gZXh0cmFfcGFkICogLjU7Cgl9CglmbG9hdDIgYWFfb3V0c2V0ID0gYWFfYmxvYXRfZGlyZWN0aW9uICogYWFfYmxvYXRyYWRpdXMgKiBhYV9ibG9hdF9tdWx0aXBsaWVyOwoJZmxvYXQyIHZlcnRleHBvcyA9IGNvcm5lciArIHJhZGl1c19vdXRzZXQgKiByYWRpaSArIGFhX291dHNldDsKCWlmIChjb3ZlcmFnZSA+IC41KSAKCXsKCQlpZiAoYWFfYmxvYXRfZGlyZWN0aW9uLnggIT0gMCAmJiB2ZXJ0ZXhwb3MueCAqIGNvcm5lci54IDwgMCkgCgkJewoJCQlmbG9hdCBiYWNrc2V0ID0gYWJzKHZlcnRleHBvcy54KTsKCQkJdmVydGV4cG9zLnggPSAwOwoJCQl2ZXJ0ZXhwb3MueSArPSBiYWNrc2V0ICogc2lnbihjb3JuZXIueSkgKiBwaXhlbGxlbmd0aC55L3BpeGVsbGVuZ3RoLng7CgkJCWNvdmVyYWdlID0gKGNvdmVyYWdlIC0gLjUpICogYWJzKGNvcm5lci54KSAvIChhYnMoY29ybmVyLngpICsgYmFja3NldCkgKyAuNTsKCQl9CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi55ICE9IDAgJiYgdmVydGV4cG9zLnkgKiBjb3JuZXIueSA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueSk7CgkJCXZlcnRleHBvcy55ID0gMDsKCQkJdmVydGV4cG9zLnggKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLngpICogcGl4ZWxsZW5ndGgueC9waXhlbGxlbmd0aC55OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueSkgLyAoYWJzKGNvcm5lci55KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJfQoJZmxvYXQyeDIgc2tld21hdHJpeCA9IGZsb2F0MngyKHNrZXcueHksIHNrZXcuencpOwoJZmxvYXQyIGRldmNvb3JkID0gdmVydGV4cG9zICogc2tld21hdHJpeCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUueHk7CglpZiAoMCAhPSBpc19saW5lYXJfY292ZXJhZ2UpIAoJewoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MigwLCBjb3ZlcmFnZSAqIGNvdmVyYWdlX211bHRpcGxpZXIpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgYXJjY29vcmQgPSAxIC0gYWJzKHJhZGl1c19vdXRzZXQpICsgYWFfb3V0c2V0L3JhZGlpICogY29ybmVyOwoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MihhcmNjb29yZC54KzEsIGFyY2Nvb3JkLnkpOwoJfQoJc2tfUG9zaXRpb24gPSBkZXZjb29yZC54eTAxOwp9CgAAAABwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBGaWxsUlJlY3RPcDo6UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgeF9wbHVzXzE9dmFyY2Nvb3JkX1MwLngsIHk9dmFyY2Nvb3JkX1MwLnk7CgloYWxmIGNvdmVyYWdlOwoJaWYgKDAgPT0geF9wbHVzXzEpIAoJewoJCWNvdmVyYWdlID0gaGFsZih5KTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQgZm4gPSB4X3BsdXNfMSAqICh4X3BsdXNfMSAtIDIpOwoJCWZuID0gZm1hKHkseSwgZm4pOwoJCWZsb2F0IGZud2lkdGggPSBmd2lkdGgoZm4pOwoJCWNvdmVyYWdlID0gLjUgLSBoYWxmKGZuL2Zud2lkdGgpOwoJCWNvdmVyYWdlID0gY2xhbXAoY292ZXJhZ2UsIDAsIDEpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChjb3ZlcmFnZSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCBAMQAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAA5AAAAAAABAAAAACAZAAAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADLAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGIBIAAABAAAAANAEAAAAAAAAAAAAAABAAOAAAABAAAAAAABBAMAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1MoAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAB0DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEAAZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1OpAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAAiAMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdCBkeDEgPSBza19GcmFnQ29vcmQueCAtIHVpbm5lclJlY3RfUzEuUjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeHkwLngsIGR4MSksIGR4eTAueSksIDAuMCk7CgloYWxmIGJvdHRvbUFscGhhID0gaGFsZihzYXR1cmF0ZSh1aW5uZXJSZWN0X1MxLkIgLSBza19GcmFnQ29vcmQueSkpOwoJaGFsZiBhbHBoYSA9IGJvdHRvbUFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMABSAAGQAAAAKFIDMVQUAAAAABIAAAAAQAAAABEERFAUBWKYKAAAIAAQAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQEAAAAAAAA":"CgAAAExTS1P6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAAAAOBgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIG91dHB1dENvbG9yX1MwKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQGAAAAAAAAAEAAAABJMQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NOAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzddOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAACkBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbN107CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTw3OyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAAGIAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAC8EAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQgZHgxID0gc2tfRnJhZ0Nvb3JkLnggLSB1aW5uZXJSZWN0X1MxLlI7CglmbG9hdDIgZHh5ID0gbWF4KGZsb2F0MihtYXgoZHh5MC54LCBkeDEpLCBkeHkwLnkpLCAwLjApOwoJaGFsZiBib3R0b21BbHBoYSA9IGhhbGYoc2F0dXJhdGUodWlubmVyUmVjdF9TMS5CIC0gc2tfRnJhZ0Nvb3JkLnkpKTsKCWhhbGYgYWxwaGEgPSBib3R0b21BbHBoYSAqIGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAABAEAAAABJIQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs1XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8NTsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCEIBAACAIAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAFgQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKS4wMDByOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OCBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAEDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgY292ZXJhZ2UgPSB2Y292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoY292ZXJhZ2UpKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NDBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAsNAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","B2AAQAAABQAAIAABBYAAB7777777777774ABICAAAAAAAAAAAAAABUABAAAAAEAAAAAIBEABAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJdmluQ292ZXJhZ2VfUzAgPSBpbkNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAADJAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmIHZpbkNvdmVyYWdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGIBIAAABAAAAANAEAAAAAAAAAAAAAABAAOAAAABAAAAAAABBAMAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1MoAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAB0DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAAAAAAQFV5W6JEAAAAAYAAAABEGIRLQQSCIAACAH5FYUHQAAAAEAAAAABAAMQEAAAAEANDMXWJYBAAAGAAAAABACEK4GE4SAAAAA7JOVF4AAAAAAAAQAAAAGIBFCMXXZ2BAAACAACAAAACE2YGE6SAAAAAHIO5E4CAYAAAABAAAAACIMCRCWBRHUQAAAAAAAAAAAVREL6SYKDYAAAACAAAAABAAM6W52JYABAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAAAIQAAQAAAAAAAA":"CgAAAExTS1M8AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAG8JAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIxNikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAALEAAAAABAAAAAAB2AAAAAAACAAAAAEBSAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAXAYAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQgZHgxID0gc2tfRnJhZ0Nvb3JkLnggLSB1aW5uZXJSZWN0X1MyLlI7CglmbG9hdDIgZHh5ID0gbWF4KGZsb2F0MihtYXgoZHh5MC54LCBkeDEpLCBkeHkwLnkpLCAwLjApOwoJaGFsZiBib3R0b21BbHBoYSA9IGhhbGYoc2F0dXJhdGUodWlubmVyUmVjdF9TMi5CIC0gc2tfRnJhZ0Nvb3JkLnkpKTsKCWhhbGYgYWxwaGEgPSBib3R0b21BbHBoYSAqIGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dF9TMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGACQAGAAAAAQAAAAAAAQQGAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1NkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZsb2NhbENvb3JkX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZsb2NhbENvb3JkX1MwID0gbG9jYWxDb29yZDsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKfQoAAAAAKQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7CglmbG9hdDIgdGV4Q29vcmQ7Cgl0ZXhDb29yZCA9IHZsb2NhbENvb3JkX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSAoKHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdGV4Q29vcmQpICogaGFsZjQoMSkpKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","B3IBQAAADAAAIAABBYAAAEIXBAAACDQMAAABIFAAAAAAAAAAAAAABFIBBYSAO7ICAAAAACX4GM5AAAAAAAIAAAAACAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAAAAAAQAAAAAEARQUPBT7IAAAAAACAAAAAAQFU5S6ZGAAAAAYAAAAAYCEOGAEGBAAAAAH5FYUXQAAAAAAACAAAAAMQEAIAAAANDMXXJYBAAAGAAAAAAABDRYBRQIQAAAAPJO5E4AAQAAAAAQAAAAGIBBCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAABAAAAAAIEDIYOAOMCEAAAAAAAAAAAFREL6S4KDYAAAACAAAAAAAAM6U52JYEBQAAAAAAAAAACYIEAIAAAAAAABUARCAIAAAAAAAAAABUABAAAAAEAAAAAIBEABKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGluTG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBjb2xvciA9IGluQ29sb3I7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cgl2aW5Db3ZlcmFnZV9TMCA9IGluQ292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGluTG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAVgwAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYgdmluQ292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAHAAAABQAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1O0AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAALgMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAAAAAAAAIAAAABSEIAL7YYDQAAAAAAACAAAAABQEKAAAAIAAAADIBAQGIAAAAAAAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAACAA4AAAACAAAAAAACCAYAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1ODAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTEyKSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzRfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAbQYAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTEpIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8xX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xMTIpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCB2VHJhbnNmb3JtZWRDb29yZHNfNF9TMCk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMV9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMV9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfMV9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF8xX2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAABAARY4AQYEIAAAAPUXKS6AAAAAAAAQAAAADE2CEOGAEGBAAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAEMAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MhAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAAB8IAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAARgAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAAAAAAQFV5W6JEAAAAAYAAAABEGIRLQQSCIAACAH5FYUHQAAAAEAAAAABAAMQEAAAAEANDMXWJYBAAAGAAAAABACEK4GE4SAAAAA7JOVF4AAAAAAAAQAAAAGIBFCMXXZ2BAAACAACAAAACE2YGE6SAAAAAHIO5E4CAYAAAABAAAAACIMCRCWBRHUQAAAAAAAAAAAVREL6SYKDYAAAACAAAAABAAM6W52JYABAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAACAAAAAAIQAAQAAAAAAAA":"CgAAAExTS1M8AwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAG8JAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIxNikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAARgAAAAEAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAAAAEAAAABJYQAAAAAAAAIAAAAAWCBAAAABAAAAANAEIQCAAAAAAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAADQBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTNdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTM7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAACgAAAAAAAAABAAAAAAAAAA==","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQIAAAAAAIBAEAAAABJQQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs5XTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzldOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDk7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAABYCMNGFQIAAAAHADEHC6BAAAAAAAABAAAAAAIBDBL6DGOQAAAAAAEAAAAABALL354SAAAAABQAAAAHAJRUIUBIBAAAMAMY4LYEAAAAAEAAAAABAIMQAAAAAEBNPNXSJAAAAAGAAAAAMBGOQCQFQEAAAQBTTRPAQAAAAAQAAAAAIBDCAWTWL3EYAAAADAAAAACADHIJJCYCAAAAAZ5YHQIIAAAAAAAIAAAABTZCMNCFAKAIAAAAAAAAAMBCTZQ7BQUAAAAAAAIAAAADEZAZRYXQIAAAAAAAAAAAGABIBAABAAAAANAEIQCAAAAAAAAAAABAAOAAAABAAAAAAABBAMUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1NnBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAACoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDApIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTA0KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBSYWRpYWxMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYobGVuZ3RoKF90bXBfM19jb29yZHMpKSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1PrAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAZAsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0IGNvdmVyYWdlID0gdmNvdmVyYWdlX1MwOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChoYWxmKGNvdmVyYWdlKSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAABAAAAAAAAAAQAAAAdAAAAAAAAAAEAAAAcAAAACAAAAAEAAAAJAAAADAAAAAEAAAAdAAAAEAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACbAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1ObAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAIAD2AAAAAAQAVSWGRIBAAAFAAAAACAAAAAAQCGEIQOZLBIQAAAACQAAAAAAAAAAAAFAAMAAAABAAAAAAABBAMAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MNAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gdXNob3J0MiBpblRleHR1cmVDb29yZHM7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRleHR1cmVDb29yZHNfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGZsYXQgb3V0IGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAAAAwBgAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQyIHVBdGxhc1NpemVJbnZfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IFJlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MxX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzFfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MxX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMV9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MxX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQml0bWFwVGV4dAoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJaGFsZjQgdGV4Q29sb3I7Cgl7CgkJdGV4Q29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHZUZXh0dXJlQ29vcmRzX1MwKS5ycnJyOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSB0ZXhDb2xvcjsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAASLEYTYIIBAAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAEAIRLQYTSIAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAITLAYT2IAAAAA5B3UTQIDAAAAAEAAAAAJBQKEKYGE6SAAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAAYQADAAAEAFEURUKQKAAAIAAQAAAAAIAAAABSCICWKY2FAEAAAUAAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1PaBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAFREAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAAAQAAAAGQCBAMQACAAAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBjbGFtcChzdWJzZXRDb29yZC54LCB1Y2xhbXBfUzFfYzAueCwgdWNsYW1wX1MxX2MwLnopOwoJY2xhbXBlZENvb3JkLnkgPSBzdWJzZXRDb29yZC55OwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGQBIAAABAAAAANAEAAAAAAAAAAAAAADQABQQAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIACQAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAdBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdCBkeDAgPSB1aW5uZXJSZWN0X1MyLkwgLSBza19GcmFnQ29vcmQueDsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeDAsIGR4eTEueCksIGR4eTEueSksIDAuMCk7CgloYWxmIHRvcEFscGhhID0gaGFsZihzYXR1cmF0ZShza19GcmFnQ29vcmQueSAtIHVpbm5lclJlY3RfUzIuVCkpOwoJaGFsZiBhbHBoYSA9IHRvcEFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQ2lyY3VsYXJSUmVjdF9TMihvdXRwdXRfUzEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MyOwoJfQp9CgAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAAHGADYAAAQAAAAAAAAAOQAAAAAAAQAAAABAMQAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MnAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluSGFpclF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZAoJdkhhaXJRdWFkRWRnZV9TMCA9IGluSGFpclF1YWRFZGdlOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gX3RtcF8xX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAAAsFAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmNCB2SGFpclF1YWRFZGdlX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdUNvbG9yX1MwOwoJaGFsZiBlZGdlQWxwaGE7CgloYWxmMiBkdXZkeCA9IGhhbGYyKGRGZHgodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZHV2ZHkgPSBoYWxmMihkRmR5KHZIYWlyUXVhZEVkZ2VfUzAueHkpKTsKCWhhbGYyIGdGID0gaGFsZjIoMi4wICogdkhhaXJRdWFkRWRnZV9TMC54ICogZHV2ZHgueCAtIGR1dmR4LnksICAgICAgICAgICAgICAgMi4wICogdkhhaXJRdWFkRWRnZV9TMC54ICogZHV2ZHkueCAtIGR1dmR5LnkpOwoJZWRnZUFscGhhID0gaGFsZih2SGFpclF1YWRFZGdlX1MwLnggKiB2SGFpclF1YWRFZGdlX1MwLnggLSB2SGFpclF1YWRFZGdlX1MwLnkpOwoJZWRnZUFscGhhID0gc3FydChlZGdlQWxwaGEgKiBlZGdlQWxwaGEgLyBkb3QoZ0YsIGdGKSk7CgllZGdlQWxwaGEgPSBtYXgoMS4wIC0gZWRnZUFscGhhLCAwLjApOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCh1Q292ZXJhZ2VfUzAgKiBlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAGIBIAAABAAAAANAEAAAAAAAAAAAAAABAACAAAADABAEIAAAAAUAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAGAACAAAAAAAA":"CgAAAExTS1MoAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAADQDAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzApLnJycnI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBDb3ZlcmFnZSBTZXQgT3AKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAACgAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAABUAAAAARCB3FMFCAAAAAKAAAAAEAAAAABAENIVANSWCQAAAAAFAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1MEAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAD1BwAAY29uc3QgaW50IGtGaWxsQldfUzJfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzJfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzJfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9NDgpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IFJlY3RfUzJfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgyKSA9PSBrRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzJfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MyX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMl9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEFBX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzIoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MyX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0X1MxLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzI7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAABAEAAAABJWQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMl07CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEyOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQKAAAAAAIAAEAAAABJUQAAAAAQAAIAAAAAWCBACAABAAAAANAEIQCAAEAAAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxMV07CglsYXlvdXQob2Zmc2V0PTEyOCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAaBwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzExXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCkuMDAwcjsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTE7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OCBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAEDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgY292ZXJhZ2UgPSB2Y292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoY292ZXJhZ2UpKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAABYQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1P9BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjU2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAAAyw4AAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjU2KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAGoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABAAAAAAIA2GZPMTQCAAAMAAAAAEACHDQCDARAAAAAPGD4GCQAAAAAAAAABAAAAAGJJHLYYGACAAAAAAAEAAAACRGL345AQAABAABAAAAARQ4A4YEIAAAADYAZBYXAIAAAAAIAAAABSAQBAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAGAGMOF4CAAAAACAAAAABAEMIC263PESAAAAAMAAAAAMDCHCACDAQAAAAGPOB4CCAAAAAAACAAAAAMTJYRYQAQQEAAAAAAAAAGARJ4INQYLAEAAAAAEAAAABSEQM44LYEAAAAAAAAAAADAAUAQAAQAAAAGQCAIBCAAAAAAAAAAAYAADIAAAABCEDWKYKEAAAAAMAAAAAIAAAAACAI2RKA3FMFAAAAAAGAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1O5BAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAANgRAABjb25zdCBpbnQga0ZpbGxCV19TMl9jMCA9IDA7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxCV19TMl9jMCA9IDI7CmNvbnN0IGludCBrSW52ZXJzZUZpbGxBQV9TMl9jMCA9IDM7CmxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgUmFkaWFsTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKGxlbmd0aChfdG1wXzNfY29vcmRzKSksIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFJhZGlhbExheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBBcHBseVBhaW50QWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0KF9pbnB1dC54eXosIDEuMCkpICogX2lucHV0LncpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gQXBwbHlQYWludEFscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IFJlY3RfUzJfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF83X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmIGNvdmVyYWdlOwoJaWYgKGludCgxKSA9PSBrRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKGFsbChncmVhdGVyVGhhbihmbG9hdDQoc2tfRnJhZ0Nvb3JkLnh5LCB1cmVjdFVuaWZvcm1fUzJfYzAuencpLCBmbG9hdDQodXJlY3RVbmlmb3JtX1MyX2MwLnh5LCBza19GcmFnQ29vcmQueHkpKSkpOwoJfQoJZWxzZSAKCXsKCQloYWxmNCBkaXN0czQgPSBzYXR1cmF0ZShoYWxmNCgxLjAsIDEuMCwgLTEuMCwgLTEuMCkgKiBoYWxmNChza19GcmFnQ29vcmQueHl4eSAtIHVyZWN0VW5pZm9ybV9TMl9jMCkpOwoJCWhhbGYyIGRpc3RzMiA9IChkaXN0czQueHkgKyBkaXN0czQuencpIC0gMS4wOwoJCWNvdmVyYWdlID0gZGlzdHMyLnggKiBkaXN0czIueTsKCX0KCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IDEuMCAtIGNvdmVyYWdlOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGNvdmVyYWdlKSk7Cn0KaGFsZjQgQmxlbmRfUzIoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShSZWN0X1MyX2MwKF9zcmMpLCBfc3JjKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZEVkZ2UKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWhhbGYgZWRnZUFscGhhOwoJaGFsZjIgZHV2ZHggPSBoYWxmMihkRmR4KHZRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZHV2ZHkgPSBoYWxmMihkRmR5KHZRdWFkRWRnZV9TMC54eSkpOwoJaWYgKHZRdWFkRWRnZV9TMC56ID4gMC4wICYmIHZRdWFkRWRnZV9TMC53ID4gMC4wKSAKCXsKCQllZGdlQWxwaGEgPSBoYWxmKG1pbihtaW4odlF1YWRFZGdlX1MwLnosIHZRdWFkRWRnZV9TMC53KSArIDAuNSwgMS4wKSk7Cgl9CgllbHNlIAoJewoJCWhhbGYyIGdGID0gaGFsZjIoaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHgueCAtIGR1dmR4LnkpLCAgICAgICAgICAgICAgICAgaGFsZigyLjAqdlF1YWRFZGdlX1MwLngqZHV2ZHkueCAtIGR1dmR5LnkpKTsKCQllZGdlQWxwaGEgPSBoYWxmKHZRdWFkRWRnZV9TMC54KnZRdWFkRWRnZV9TMC54IC0gdlF1YWRFZGdlX1MwLnkpOwoJCWVkZ2VBbHBoYSA9IHNhdHVyYXRlKDAuNSAtIGVkZ2VBbHBoYSAvIGxlbmd0aChnRikpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IEJsZW5kX1MyKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0X1MyOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCBAMQACAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAA7QMAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAACQAAAAAABQIQCAAAAUAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAA":"CgAAAExTS1OAAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJdmluQ2lyY2xlRWRnZV9TMCA9IGluQ2lyY2xlRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAACyAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogQ292ZXJhZ2UgU2V0IE9wCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABZAA6IAAAAACAAAAAADUAAAAAAAEAAAAAIDEAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1O6AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAM4DAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1NTAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAACCAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAAHAJRUYWBAAAAA2DXZFAQHAAAAAAAAEAAAAABAEMFPYMZ2AAAAAAAQFV566JAAAAAAYAAAADQEY2EKAUAQAAFA34SQKDYAAAACAAAAABAEMIC263PESAAAAAMAAAAAYCM5AFALAIAAAQF7JMFB4AAAACAAAAAAQAGHEJRUYWBAAAAAAAAAAAFQEL6S4KLYAAAAAAABAAAAAMWU56JIEBYAAAAAAAAAACYIEAAAAEAAAABUARCAIAAAAAAAAAAAUABQAAAAEAAAAAAAEEBQAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1NVBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAAAALQsAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTk2KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMDQpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAAPEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAA+wUAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0X1MxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GAAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OrAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5IYWlyUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2SGFpclF1YWRFZGdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkCgl2SGFpclF1YWRFZGdlX1MwID0gaW5IYWlyUXVhZEVkZ2U7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAMQMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHwAAAAgAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQEAAAAAAIBAEAAAABJIQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs1XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADMBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzVdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDU7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAGIAFSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1PfAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IGZpbGxCb3VuZHM7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgbG9jYXRpb25zOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIERyYXdBdGxhc1BhdGhTaGFkZXIKCWZsb2F0MiB1bml0Q29vcmQgPSBmbG9hdDIoc2tfVmVydGV4SUQgJiAxLCBza19WZXJ0ZXhJRCA+PiAxKTsKCWZsb2F0MiBkZXZDb29yZCA9IG1peChmaWxsQm91bmRzLnh5LCBmaWxsQm91bmRzLnp3LCB1bml0Q29vcmQpOwoJZmxvYXQyIGF0bGFzVG9wTGVmdCA9IGZsb2F0MihhYnMobG9jYXRpb25zLngpIC0gMSwgbG9jYXRpb25zLnkpOwoJZmxvYXQyIGRldlRvcExlZnQgPSBsb2NhdGlvbnMuenc7Cglib29sIHRyYW5zcG9zZWQgPSBsb2NhdGlvbnMueCA8IDA7CglmbG9hdDIgYXRsYXNDb29yZCA9IGRldkNvb3JkIC0gZGV2VG9wTGVmdDsKCWlmICh0cmFuc3Bvc2VkKSAKCXsKCQlhdGxhc0Nvb3JkID0gYXRsYXNDb29yZC55eDsKCX0KCWF0bGFzQ29vcmQgKz0gYXRsYXNUb3BMZWZ0OwoJdmF0bGFzQ29vcmRfUzAgPSBhdGxhc0Nvb3JkICogdWF0bGFzX2FkanVzdF9TMDsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBkZXZDb29yZC54eTAxOwp9CgAAAAAAgwQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZhdGxhc0Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzEuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdCBkeDEgPSBza19GcmFnQ29vcmQueCAtIHVpbm5lclJlY3RfUzEuUjsKCWZsb2F0MiBkeHkgPSBtYXgoZmxvYXQyKG1heChkeHkwLngsIGR4MSksIGR4eTAueSksIDAuMCk7CgloYWxmIGJvdHRvbUFscGhhID0gaGFsZihzYXR1cmF0ZSh1aW5uZXJSZWN0X1MxLkIgLSBza19GcmFnQ29vcmQueSkpOwoJaGFsZiBhbHBoYSA9IGJvdHRvbUFscGhhICogaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIERyYXdBdGxhc1BhdGhTaGFkZXIKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmIGF0bGFzQ292ZXJhZ2UgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHZhdGxhc0Nvb3JkX1MwKS4wMDByLmE7CglvdXRwdXRDb3ZlcmFnZV9TMCAqPSBhdGxhc0NvdmVyYWdlOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAAEQZCFOCCIJAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAAAQBCFODCOJAAAAAPUXKS6AAAAAAAAQAAAADEGCIRLQYTCIAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAEMAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MnAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAABwCAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0yMTYpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzEoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAARgAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAEIQCAAAAQAAAAAAFAAMAAAABAAAAAAMCEAQFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAaBwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCkuMDAwcjsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8MTM7ICsraSkgCgl7CgkJY29sb3IgKz0gU21vb3RoX1MxX2MwKF9pbnB1dCwgY29vcmQsIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldKTsKCX0KCXJldHVybiBjb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAAUKQGZLBIAAAAACQAAAABAAAAAGIJAKJJDIVAUAAAQABAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAQAAAAAAAA":"CgAAAExTS1OBAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAAAhBQAAY29uc3QgaW50IGtGaWxsQldfUzFfYzAgPSAwOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKaGFsZjQgUmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDIpID09IGtGaWxsQldfUzFfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MxX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMV9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzFfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MxX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMV9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQUFfUzFfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKFJlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAOAAHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAKAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OCBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTI0MCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAEDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjA4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MjI0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MjQwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgdmNvdmVyYWdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgQ2lyY3VsYXJSUmVjdF9TMihoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgZHh5MCA9IHVpbm5lclJlY3RfUzIuTFQgLSBza19GcmFnQ29vcmQueHk7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KG1heChkeHkwLCBkeHkxKSwgMC4wKTsKCWhhbGYgYWxwaGEgPSBoYWxmKHNhdHVyYXRlKHVyYWRpdXNQbHVzSGFsZl9TMi54IC0gbGVuZ3RoKGR4eSkpKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgY292ZXJhZ2UgPSB2Y292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGhhbGYoY292ZXJhZ2UpKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OlBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAAAkDQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTY4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DASAAAAAQAAWAABAYAAQBYH7777Z6QQBAEAAAAAAEAAAAAAAEBSAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OYAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVDb2xvcl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBCaXRtYXBUZXh0CglpbnQgdGV4SWR4ID0gMDsKCWZsb2F0MiB1bm9ybVRleENvb3JkcyA9IGZsb2F0MihpblRleHR1cmVDb29yZHMueCwgaW5UZXh0dXJlQ29vcmRzLnkpOwoJdlRleHR1cmVDb29yZHNfUzAgPSB1bm9ybVRleENvb3JkcyAqIHVBdGxhc1NpemVJbnZfUzA7Cgl2VGV4SW5kZXhfUzAgPSBmbG9hdCh0ZXhJZHgpOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCXNrX1Bvc2l0aW9uID0gaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAC2AgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEJpdG1hcFRleHQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApOwoJfQoJb3V0cHV0Q29sb3JfUzAgPSBvdXRwdXRDb2xvcl9TMCAqIHRleENvbG9yOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAA0AAAAIAAAAAQAAAAwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAPEAHAAABAAAAAAAKAAYAAAACAAAAAAACCAYAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NDBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTE3NikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MyOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBjb3ZlcmFnZTsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQyIHBvc2l0aW9uID0gcG9zaXRpb24ueHk7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXZjb3ZlcmFnZV9TMCA9IGNvdmVyYWdlOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAsNAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdXN0YXJ0X1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNCkgaGFsZjQgdWVuZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0xNzYpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCB2Y292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMi5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMi5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAEAAAAAAAAABAAAAB0AAAAAAAAAAQAAABwAAAAIAAAAAQAAAAkAAAAMAAAAAQAAAB0AAAAQAAAAAQAAABgAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGAAZAADIAAAACU53QJEKAAAAAAMAAAAAIAAAAAAGIRDFB2XASAUAABQAAAAAAAAAAAAADUAAAAAAAEAAAAAIDEAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQEAAAAAAAA":"CgAAAExTS1ONAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNpcmNsZV9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmxvY2FsQ29vcmRfUzAgPSBsb2NhbENvb3JkOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAABABQAAY29uc3QgaW50IGtGaWxsQUFfUzFfYzAgPSAxOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQldfUzFfYzAgPSAyOwpjb25zdCBpbnQga0ludmVyc2VGaWxsQUFfUzFfYzAgPSAzOwpsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVjaXJjbGVfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmNsZV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgZDsKCWlmIChpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwKSAKCXsKCQlkID0gaGFsZigobGVuZ3RoKCh1Y2lyY2xlX1MxX2MwLnh5IC0gc2tfRnJhZ0Nvb3JkLnh5KSAqIHVjaXJjbGVfUzFfYzAudykgLSAxLjApICogdWNpcmNsZV9TMV9jMC56KTsKCX0KCWVsc2UgCgl7CgkJZCA9IGhhbGYoKDEuMCAtIGxlbmd0aCgodWNpcmNsZV9TMV9jMC54eSAtIHNrX0ZyYWdDb29yZC54eSkgKiB1Y2lyY2xlX1MxX2MwLncpKSAqIHVjaXJjbGVfUzFfYzAueik7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoaW50KDEpID09IGtGaWxsQUFfUzFfYzAgfHwgaW50KDEpID09IGtJbnZlcnNlRmlsbEFBX1MxX2MwID8gc2F0dXJhdGUoZCkgOiBoYWxmKGQgPiAwLjUgPyAxIDogMCkpKTsKfQpoYWxmNCBCbGVuZF9TMShoYWxmNCBfc3JjLCBoYWxmNCBfZHN0KSAKewoJcmV0dXJuIGJsZW5kX21vZHVsYXRlKF9zcmMsIENpcmNsZV9TMV9jMChfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBoYWxmNCgxKSkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IEJsZW5kX1MxKG91dHB1dENvdmVyYWdlX1MwLCBoYWxmNCgxKSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","B3IBQAAADAAAIAABBYAAAEIXBAAACDQMAAABIFAAAAAAAAAAAAAABFIBBYSAO7ICAAAAACX4GM5AAAAAAAIAAAAACAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAAAAAAQAAAAAEARQUPBT7IAAAAAACAAAAAAQFU5S6ZGAAAAAYAAAAAYCEOGAEGBAAAAAH5FYUXQAAAAAAACAAAAAMQEAIAAAANDMXXJYBAAAGAAAAAAABDRYBRQIQAAAAPJO5E4AAQAAAAAQAAAAGIBBCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAABAAAAAAIEDIYOAOMCEAAAAAAAAAAAFREL6S4KDYAAAACAAAAAAAAM6U52JYEBQAAAAAAAAAACYIEAIAAAAAAABUARCAIAAAAAAAAAABUABAAAAAEAAAAAIBEABKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1NWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGluTG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZiBpbkNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZiB2aW5Db3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBjb2xvciA9IGluQ29sb3I7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cgl2aW5Db3ZlcmFnZV9TMCA9IGluQ292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGluTG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAVgwAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYgdmluQ292ZXJhZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgRGVmYXVsdEdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJaGFsZiBhbHBoYSA9IDEuMDsKCWFscGhhID0gdmluQ292ZXJhZ2VfUzA7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAHAAAABQAAAABAAAAGAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAMWAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PuBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9MzIwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MxKSAqIF90bXBfMV9pblBvc2l0aW9uLnh5MTsKCX0KfQoAAAAAAACiDgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1aW5uZXJSZWN0X1MyOwoJbGF5b3V0KG9mZnNldD0zMjApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MyLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MyLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzIueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmIGRpc3RhbmNlVG9Jbm5lckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqIChkIC0gY2lyY2xlRWRnZS53KSk7CgloYWxmIGlubmVyQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvSW5uZXJFZGdlKTsKCWVkZ2VBbHBoYSAqPSBpbm5lckFscGhhOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCWhhbGY0IG91dHB1dF9TMjsKCW91dHB1dF9TMiA9IENpcmN1bGFyUlJlY3RfUzIob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQLAAAAAAAAAEAAAABJWQAAAAAAAAIAAAAAWCBAAAABAAAAANAECAZAAAAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1NQAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9NjgpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEyXTsKCWxheW91dChvZmZzZXQ9MTI4KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAACnBQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTY0KSBoYWxmMiB1SW5jcmVtZW50X1MxX2MwOwoJbGF5b3V0KG9mZnNldD02OCkgaGFsZjIgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTJdOwoJbGF5b3V0KG9mZnNldD0xMjgpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEyOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABQAAAAAAAAAAEAAAAAAAAA","HVIACAAAABQAAGAAAQ4AAAAAGQQAARC4GAAAIOCAAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1MqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IGNvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDIgcG9zaXRpb24gPSBwb3NpdGlvbi54eTsKCXZjb2xvcl9TMCA9IGNvbG9yOwoJdmNvdmVyYWdlX1MwID0gY292ZXJhZ2U7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAF0MAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0IHZjb3ZlcmFnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgY29sb3JfeGZvcm1fUzFfYzBfYzAoaGFsZjQgY29sb3IpIAp7Cgljb2xvci5yZ2IgKj0gY29sb3IuYTsKCXJldHVybiBoYWxmNChjb2xvcik7Cn0KaGFsZjQgQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBjb2xvcl94Zm9ybV9TMV9jMF9jMChDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoX2lucHV0KSk7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0KaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3JkcykuMDAwcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzEoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMSkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgRGl0aGVyX1MxKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNl9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgY29sb3IgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKF90bXBfNl9pbkNvbG9yKTsKCWhhbGYgdmFsdWUgPSBNYXRyaXhFZmZlY3RfUzFfYzEoX3RtcF82X2luQ29sb3IsIHNrX0ZyYWdDb29yZC54eSkudyAtIDAuNTsKCXJldHVybiBoYWxmNChoYWxmNChjbGFtcChjb2xvci54eXogKyB2YWx1ZSAqIHVyYW5nZV9TMSwgMC4wLCBjb2xvci53KSwgY29sb3IudykpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCBjb3ZlcmFnZSA9IHZjb3ZlcmFnZV9TMDsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoaGFsZihjb3ZlcmFnZSkpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAQAAAAAAAAAEAAAAHQAAAAAAAAABAAAAHAAAAAgAAAABAAAACQAAAAwAAAABAAAAHQAAABAAAAABAAAAGAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVJAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAABAAAAAABBAMADSAB4QAAAAAEAAAAAAHIAAAAAAAIAAAAAQGIAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAMGAICAAAAAAAA":"CgAAAExTS1MiAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAFAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmxvY2FsQ29vcmRfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglyZXR1cm4gX2lucHV0ICogYWxwaGE7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWZsb2F0MiB0ZXhDb29yZDsKCXRleENvb3JkID0gdmxvY2FsQ29vcmRfUzA7CglvdXRwdXRDb2xvcl9TMCA9ICgoc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB0ZXhDb29yZCkgKiBvdXRwdXRDb2xvcl9TMCkpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAACIDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAAUAAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAACIDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAACAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MrAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzJfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABwAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","GCAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAIYAAAAABAAAAAAAAAAAAAAAAAAAAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PRAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmIHVDb3ZlcmFnZV9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkhhaXJRdWFkRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhhbGY0IHZIYWlyUXVhZEVkZ2VfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWQKCXZIYWlyUXVhZEVkZ2VfUzAgPSBpbkhhaXJRdWFkRWRnZTsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMV9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAGYDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVDb2xvcl9TMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGYgdUNvdmVyYWdlX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KHVDb3ZlcmFnZV9TMCAqIGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAfAAAACAAAAAEAAAAYAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","GAAAAAAADAAAEAABBYAAAAYXBAAAAAAAAAAAAAAA2AAQAAAACAAAAAEASAAQAAAAIYAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1OrAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1Q29sb3JfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5IYWlyUXVhZEVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2SGFpclF1YWRFZGdlX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkCgl2SGFpclF1YWRFZGdlX1MwID0gaW5IYWlyUXVhZEVkZ2U7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBfdG1wXzFfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAAAAMQMAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgaGFsZjQgdUNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdkhhaXJRdWFkRWRnZV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWQKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB1Q29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2SGFpclF1YWRFZGdlX1MwLnh5KSk7CgloYWxmMiBkdXZkeSA9IGhhbGYyKGRGZHkodkhhaXJRdWFkRWRnZV9TMC54eSkpOwoJaGFsZjIgZ0YgPSBoYWxmMigyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeC54IC0gZHV2ZHgueSwgICAgICAgICAgICAgICAyLjAgKiB2SGFpclF1YWRFZGdlX1MwLnggKiBkdXZkeS54IC0gZHV2ZHkueSk7CgllZGdlQWxwaGEgPSBoYWxmKHZIYWlyUXVhZEVkZ2VfUzAueCAqIHZIYWlyUXVhZEVkZ2VfUzAueCAtIHZIYWlyUXVhZEVkZ2VfUzAueSk7CgllZGdlQWxwaGEgPSBzcXJ0KGVkZ2VBbHBoYSAqIGVkZ2VBbHBoYSAvIGRvdChnRiwgZ0YpKTsKCWVkZ2VBbHBoYSA9IG1heCgxLjAgLSBlZGdlQWxwaGEsIDAuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHwAAAAgAAAABAAAAGAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAADUAANAAAAAAIBAIAAAABLCIIBAAAAABAEGABBAMAACAIAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAAAAYAAAAAAAAAAA":"CgAAAExTS1PxAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzNfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMCkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAAaQQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfM19TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18zX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQmxlbmRfUzEoaGFsZjQgX3NyYywgaGFsZjQgX2RzdCkgCnsKCXJldHVybiBibGVuZF9tb2R1bGF0ZShNYXRyaXhFZmZlY3RfUzFfYzAoX3NyYyksIF9zcmMpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQmxlbmRfUzEob3V0cHV0Q29sb3JfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAAAAAAEAAAAAAAAA","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAHEADZAAAAAAIAAAAAAOQAAAAAAAQAAAABAMQAAAAAARQAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OkAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAACIDAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gaGFsZjQgdmNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzE7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQAAEAQAAAAGQCBAMQAAAIAAAAAACQAGAAAAAQAAAAAAAQQGAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAEAQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkLnggPSBzdWJzZXRDb29yZC54OwoJY2xhbXBlZENvb3JkLnkgPSBjbGFtcChzdWJzZXRDb29yZC55LCB1Y2xhbXBfUzFfYzAueSwgdWNsYW1wX1MxX2MwLncpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAPsMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MrAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzJfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAABwAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","AY7SRAADQAAAOAEARAFQJAABBADAAAILBYAACCYUAAAQWGUAAEECAAAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGhhbGYzIGluQ2xpcFBsYW5lOwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBoYWxmMyBpbklzZWN0UGxhbmU7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGhhbGYzIGluVW5pb25QbGFuZTsKbGF5b3V0KGxvY2F0aW9uID0gNikgaW4gZmxvYXQ0IGluUm91bmRDYXBDZW50ZXJzOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmMyB2aW5DbGlwUGxhbmVfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBoYWxmMyB2aW5Jc2VjdFBsYW5lX1MwOwpsYXlvdXQobG9jYXRpb24gPSAzKSBvdXQgaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgb3V0IGZsb2F0NCB2aW5Sb3VuZENhcENlbnRlcnNfUzA7CmxheW91dChsb2NhdGlvbiA9IDUpIGZsYXQgb3V0IGZsb2F0IHZjYXBSYWRpdXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDYpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5DbGlwUGxhbmVfUzAgPSBpbkNsaXBQbGFuZTsKCXZpbklzZWN0UGxhbmVfUzAgPSBpbklzZWN0UGxhbmU7Cgl2aW5VbmlvblBsYW5lX1MwID0gaW5VbmlvblBsYW5lOwoJdmluUm91bmRDYXBDZW50ZXJzX1MwID0gaW5Sb3VuZENhcENlbnRlcnM7Cgl2Y2FwUmFkaXVzX1MwID0gKDEuMCAtIGluQ2lyY2xlRWRnZS53KSAvIDIuMDsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAABeBwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYzIHZpbkNsaXBQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgdmluSXNlY3RQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gNSkgZmxhdCBpbiBmbG9hdCB2Y2FwUmFkaXVzX1MwOwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjMgY2xpcFBsYW5lOwoJY2xpcFBsYW5lID0gdmluQ2xpcFBsYW5lX1MwOwoJaGFsZjMgaXNlY3RQbGFuZTsKCWlzZWN0UGxhbmUgPSB2aW5Jc2VjdFBsYW5lX1MwOwoJaGFsZjMgdW5pb25QbGFuZTsKCXVuaW9uUGxhbmUgPSB2aW5VbmlvblBsYW5lX1MwOwoJZmxvYXQ0IHJvdW5kQ2FwQ2VudGVyczsKCXJvdW5kQ2FwQ2VudGVycyA9IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGYgY2xpcCA9IGhhbGYoc2F0dXJhdGUoY2lyY2xlRWRnZS56ICogZG90KGNpcmNsZUVkZ2UueHksIGNsaXBQbGFuZS54eSkgKyBjbGlwUGxhbmUueikpOwoJY2xpcCAqPSBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCBpc2VjdFBsYW5lLnh5KSArIGlzZWN0UGxhbmUueikpOwoJY2xpcCA9IHNhdHVyYXRlKGNsaXAgKyBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCB1bmlvblBsYW5lLnh5KSArIHVuaW9uUGxhbmUueikpKTsKCWVkZ2VBbHBoYSAqPSBjbGlwOwoJaGFsZiBkY2FwMSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKHZjYXBSYWRpdXNfUzAgLSBsZW5ndGgoY2lyY2xlRWRnZS54eSAtIHJvdW5kQ2FwQ2VudGVycy54eSkpKTsKCWhhbGYgZGNhcDIgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICh2Y2FwUmFkaXVzX1MwIC0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkgLSByb3VuZENhcENlbnRlcnMuencpKSk7CgloYWxmIGNhcEFscGhhID0gKDEgLSBjbGlwKSAqIChtYXgoZGNhcDEsIDApICsgbWF4KGRjYXAyLCAwKSk7CgllZGdlQWxwaGEgPSBtaW4oZWRnZUFscGhhICsgY2FwQWxwaGEsIDEuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAABAAAAAAAAAAcAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAeAAAAHAAAAAEAAAAeAAAAKAAAAAEAAAAeAAAANAAAAAEAAAAfAAAAQAAAAAEAAABQAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAARCLL25YSAAAAABQAAAACJMTCPBBAEAAAUDPSKBIPAAAAAAAAIAAAAACAIYKPQZ3UAAAAAABALL3N4SIAAAABQAAAACIMRCXBBEEQAAEAP2LRIPAAAAAIAAAAAAABTALI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAIAAAABSDBEIVYMJREAAAAAAAAAAAFPJO7EUCA4AAAAAQAAAAAICD7UXCS6AAAAAAAAAAAAACWCAACAAAAACAINAEIAAAAAAAAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1OWBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAPsMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGY0IHV0aHJlc2hvbGRzX1MxX2MwX2MwX2MwWzFdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yMzIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0yNDApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTI4OCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNl9TMDsKaGFsZjQgTG9vcGluZ0JpbmFyeUNvbG9yaXplcl9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7Cgk7Cgk7CglpbnQgY2h1bmsgPSAwOwoJOwoJaW50IHBvczsKCWlmICh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnkpIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnggPyAwIDogMSk7Cgl9CgllbHNlIAoJewoJCXBvcyA9IGludCh0IDwgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbY2h1bmtdLnogPyAyIDogMyk7Cgl9Cgk7CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiB1c2NhbGVfUzFfYzBfYzBfYzBbcG9zXSArIHViaWFzX1MxX2MwX2MwX2MwW3Bvc10pKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGYgZGlzdGFuY2VUb0lubmVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKGQgLSBjaXJjbGVFZGdlLncpKTsKCWhhbGYgaW5uZXJBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9Jbm5lckVkZ2UpOwoJZWRnZUFscGhhICo9IGlubmVyQWxwaGE7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAHUAAAAABABLFMNCQCAAAKAAAAAEAAAAABAEMIRA5SWCRAAAAAFAAAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1OLAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0MiBsb2NhbENvb3JkOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwX2MwX2MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAsQ4AAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgU2luZ2xlSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJcmV0dXJuIGhhbGY0KG1peCh1c3RhcnRfUzFfYzBfYzBfYzBfYzAsIHVlbmRfUzFfYzBfYzBfYzBfYzAsIGhhbGYoX3RtcF8xX2Nvb3Jkcy54KSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMikgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgyKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAAA5AAAAAAABAAAAACAZAAAAAKAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAYMAQAAAAAAAAA":"CgAAAExTS1PmDAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDIgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKfQoAAAAAAADLAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","FABQMYAAMAAAEADAAABAEYAAAICIACWAABQAAAQAMAAAEATAAABAIYAAAIDGAAACBAQOEAQKAAAAAAFAGLAIDZFAJ4AAAACAQF7UMBYAAAAABITF56OQIAAAQAAQAAAATQEU3MJAAAAAB5F3UTQACAAAAAAAACAAAAAMRCAC76GA4AAAAAAEJS66HMEQAAAAAMAAAABYCONGEQIAAAAOQ52JYEBQAAAABAAAAAEQCGEJNPLXCIAAAAAGAAAAA4BGGTCYEAAAADIO7EUCA4AAAABAAAAAAIEDTQEU3MJAAAAAAAAAAAAKYSF7JMFB4AAAABAAAAAAQAGPLO5E4AAQAAAAAAAAAAFMEAAEAAAAAAAA2AIRAEAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1NjDwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgcmFkaWlfc2VsZWN0b3I7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0NCBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgYWFfYmxvYXRfYW5kX2NvdmVyYWdlOwpsYXlvdXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdDQgcmFkaWlfeDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHJhZGlpX3k7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGZsb2F0NCBza2V3OwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBmbG9hdDQgdHJhbnNsYXRlX2FuZF9sb2NhbHJvdGF0ZTsKbGF5b3V0KGxvY2F0aW9uID0gNykgaW4gZmxvYXQ0IGxvY2FscmVjdDsKbGF5b3V0KGxvY2F0aW9uID0gOCkgaW4gaGFsZjQgY29sb3I7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2YXJjY29vcmRfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJZmxvYXQgYWFfYmxvYXRfbXVsdGlwbGllciA9IDE7CglmbG9hdDIgY29ybmVyID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy54eTsKCWZsb2F0MiByYWRpdXNfb3V0c2V0ID0gY29ybmVyX2FuZF9yYWRpdXNfb3V0c2V0cy56dzsKCWZsb2F0MiBhYV9ibG9hdF9kaXJlY3Rpb24gPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UueHk7CglmbG9hdCBpc19saW5lYXJfY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UudzsKCWZsb2F0MiBwaXhlbGxlbmd0aCA9IGludmVyc2VzcXJ0KGZsb2F0Mihkb3Qoc2tldy54eiwgc2tldy54eiksIGRvdChza2V3Lnl3LCBza2V3Lnl3KSkpOwoJZmxvYXQ0IG5vcm1hbGl6ZWRfYXhpc19kaXJzID0gc2tldyAqIHBpeGVsbGVuZ3RoLnh5eHk7CglmbG9hdDIgYXhpc3dpZHRocyA9IChhYnMobm9ybWFsaXplZF9heGlzX2RpcnMueHkpICsgYWJzKG5vcm1hbGl6ZWRfYXhpc19kaXJzLnp3KSk7CglmbG9hdDIgYWFfYmxvYXRyYWRpdXMgPSBheGlzd2lkdGhzICogcGl4ZWxsZW5ndGggKiAuNTsKCWZsb2F0NCByYWRpaV9hbmRfbmVpZ2hib3JzID0gcmFkaWlfc2VsZWN0b3IqIGZsb2F0NHg0KHJhZGlpX3gsIHJhZGlpX3ksIHJhZGlpX3gueXh3eiwgcmFkaWlfeS53enl4KTsKCWZsb2F0MiByYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMueHk7CglmbG9hdDIgbmVpZ2hib3JfcmFkaWkgPSByYWRpaV9hbmRfbmVpZ2hib3JzLnp3OwoJZmxvYXQgY292ZXJhZ2VfbXVsdGlwbGllciA9IDE7CglpZiAoYW55KGdyZWF0ZXJUaGFuKGFhX2Jsb2F0cmFkaXVzLCBmbG9hdDIoMSkpKSkgCgl7CgkJY29ybmVyID0gbWF4KGFicyhjb3JuZXIpLCBhYV9ibG9hdHJhZGl1cykgKiBzaWduKGNvcm5lcik7CgkJY292ZXJhZ2VfbXVsdGlwbGllciA9IDEgLyAobWF4KGFhX2Jsb2F0cmFkaXVzLngsIDEpICogbWF4KGFhX2Jsb2F0cmFkaXVzLnksIDEpKTsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCX0KCWZsb2F0IGNvdmVyYWdlID0gYWFfYmxvYXRfYW5kX2NvdmVyYWdlLno7CglpZiAoYW55KGxlc3NUaGFuKHJhZGlpLCBhYV9ibG9hdHJhZGl1cyAqIDEuNSkpKSAKCXsKCQlyYWRpaSA9IGZsb2F0MigwKTsKCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSBzaWduKGNvcm5lcik7CgkJaWYgKGNvdmVyYWdlID4gLjUpIAoJCXsKCQkJYWFfYmxvYXRfZGlyZWN0aW9uID0gLWFhX2Jsb2F0X2RpcmVjdGlvbjsKCQl9CgkJaXNfbGluZWFyX2NvdmVyYWdlID0gMTsKCX0KCWVsc2UgCgl7CgkJcmFkaWkgPSBjbGFtcChyYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJbmVpZ2hib3JfcmFkaWkgPSBjbGFtcChuZWlnaGJvcl9yYWRpaSwgcGl4ZWxsZW5ndGggKiAxLjUsIDIgLSBwaXhlbGxlbmd0aCAqIDEuNSk7CgkJZmxvYXQyIHNwYWNpbmcgPSAyIC0gcmFkaWkgLSBuZWlnaGJvcl9yYWRpaTsKCQlmbG9hdDIgZXh0cmFfcGFkID0gbWF4KHBpeGVsbGVuZ3RoICogLjA2MjUgLSBzcGFjaW5nLCBmbG9hdDIoMCkpOwoJCXJhZGlpIC09IGV4dHJhX3BhZCAqIC41OwoJfQoJZmxvYXQyIGFhX291dHNldCA9IGFhX2Jsb2F0X2RpcmVjdGlvbiAqIGFhX2Jsb2F0cmFkaXVzICogYWFfYmxvYXRfbXVsdGlwbGllcjsKCWZsb2F0MiB2ZXJ0ZXhwb3MgPSBjb3JuZXIgKyByYWRpdXNfb3V0c2V0ICogcmFkaWkgKyBhYV9vdXRzZXQ7CglpZiAoY292ZXJhZ2UgPiAuNSkgCgl7CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi54ICE9IDAgJiYgdmVydGV4cG9zLnggKiBjb3JuZXIueCA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueCk7CgkJCXZlcnRleHBvcy54ID0gMDsKCQkJdmVydGV4cG9zLnkgKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLnkpICogcGl4ZWxsZW5ndGgueS9waXhlbGxlbmd0aC54OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueCkgLyAoYWJzKGNvcm5lci54KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJCWlmIChhYV9ibG9hdF9kaXJlY3Rpb24ueSAhPSAwICYmIHZlcnRleHBvcy55ICogY29ybmVyLnkgPCAwKSAKCQl7CgkJCWZsb2F0IGJhY2tzZXQgPSBhYnModmVydGV4cG9zLnkpOwoJCQl2ZXJ0ZXhwb3MueSA9IDA7CgkJCXZlcnRleHBvcy54ICs9IGJhY2tzZXQgKiBzaWduKGNvcm5lci54KSAqIHBpeGVsbGVuZ3RoLngvcGl4ZWxsZW5ndGgueTsKCQkJY292ZXJhZ2UgPSAoY292ZXJhZ2UgLSAuNSkgKiBhYnMoY29ybmVyLnkpIC8gKGFicyhjb3JuZXIueSkgKyBiYWNrc2V0KSArIC41OwoJCX0KCX0KCWZsb2F0MngyIHNrZXdtYXRyaXggPSBmbG9hdDJ4Mihza2V3Lnh5LCBza2V3Lnp3KTsKCWZsb2F0MiBkZXZjb29yZCA9IHZlcnRleHBvcyAqIHNrZXdtYXRyaXggKyB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlLnh5OwoJZmxvYXQyIFQgPSB2ZXJ0ZXhwb3MgKiAuNSArIC41OwoJZmxvYXQyIGxvY2FsY29vcmQgPSBsb2NhbHJlY3QueHkgKiAoMSAtIFQpICsgbG9jYWxyZWN0Lnp3ICogVCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUuencgKiBULnl4OwoJaWYgKDAgIT0gaXNfbGluZWFyX2NvdmVyYWdlKSAKCXsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoMCwgY292ZXJhZ2UgKiBjb3ZlcmFnZV9tdWx0aXBsaWVyKTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQyIGFyY2Nvb3JkID0gMSAtIGFicyhyYWRpdXNfb3V0c2V0KSArIGFhX291dHNldC9yYWRpaSAqIGNvcm5lcjsKCQl2YXJjY29vcmRfUzAueHkgPSBmbG9hdDIoYXJjY29vcmQueCsxLCBhcmNjb29yZC55KTsKCX0KCXNrX1Bvc2l0aW9uID0gZGV2Y29vcmQueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNl9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzEpICogbG9jYWxjb29yZC54eTE7Cgl9Cn0KAAAAAABbCwAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIEZpbGxSUmVjdE9wOjpQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7CglmbG9hdCB4X3BsdXNfMT12YXJjY29vcmRfUzAueCwgeT12YXJjY29vcmRfUzAueTsKCWhhbGYgY292ZXJhZ2U7CglpZiAoMCA9PSB4X3BsdXNfMSkgCgl7CgkJY292ZXJhZ2UgPSBoYWxmKHkpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdCBmbiA9IHhfcGx1c18xICogKHhfcGx1c18xIC0gMik7CgkJZm4gPSBmbWEoeSx5LCBmbik7CgkJZmxvYXQgZm53aWR0aCA9IGZ3aWR0aChmbik7CgkJY292ZXJhZ2UgPSAuNSAtIGhhbGYoZm4vZm53aWR0aCk7CgkJY292ZXJhZ2UgPSBjbGFtcChjb3ZlcmFnZSwgMCwgMSk7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGNvdmVyYWdlKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAABAAAAAgAAAAMAAAAfAAAAAAAAAAEAAAAfAAAAEAAAAAEAAAAfAAAAIAAAAAEAAAAwAAAABgAAAB8AAAAAAAAAAgAAAB8AAAAQAAAAAgAAAB8AAAAgAAAAAgAAAB8AAAAwAAAAAgAAAB8AAABAAAAAAgAAAAkAAABQAAAAAgAAAFQAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAB3QA6AAAEAAAAAAAMAAMEAEAAABAAAAAAB2AAAAAAACAAAAAEBSAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1MsAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7CglsYXlvdXQob2Zmc2V0PTY0KSBmbG9hdDQgdWlubmVyUmVjdF9TMjsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMjsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAVgYAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHVpbm5lclJlY3RfUzI7CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzI7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdmluQ2lyY2xlRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgdmluQ29sb3JfUzA7CmhhbGY0IENpcmN1bGFyUlJlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQyIGR4eTAgPSB1aW5uZXJSZWN0X1MxLkxUIC0gc2tfRnJhZ0Nvb3JkLnh5OwoJZmxvYXQyIGR4eTEgPSBza19GcmFnQ29vcmQueHkgLSB1aW5uZXJSZWN0X1MxLlJCOwoJZmxvYXQyIGR4eSA9IG1heChtYXgoZHh5MCwgZHh5MSksIDAuMCk7CgloYWxmIGFscGhhID0gaGFsZihzYXR1cmF0ZSh1cmFkaXVzUGx1c0hhbGZfUzEueCAtIGxlbmd0aChkeHkpKSk7CglhbHBoYSA9IDEuMCAtIGFscGhhOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IENpcmN1bGFyUlJlY3RfUzIoaGFsZjQgX2lucHV0KSAKewoJZmxvYXQgZHgwID0gdWlubmVyUmVjdF9TMi5MIC0gc2tfRnJhZ0Nvb3JkLng7CglmbG9hdDIgZHh5MSA9IHNrX0ZyYWdDb29yZC54eSAtIHVpbm5lclJlY3RfUzIuUkI7CglmbG9hdDIgZHh5ID0gbWF4KGZsb2F0MihtYXgoZHgwLCBkeHkxLngpLCBkeHkxLnkpLCAwLjApOwoJaGFsZiB0b3BBbHBoYSA9IGhhbGYoc2F0dXJhdGUoc2tfRnJhZ0Nvb3JkLnkgLSB1aW5uZXJSZWN0X1MyLlQpKTsKCWhhbGYgYWxwaGEgPSB0b3BBbHBoYSAqIGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBDaXJjbGVHZW9tZXRyeVByb2Nlc3NvcgoJZmxvYXQ0IGNpcmNsZUVkZ2U7CgljaXJjbGVFZGdlID0gdmluQ2lyY2xlRWRnZV9TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gQ2lyY3VsYXJSUmVjdF9TMShvdXRwdXRDb3ZlcmFnZV9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBDaXJjdWxhclJSZWN0X1MyKG91dHB1dF9TMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRfUzI7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFQBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAACADHIJJCYCAAAEAP2LRIPAAAAAAAAAAAEAAAAAZKHQJ7UIBAAAABAAAAAAIA2GZPMTQCAAAMAAAAAAAM5BFGLAIAAAAB7JOFF4AAAAAAAAQAAAADEBACAAAADI3F52OAIAABQAAAAAABTUEUZMBAAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAJYCKNWEQAAAAA6S52JYABAAAAACAAAAAMQIDHIJJSYCAAAAAAAAAAAAV5F34SQIDQAAAACAAAAABAIP6S4KLYAAAAAAAAAAAAAKYIAAIAAAAAIBBUARAAAAAAAAAAAAAAHUAAAAABABLFMNCQCAAAKAAAAACADYAABAAAAAAIBDCEIHMVQUIAAAABIAAAAAAAAAAAOAQHSAAAAAAQAAAAAA5AAAAAAABAAAAACAZAAACQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1PpAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBoYWxmNCB1c3RhcnRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0KSBoYWxmNCB1ZW5kX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTg4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZiB1cmFuZ2VfUzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgZmxvYXQ0IHVyZWN0VW5pZm9ybV9TMl9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDQgdWlubmVyUmVjdF9TMl9jMTsKCWxheW91dChvZmZzZXQ9MTkyKSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzJfYzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAAAQxAAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGhhbGY0IHVzdGFydF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQpIGhhbGY0IHVlbmRfUzFfYzBfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODgpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0NCB1aW5uZXJSZWN0X1MyX2MxOwoJbGF5b3V0KG9mZnNldD0xOTIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMl9jMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IFNpbmdsZUludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCXJldHVybiBoYWxmNChtaXgodXN0YXJ0X1MxX2MwX2MwX2MwX2MwLCB1ZW5kX1MxX2MwX2MwX2MwX2MwLCBoYWxmKF90bXBfMV9jb29yZHMueCkpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzBfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MwX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBTaW5nbGVJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0KaGFsZjQgUmVjdF9TMl9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzdfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGYgY292ZXJhZ2U7CglpZiAoaW50KDIpID09IGtGaWxsQldfUzJfYzAgfHwgaW50KDIpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwKSAKCXsKCQljb3ZlcmFnZSA9IGhhbGYoYWxsKGdyZWF0ZXJUaGFuKGZsb2F0NChza19GcmFnQ29vcmQueHksIHVyZWN0VW5pZm9ybV9TMl9jMC56dyksIGZsb2F0NCh1cmVjdFVuaWZvcm1fUzJfYzAueHksIHNrX0ZyYWdDb29yZC54eSkpKSk7Cgl9CgllbHNlIAoJewoJCWhhbGY0IGRpc3RzNCA9IHNhdHVyYXRlKGhhbGY0KDEuMCwgMS4wLCAtMS4wLCAtMS4wKSAqIGhhbGY0KHNrX0ZyYWdDb29yZC54eXh5IC0gdXJlY3RVbmlmb3JtX1MyX2MwKSk7CgkJaGFsZjIgZGlzdHMyID0gKGRpc3RzNC54eSArIGRpc3RzNC56dykgLSAxLjA7CgkJY292ZXJhZ2UgPSBkaXN0czIueCAqIGRpc3RzMi55OwoJfQoJaWYgKGludCgyKSA9PSBrSW52ZXJzZUZpbGxCV19TMl9jMCB8fCBpbnQoMikgPT0ga0ludmVyc2VGaWxsQUFfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gMS4wIC0gY292ZXJhZ2U7Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoY292ZXJhZ2UpKTsKfQpoYWxmNCBDaXJjdWxhclJSZWN0X1MyX2MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMl9jMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMl9jMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MyX2MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgQ2lyY3VsYXJSUmVjdF9TMl9jMShfc3JjKSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXRoZXJfUzEob3V0cHV0Q29sb3JfUzApOwoJaGFsZjQgb3V0cHV0X1MyOwoJb3V0cHV0X1MyID0gQmxlbmRfUzIob3V0cHV0Q292ZXJhZ2VfUzAsIGhhbGY0KDEpKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRfUzI7Cgl9Cn0KAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAdAAAADAAAAAEAAAAUAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HTRQAGAABBYAAAEIXBAAAGEAMAAAAAAAAAAAAAAAWAGHAIBZ5AJQAAAA5C5DCQYAAAAABADI3F5SOAIAABQAAAAAIARCXBRHEQAAAAH2LVJPAAAAAAAAAAAEAAAAAZFE5PDAYAIAAAAABITF56OQIAAAQAAQAAAARGWBRHUQAAAAB2DXJHAQGAAAAAEAAAAASAIYRFV5O4JAAAAAAYAAAABEWJRHQQQCAAAKBXZFAUHQAAAAIAAAAACAAYJVSMJ4EEAQAAAAAAAABMBC7UXCS6AAAAAAAAIAAAADFVHPSKBAOAAAAAAAAAAAWCBAAAABAAAAANAEIQCAAAAAAAAAAABQAAGQAAAAKFIDMVQUAAAAAAYAAAAAQAAAADEEQFEURUKQKAAAYAAAAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1OqBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgaGFsZjQgdXRocmVzaG9sZHNfUzFfYzBfYzBfYzBbMV07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMFs0XTsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTIzMikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTI0MCkgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9Mjg4KSBoYWxmIHVyYW5nZV9TMTsKCWxheW91dChvZmZzZXQ9MzA0KSBmbG9hdDQgdXJlY3RVbmlmb3JtX1MyX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpblF1YWRFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZRdWFkRWRnZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkRWRnZQoJdlF1YWRFZGdlX1MwID0gaW5RdWFkRWRnZTsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc182X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMSkgKiBfdG1wXzFfaW5Qb3NpdGlvbi54eTE7Cgl9Cn0KAAAAAAAAIBEAAGNvbnN0IGludCBrRmlsbEJXX1MyX2MwID0gMDsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEJXX1MyX2MwID0gMjsKY29uc3QgaW50IGtJbnZlcnNlRmlsbEFBX1MyX2MwID0gMzsKbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBoYWxmNCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFsxXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBfYzBbNF07CglsYXlvdXQob2Zmc2V0PTExMikgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwWzRdOwoJbGF5b3V0KG9mZnNldD0xNzYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTIyNCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjMyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9MjQwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yODgpIGhhbGYgdXJhbmdlX1MxOwoJbGF5b3V0KG9mZnNldD0zMDQpIGZsb2F0NCB1cmVjdFVuaWZvcm1fUzJfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDQgdlF1YWRFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc182X1MwOwpoYWxmNCBMb29waW5nQmluYXJ5Q29sb3JpemVyX1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCTsKCTsKCWludCBjaHVuayA9IDA7Cgk7CglpbnQgcG9zOwoJaWYgKHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueSkgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueCA/IDAgOiAxKTsKCX0KCWVsc2UgCgl7CgkJcG9zID0gaW50KHQgPCB1dGhyZXNob2xkc19TMV9jMF9jMF9jMFtjaHVua10ueiA/IDIgOiAzKTsKCX0KCTsKCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHVzY2FsZV9TMV9jMF9jMF9jMFtwb3NdICsgdWJpYXNfUzFfYzBfYzBfYzBbcG9zXSkpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzZfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IExvb3BpbmdCaW5hcnlDb2xvcml6ZXJfUzFfYzBfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgQXBwbHlQYWludEFscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMChoYWxmNChfaW5wdXQueHl6LCAxLjApKSAqIF9pbnB1dC53KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IEFwcGx5UGFpbnRBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQpoYWxmNCBSZWN0X1MyX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfN19pbkNvbG9yID0gX2lucHV0OwoJaGFsZiBjb3ZlcmFnZTsKCWlmIChpbnQoMSkgPT0ga0ZpbGxCV19TMl9jMCB8fCBpbnQoMSkgPT0ga0ludmVyc2VGaWxsQldfUzJfYzApIAoJewoJCWNvdmVyYWdlID0gaGFsZihhbGwoZ3JlYXRlclRoYW4oZmxvYXQ0KHNrX0ZyYWdDb29yZC54eSwgdXJlY3RVbmlmb3JtX1MyX2MwLnp3KSwgZmxvYXQ0KHVyZWN0VW5pZm9ybV9TMl9jMC54eSwgc2tfRnJhZ0Nvb3JkLnh5KSkpKTsKCX0KCWVsc2UgCgl7CgkJaGFsZjQgZGlzdHM0ID0gc2F0dXJhdGUoaGFsZjQoMS4wLCAxLjAsIC0xLjAsIC0xLjApICogaGFsZjQoc2tfRnJhZ0Nvb3JkLnh5eHkgLSB1cmVjdFVuaWZvcm1fUzJfYzApKTsKCQloYWxmMiBkaXN0czIgPSAoZGlzdHM0Lnh5ICsgZGlzdHM0Lnp3KSAtIDEuMDsKCQljb3ZlcmFnZSA9IGRpc3RzMi54ICogZGlzdHMyLnk7Cgl9CglpZiAoaW50KDEpID09IGtJbnZlcnNlRmlsbEJXX1MyX2MwIHx8IGludCgxKSA9PSBrSW52ZXJzZUZpbGxBQV9TMl9jMCkgCgl7CgkJY292ZXJhZ2UgPSAxLjAgLSBjb3ZlcmFnZTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChjb3ZlcmFnZSkpOwp9CmhhbGY0IEJsZW5kX1MyKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoUmVjdF9TMl9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRFZGdlCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmIGVkZ2VBbHBoYTsKCWhhbGYyIGR1dmR4ID0gaGFsZjIoZEZkeCh2UXVhZEVkZ2VfUzAueHkpKTsKCWhhbGYyIGR1dmR5ID0gaGFsZjIoZEZkeSh2UXVhZEVkZ2VfUzAueHkpKTsKCWlmICh2UXVhZEVkZ2VfUzAueiA+IDAuMCAmJiB2UXVhZEVkZ2VfUzAudyA+IDAuMCkgCgl7CgkJZWRnZUFscGhhID0gaGFsZihtaW4obWluKHZRdWFkRWRnZV9TMC56LCB2UXVhZEVkZ2VfUzAudykgKyAwLjUsIDEuMCkpOwoJfQoJZWxzZSAKCXsKCQloYWxmMiBnRiA9IGhhbGYyKGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR4LnggLSBkdXZkeC55KSwgICAgICAgICAgICAgICAgIGhhbGYoMi4wKnZRdWFkRWRnZV9TMC54KmR1dmR5LnggLSBkdXZkeS55KSk7CgkJZWRnZUFscGhhID0gaGFsZih2UXVhZEVkZ2VfUzAueCp2UXVhZEVkZ2VfUzAueCAtIHZRdWFkRWRnZV9TMC55KTsKCQllZGdlQWxwaGEgPSBzYXR1cmF0ZSgwLjUgLSBlZGdlQWxwaGEgLyBsZW5ndGgoZ0YpKTsKCX0KCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7CgloYWxmNCBvdXRwdXRfUzI7CglvdXRwdXRfUzIgPSBCbGVuZF9TMihvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dF9TMjsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AYQA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACABZQA6AAAEAAAAAAAIADQAAAAIAAAAAAAIIDCGAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEAAAAAAAAAA":"CgAAAExTS1PWAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTQ4KSBoYWxmMiB1cmFkaXVzUGx1c0hhbGZfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IHVsb2NhbE1hdHJpeF9TMC54eiAqIGluUG9zaXRpb24gKyB1bG9jYWxNYXRyaXhfUzAueXc7Cglza19Qb3NpdGlvbiA9IF90bXBfMF9pblBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAVgQAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVsb2NhbE1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW5uZXJSZWN0X1MxOwoJbGF5b3V0KG9mZnNldD00OCkgaGFsZjIgdXJhZGl1c1BsdXNIYWxmX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJYWxwaGEgPSAxLjAgLSBhbHBoYTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IENpcmN1bGFyUlJlY3RfUzEob3V0cHV0Q292ZXJhZ2VfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB8AAAAMAAAAAQAAABwAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAARgAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","AZAA5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1N4AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bG9jYWxNYXRyaXhfUzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgaW5Qb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gaGFsZjQgaW5Db2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGluQ2lyY2xlRWRnZTsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0NCB2aW5DaXJjbGVFZGdlX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCgl2aW5DaXJjbGVFZGdlX1MwID0gaW5DaXJjbGVFZGdlOwoJdmluQ29sb3JfUzAgPSBpbkNvbG9yOwoJZmxvYXQyIF90bXBfMF9pblBvc2l0aW9uID0gaW5Qb3NpdGlvbjsKCWZsb2F0MiBfdG1wXzFfaW5Qb3NpdGlvbiA9IGZsb2F0M3gyKHVsb2NhbE1hdHJpeF9TMCkgKiBpblBvc2l0aW9uLnh5MTsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKfQoAAAAAnQIAAGxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCWZsb2F0NCBjaXJjbGVFZGdlOwoJY2lyY2xlRWRnZSA9IHZpbkNpcmNsZUVkZ2VfUzA7CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CglmbG9hdCBkID0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkpOwoJaGFsZiBkaXN0YW5jZVRvT3V0ZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoMS4wIC0gZCkpOwoJaGFsZiBlZGdlQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvT3V0ZXJFZGdlKTsKCWhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoZWRnZUFscGhhKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAABAAAAAAAAAAMAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAcAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","DAQAAAAAAABGAABAYAAQAIHCAIAYAQUBAEAAAAAAEAAAAAAAAAAAAAB2AAAAAAACAAAAAEBSAAAAAUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1PfAgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdUF0bGFzU2l6ZUludl9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiB1c2hvcnQyIGluVGV4dHVyZUNvb3JkczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VGV4dHVyZUNvb3Jkc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgZmxvYXQgdlRleEluZGV4X1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBvdXQgaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIEJpdG1hcFRleHQKCWludCB0ZXhJZHggPSAwOwoJZmxvYXQyIHVub3JtVGV4Q29vcmRzID0gZmxvYXQyKGluVGV4dHVyZUNvb3Jkcy54LCBpblRleHR1cmVDb29yZHMueSk7Cgl2VGV4dHVyZUNvb3Jkc19TMCA9IHVub3JtVGV4Q29vcmRzICogdUF0bGFzU2l6ZUludl9TMDsKCXZUZXhJbmRleF9TMCA9IGZsb2F0KHRleElkeCk7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJc2tfUG9zaXRpb24gPSBpblBvc2l0aW9uLnh5MDE7Cn0KAAAAAACRAgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MwOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0MiB1QXRsYXNTaXplSW52X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUZXh0dXJlQ29vcmRzX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBmbGF0IGluIGZsb2F0IHZUZXhJbmRleF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjQgdmluQ29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBCaXRtYXBUZXh0CgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmluQ29sb3JfUzA7CgloYWxmNCB0ZXhDb2xvcjsKCXsKCQl0ZXhDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMCwgdlRleHR1cmVDb29yZHNfUzApLnJycnI7Cgl9CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IHRleENvbG9yOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAA0AAAAMAAAAAQAAABAAAAAAAAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUQAAAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAADEAANAAAAALHCKLMRAAAAAAAAABAAAAAGJBCFLQVBWAQAAAAAAQAAAAAMACQCAACAAAAA2AIBAEIAAAAAAAAAAAAIADQAAAAIAAAAAAAIIDAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1OtAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD02NCkgaGFsZjQgdWNpcmNsZURhdGFfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IG91dCBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAABgFAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9NjQpIGhhbGY0IHVjaXJjbGVEYXRhX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IENpcmNsZUJsdXJfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmMiB2ZWMgPSBoYWxmMigoc2tfRnJhZ0Nvb3JkLnh5IC0gZmxvYXQyKHVjaXJjbGVEYXRhX1MxX2MwLnh5KSkgKiBmbG9hdCh1Y2lyY2xlRGF0YV9TMV9jMC53KSk7CgloYWxmIGRpc3QgPSBsZW5ndGgodmVjKSArICgwLjUgLSB1Y2lyY2xlRGF0YV9TMV9jMC56KSAqIHVjaXJjbGVEYXRhX1MxX2MwLnc7CglyZXR1cm4gaGFsZjQoTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIoZGlzdCwgMC41KSkpLnd3d3cpOwp9CmhhbGY0IEJsZW5kX1MxKGhhbGY0IF9zcmMsIGhhbGY0IF9kc3QpIAp7CglyZXR1cm4gYmxlbmRfbW9kdWxhdGUoQ2lyY2xlQmx1cl9TMV9jMChfc3JjKSwgX3NyYyk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBCbGVuZF9TMShvdXRwdXRDb3ZlcmFnZV9TMCwgaGFsZjQoMSkpOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dENvbG9yX1MwICogb3V0cHV0X1MxOwoJfQp9CgEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAMAAAAAAAAAFAAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUJAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAQAAAAAAQQGABBACUIAAAAABAAOAAAABAAAAAAABBAMAAAAARQAAAAACAAAAAAAAAAAAAAAAAAAAAAABQYBAIAAAAAAAA":"CgAAAExTS1O5AQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0NCB1aW52UmFkaWlMVFJCX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2bG9jYWxDb29yZF9TMCA9IGxvY2FsQ29vcmQ7Cglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cn0KAAAAAAAAAMUEAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzA7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVpbm5lclJlY3RfUzE7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdWludlJhZGlpTFRSQl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2bG9jYWxDb29yZF9TMDsKaGFsZjQgRWxsaXB0aWNhbFJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJZmxvYXQyIFogPSBtYXgobWF4KGR4eTAgKiB1aW52UmFkaWlMVFJCX1MxLnh5LCBkeHkxICogdWludlJhZGlpTFRSQl9TMS56dyksIDAuMCk7CgloYWxmIGltcGxpY2l0ID0gaGFsZihkb3QoWiwgZHh5KSAtIDEuMCk7CgloYWxmIGdyYWRfZG90ID0gaGFsZig0LjAgKiBkb3QoWiwgWikpOwoJZ3JhZF9kb3QgPSBtYXgoZ3JhZF9kb3QsIDEuMGUtNCk7CgloYWxmIGFwcHJveF9kaXN0ID0gaW1wbGljaXQgKiBoYWxmKGludmVyc2VzcXJ0KGdyYWRfZG90KSk7CgloYWxmIGFscGhhID0gY2xhbXAoMC41IC0gYXBwcm94X2Rpc3QsIDAuMCwgMS4wKTsKCXJldHVybiBfaW5wdXQgKiBhbHBoYTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJZmxvYXQyIHRleENvb3JkOwoJdGV4Q29vcmQgPSB2bG9jYWxDb29yZF9TMDsKCW91dHB1dENvbG9yX1MwID0gKChzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzAsIHRleENvb3JkKSAqIGhhbGY0KDEpKSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRWxsaXB0aWNhbFJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIBAEAAAABJYQAAAAAQCAIAAAAAWCBACAIBAAAAANAECAZAAEAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADOBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwoJaGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSk7Cn0KaGFsZjQgU21vb3RoX1MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIGNvb3JkLCBoYWxmMiBvZmZzZXRBbmRLZXJuZWwpIAp7CglyZXR1cm4gTWF0cml4RWZmZWN0X1MxX2MwX2MwKF9pbnB1dCwgKGNvb3JkICsgb2Zmc2V0QW5kS2VybmVsLnggKiB1SW5jcmVtZW50X1MxX2MwKSkgKiBvZmZzZXRBbmRLZXJuZWwueTsKfQpoYWxmNCBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IGNvbG9yID0gaGFsZjQoMCk7CglmbG9hdDIgY29vcmQgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKCWZvciAoaW50IGk9MDsgaTwxMzsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQFAAAAAAABAEAAAABJKQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N9AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFs2XTsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCglza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7Cgl7CgkJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSBmbG9hdDN4Mih1bWF0cml4X1MxKSAqIGxvY2FsQ29vcmQueHkxOwoJfQp9CgAAAAAAAADvBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzZdOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkczsKCWZsb2F0MiBzdWJzZXRDb29yZDsKCXN1YnNldENvb3JkLnggPSBpbkNvb3JkLng7CglzdWJzZXRDb29yZC55ID0gaW5Db29yZC55OwoJZmxvYXQyIGNsYW1wZWRDb29yZDsKCWNsYW1wZWRDb29yZC54ID0gc3Vic2V0Q29vcmQueDsKCWNsYW1wZWRDb29yZC55ID0gY2xhbXAoc3Vic2V0Q29vcmQueSwgdWNsYW1wX1MxX2MwX2MwX2MwLnksIHVjbGFtcF9TMV9jMF9jMF9jMC53KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTsKCXJldHVybiB0ZXh0dXJlQ29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IFNtb290aF9TMV9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBjb29yZCwgaGFsZjIgb2Zmc2V0QW5kS2VybmVsKSAKewoJcmV0dXJuIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfaW5wdXQsIChjb29yZCArIG9mZnNldEFuZEtlcm5lbC54ICogdUluY3JlbWVudF9TMV9jMCkpICogb2Zmc2V0QW5kS2VybmVsLnk7Cn0KaGFsZjQgR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBjb2xvciA9IGhhbGY0KDApOwoJZmxvYXQyIGNvb3JkID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7Cglmb3IgKGludCBpPTA7IGk8NjsgKytpKSAKCXsKCQljb2xvciArPSBTbW9vdGhfUzFfYzAoX2lucHV0LCBjb29yZCwgdU9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV0pOwoJfQoJcmV0dXJuIGNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gR2F1c3NpYW5Db252b2x1dGlvbl9TMV9jMChfaW5wdXQpOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gaGFsZjQoMSk7Cgljb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAEAAAAAAAAAAgAAAB0AAAAAAAAAAQAAAB0AAAAIAAAAAQAAABAAAAAAAAAAUAAAAAAAAAABAAAAAAAAAA==","FAAQMYAAMAAAEADAAABAEYAAAICIAB5AABQAAAQAMAAAEATAAABAIIGAAEDCBYQCA4AAAAAAEADZABYAAAIAAAAAACQAGAAAAAQAAAAAAAQQGUAAAAAACAAAAAAAAAAAAAAAAABAAAAABQYBAAAAAAAAAA":"CgAAAExTS1M8DQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCByYWRpaV9zZWxlY3RvcjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQ0IGNvcm5lcl9hbmRfcmFkaXVzX291dHNldHM7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBhYV9ibG9hdF9hbmRfY292ZXJhZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGZsb2F0NCByYWRpaV94OwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBmbG9hdDQgcmFkaWlfeTsKbGF5b3V0KGxvY2F0aW9uID0gNSkgaW4gZmxvYXQ0IHNrZXc7CmxheW91dChsb2NhdGlvbiA9IDYpIGluIGZsb2F0MiB0cmFuc2xhdGVfYW5kX2xvY2Fscm90YXRlOwpsYXlvdXQobG9jYXRpb24gPSA3KSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZhcmNjb29yZF9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgRmlsbFJSZWN0T3A6OlByb2Nlc3NvcgoJdmNvbG9yX1MwID0gY29sb3I7CglmbG9hdCBhYV9ibG9hdF9tdWx0aXBsaWVyID0gMTsKCWZsb2F0MiBjb3JuZXIgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnh5OwoJZmxvYXQyIHJhZGl1c19vdXRzZXQgPSBjb3JuZXJfYW5kX3JhZGl1c19vdXRzZXRzLnp3OwoJZmxvYXQyIGFhX2Jsb2F0X2RpcmVjdGlvbiA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS54eTsKCWZsb2F0IGlzX2xpbmVhcl9jb3ZlcmFnZSA9IGFhX2Jsb2F0X2FuZF9jb3ZlcmFnZS53OwoJZmxvYXQyIHBpeGVsbGVuZ3RoID0gaW52ZXJzZXNxcnQoZmxvYXQyKGRvdChza2V3Lnh6LCBza2V3Lnh6KSwgZG90KHNrZXcueXcsIHNrZXcueXcpKSk7CglmbG9hdDQgbm9ybWFsaXplZF9heGlzX2RpcnMgPSBza2V3ICogcGl4ZWxsZW5ndGgueHl4eTsKCWZsb2F0MiBheGlzd2lkdGhzID0gKGFicyhub3JtYWxpemVkX2F4aXNfZGlycy54eSkgKyBhYnMobm9ybWFsaXplZF9heGlzX2RpcnMuencpKTsKCWZsb2F0MiBhYV9ibG9hdHJhZGl1cyA9IGF4aXN3aWR0aHMgKiBwaXhlbGxlbmd0aCAqIC41OwoJZmxvYXQ0IHJhZGlpX2FuZF9uZWlnaGJvcnMgPSByYWRpaV9zZWxlY3RvciogZmxvYXQ0eDQocmFkaWlfeCwgcmFkaWlfeSwgcmFkaWlfeC55eHd6LCByYWRpaV95Lnd6eXgpOwoJZmxvYXQyIHJhZGlpID0gcmFkaWlfYW5kX25laWdoYm9ycy54eTsKCWZsb2F0MiBuZWlnaGJvcl9yYWRpaSA9IHJhZGlpX2FuZF9uZWlnaGJvcnMuenc7CglmbG9hdCBjb3ZlcmFnZV9tdWx0aXBsaWVyID0gMTsKCWlmIChhbnkoZ3JlYXRlclRoYW4oYWFfYmxvYXRyYWRpdXMsIGZsb2F0MigxKSkpKSAKCXsKCQljb3JuZXIgPSBtYXgoYWJzKGNvcm5lciksIGFhX2Jsb2F0cmFkaXVzKSAqIHNpZ24oY29ybmVyKTsKCQljb3ZlcmFnZV9tdWx0aXBsaWVyID0gMSAvIChtYXgoYWFfYmxvYXRyYWRpdXMueCwgMSkgKiBtYXgoYWFfYmxvYXRyYWRpdXMueSwgMSkpOwoJCXJhZGlpID0gZmxvYXQyKDApOwoJfQoJZmxvYXQgY292ZXJhZ2UgPSBhYV9ibG9hdF9hbmRfY292ZXJhZ2UuejsKCWlmIChhbnkobGVzc1RoYW4ocmFkaWksIGFhX2Jsb2F0cmFkaXVzICogMS41KSkpIAoJewoJCXJhZGlpID0gZmxvYXQyKDApOwoJCWFhX2Jsb2F0X2RpcmVjdGlvbiA9IHNpZ24oY29ybmVyKTsKCQlpZiAoY292ZXJhZ2UgPiAuNSkgCgkJewoJCQlhYV9ibG9hdF9kaXJlY3Rpb24gPSAtYWFfYmxvYXRfZGlyZWN0aW9uOwoJCX0KCQlpc19saW5lYXJfY292ZXJhZ2UgPSAxOwoJfQoJZWxzZSAKCXsKCQlyYWRpaSA9IGNsYW1wKHJhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQluZWlnaGJvcl9yYWRpaSA9IGNsYW1wKG5laWdoYm9yX3JhZGlpLCBwaXhlbGxlbmd0aCAqIDEuNSwgMiAtIHBpeGVsbGVuZ3RoICogMS41KTsKCQlmbG9hdDIgc3BhY2luZyA9IDIgLSByYWRpaSAtIG5laWdoYm9yX3JhZGlpOwoJCWZsb2F0MiBleHRyYV9wYWQgPSBtYXgocGl4ZWxsZW5ndGggKiAuMDYyNSAtIHNwYWNpbmcsIGZsb2F0MigwKSk7CgkJcmFkaWkgLT0gZXh0cmFfcGFkICogLjU7Cgl9CglmbG9hdDIgYWFfb3V0c2V0ID0gYWFfYmxvYXRfZGlyZWN0aW9uICogYWFfYmxvYXRyYWRpdXMgKiBhYV9ibG9hdF9tdWx0aXBsaWVyOwoJZmxvYXQyIHZlcnRleHBvcyA9IGNvcm5lciArIHJhZGl1c19vdXRzZXQgKiByYWRpaSArIGFhX291dHNldDsKCWlmIChjb3ZlcmFnZSA+IC41KSAKCXsKCQlpZiAoYWFfYmxvYXRfZGlyZWN0aW9uLnggIT0gMCAmJiB2ZXJ0ZXhwb3MueCAqIGNvcm5lci54IDwgMCkgCgkJewoJCQlmbG9hdCBiYWNrc2V0ID0gYWJzKHZlcnRleHBvcy54KTsKCQkJdmVydGV4cG9zLnggPSAwOwoJCQl2ZXJ0ZXhwb3MueSArPSBiYWNrc2V0ICogc2lnbihjb3JuZXIueSkgKiBwaXhlbGxlbmd0aC55L3BpeGVsbGVuZ3RoLng7CgkJCWNvdmVyYWdlID0gKGNvdmVyYWdlIC0gLjUpICogYWJzKGNvcm5lci54KSAvIChhYnMoY29ybmVyLngpICsgYmFja3NldCkgKyAuNTsKCQl9CgkJaWYgKGFhX2Jsb2F0X2RpcmVjdGlvbi55ICE9IDAgJiYgdmVydGV4cG9zLnkgKiBjb3JuZXIueSA8IDApIAoJCXsKCQkJZmxvYXQgYmFja3NldCA9IGFicyh2ZXJ0ZXhwb3MueSk7CgkJCXZlcnRleHBvcy55ID0gMDsKCQkJdmVydGV4cG9zLnggKz0gYmFja3NldCAqIHNpZ24oY29ybmVyLngpICogcGl4ZWxsZW5ndGgueC9waXhlbGxlbmd0aC55OwoJCQljb3ZlcmFnZSA9IChjb3ZlcmFnZSAtIC41KSAqIGFicyhjb3JuZXIueSkgLyAoYWJzKGNvcm5lci55KSArIGJhY2tzZXQpICsgLjU7CgkJfQoJfQoJZmxvYXQyeDIgc2tld21hdHJpeCA9IGZsb2F0MngyKHNrZXcueHksIHNrZXcuencpOwoJZmxvYXQyIGRldmNvb3JkID0gdmVydGV4cG9zICogc2tld21hdHJpeCArIHRyYW5zbGF0ZV9hbmRfbG9jYWxyb3RhdGUueHk7CglpZiAoMCAhPSBpc19saW5lYXJfY292ZXJhZ2UpIAoJewoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MigwLCBjb3ZlcmFnZSAqIGNvdmVyYWdlX211bHRpcGxpZXIpOwoJfQoJZWxzZSAKCXsKCQlmbG9hdDIgYXJjY29vcmQgPSAxIC0gYWJzKHJhZGl1c19vdXRzZXQpICsgYWFfb3V0c2V0L3JhZGlpICogY29ybmVyOwoJCXZhcmNjb29yZF9TMC54eSA9IGZsb2F0MihhcmNjb29yZC54KzEsIGFyY2Nvb3JkLnkpOwoJfQoJc2tfUG9zaXRpb24gPSBkZXZjb29yZC54eTAxOwp9CgAAAABwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWlubmVyUmVjdF9TMTsKCWxheW91dChvZmZzZXQ9MzIpIGhhbGYyIHVyYWRpdXNQbHVzSGFsZl9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgaW4gaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdDIgdmFyY2Nvb3JkX1MwOwpoYWxmNCBDaXJjdWxhclJSZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCWZsb2F0MiBkeHkwID0gdWlubmVyUmVjdF9TMS5MVCAtIHNrX0ZyYWdDb29yZC54eTsKCWZsb2F0MiBkeHkxID0gc2tfRnJhZ0Nvb3JkLnh5IC0gdWlubmVyUmVjdF9TMS5SQjsKCWZsb2F0MiBkeHkgPSBtYXgobWF4KGR4eTAsIGR4eTEpLCAwLjApOwoJaGFsZiBhbHBoYSA9IGhhbGYoc2F0dXJhdGUodXJhZGl1c1BsdXNIYWxmX1MxLnggLSBsZW5ndGgoZHh5KSkpOwoJcmV0dXJuIF9pbnB1dCAqIGFscGhhOwp9CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBGaWxsUlJlY3RPcDo6UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJZmxvYXQgeF9wbHVzXzE9dmFyY2Nvb3JkX1MwLngsIHk9dmFyY2Nvb3JkX1MwLnk7CgloYWxmIGNvdmVyYWdlOwoJaWYgKDAgPT0geF9wbHVzXzEpIAoJewoJCWNvdmVyYWdlID0gaGFsZih5KTsKCX0KCWVsc2UgCgl7CgkJZmxvYXQgZm4gPSB4X3BsdXNfMSAqICh4X3BsdXNfMSAtIDIpOwoJCWZuID0gZm1hKHkseSwgZm4pOwoJCWZsb2F0IGZud2lkdGggPSBmd2lkdGgoZm4pOwoJCWNvdmVyYWdlID0gLjUgLSBoYWxmKGZuL2Zud2lkdGgpOwoJCWNvdmVyYWdlID0gY2xhbXAoY292ZXJhZ2UsIDAsIDEpOwoJfQoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChjb3ZlcmFnZSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBDaXJjdWxhclJSZWN0X1MxKG91dHB1dENvdmVyYWdlX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRDb2xvcl9TMCAqIG91dHB1dF9TMTsKCX0KfQoBAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAQAAAAIAAAADAAAAHwAAAAAAAAABAAAAHwAAABAAAAABAAAAHwAAACAAAAABAAAAMAAAAAUAAAAfAAAAAAAAAAIAAAAfAAAAEAAAAAIAAAAfAAAAIAAAAAIAAAAdAAAAMAAAAAIAAAAJAAAAOAAAAAIAAAA8AAAAUAAAAAEAAAABAAAABQAAAAAAAAABAAAABQAAAAAAAAABAAAAAAAAAA==","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAEYAAAAAAAAAAQAAAAAAAAA=","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAABAEAAAABJYQAAAAAACAIAAAAAWCBAAAIBAAAAANAECAZAAAAQAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IHN1YnNldENvb3JkLng7CgljbGFtcGVkQ29vcmQueSA9IGNsYW1wKHN1YnNldENvb3JkLnksIHVjbGFtcF9TMV9jMF9jMF9jMC55LCB1Y2xhbXBfUzFfYzBfYzBfYzAudyk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","AYQQ5AADQAAAOAEARAFQJAABBADIB7777777777777777777777767YAAAAAAAAAACAMUAAHSKBT4AIAAAAAL7QZDUAAAAAABAAAAAEIS26XOEQAAAAAMAAAAAMHCHGACAAQAAFA34SQKDYAAAAAAACAAAAAAQCGCT4GO5AAAAAAAIAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAEABSAQAAAAQBUNS6ZHAEAAAYAAAAAIAEOHAEGBCAAAAD5F2UXQAAAAAAACAAAAAZAEUJS67HIEAAAIAAIAAAAEMHAHGBCAAAAA5B3UTQIDAAAAAEAAAAAJAQJDRYBRQIQAAAAAAAAAACWERP2LBIPAAAAAIAAAAAEABT23XJHAAEAAAAAAAAAABLBAABAAAAAAAAGQCEIBAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAIAAAAAAAAA":"CgAAAExTS1OlBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NjQpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9OTYpIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTEyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNjApIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE2OCkgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTE3NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMTsKCWxheW91dChvZmZzZXQ9MjI0KSBoYWxmIHVyYW5nZV9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBpblBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBpbkNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDQgaW5DaXJjbGVFZGdlOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5Db2xvcl9TMCA9IGluQ29sb3I7CglmbG9hdDIgX3RtcF8wX2luUG9zaXRpb24gPSBpblBvc2l0aW9uOwoJZmxvYXQyIF90bXBfMV9pblBvc2l0aW9uID0gdWxvY2FsTWF0cml4X1MwLnh6ICogaW5Qb3NpdGlvbiArIHVsb2NhbE1hdHJpeF9TMC55dzsKCXNrX1Bvc2l0aW9uID0gX3RtcF8wX2luUG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfN19TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzBfYzBfYzEpICogX3RtcF8xX2luUG9zaXRpb24ueHkxOwoJfQp9CgAAAAAAAAC1DQAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1bG9jYWxNYXRyaXhfUzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD02NCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD05NikgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xMTIpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE2MCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTY4KSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTc2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMjQpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IHZpbkNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CmhhbGY0IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IF9jb29yZHM7CgloYWxmIHQgPSBoYWxmKF90bXBfMV9jb29yZHMueCk7CglmbG9hdDQgczsKCWZsb2F0NCBiOwoJaWYgKHQgPCB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwKSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzBdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFswXTsKCX0KCWVsc2UgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsxXTsKCQliID0gdWJpYXNfUzFfYzBfYzBfYzBfYzBbMV07Cgl9CglyZXR1cm4gaGFsZjQoaGFsZjQoZmxvYXQodCkgKiBzICsgYikpOwp9CmhhbGY0IExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzJfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzNfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzdfUzA7CglyZXR1cm4gaGFsZjQoaGFsZjQoaGFsZihfdG1wXzNfY29vcmRzLngpICsgMWUtMDUsIDEuMCwgMC4wLCAwLjApKTsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIExpbmVhckxheW91dF9TMV9jMF9jMF9jMF9jMV9jMChfaW5wdXQpOwp9CmhhbGY0IENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzRfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IHQgPSBNYXRyaXhFZmZlY3RfUzFfYzBfYzBfYzBfYzEoX3RtcF80X2luQ29sb3IpOwoJaGFsZjQgb3V0Q29sb3I7CglpZiAoIWJvb2woaW50KDEpKSAmJiB0LnkgPCAwLjApIAoJewoJCW91dENvbG9yID0gaGFsZjQoMC4wKTsKCX0KCWVsc2UgaWYgKHQueCA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSBpZiAodC54ID4gMS4wKSAKCXsKCQlvdXRDb2xvciA9IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJfQoJZWxzZSAKCXsKCQlvdXRDb2xvciA9IER1YWxJbnRlcnZhbENvbG9yaXplcl9TMV9jMF9jMF9jMF9jMChfdG1wXzRfaW5Db2xvciwgZmxvYXQyKGhhbGYyKHQueCwgMC4wKSkpOwoJfQoJcmV0dXJuIGhhbGY0KG91dENvbG9yKTsKfQpoYWxmNCBjb2xvcl94Zm9ybV9TMV9jMF9jMChoYWxmNCBjb2xvcikgCnsKCWNvbG9yLnJnYiAqPSBjb2xvci5hOwoJcmV0dXJuIGhhbGY0KGNvbG9yKTsKfQpoYWxmNCBDb2xvclNwYWNlWGZvcm1fUzFfYzBfYzAoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIGNvbG9yX3hmb3JtX1MxX2MwX2MwKENsYW1wZWRHcmFkaWVudF9TMV9jMF9jMF9jMChfaW5wdXQpKTsKfQpoYWxmNCBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCV9pbnB1dCA9IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChfaW5wdXQpOwoJaGFsZjQgX3RtcF81X2luQ29sb3IgPSBfaW5wdXQ7CglyZXR1cm4gaGFsZjQoX2lucHV0KTsKfQpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MxX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfY29vcmRzKS4wMDByOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMShoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MxKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBEaXRoZXJfUzEoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF82X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCBjb2xvciA9IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoX3RtcF82X2luQ29sb3IpOwoJaGFsZiB2YWx1ZSA9IE1hdHJpeEVmZmVjdF9TMV9jMShfdG1wXzZfaW5Db2xvciwgc2tfRnJhZ0Nvb3JkLnh5KS53IC0gMC41OwoJcmV0dXJuIGhhbGY0KGhhbGY0KGNsYW1wKGNvbG9yLnh5eiArIHZhbHVlICogdXJhbmdlX1MxLCAwLjAsIGNvbG9yLncpLCBjb2xvci53KSk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZpbkNvbG9yX1MwOwoJZmxvYXQgZCA9IGxlbmd0aChjaXJjbGVFZGdlLnh5KTsKCWhhbGYgZGlzdGFuY2VUb091dGVyRWRnZSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKDEuMCAtIGQpKTsKCWhhbGYgZWRnZUFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb091dGVyRWRnZSk7CgloYWxmIGRpc3RhbmNlVG9Jbm5lckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqIChkIC0gY2lyY2xlRWRnZS53KSk7CgloYWxmIGlubmVyQWxwaGEgPSBzYXR1cmF0ZShkaXN0YW5jZVRvSW5uZXJFZGdlKTsKCWVkZ2VBbHBoYSAqPSBpbm5lckFscGhhOwoJaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNChlZGdlQWxwaGEpOwoJaGFsZjQgb3V0cHV0X1MxOwoJb3V0cHV0X1MxID0gRGl0aGVyX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHwAAAAwAAAABAAAAHAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQBAEAQAAAAGQCEIBAACAIAAAAAACQAGAAAAAQAAAAAGBCAIAAAAAFAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAQAAAAAAAA":"CgAAAExTS1PoAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAFgQAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKaGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMChoYWxmNCBfaW5wdXQpIAp7CglmbG9hdDIgaW5Db29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZmxvYXQyIHN1YnNldENvb3JkOwoJc3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDsKCXN1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7CglmbG9hdDIgY2xhbXBlZENvb3JkOwoJY2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMC54eSwgdWNsYW1wX1MxX2MwLnp3KTsKCWhhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKS4wMDByOwoJcmV0dXJuIHRleHR1cmVDb2xvcjsKfQpoYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzAoX2lucHV0KTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMCA9IGhhbGY0KDEpOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7CgkJc2tfRnJhZ0NvbG9yID0gc2tfRnJhZ0NvbG9yLmEwMDA7Cgl9Cn0KAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAAHQAAAAgAAAABAAAAEAAAAAAAAAAKAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBQU7BTXIAAAAAACAWXW3ZEQAAAADAAAAADAYRYQAQYEAAAIA7UXCQ6AAAAAQAAAAAAADGAWRWL3E4AQAADAAAAABAARY4AQYEIAAAAPUXKS6AAAAAAAAQAAAADE2CEOGAEGBAAAAAAAAAAAAK6S56JIEBYAAAABAAAAAAQEH7JOFF4AAAAAAAAAAAAAHIAAAAAAAIAAAAAQGIAFAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAICAACAAAAAAAA":"CgAAAExTS1MhAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHBvc2l0aW9uOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIGZsYXQgb3V0IGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgb3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfNV9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTsKCXsKCQl2VHJhbnNmb3JtZWRDb29yZHNfNV9TMCA9IGZsb2F0M3gyKHVtYXRyaXhfUzFfYzBfYzEpICogbG9jYWxDb29yZC54eTE7Cgl9Cn0KAAAAAAAAAB8IAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1c2NhbGVfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTQ4KSBmbG9hdDQgdWJpYXNfUzFfYzBfYzBbMl07CglsYXlvdXQob2Zmc2V0PTgwKSBoYWxmIHV0aHJlc2hvbGRfUzFfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTk2KSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MxOwoJbGF5b3V0KG9mZnNldD0xNDQpIGhhbGY0IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTE1MikgaGFsZjQgdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzA7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBmbGF0IGluIGhhbGY0IHZjb2xvcl9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwpoYWxmNCBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfMV9jb29yZHMgPSBfY29vcmRzOwoJaGFsZiB0ID0gaGFsZihfdG1wXzFfY29vcmRzLngpOwoJZmxvYXQ0IHM7CglmbG9hdDQgYjsKCWlmICh0IDwgdXRocmVzaG9sZF9TMV9jMF9jMCkgCgl7CgkJcyA9IHVzY2FsZV9TMV9jMF9jMFswXTsKCQliID0gdWJpYXNfUzFfYzBfYzBbMF07Cgl9CgllbHNlIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBbMV07CgkJYiA9IHViaWFzX1MxX2MwX2MwWzFdOwoJfQoJcmV0dXJuIGhhbGY0KGhhbGY0KGZsb2F0KHQpICogcyArIGIpKTsKfQpoYWxmNCBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF8yX2luQ29sb3IgPSBfaW5wdXQ7CglmbG9hdDIgX3RtcF8zX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc181X1MwOwoJcmV0dXJuIGhhbGY0KGhhbGY0KGhhbGYoX3RtcF8zX2Nvb3Jkcy54KSArIDFlLTA1LCAxLjAsIDAuMCwgMC4wKSk7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBMaW5lYXJMYXlvdXRfUzFfYzBfYzFfYzAoX2lucHV0KTsKfQpoYWxmNCBDbGFtcGVkR3JhZGllbnRfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgX3RtcF80X2luQ29sb3IgPSBfaW5wdXQ7CgloYWxmNCB0ID0gTWF0cml4RWZmZWN0X1MxX2MwX2MxKF90bXBfNF9pbkNvbG9yKTsKCWhhbGY0IG91dENvbG9yOwoJaWYgKCFib29sKGludCgxKSkgJiYgdC55IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IGhhbGY0KDAuMCk7Cgl9CgllbHNlIGlmICh0LnggPCAwLjApIAoJewoJCW91dENvbG9yID0gdWxlZnRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgaWYgKHQueCA+IDEuMCkgCgl7CgkJb3V0Q29sb3IgPSB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMDsKCX0KCWVsc2UgCgl7CgkJb3V0Q29sb3IgPSBEdWFsSW50ZXJ2YWxDb2xvcml6ZXJfUzFfYzBfYzAoX3RtcF80X2luQ29sb3IsIGZsb2F0MihoYWxmMih0LngsIDAuMCkpKTsKCX0KCXJldHVybiBoYWxmNChvdXRDb2xvcik7Cn0KaGFsZjQgRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMShoYWxmNCBfaW5wdXQpIAp7CglfaW5wdXQgPSBDbGFtcGVkR3JhZGllbnRfUzFfYzAoX2lucHV0KTsKCWhhbGY0IF90bXBfNV9pbkNvbG9yID0gX2lucHV0OwoJcmV0dXJuIGhhbGY0KF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBEaXNhYmxlQ292ZXJhZ2VBc0FscGhhX1MxKG91dHB1dENvbG9yX1MwKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKCQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAAAAAAAAAwAAAB0AAAAAAAAAAQAAAAkAAAAIAAAAAQAAAB0AAAAMAAAAAQAAABQAAAAAAAAAUAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAAAAAA==","CIAAAAAAQAARQAAYQAAAAGFYQAABRAAAAEEAAAAAAARAEAEABYAAAAEAAAAAAAEEBQAAAACGAAAAAAIAAAAAAAAAAAAAAAAAEAAAAAGDAEBAAAAAAAAA":"CgAAAExTS1OJAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0NCBmaWxsQm91bmRzOwpsYXlvdXQobG9jYXRpb24gPSAxKSBpbiBoYWxmNCBjb2xvcjsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gZmxvYXQ0IGxvY2F0aW9uczsKbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBEcmF3QXRsYXNQYXRoU2hhZGVyCglmbG9hdDIgdW5pdENvb3JkID0gZmxvYXQyKHNrX1ZlcnRleElEICYgMSwgc2tfVmVydGV4SUQgPj4gMSk7CglmbG9hdDIgZGV2Q29vcmQgPSBtaXgoZmlsbEJvdW5kcy54eSwgZmlsbEJvdW5kcy56dywgdW5pdENvb3JkKTsKCWZsb2F0MiBhdGxhc1RvcExlZnQgPSBmbG9hdDIoYWJzKGxvY2F0aW9ucy54KSAtIDEsIGxvY2F0aW9ucy55KTsKCWZsb2F0MiBkZXZUb3BMZWZ0ID0gbG9jYXRpb25zLnp3OwoJYm9vbCB0cmFuc3Bvc2VkID0gbG9jYXRpb25zLnggPCAwOwoJZmxvYXQyIGF0bGFzQ29vcmQgPSBkZXZDb29yZCAtIGRldlRvcExlZnQ7CglpZiAodHJhbnNwb3NlZCkgCgl7CgkJYXRsYXNDb29yZCA9IGF0bGFzQ29vcmQueXg7Cgl9CglhdGxhc0Nvb3JkICs9IGF0bGFzVG9wTGVmdDsKCXZhdGxhc0Nvb3JkX1MwID0gYXRsYXNDb29yZCAqIHVhdGxhc19hZGp1c3RfUzA7Cgl2Y29sb3JfUzAgPSBjb2xvcjsKCXNrX1Bvc2l0aW9uID0gZGV2Q29vcmQueHkwMTsKfQoAAAAAAAAAfQIAAGxheW91dChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMDsKbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDIgdWF0bGFzX2FkanVzdF9TMDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiB2YXRsYXNDb29yZF9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMSkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBTdGFnZSAwLCBEcmF3QXRsYXNQYXRoU2hhZGVyCgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpOwoJaGFsZiBhdGxhc0NvdmVyYWdlID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MwLCB2YXRsYXNDb29yZF9TMCkuMDAwci5hOwoJb3V0cHV0Q292ZXJhZ2VfUzAgKj0gYXRsYXNDb3ZlcmFnZTsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAEAAAAAAAAAAwAAAB8AAAAAAAAAAQAAAB8AAAAQAAAAAQAAAB8AAAAgAAAAAQAAADAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","AY7SRAADQAAAOAEARAFQJAABBADAAAILBYAACCYUAAAQWGUAAEECAAAAAAAAAAAAAAAOQAAAAAAAQAAAABAMQAAAABDAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1PwBAAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGluUG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGluQ29sb3I7CmxheW91dChsb2NhdGlvbiA9IDIpIGluIGZsb2F0NCBpbkNpcmNsZUVkZ2U7CmxheW91dChsb2NhdGlvbiA9IDMpIGluIGhhbGYzIGluQ2xpcFBsYW5lOwpsYXlvdXQobG9jYXRpb24gPSA0KSBpbiBoYWxmMyBpbklzZWN0UGxhbmU7CmxheW91dChsb2NhdGlvbiA9IDUpIGluIGhhbGYzIGluVW5pb25QbGFuZTsKbGF5b3V0KGxvY2F0aW9uID0gNikgaW4gZmxvYXQ0IGluUm91bmRDYXBDZW50ZXJzOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIG91dCBoYWxmMyB2aW5DbGlwUGxhbmVfUzA7CmxheW91dChsb2NhdGlvbiA9IDIpIG91dCBoYWxmMyB2aW5Jc2VjdFBsYW5lX1MwOwpsYXlvdXQobG9jYXRpb24gPSAzKSBvdXQgaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgb3V0IGZsb2F0NCB2aW5Sb3VuZENhcENlbnRlcnNfUzA7CmxheW91dChsb2NhdGlvbiA9IDUpIGZsYXQgb3V0IGZsb2F0IHZjYXBSYWRpdXNfUzA7CmxheW91dChsb2NhdGlvbiA9IDYpIG91dCBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgQ2lyY2xlR2VvbWV0cnlQcm9jZXNzb3IKCXZpbkNpcmNsZUVkZ2VfUzAgPSBpbkNpcmNsZUVkZ2U7Cgl2aW5DbGlwUGxhbmVfUzAgPSBpbkNsaXBQbGFuZTsKCXZpbklzZWN0UGxhbmVfUzAgPSBpbklzZWN0UGxhbmU7Cgl2aW5VbmlvblBsYW5lX1MwID0gaW5VbmlvblBsYW5lOwoJdmluUm91bmRDYXBDZW50ZXJzX1MwID0gaW5Sb3VuZENhcENlbnRlcnM7Cgl2Y2FwUmFkaXVzX1MwID0gKDEuMCAtIGluQ2lyY2xlRWRnZS53KSAvIDIuMDsKCXZpbkNvbG9yX1MwID0gaW5Db2xvcjsKCWZsb2F0MiBfdG1wXzBfaW5Qb3NpdGlvbiA9IGluUG9zaXRpb247CglmbG9hdDIgX3RtcF8xX2luUG9zaXRpb24gPSB1bG9jYWxNYXRyaXhfUzAueHogKiBpblBvc2l0aW9uICsgdWxvY2FsTWF0cml4X1MwLnl3OwoJc2tfUG9zaXRpb24gPSBfdG1wXzBfaW5Qb3NpdGlvbi54eTAxOwp9CgAAAABeBwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWxvY2FsTWF0cml4X1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQ0IHZpbkNpcmNsZUVkZ2VfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGYzIHZpbkNsaXBQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMikgaW4gaGFsZjMgdmluSXNlY3RQbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gMykgaW4gaGFsZjMgdmluVW5pb25QbGFuZV9TMDsKbGF5b3V0KGxvY2F0aW9uID0gNCkgaW4gZmxvYXQ0IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKbGF5b3V0KGxvY2F0aW9uID0gNSkgZmxhdCBpbiBmbG9hdCB2Y2FwUmFkaXVzX1MwOwpsYXlvdXQobG9jYXRpb24gPSA2KSBpbiBoYWxmNCB2aW5Db2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIENpcmNsZUdlb21ldHJ5UHJvY2Vzc29yCglmbG9hdDQgY2lyY2xlRWRnZTsKCWNpcmNsZUVkZ2UgPSB2aW5DaXJjbGVFZGdlX1MwOwoJaGFsZjMgY2xpcFBsYW5lOwoJY2xpcFBsYW5lID0gdmluQ2xpcFBsYW5lX1MwOwoJaGFsZjMgaXNlY3RQbGFuZTsKCWlzZWN0UGxhbmUgPSB2aW5Jc2VjdFBsYW5lX1MwOwoJaGFsZjMgdW5pb25QbGFuZTsKCXVuaW9uUGxhbmUgPSB2aW5VbmlvblBsYW5lX1MwOwoJZmxvYXQ0IHJvdW5kQ2FwQ2VudGVyczsKCXJvdW5kQ2FwQ2VudGVycyA9IHZpblJvdW5kQ2FwQ2VudGVyc19TMDsKCWhhbGY0IG91dHB1dENvbG9yX1MwOwoJb3V0cHV0Q29sb3JfUzAgPSB2aW5Db2xvcl9TMDsKCWZsb2F0IGQgPSBsZW5ndGgoY2lyY2xlRWRnZS54eSk7CgloYWxmIGRpc3RhbmNlVG9PdXRlckVkZ2UgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICgxLjAgLSBkKSk7CgloYWxmIGVkZ2VBbHBoYSA9IHNhdHVyYXRlKGRpc3RhbmNlVG9PdXRlckVkZ2UpOwoJaGFsZiBkaXN0YW5jZVRvSW5uZXJFZGdlID0gaGFsZihjaXJjbGVFZGdlLnogKiAoZCAtIGNpcmNsZUVkZ2UudykpOwoJaGFsZiBpbm5lckFscGhhID0gc2F0dXJhdGUoZGlzdGFuY2VUb0lubmVyRWRnZSk7CgllZGdlQWxwaGEgKj0gaW5uZXJBbHBoYTsKCWhhbGYgY2xpcCA9IGhhbGYoc2F0dXJhdGUoY2lyY2xlRWRnZS56ICogZG90KGNpcmNsZUVkZ2UueHksIGNsaXBQbGFuZS54eSkgKyBjbGlwUGxhbmUueikpOwoJY2xpcCAqPSBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCBpc2VjdFBsYW5lLnh5KSArIGlzZWN0UGxhbmUueikpOwoJY2xpcCA9IHNhdHVyYXRlKGNsaXAgKyBoYWxmKHNhdHVyYXRlKGNpcmNsZUVkZ2UueiAqIGRvdChjaXJjbGVFZGdlLnh5LCB1bmlvblBsYW5lLnh5KSArIHVuaW9uUGxhbmUueikpKTsKCWVkZ2VBbHBoYSAqPSBjbGlwOwoJaGFsZiBkY2FwMSA9IGhhbGYoY2lyY2xlRWRnZS56ICogKHZjYXBSYWRpdXNfUzAgLSBsZW5ndGgoY2lyY2xlRWRnZS54eSAtIHJvdW5kQ2FwQ2VudGVycy54eSkpKTsKCWhhbGYgZGNhcDIgPSBoYWxmKGNpcmNsZUVkZ2UueiAqICh2Y2FwUmFkaXVzX1MwIC0gbGVuZ3RoKGNpcmNsZUVkZ2UueHkgLSByb3VuZENhcENlbnRlcnMuencpKSk7CgloYWxmIGNhcEFscGhhID0gKDEgLSBjbGlwKSAqIChtYXgoZGNhcDEsIDApICsgbWF4KGRjYXAyLCAwKSk7CgllZGdlQWxwaGEgPSBtaW4oZWRnZUFscGhhICsgY2FwQWxwaGEsIDEuMCk7CgloYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KGVkZ2VBbHBoYSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAABAAAAAAAAAAcAAAAdAAAAAAAAAAEAAAAJAAAACAAAAAEAAAAfAAAADAAAAAEAAAAeAAAAHAAAAAEAAAAeAAAAKAAAAAEAAAAeAAAANAAAAAEAAAAfAAAAQAAAAAEAAABQAAAAAAAAAEYAAAABAAAAAQAAAAUAAAAAAAAAAQAAAAUAAAAAAAAAAQAAAAAAAAA=","HUQACAAAAAMAADAAAIOAAAH677776IZOCAAP577777777777777777YBAAAAAAAAAAAKAAYAAAACAAAAAAACCAYAABIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAADBQCAAAAAAAAAA":"CgAAAExTS1NOAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGFsZjQgdmNvbG9yX1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwp9CgAAAAAAAH0BAABsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGhhbGY0IHZjb2xvcl9TMDsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzA7CglvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0Q29sb3JfUzAgKiBvdXRwdXRDb3ZlcmFnZV9TMDsKCX0KfQoAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAQAAAAAAAAACAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAADAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAEMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1ObAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABGAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HVIAAAAAABIAAGAAAQ4AAAH477776R24EAAAIOBQAD6P7777777777YDAAAAAAAAAAAFIBRYSAOPICIAAAACR4GP5AAAAAAAIAAAAACAWTWL3EYAAAADAAAAADAIRYYAQYEAAAAA7UXCS6AAAAAAAAAAAIAAAABSULAD7IYDAAAAAAABAAAABUNS65HAEAAAYAAAAAAAEOHAGGBCAAAAB5F3UTQACAAAAACAAAAAMQEAIAAAABCMXXR3BEAAAAADAAAABDBYBZQIQAAAADIO7EUCA4AAAAAQAAAAAIBDCAWXX3ZEAAAAADAAAAADBYRYQAQQEAAAIC7UWCQ6AAAABAAAAAAIADA2OEOMAEABAAAAAAAAABQEL6S5KLYAAAAAAABAAAAAMSUN6JIFB4AAAAAAAAAAAYAFAEAAEAAAABUARCAIAAAAAAAAAAAEABYAAAAEAAAAAAAEEBQAAAAFAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAMGAICAAAAAAAA":"CgAAAExTS1ObAwAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD00OCkgZmxvYXQ0IHViaWFzX1MxX2MwX2MwX2MwX2MwWzJdOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZiB1dGhyZXNob2xkX1MxX2MwX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD05NikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMF9jMF9jMTsKCWxheW91dChvZmZzZXQ9MTQ0KSBoYWxmNCB1bGVmdEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNTIpIGhhbGY0IHVyaWdodEJvcmRlckNvbG9yX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0xNjApIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzE7CglsYXlvdXQob2Zmc2V0PTIwOCkgaGFsZiB1cmFuZ2VfUzE7Cn0KOwpsYXlvdXQobG9jYXRpb24gPSAwKSBpbiBmbG9hdDIgcG9zaXRpb247CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGhhbGY0IGNvbG9yOwpsYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdDIgbG9jYWxDb29yZDsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBvdXQgaGFsZjQgdmNvbG9yX1MwOwpsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc183X1MwOwp2b2lkIG1haW4oKSAKewoJLy8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKCXZjb2xvcl9TMCA9IGNvbG9yOwoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc183X1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMV9jMF9jMF9jMF9jMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAAoMAABsYXlvdXQobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CmxheW91dCAobWV0YWwsIGJpbmRpbmc9MCkgdW5pZm9ybSB1bmlmb3JtQnVmZmVyCnsKCWxheW91dChvZmZzZXQ9MCkgZmxvYXQ0IHNrX1JUQWRqdXN0OwoJbGF5b3V0KG9mZnNldD0xNikgZmxvYXQ0IHVzY2FsZV9TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9NDgpIGZsb2F0NCB1Ymlhc19TMV9jMF9jMF9jMF9jMFsyXTsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYgdXRocmVzaG9sZF9TMV9jMF9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9OTYpIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzBfYzBfYzE7CglsYXlvdXQob2Zmc2V0PTE0NCkgaGFsZjQgdWxlZnRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTUyKSBoYWxmNCB1cmlnaHRCb3JkZXJDb2xvcl9TMV9jMF9jMF9jMDsKCWxheW91dChvZmZzZXQ9MTYwKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MxOwoJbGF5b3V0KG9mZnNldD0yMDgpIGhhbGYgdXJhbmdlX1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgZmxhdCBpbiBoYWxmNCB2Y29sb3JfUzA7CmxheW91dChsb2NhdGlvbiA9IDEpIGluIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKaGFsZjQgRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CgloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKCWZsb2F0MiBfdG1wXzFfY29vcmRzID0gX2Nvb3JkczsKCWhhbGYgdCA9IGhhbGYoX3RtcF8xX2Nvb3Jkcy54KTsKCWZsb2F0NCBzOwoJZmxvYXQ0IGI7CglpZiAodCA8IHV0aHJlc2hvbGRfUzFfYzBfYzBfYzBfYzApIAoJewoJCXMgPSB1c2NhbGVfUzFfYzBfYzBfYzBfYzBbMF07CgkJYiA9IHViaWFzX1MxX2MwX2MwX2MwX2MwWzBdOwoJfQoJZWxzZSAKCXsKCQlzID0gdXNjYWxlX1MxX2MwX2MwX2MwX2MwWzFdOwoJCWIgPSB1Ymlhc19TMV9jMF9jMF9jMF9jMFsxXTsKCX0KCXJldHVybiBoYWxmNChoYWxmNChmbG9hdCh0KSAqIHMgKyBiKSk7Cn0KaGFsZjQgTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfMl9pbkNvbG9yID0gX2lucHV0OwoJZmxvYXQyIF90bXBfM19jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfN19TMDsKCXJldHVybiBoYWxmNChoYWxmNChoYWxmKF90bXBfM19jb29yZHMueCkgKyAxZS0wNSwgMS4wLCAwLjAsIDAuMCkpOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gTGluZWFyTGF5b3V0X1MxX2MwX2MwX2MwX2MxX2MwKF9pbnB1dCk7Cn0KaGFsZjQgQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCkgCnsKCWhhbGY0IF90bXBfNF9pbkNvbG9yID0gX2lucHV0OwoJaGFsZjQgdCA9IE1hdHJpeEVmZmVjdF9TMV9jMF9jMF9jMF9jMShfdG1wXzRfaW5Db2xvcik7CgloYWxmNCBvdXRDb2xvcjsKCWlmICghYm9vbChpbnQoMSkpICYmIHQueSA8IDAuMCkgCgl7CgkJb3V0Q29sb3IgPSBoYWxmNCgwLjApOwoJfQoJZWxzZSBpZiAodC54IDwgMC4wKSAKCXsKCQlvdXRDb2xvciA9IHVsZWZ0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIGlmICh0LnggPiAxLjApIAoJewoJCW91dENvbG9yID0gdXJpZ2h0Qm9yZGVyQ29sb3JfUzFfYzBfYzBfYzA7Cgl9CgllbHNlIAoJewoJCW91dENvbG9yID0gRHVhbEludGVydmFsQ29sb3JpemVyX1MxX2MwX2MwX2MwX2MwKF90bXBfNF9pbkNvbG9yLCBmbG9hdDIoaGFsZjIodC54LCAwLjApKSk7Cgl9CglyZXR1cm4gaGFsZjQob3V0Q29sb3IpOwp9CmhhbGY0IGNvbG9yX3hmb3JtX1MxX2MwX2MwKGhhbGY0IGNvbG9yKSAKewoJY29sb3IucmdiICo9IGNvbG9yLmE7CglyZXR1cm4gaGFsZjQoY29sb3IpOwp9CmhhbGY0IENvbG9yU3BhY2VYZm9ybV9TMV9jMF9jMChoYWxmNCBfaW5wdXQpIAp7CglyZXR1cm4gY29sb3JfeGZvcm1fUzFfYzBfYzAoQ2xhbXBlZEdyYWRpZW50X1MxX2MwX2MwX2MwKF9pbnB1dCkpOwp9CmhhbGY0IERpc2FibGVDb3ZlcmFnZUFzQWxwaGFfUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJX2lucHV0ID0gQ29sb3JTcGFjZVhmb3JtX1MxX2MwX2MwKF9pbnB1dCk7CgloYWxmNCBfdG1wXzVfaW5Db2xvciA9IF9pbnB1dDsKCXJldHVybiBoYWxmNChfaW5wdXQpOwp9CmhhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgCnsKCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpLjAwMHI7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MxKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMV9jMChfaW5wdXQsIGZsb2F0M3gyKHVtYXRyaXhfUzFfYzEpICogX2Nvb3Jkcy54eTEpOwp9CmhhbGY0IERpdGhlcl9TMShoYWxmNCBfaW5wdXQpIAp7CgloYWxmNCBfdG1wXzZfaW5Db2xvciA9IF9pbnB1dDsKCWhhbGY0IGNvbG9yID0gRGlzYWJsZUNvdmVyYWdlQXNBbHBoYV9TMV9jMChfdG1wXzZfaW5Db2xvcik7CgloYWxmIHZhbHVlID0gTWF0cml4RWZmZWN0X1MxX2MxKF90bXBfNl9pbkNvbG9yLCBza19GcmFnQ29vcmQueHkpLncgLSAwLjU7CglyZXR1cm4gaGFsZjQoaGFsZjQoY2xhbXAoY29sb3IueHl6ICsgdmFsdWUgKiB1cmFuZ2VfUzEsIDAuMCwgY29sb3IudyksIGNvbG9yLncpKTsKfQp2b2lkIG1haW4oKSAKewoJLy8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCgloYWxmNCBvdXRwdXRDb2xvcl9TMDsKCW91dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCWhhbGY0IG91dHB1dF9TMTsKCW91dHB1dF9TMSA9IERpdGhlcl9TMShvdXRwdXRDb2xvcl9TMCk7Cgl7CgkJLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCgkJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7Cgl9Cn0KAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAQAAAAAAAAADAAAAHQAAAAAAAAABAAAACQAAAAgAAAABAAAAHQAAAAwAAAABAAAAFAAAAAAAAABQAAAAAQAAAAEAAAAFAAAAAAAAAAEAAAAFAAAAAAAAAAEAAAAAAAAA","HUIAAAAAAAQAADAAAIOAAAH677777777777QGHAQAD7P7777777777YBAAAAAAAAAAALUAQMAAAAAAIAAEAAAABJYQAAAAAQAAIAAAAAWCBACAABAAAAANAECAZAAEAAAAAAAAFAAMAAAABAAAAAAABBANIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAA":"CgAAAExTS1N+AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwOwoJbGF5b3V0KG9mZnNldD0zMikgZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDsKCWxheW91dChvZmZzZXQ9ODApIGhhbGYyIHVJbmNyZW1lbnRfUzFfYzA7CglsYXlvdXQob2Zmc2V0PTg0KSBoYWxmMiB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxM107CglsYXlvdXQob2Zmc2V0PTE0NCkgZmxvYXQzeDMgdW1hdHJpeF9TMTsKfQo7CmxheW91dChsb2NhdGlvbiA9IDApIGluIGZsb2F0MiBwb3NpdGlvbjsKbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQyIGxvY2FsQ29vcmQ7CmxheW91dChsb2NhdGlvbiA9IDApIG91dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJc2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxOwoJewoJCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gZmxvYXQzeDIodW1hdHJpeF9TMSkgKiBsb2NhbENvb3JkLnh5MTsKCX0KfQoAAAAAAADxBgAAbGF5b3V0KG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwpsYXlvdXQgKG1ldGFsLCBiaW5kaW5nPTApIHVuaWZvcm0gdW5pZm9ybUJ1ZmZlcgp7CglsYXlvdXQob2Zmc2V0PTApIGZsb2F0NCBza19SVEFkanVzdDsKCWxheW91dChvZmZzZXQ9MTYpIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7CglsYXlvdXQob2Zmc2V0PTMyKSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwOwoJbGF5b3V0KG9mZnNldD04MCkgaGFsZjIgdUluY3JlbWVudF9TMV9jMDsKCWxheW91dChvZmZzZXQ9ODQpIGhhbGYyIHVPZmZzZXRzQW5kS2VybmVsX1MxX2MwWzEzXTsKCWxheW91dChvZmZzZXQ9MTQ0KSBmbG9hdDN4MyB1bWF0cml4X1MxOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwpoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIAp7CglmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7CglmbG9hdDIgc3Vic2V0Q29vcmQ7CglzdWJzZXRDb29yZC54ID0gaW5Db29yZC54OwoJc3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTsKCWZsb2F0MiBjbGFtcGVkQ29vcmQ7CgljbGFtcGVkQ29vcmQueCA9IGNsYW1wKHN1YnNldENvb3JkLngsIHVjbGFtcF9TMV9jMF9jMF9jMC54LCB1Y2xhbXBfUzFfYzBfYzBfYzAueik7CgljbGFtcGVkQ29vcmQueSA9IHN1YnNldENvb3JkLnk7CgloYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7CglyZXR1cm4gdGV4dHVyZUNvbG9yOwp9CmhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSAKewoJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCBmbG9hdDN4Mih1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKTsKfQpoYWxmNCBTbW9vdGhfUzFfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgY29vcmQsIGhhbGYyIG9mZnNldEFuZEtlcm5lbCkgCnsKCXJldHVybiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX2lucHV0LCAoY29vcmQgKyBvZmZzZXRBbmRLZXJuZWwueCAqIHVJbmNyZW1lbnRfUzFfYzApKSAqIG9mZnNldEFuZEtlcm5lbC55Owp9CmhhbGY0IEdhdXNzaWFuQ29udm9sdXRpb25fUzFfYzAoaGFsZjQgX2lucHV0KSAKewoJaGFsZjQgY29sb3IgPSBoYWxmNCgwKTsKCWZsb2F0MiBjb29yZCA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwoJZm9yIChpbnQgaT0wOyBpPDEzOyArK2kpIAoJewoJCWNvbG9yICs9IFNtb290aF9TMV9jMChfaW5wdXQsIGNvb3JkLCB1T2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXSk7Cgl9CglyZXR1cm4gY29sb3I7Cn0KaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgCnsKCXJldHVybiBHYXVzc2lhbkNvbnZvbHV0aW9uX1MxX2MwKF9pbnB1dCk7Cn0Kdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgoJaGFsZjQgb3V0cHV0Q29sb3JfUzAgPSBoYWxmNCgxKTsKCWNvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7CgloYWxmNCBvdXRwdXRfUzE7CglvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApOwoJewoJCS8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgoJCXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwOwoJfQp9CgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAABAAAAAAAAAAIAAAAdAAAAAAAAAAEAAAAdAAAACAAAAAEAAAAQAAAAAAAAAFAAAAAAAAAAAQAAAAAAAAA=","I4EAAAIAAEHAAAAAAAAAAAAAAAAIQAAAAAAIBEABAAAAACQAAAAAIAAAAD6QAAAAAEAAAAAAAAAAAAQAAAAAAAAAAA":"CgAAAExTS1M2AgAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKbGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gZmxvYXQyIGlucHV0UG9pbnQ7CnZvaWQgbWFpbigpIAp7CgkvLyBQcmltaXRpdmUgUHJvY2Vzc29yIHRlc3NlbGxhdGVfU2ltcGxlVHJpYW5nbGVTaGFkZXIKCWZsb2F0MngyIEFGRklORV9NQVRSSVggPSBmbG9hdDJ4Mih1YWZmaW5lTWF0cml4X1MwLnh5LCB1YWZmaW5lTWF0cml4X1MwLnp3KTsKCWZsb2F0MiBUUkFOU0xBVEUgPSB1dHJhbnNsYXRlX1MwOwoJZmxvYXQyIGxvY2FsY29vcmQgPSBpbnB1dFBvaW50OwoJZmxvYXQyIHZlcnRleHBvcyA9IEFGRklORV9NQVRSSVggKiBsb2NhbGNvb3JkICsgVFJBTlNMQVRFOwoJc2tfUG9zaXRpb24gPSB2ZXJ0ZXhwb3MueHkwMTsKfQoAAAAAAACKAQAAbGF5b3V0IChtZXRhbCwgYmluZGluZz0wKSB1bmlmb3JtIHVuaWZvcm1CdWZmZXIKewoJbGF5b3V0KG9mZnNldD0wKSBmbG9hdDQgc2tfUlRBZGp1c3Q7CglsYXlvdXQob2Zmc2V0PTE2KSBmbG9hdDQgdWFmZmluZU1hdHJpeF9TMDsKCWxheW91dChvZmZzZXQ9MzIpIGZsb2F0MiB1dHJhbnNsYXRlX1MwOwoJbGF5b3V0KG9mZnNldD00MCkgaGFsZjQgdWNvbG9yX1MwOwp9CjsKdm9pZCBtYWluKCkgCnsKCS8vIFN0YWdlIDAsIHRlc3NlbGxhdGVfU2ltcGxlVHJpYW5nbGVTaGFkZXIKCWhhbGY0IG91dHB1dENvbG9yX1MwID0gdWNvbG9yX1MwOwoJY29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTsKCXsKCQkvLyBYZmVyIFByb2Nlc3NvcjogRGlzYWJsZSBDb2xvcgoJfQp9CgAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAEAAAAAAAAAAQAAAB0AAAAAAAAAAQAAAAgAAAAAAAAACgAAAAAAAAAAAAAA/QAAAA=="}} \ No newline at end of file From 4605001fbe2fb20b8315fba64a21e7f748205ea6 Mon Sep 17 00:00:00 2001 From: Mark Music Date: Sun, 27 Aug 2023 13:55:58 -0600 Subject: [PATCH 2/2] =?UTF-8?q?ft=20=3D>=20=F0=9F=A7=AA=20Make=20major=20u?= =?UTF-8?q?pdates=20to=20widget,=20implement=20deletion=20function,=20chan?= =?UTF-8?q?ge=20to=20org=20account,=20shorten=20SMS=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/services/server/erase.service.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/services/server/erase.service.dart b/lib/services/server/erase.service.dart index 98a0ee75..68a992c1 100644 --- a/lib/services/server/erase.service.dart +++ b/lib/services/server/erase.service.dart @@ -16,7 +16,7 @@ class EraseServer { List contacts = core.state.contact.contacts ?? []; for (Contact c in contacts) { - await core.services.server.contacts.delete(c.id); + await core.services.server.contacts.delete(c.id); } // Erase user