ELFp44 (444  TTTXX\\N\Nt$TоNNhhhDDPtd::QtdRtd\\N\N/lib/ld-linux.so.2GNUGNUQ"` b~F? <"%-!  ()'&",* #$ %+#2̆pp#)+֟]۲tC,IT5׆]Ka*7V7  {\lt-ne_sAUZ@`QQD`KePP0` libdb-4.8.so__gmon_start___Jv_RegisterClasseslibpthread.so.0libc.so.6_IO_stdin_usedexitfopenoptindstrrchrperrorreallocstdinstrtolfgetscallocstrlenmemsetgetopt__fprintf_chkstdoutmemcpystrtoulmallocstrcat__ctype_b_locoptargstderr__snprintf_chkstrncatstrchr__vfprintf_chk__ctype_toupper_loc__ctype_tolower_locstrcmp__libc_start_mainfree__stack_chk_faildata_setmaxbinszsqlite3UpperToLowerline_numberdebugthe_parse_progresssqlite3IsAsciiIdCharthe_schemaprognameGLIBC_2.4GLIBC_2.1GLIBC_2.3GLIBC_2.0GLIBC_2.3.4Aii ii ii  ii ti  O+O#OO$O%OOO&O'OO(O,OOO*OO PPP PPPPP P $P (P ,P 0P4P8Pt$H:[]Ë$~7[]Ë$>9΍t&$7뾍t&$;뮍t&B$ 9띍t&'U4$Ɖ|$1xz5.4$|$]Ðt&U(]uƉ},} Ac~Eɋ~xt&y󍃔:D$<$zG~]u}]Ðt& Q UQT0WT0WT0Ɛ&UVuu  y4$U ^]Í&UWVSuM`EUVEԋEU؍;UFE EfU>=L~?=~EUFM t8[^_]Ðt&UԉT$U $‰n[^_]Ív~x&y~릍V-P}>d M =5UUUEkDEUAED$D$T$ d$xkxEAĉED$D$ @D$@D$d$5xEE/D$$D$ D$D$D$D$D$ UD$T$d$T4UB8E$S6xyI.Ek|>-.UT$}W$T$x5>xEUC5ES5U)lj>}kT: USL8USL+L@}>)Ǎ}xUPUP UĉP'&U~xy~} [Lt&Eԋ~EȋE؉E̋E܉EЍEȉD$:D$<$2vG~FF FED$E$|gk<>GD$$GD$ |D$AD$AD$ẢD$AD$ AD$AD$d<$x[2xE>SkD>D$ AD$ẢD$d<$xN0>xkD>D$d$x0>xD$d$x/>xkD>D$d<$xM6>xkD>D$d$x6>xlkD>D$ẢD$d$x5>x9kD>D$AD$d<$x[5>xD$D$d$x*5>xkD>D$AD$d$x71>xD$D$d<$x1>xqkD>D$d$x3>xEkD>D$ AD$ẢD$d$x@4>x AkD$D>D$d<$x2>xEEAD$D$ D$D$0d$x0xE*QkP(D>D$AD$E$x;1>xFD$D$ D$D$0d$x 0xEp*k@(D>D$ẢD$E$x0>xkD>D$d$x-xE>kD>D$AD$d$x-xE>aAkD$D>D$ D$AD$AD$d$xK-xE>|D$D$AD$ AD$AD$d$x,xE>AkD$D>D$ AD$ẢD$d$xX,xE>EtA؉EP҉U(AR(E@B$UR\UB\B(UBE(kDEE kEdDEkDEEE)EEQUtUhkAT$$@T$ |>|$y|$x |$@D$AD$ AD$|D$d<$x30Ex@ )%}GW EU>QċBkED>D>+B<E EED$AD$d<$x->xkD$D>D$ AD$ẢD$d$xl,>xkD$D>D$ AD$ẢD$d$x*,>xEkD$D>D$ AD$ẢD$d<$x+>xd$xw)>xkD$D$ D>D$AD$d$x+>xAD$ ẢD$AD$D$d<$xF+>xaAkD$D>D$d$xc->x.EeA1tgD$D$ D$D$d$x*xAT$D$d$t+xtAD$ T$D$d$xaUET$D$d$XExV#k@ Ek D>}D:>7A1tgD$D$ D$D$d$x)xAT$D$d$t*xtAD$ T$AD$d$x`UET$D$d$WEx#k@ Ek D>}D:>QEED$ AkD$AD$d$x``ED$ |>D$|$d$;`xE>D$AD$ AD$D$d$x(xE "QPE$)xkD>D$AD$E$xN)>xYD$D$ D$D$d$x(x‰E!AkB8D>D$ẢD$$(E$(>xQUD$D$ BD$@D$d$x'xEx!QP8E$(xy!UkD>D$}G$D$x.(>x9AED$D$ @D$@D$d$x&xEQPE$'xy,UkD>D$}G$D$x'>xD$ AD$D$d$x]D$ kDT$D$d$]xQUED$D$ BD$?D$d$&xE UPyEkT>T$}W$T$x&>x|kETUAEAD$ D$D$d$x [‹ED$ D$$D>D$x@D$}|$ET$ D$AD$AD$d$V>xD$ AkD$D$d$x\ED$ |>D$|$d$[xE>D$D$ D$D$nd$xe$xEQP8E$S%xkD>D$AD$E$x %>xE kD$D$ <>GD$VD$d$x#EWT$x$QT$$>xkD$D$ <>GD$UD$d$x`#EWT$x$QT$.$>x9kD$D$ <>GD$AD$d$x"EWT$x$QT$#>xd$x >xkD>D$d$x>xD$d<$xP>x\D$d$xXP>x3D$d$x/P>x d<$x~P>xEEAkD$D$D$AD$ D>D$AD$d$xT>xd<$x >x_d$x$>x>kDE/E#AD$d$x$>xAkD$D>D$ AD$D$d$xN>xkD>D$d<$xb$>xkD$ D$D$XD>D$d$xN D$d$,$>x7kD$D$ D>D$UD$d$xD$d<$#>xAD$d$x#>xkD>D$d<$x#>xAE@EkE‹DDU+BE ЉEVAE@EkE‹DDU+BE ЉEAĉE@EkE‹DDU+BE ЉEkTDUEkD>D$d$x+W>xkTDUEkD>D$d$x9ND>T>xEU>VQ؉UBdEplU+BE ЉEk<>GD$D$D$ d$xTLG$>xkD$ D>D$AD$d$xL>xEkkE@/QPUBQP kD>E>UkDEFkEEE<>EEED$D$D$D$ D$GD$d$xG$>xAkD$D$ D>D$d$x>xAkD$AD$D>D$AD$ ẢD$|D$d$x>xD$d<$x>xEEEcAkD$AD$ ẢD$AD$d$xPD>D$d$I>xAD$d<$x>x_kD$$D$ D$D$D>D$AD$ D$D$D$d$x L>xD$kAD$ D>D$ẢD$d$xH>xAQEUeEkDEEvE jE^ERkDEE9kDEE kDEE EEkB#A BEEkD>D$d<$x>xkD>D$d$xG>x|kD>D$AD$D$ AD$d$xON>x:AD$d<$xG>xkD$$D$ D$D$D>D$D$ D$D$D$d$xI>xAĉEkD$D$ @D$BD$d$xbED>D$}G$D$0>x;A؉EkD$D$ @D$BD$d$xED>D$}G$D$>xA؉EkD$D$ @D$AD$d$xED>D$}G$D$Z>xeAkED$D$ @<>D$GD$d$xE|$}W$T$>xAEkD$ @D$D$d$xNxQĉUD$ RD$T$d$M|>xt$D$ |$D$d$Mxy؉}y|$D$d$xUxEz}WT$}W$T$xExfH>kTDEUEkTDEUEkD$D>D$ AD$AD$d$xpxE>hkD$D>D$d$xxE D>T>}GW >ẢEkD$D$d$xdED>D$}$|$>xAE@t 8d QUkT$UBD$d$xED>D$}$|$Kxy0 >LAD$kD$ AD$D$d$xED>D$x$AD$>xkD$ D$D$D>D$d<$xE<$D$j>xkD>D$d$xxE>fkD>D$AD$d$xhxE>0AD$kD$ D$D$d$xxEAD$D$ D$D$d$D$ D$D$D>D$d<$tD$D$ t<$D$pT$`D$D$ E<$D$pD$=xE>5AD$kD$ D$D$d$xD$ D$D$D>D$d<$tD$D$ t<$D$pT$xE>kD$ D$D$D>D$d$xTxE>LkD$ D$<>GD$GD$d$x xE>kQD>UD$AD$$x>xkD$D>D$d$x@xE>kD>D$AD$d$xxE>`kD$ D>D$D$d$xyGxE>!kD$ D>D$AD$d<$x;GxE>AD$AD$ D$D$ẢD$d$x>xAkD$AD$D>D$D$ AD$d$x>xT|D$AD$ D$AD$AD$d<$xq>x kAD$ D>D$D$d$x&FxE>kAD$ D>D$AD$d$xExE>AE:D$UkBD$d$x<xAD$D>D$ UBD$ẢD$d<$ >xkD>D$AD$d$x>xAEkDEAEkDEkDEEEEEED$ AD$D$d$xDxEO@ kT>P>)D$ AD$ẢD$d$xGDxEk@ Ek D>}D:>kDEEkD$D>D$ AD$d$x8BxE>pEe`k<>G$x D$$D$ D$D$D$D$D$ GD$D$d<$ xE>kD>D$AD$AD$ D$D$AD$AD$d$xa xE>kD>D$AD$D$AD$ẢD$ AD$AD$d$x xE>/E#Q҉Uf k,kED>}D:>kD>E$xZ >xD$0d$xLxE>eD$D$ D$D$kd$xR xD$ D$D$ǍAD$d$ D$|$ D$pD$d<$ D$ D$xẢ<$D$&AxE>D$D$ D$D$kd$x D$ D$xAD$d<$@xE>ck1D>tD>D$ AD$AD$d$xr@xE>EAEkDEAD$ AD$ẢD$d$xxE>AD$AD$ D$d$xxE>AD$ D$D$d<$x~xE>FAE;E/E#EfH> }GW EU>>>AD$:D$dQ$txIxt>D$D$ ED$D$d$xgx‰EA$xxk>}}D$D$ ED$D$d$xxEyE$xHxPA$xxA$x>x[D$D$ ED$D$d$x x‰EA$xxD$D$ ED$D$d$xxE>A$xxS>>QEUzx>#E$xxe>Q>JA$xQxUH]Muu}} ~r$tF]u}]Ív t$lp|$ $D$T$ +ED$:D$4$FF똃!t$lpM $D$T$ ǃ D$ Mt$lp|$ $D$T$ .hEǃ t$$.3ǃ ǃ ǃ USØt"T$|$T$E[]Í|T$ D$D$$[]Í{/1Uɍ:q[1Uɍ:Q;UEɍ;0ρUEɍ;UEɍ';UEɍ3;oUEɍA;OUEɍH;U1S)O;q1[]É'U1Sa;A1[]É'U1Sɀs;1[]É'U1SÙ;1[]É'o1Uɍ;O1Uɍ;US+E;p1[]Ð&U1҉EP1Í+1Uɍ;!USûE;1[]Ð&UEɍ;oUEɍ;US8KE<1[]Ð&kUEɍ <`US~E<@1[]Ð&US~E;1[]Ð&~UEɍ<~1Uɍ!uBx*fM4 4ʚ;M-=lu40MD$T$UL$ ,T$ $-H?uH1f,D$ $pHeLcu t U _$G [^_]Í&=f0E,D$T$UD$ $T$ 0U}1D$D$ET$ ,D$$f~ |,VF1҉$Q~ (|uC~ (:$|:w$>_y⍶t&~-Of$F$DA~Dž1ɋ$fDGu.ω|Ee&|tV҄xށ3f>DBui&Jt&tt&W\t&Dt&F=#><DG~=D&F=>Et&Rt&P|t&Ndt&賯f>DBu0~'~8'v_~ '&Dyu<uׁv>]ut&~|Kjf軮$裮f>DB u ~=fF҅/t&>t#9uD9>uf~*QzfCdt&U=44 =|E$CE44fu4uVt&M t/U $,ED$=D$$w M `$01D$D$L$4Lg~t1vL$Dyu2-t +|$Dy$TDAt3 $t&QDFu싵}t&}DžH4$DHt7<>ƍWDFu싵}H&F&pt&F| tw t&t >ut&Ff>tʃ*u>$׃$wt{yDp t)$tR)uƍvXu:׸1$뙃~Uuu]0nF;t$菩F]u]ÍU1uu]۴mVtF~tHF;t]u]Í&F$販Ft+N$L$T$CvF]u]ÍvF1UXuu]}}GZm~u ~tt&]u}]ÍvtFV 9щE~MOUȋUMMUЉEMԋN9UԉMĉMUUĉE}ЉMԉV EUԋU9UMĉ $蓨NFỦ$L$D$ 4$ ŰFVt&z)DžFV‹E |$$D$ߧ~&E $Dž9MАt&)EЉEĉF Ev}4$Ft&M9Mt&؍F4$\W&UWVS,oÂk~*FEfED$4$D$~F|$D$4$,[^_]Í&UWVS,u,E eU1jH FDžLDžd f%tTF~%)V  fP <%u鋍,D$t$ $dGOƅ0ƅ;ƅ<ƅ'ƅ(ƅCt&P\*x HT HTD t&.K* HPЃ Dž\Pw(14BPЃ v쉵\HPlƅHƅl t& 1Y>9uꋽ RG4u @,4\6@`~4Bu Dž\6`PDž`H&Cu'D+L~, L~.Ld, D$T$4$ Ct'D+L~, n `t` <$R Aq%t&Ee3?,[^_]Ðt&lE␍t&ƅ0rHDžDDž\PƅHƅ&ƅ'믍&ƅC럍&ƅ(돍&ƅ<|t&ƅ;lt&`EƅHƅ4GHf PP2zHu (ƅ;+ t&  <0t"1D;)9\}\`E㉅Ld4BF`B0PTPT4$|$D$T$ d1y`dPT4$|$D$T$ wƉ udL\0))ׅ~)&90u)։d;td;d<tF4Ft8dF8t!tvudvL+dDž`L'PP7k,Dt 8 k,H,D$D$D$ DžDDžLDž`PPH  @,T$D$4$닀`PHH:D"H1Lt` QEtJE11t8H\dd1f9ƒu닍\L` LDž`!LLDP=^d L1Dž\tHdDž\ DžL1\ &<t9L8P,PDžDVHDžLDž`PP\H\{Dž\*ƅd-`҉t <\\ \كF݃ Gu؀`$۽ ݝ" ۭ݅؍L`t PL+CLu 0'Dž`dPP2HDžDDžLDž` $P `tdHPP\HDžLDž`d@d <$蔓 LD$, D$$D$D$,$ ,:ED$D$4$o݃ G^كG۞s؉<\9 }=< ;\ƅP<<1"4$VUe3u Đ[^][gt&'US+RE D$E$,[]ÍUuu]U טQMeE1}ʚ;t~P|llp$L$DžtDžx^ƅƅƅI<$at uUe3u]u}]ÍvFMf'USED$E QD$E$[]ÐU]Ít&'PU勁@P P]ÐU]Ít&'U]Ít&'PU勁]Ít&U]Ít&'U8]CVPuƉ}tX@tQUD$$UtJF<$D$T$軋<$]u}]Ít&,G1D$$fKD$$U(]蓖æOu}} tXGD$<$E tF F]u}]Ív'UWVS)O,UE t_@pEuV6tJF<$D$;uU|$ MB $D$GD$<$$,[^_]Ít&D$$脉t.MxBQ t UB 붉A A뮍KD$E$u돍vUWVS$7Npu v6tF<$D$cu[^_]Ðt&UWVStRt GuSDfT$@t$D$ 4ID$E$~4$辆,[^_]ÍUt$D$ Ǎ ID$M $?4$t<$s,[^_]Ívzu q?tjG4$D$+ uGD$t$D$ tID$M $ HHD$U$ ,[^_]ÍvD$ $TtNpPKPBQtBAAKD$E$% U(]ӐIuu ]u]ÍvUEUtE@ @t$D$E @ @D$@@D$D$ ID$$4$τ]u]Í'UWVS,u 3IUFf9k, ȃE}1Mҹ BD$$U轃U܅B<$D$T$YE@fx@@,[^_]ÍvfFk,4$0D$U1U܅tj:,JD$1D$$܂,[^_]fD$0$UU܅tf@t&K랍KD$D$$v4'U8uu ]M芎ÝG}F;~Qt|<@~ GGUGE]u}]Ã<D$F M$MtcɉF ~u}y뵍t&MD$$сMDKD$E$ sf.iK1D$E$ MUWVSfyFLUE EbM܋B@ $Ep4$9EUE܉t$$D$ȁMMt4U蓁uUȉf0D~ u uuuߋEUD$($螀xD$)<$耀D$,<$etD$ D$<$豀Etb>tYD$,4$M܍JL$uD$4$=1UEȉ$uEȋM؉AL[^_]Ít&EEt#UMUuUKUԍK9Eu!MA:KuA:Bt&uKKűu}uKu KKK9EMA:KA:BA:Bu1fED$$~_U܉pMuԉx HpE܉D$JUD$$1bt&Uu$KU;ha};MuMLE]f}> ^_]Ív'UWVSUu }Ð>t\t&t3<E:EtE[^)lj_]Ðt&>E֋8UUWVS EM ݄=UMp~j:ta :uLEE-v:t_E 9: uF~EŋMM1xM싳)Ѓ [^_]Ë}}ыEEɐ&UEUEɞ  US<E D$$w[]Ðt&Uuu]譃<F<F$xED$E D$$FFuF]u]Ít&UWVESƃ,EE CV<t$xNjFuU$w<$'xNjE8tGu Mt7&4$Mwt$<$D$EwMU܃qׅu,[^_]ÐUS$E袂õ;Pt$[]ËPT$@D$D$ lQD$$&v$wfUSH[;D$D$E$q(U T$ D$D$$v[]Ív'US:D$D$E$(U T$ D$D$$8v[]Ív'U1VS腁Ø:tD$ED$$'D$ƍE D$ t$$u4$v| [^]ÐU8U]E :uu҉}}tN@D$GD$$:t]u}]Ð+]Eu}] $EEf۾9U1EUuu]M`9FD$5$FD$D$B$]u]Í&USE9@D$^$F[]É'USE8@D$D$Q$[]ÍUSErÅ8@D$y$[]USEBU8@D$y$[]U1VS(8tD$ED$$4%D$ƍE D$ t$$Ys4$s| [^]ÐUuu]~à7FD$D$$M;tFD$,R$]u]USE2~E7@D$TR$E[]K6UE'US$E}6@D$D$D$ D$D$$f$[]É'˻6U|RE)'U(uu]-}@6FD$D$ D$D$$;tFD$D$dS$N]u]Ít&US$U|5BD$RRT$ D$T$T$l$[]ÍUSx|Ë5E@D$ D$T$T$&[]USE2|E5@D$$[]USE|5@D$$[]US{4E$c&D$$![]Ít&'U(]{æ4uu4$&VT$ T$D$T$$=u]]ÍUuu ]-{@4t$E$W'EFu@E ]E]dt&U8uu ]z3}}VF$U$UuT$ L$F@D$$lĴt=]Eu}]H&U8]Szf3uu }};tBVF$U$Ut4T$ L$F@D$$dt]u}]ÍvčĴ]Eu}].&'U8uu ]yð2}}F$e#u]u}]Ít&FPt$<$U$Uu}UE Ǵ]E]&U XU]y.2u}BK󦍳QEE:MtWJD$ Ut$L$$L$;UtBD$U$]u}]ËBU@$%UƋB뎍'U(uu ]]xp1}}F$5"uqF$"u*F}uEE %]E]&t$<$\#VUU E ]Eu}]t$<$$#D$FD$ִ$t$<$"VUU E롍t&'UWVSumwÀ0F@$H!4U܅u M܋F@@$!u9F@$ Uu GMFP@U؉$ Mu EF@@4$Eb!M܋V|$0L$8MT$DD$T$@L$(M؉T$<$T$4L$$MT$,T$ T$L$MĉT$ T$T$L$>;tFD$ D$D$V$Č[^_]Ð&UHuu ] v /}}F$uyGVEF$UUtMT$ET$ L$D$D$HV$FuEG}E I]E]bfG뫋VOt$<$UM UM܋u}UME ]E]&UHuu ]u0.}}F$uyGVEF$UUtMT$ET$ L$D$D$xV$FuEG}E e]E]rfG뫉t$<$NWL$T$D$ L$T$$4]u}]Í&UWVS6tI-\u4$E؋F@$4U܅u M܋F@@$u9F@$Uu GMF@$Uu MF@$fuFM؋@@D$FL$4M܉|$(T$ D$8L$,MD$0D$ D$L$$MD$D$L$L$$L$;tFF@$t6FT$ D$D$VRRD$V$T$0\[^_]ÍUWVSLuró+F@${4U܅u M܋F@@$Qu9F@$)Uu GMF@$Uu MF@$uFM܋@@D$FL$(M|$$T$ D$,L$ MD$D$D$L$L$$L$~;tBF@$bt8FT$ D$VRRD$V$T$L[^_]Í&UWVSlu q3*F @$Uu GMF @$4uF M܋x@$@M܅u9F@T$L$|$ D$ET$|$D$T$ FD$$RF @$tVT$D$FT$T$D$ $;tFD$W$FD$D$LW$;tFD$X$MF @$4Mu EF @$@Uu 9MF @$gUԅu GMԋFxF @$=uMF|$0|$L$,MD$(D$ D$L$$Mԉ|$T$ L$V RRD$T$$;tLFxF @$t6F|$T$ D$V RRD$X$T$l[^_]ÍUVSnÚ'u;tFD$Y$FD$Z$"D$4$;t|$vD$4$!$FD$$[^]Í&'UWVSmé&,E}D$D$E <$;t$$;t|$$N $E‰T$ 19p$t$‰T$׋E6uσ ^_]UWVSV}pt4t&Et4$Ut |$4$kM t4$U 6uЃ[^_]UWVSVVi}ptt&4$׋6u[^_]Ðt&UE]@ Ðt&UE]@Ðt&U8}}]uUwt]u}]Ðt&$Jp4$JGt$T$$fJwtUJUҋuw UH}}]uJU]wt]u}]Ðt&G$JP$U'JUƋGT$D$ D$D$BD$4$5JwtUCIU䍴&ҋuwht&UH}} ]UuTÚ wt]u}]fBU$BIƋG$5IL $MVIUMƋGD$BD$ D$L$D$\D$4$ZIw{UdHUҋuwSUH}} ]uSý wt]u}]Ðt&G$]u wwՐE|$$EG$;HƋE$.HT$UOHUƋED$GD$ D$T$D$nD$4$VHwZU E$R t$|$p~:~u5F:u)F:Bu F:Buu$t$|$]Ð󦍃8tӍQEːUSXRk D$,*D$E$U T$ D$D$4*$F[]Ív'U1VSQ t,*D$ED$$D$ƍE D$ 4*t$$9F4$F| [^]ÐUWVSvQÉ ,Eu 4*$$D$6$t$$$$D$ D$$7$Z D$D$$,$,*$D$D$$D$D$\$4$10$\D$P$4$$$D$\$,*XD$D$$4$Կ$ D$D$ $E䃫,*$F4$>4$Uk$U2$D$M䃃,*A$UM䍻KA@EԉtuԹKEHB@L$L$D$ D$$$,*,*4$u,*4$f4$X,*EL[^_]SU u}E䍃$UUB$UtB$UB$UUBK@EԉtuԹKu4MRAT$T$D$ D$@$]u}]ËMRAT$T$D$ D$|$Qʍ&T$M $Uu}EBUEBE ]E] fMRAT$T$D$ D$ $WUWVSRQQkQ:QPDP8P\,POOORRLLbO/ONNNlN@NLLNMMLL2^LS^S^S^LS^'II{`5DXY=4?F/Q;M-hZ\_rq''eDEE$)*.+#44G7G7IIILI__III4444O4$4$444[ X[,+f"1?CMP|Tz{  !&")'89S44Pm2PrPP61-/.5]nl  $ kf !SZXthVdbBqs0WWWW:??:cccZ\cppx|_I3XYwzTNQPRVYopq[\]^_`agi{}mn#&"%)uvyzLNMOxw +,efghi'*( ;<@>=~sljbdR[WSTUe78Q^`ac|AjCDEFGJKHkortuvy{UOEFGHJKLMNOPQRSTNO*+IJKLMNOPQRST:<=>?@ABCDEFGHJKLMNOPQRSTXXn\JKLMNOPQRST*+.NOPQRSTXY|}~<=>?@ABCDEFGHJKLMNOPQRST*+,PQRSTT<=>?@ABCDEFGHnJKLMNOPQRST{:ӓ\ذNOg*+NOXY䴵XXbc\<=>?@ABCDEFGHJKLMNOPQRST*+N|}~ЩXY<=>?@ABCDEFGHJKLMNOPQRST*+STҡ<=>?@ABCDEFGHJKLMNOPQRSTȓXYZ]^_ܓhT*+Z[\]^_`g<=>?@ABCDEFGHJKLMNOPQRSTT [\]^_`Z]^_gԽ2*+h"+ʵ1<=>?@ABCDEFGHJKLMNOPQRSTӓ fؐ)bcdeg*+%n'1<=>?@ABCDEFGHJKLMNOPQRSTZ]^_;h*+*+jlm?@<=>?@ABCDEFGHJKLMNOPQRST\;7  jlm*+XYj\lm%'^<=>?@ABCDEFGHJKLMNOPQRST*+PXYXYXY<=>?@ABCDEFGHrJKLMNOPQRST*+ʓ46<=>?@ABCDEFGHJKLMNOPQRST*+jlmcde=>?@ABCDEFGHJKLMNOPQRST*+cde>?@ABCDEFGHJKLMNOPQRST+XYX0Y:0r46|}:NOrWXY\bNOP[WXY\nynDP|}~p{Щk0o|}~k:o [\NOWXY#\a/q158|}~Xcde;in驪ߡ’¬yvwtxpޘbsba(T⫭īūƳ<̘̘͘&˜¸!pppp\ k pruu,,`g,b$--3bzfqqsfz{DD9$|L====????@@AAABD????@@AAAB<;)>>====????@@AAAB$RCE????@@AAABCE>:@@AAAB$<;)>>=====????@@AAAB^AAAB"8*<;)>>====????@@AAAB$t '<q K=T;:)89$<;)>>=====????@@AAABMk+)n7$<;)>>====????@@AAAB, B <;)>>====????@@AAAB=M$,7#Y\]CES #^rCvWXBP<;)>>====????@@AAAB$&a=vWX=Y\]^" "R%C<;)>>====????@@AAAB$O<.K==Jj&u  ;M11/J~~<;)>>====????@@AAAB$=Y\]rG45L^N~?J}} @<;)>>====????@@AAAB$Gv] -CE@HPi@F#G>"$<;)>>====????@@AAAB99$<;)>>====????@@AAAB0$<F)>>===={????@@AAAB/12@01h$;)>>====s????@@AAABo7{)>>=====????@@AAABHD==(==AHD=w( AF54=b===Fz==`KJefpI;<r&KJ}=I;<HD=(=TUAc o|3!aF =h===KJII;<=6s=t%==u==H== $%=&'(====y I*%=`=+,!=)=-.=*=[4=[=E"e/0 mpq 23,6BE(3:TN[SL9O}UQV-i b ydfX$lx+w62?@ADdpqg GxQ \_~oVZjzkWlc_g8 m!'.5YZ=nK    v",$&s[ WYMR%(NWZ]kr}"N(QRI!\^3TJPS|z!L1IIING`oB~IB:vIIIIII    -0/3568 ;<A !%'EJKF9=&(parser stack overflowset listnear "%T": syntax errortoo many arguments on function %TDeleteTriggerDeleteTableVtabFinishParseVtabBeginParseVtabArgInitVtabArgExtendVacuumUpdateTriggerUpdateStepTriggerSelectStepTriggerInsertStepTriggerDeleteStepSrcListShiftJoinTypeSrcListDeleteSrcListAppendFromTermSelectDeleteSelectRollbackTransactionReindexRegisterExprPragmaPExprInsertIdListDeleteIdListAppendFinishTriggerExprSpanExprSetHeightExprSetCollExprListDeleteExprFunctionExprDeleteExprAssignVarNumberDropTriggerDropTableDropIndexDetachDeleteTriggerStepDeleteFromCreateViewCommitTransactionBeginTriggerBeginTransactionAttachAnalyzeAlterRenameTableAlterFinishAddColumnAlterBeginAddColumnAddNotNullAddDefaultValueAddCollateTypeAddCheckConstraintUnsupported SQL syntax (%s) unrecognized token: "%T"<\<|ċlԌԌԌԌԌԌԌԌԌԌ,L܋ < ̊h&'*)"I$_,ZmY !nbY0l4`^wvd<Y8 ?B\*gT :c#re+/{7xy91=[a@ Y::]o>i%qY*uz.-fAt2YY 3js56(k !%(/7:=?AFGLUV[_cfkq{~ #(.49=@FJQSZ\^gkqw              $'+453.:B [U^J>#eiExtracting name from a null or empty tokenEncountered two CREATE DATABASE statements; only one is allowedThe table %s contains two columns with the same name %s; this is not allowed.Index %s names unknown table %sFound two declarations of an index named %s, at lines %d and %dThe index named %s on line %d has the same name as the table at line %d. This is not allowed.Index %s names unknown column %s in table %sPlease specify CREATE DATABASE before CREATE TABLEThe table name must be simple: %s.%sFound two declarations of a table named %s, at lines %d and %dThe entity named %s on line %d has the same name as the index at line %d. This is not allowed.Foreign Key Constraint not implemented: FromTable %s FromCol %s ToTable %s ToCol %s Extracting name from a null or empty token Missing right parenthesis in type expression %s Non-numeric or zero size parameter in type expression %s Unexpected value for second parameter in type expression %s Zero dimension not allowed for %sWarning: dimension of string "%s %s" is too small to hold a null-terminated string.Malloc failedDB_BTREEMalloc failure varbinvarcharvarchar2bittinyintsmallintshortintegerbigintrealfloatdoubledecimalnumericnumberUnsupported type %s SQL logic error or missing databasecallback requested query abortattempt to write a readonly databasedatabase disk image is malformedString or BLOB exceeded size limitlibrary routine called out of sequencelarge file support is disabledauxiliary database format errorbind or column index out of rangefile is encrypted or is not a databasenot an erroraccess permission denieddatabase is lockeddatabase table is lockedout of memoryinterrupteddisk I/O errordatabase or disk is fullunable to open database filetable contains no datadatabase schema has changedconstraint faileddatatype mismatchauthorization deniedunknown errorÿ|tld\TLDÿ<4ÿ,$ ܿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~The table "%s" (defined near line %d) lacks a primary key, which is not allowed. All tables must have a designated primary key. typedef void (*%s_iteration_callback)(void *, %s_data *); int remove_%s_database(DB_ENV *envp); return %s_insert_struct(dbp, &data); return p - buffer; } int %s_full_iteration(DB *dbp, %s_iteration_callback user_func, void *user_data); if (create_%s_secondary(%s_envp, %s_dbp, &%s_dbp) != 0) goto exit_error; if (create_%s_database(%s_envp, &%s_dbp) != 0) goto exit_error; int create_%s_database(DB_ENV *envp, DB **dbpp); int %s_insert_struct(DB *dbp, %s_data *%sp); memcpy(%s%sp->%s, buffer, sizeof(%sp->%s)); memcpy(p, %s%sp->%s, sizeof(%sp->%s)); int get_%s_data(DB *dbp, %s %s%s_key, %s_data *data); int delete_%s_key(DB *dbp, %s %s%s_key); int create_%s_secondary(DB_ENV *envp, DB *dbpp, DB **secondary_dbpp); int remove_%s_index(DB_ENV *envp) { return envp->dbremove(envp, NULL, "%s.db", NULL, 0); } int remove_%s_index(DB_ENV * envp); int %s_query_iteration(DB *secondary_dbp, %s %s%s_key, %s_iteration_callback user_func, void *user_data); int %s_insert_fields(DB * dbp, int %s_insert_fields(DB *dbp, #define %s_CACHE_SIZE_GIGA %lu #define %s_CACHE_SIZE_BYTES %lu Data structures representing the record layoutsMacros for the maximum length of the records after serialization. This is the maximum size of the data that is storedThese typedefs are prototypes for the user-written iteration callback functions, which are invoked during full iteration and secondary index queriesThe environment creation/initialization functionint create_%s_env(DB_ENV **envpp); Database creation/initialization functionsFunctions for inserting records by providing the full corresponding data structureFunctions for inserting records by providing each field value as a separate argumentFunctions for retrieving records by keyFunctions for deleting records by keyFunctions for doing iterations over an entire primary databaseIndex creation and removal functionsThis convenience method invokes all of the environment and database creation methods necessary to initialize the complete BDB environment. It uses the global environment and database pointers declared below. You may bypass this function and use your own environment and database pointers, if you wish.int initialize_%s_environment(); int initialize_%s_environment() { if (create_%s_env(&%s_envp) != 0) goto exit_error; fprintf(stderr, "Stopping initialization because of error\n"); return -1; #include #include #include #include #include #include #include "db.h" Header file for a Berkeley DB implementation generated from SQL DDL by db_sqlCache size constants, specified in a hint comment in the original DDL (*envpp)->set_cachesize(*envpp, %s_CACHE_SIZE_GIGA, %s_CACHE_SIZE_BYTES, 1); if ((ret = (*envpp)->open(*envpp, env_name, flags, 0)) != 0) { (*envpp)->err(*envpp, ret, "DB_ENV->open: %%s", env_name); return 1; } return 0; } int create_%s_env(DB_ENV **envpp) { int ret, flags; char *env_name = "./%s"; if ((ret = db_env_create(envpp, 0)) != 0) { fprintf(stderr, "db_env_create: %%s", db_strerror(ret)); return 1; } (*envpp)->set_errfile(*envpp, stderr); flags = DB_CREATE | DB_INIT_MPOOL; int create_database(DB_ENV *envp, char *db_name, DB **dbpp, int flags, DBTYPE type, int moreflags, int (*comparator)(DB *, const DBT *, const DBT *)) { int ret; FILE *errfilep; if ((ret = db_create(dbpp, envp, 0)) != 0) { envp->err(envp, ret, "db_create"); return ret; } if (moreflags != 0) (*dbpp)->set_flags(*dbpp, moreflags); if (comparator != NULL) (*dbpp)->set_bt_compare(*dbpp, comparator); envp->get_errfile(envp, &errfilep); (*dbpp)->set_errfile(*dbpp, errfilep); if ((ret = (*dbpp)->open(*dbpp, NULL, db_name, NULL, type, flags, 0644)) != 0) { (*dbpp)->err(*dbpp, ret, "DB->open: %%s", db_name); return ret; } return 0; } A generic function for creating and opening a databasestatic int compare_int(DB *dbp, const DBT *a, const DBT *b) { int ai, bi; memcpy(&ai, a->data, sizeof(int)); memcpy(&bi, b->data, sizeof(int)); return (ai - bi); } int compare_long(DB *dbp, const DBT *a, const DBT *b) { long ai, bi; memcpy(&ai, a->data, sizeof(long)); memcpy(&bi, b->data, sizeof(long)); return (ai - bi); } These are custom comparator functions for integer keys. They are needed to make integers sort well on little-endian architectures, such as x86. cf. discussion of btree comparators in 'Getting Started with Data Storage' manual.int create_%s_database(DB_ENV *envp, DB **dbpp) { return create_database(envp, "%s.db", dbpp, DB_CREATE, %s, 0, %s); } int remove_%s_database(DB_ENV *envp) { return envp->dbremove(envp, NULL, "%s.db", NULL, 0); } int %s_insert_struct( DB *dbp, %s_data *%sp) { DBT key_dbt, data_dbt; char serialized_data[%s]; int ret, serialized_size; %s %s%s_key = %sp->%s; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); key_dbt.data = %s%s_key; key_dbt.size = %s(%s_key)%s; serialized_size = serialize_%s_data(%sp, serialized_data); data_dbt.data = serialized_data; data_dbt.size = serialized_size; if ((ret = dbp->put(dbp, NULL, &key_dbt, &data_dbt, 0)) != 0) { dbp->err(dbp, ret, "Inserting key %%d", %s_key); return -1; } return 0; } len = strlen(buffer) + 1; assert(len <= %s); memcpy(%sp->%s, buffer, len); buffer += len; void deserialize_%s_data(char *buffer, %s_data *%sp) { size_t len; memset(%sp, 0, sizeof(*%sp)); len = strlen(%sp->%s) + 1; assert(len <= %s); memcpy(p, %sp->%s, len); p += len; int serialize_%s_data(%s_data *%sp, char *buffer) { size_t len; char *p; memset(buffer, 0, %s); p = buffer; int get_%s_data(DB *dbp, %s %s%s_key, %s_data *data) { DBT key_dbt, data_dbt; int ret; %s %scanonical_key = %s_key; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); key_dbt.data = %scanonical_key; key_dbt.size = %s(canonical_key)%s; if ((ret = dbp->get(dbp, NULL, &key_dbt, &data_dbt, 0)) != 0) { dbp->err(dbp, ret, "Retrieving key %%d", %s_key); return ret; } assert(data_dbt.size <= %s); deserialize_%s_data(data_dbt.data, data); return 0; } int delete_%s_key(DB *dbp, %s %s%s_key) { DBT key_dbt; int ret; %s %scanonical_key = %s_key; memset(&key_dbt, 0, sizeof(key_dbt)); key_dbt.data = %scanonical_key; key_dbt.size = %s(canonical_key)%s; if ((ret = dbp->del(dbp, NULL, &key_dbt, 0)) != 0) { dbp->err(dbp, ret, "deleting key %%d", %s_key); return ret; } return 0; } int %s_full_iteration(DB *dbp, %s_iteration_callback user_func, void *user_data) { DBT key_dbt, data_dbt; DBC *cursorp; %s_data deserialized_data; int ret; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); if ((ret = dbp->cursor(dbp, NULL, &cursorp, 0)) != 0) { dbp->err(dbp, ret, "creating cursor"); return ret; } while ((ret = cursorp->get(cursorp, &key_dbt, &data_dbt, DB_NEXT)) == 0) { deserialize_%s_data(data_dbt.data, &deserialized_data); (*user_func)(user_data, &deserialized_data); } if (ret != DB_NOTFOUND) { dbp->err(dbp, ret, "Full iteration"); cursorp->close(cursorp); return ret; } cursorp->close(cursorp); return 0; } int %s_callback(DB *dbp, const DBT *key_dbt, const DBT *data_dbt, DBT *secondary_key_dbt) { int ret; %s_data deserialized_data; deserialize_%s_data(data_dbt->data, &deserialized_data); memset(secondary_key_dbt, 0, sizeof(*secondary_key_dbt)); secondary_key_dbt->size = %s(deserialized_data.%s)%s; secondary_key_dbt->data = malloc(secondary_key_dbt->size); memcpy(secondary_key_dbt->data, %sdeserialized_data.%s, secondary_key_dbt->size); /* tell the caller to free memory referenced by secondary_key_dbt */ secondary_key_dbt->flags = DB_DBT_APPMALLOC; return 0; } int create_%s_secondary(DB_ENV *envp, DB *primary_dbp, DB **secondary_dbpp) { int ret; char * secondary_name = "%s.db"; if ((ret = create_database(envp, secondary_name, secondary_dbpp, DB_CREATE, %s, DB_DUPSORT, %s)) != 0) return ret; if ((ret = primary_dbp->associate(primary_dbp, NULL, *secondary_dbpp, &%s_callback, DB_CREATE)) != 0) { (*secondary_dbpp)->err(*secondary_dbpp, ret, "DB->associate: %%s.db", secondary_name); return ret; } return 0; } int %s_query_iteration(DB *secondary_dbp, %s %s%s_key, %s_iteration_callback user_func, void *user_data) { DBT key_dbt, data_dbt; DBC *cursorp; %s_data deserialized_data; int ret; memset(&key_dbt, 0, sizeof(key_dbt)); memset(&data_dbt, 0, sizeof(data_dbt)); if ((ret = secondary_dbp->cursor(secondary_dbp, NULL, &cursorp, 0)) != 0) { secondary_dbp->err(secondary_dbp, ret, "creating cursor"); return ret; } key_dbt.data = %s%s_key; key_dbt.size = %s(%s_key)%s; for (ret = cursorp->get(cursorp, &key_dbt, &data_dbt, DB_SET); ret == 0; ret = cursorp->get(cursorp, &key_dbt, &data_dbt, DB_NEXT_DUP)) { deserialize_%s_data(data_dbt.data, &deserialized_data); (*user_func)(user_data, &deserialized_data); } if (ret != DB_NOTFOUND) { secondary_dbp->err(secondary_dbp, ret, "Querying secondary"); return ret; } cursorp->close(cursorp); return 0; } sizeof(%s_data_specimen.%s) + \ ) } %s_data; %s_data %s_data_specimen; typedef struct _%s_data { extern DB *%s_dbp; } DB *%s_dbp = NULL; #define %s (%s %s; *%s %s%s, #define %s %d assert(strlen(%s) < %s); strncpy(data.%s, %s, %s); memcpy(data.%s, %s, %s); data.%s = %s; + 1sizeofstrlen&buffer += sizeof(%sp->%s); p += sizeof(%sp->%s); ); %s_data data; Array size constants.Database removal functions extern DB_ENV * %s_envp; DB_ENV * %s_envp = NULL; return 0; exit_error: } Simple test for a Berkeley DB implementation generated from SQL DDL by db_sql Test data for raw binary typesA very simple binary comparison functionchar * compare_binary(char *p, int len) { if (memcmp(p, binary_data, len) == 0) return "*binary values match*"; return "*binary values don't match*"; } These are the iteration callback functions. One is defined per database(table). They are used for both full iterations and for secondary index queries. When a retrieval returns multiple records, as in full iteration over an entire database, one of these functions is called for each record found main(int argc, char **argv) { int i; int ret; Fill the binary test data with random valuesfor (i = 0; i < MAXBINSZ; i++) binary_data[i] = rand(); Use the convenience method to initialize the environment. The initializations for each entity and environment can be done discretely if you prefer, but this is the easy way.ret = initialize_%s_environment(); if (ret != 0){ printf("Initialize error"); return ret; } Now that everything is initialized, insert a single record into each database, using the ...insert_fields functions. These functions take each field of the record as a separate argumentNext, retrieve the records just inserted, looking them up by their key valuesNow try iterating over every record, using the ...full_iteration functions for each database. For each record found, the appropriate ...iteration_callback_test function will be invoked (these are defined above).For the secondary indexes, query for the known keys. This also results in the ...iteration_callback_test function's being called for each record found.Now delete a record from each database using its primary key.Close the secondary index databasesDelete the secondary index databasesFinally, close the environmentif (%s_dbp != NULL) %s_dbp->close(%s_dbp, 0); if (%s_dbp != NULL) %s_dbp->close(%s_dbp, 0); if (ret != 0) { printf("Delete error\n"); goto exit_error; } if (ret != 0){ printf("Full Iteration Error\n"); goto exit_error; } ret = %s_full_iteration(%s_dbp, &%s_iteration_callback_test, "retrieval of %s record through full iteration"); if (ret != 0) { printf("Retrieve error\n"); goto exit_error; } if (ret != 0){ printf("Insert error\n"); goto exit_error; } ret = %s_insert_fields( %s_dbp, void %s_iteration_callback_test(void *msg, %s_data *%s_record) { printf("In iteration callback, message is: %%s\n", (char *)msg); Unexpected C type in schema: %sret = delete_%s_key( %s_dbp, %s); , &%s_iteration_callback_test, "retrieval of %s record through %s query"); printf("Retrieval of %s record by key\n"); ret = get_%s_data( %s_dbp, %s, &%s_record); \n", compare_binary(%s_record.%s, %s)); \n", compare_binary(%s_record->%s, %s)); #include "%s" #define MAXBINSZ %d char binary_data[MAXBINSZ]; Close the primary databasesDelete the primary databases%s_envp->close(%s_envp, 0); return ret; remove_%s_database(%s_envp); remove_%s_index(%s_envp); %s_data %s_record; "ninety-nine""n"binary_data9999.5%s_query_iteration(%s_dbp, %ld%f%lf%dprintf("%s.%s: \n", %s_record.%s); printf("%s->%s: \n", %s_record->%s); %s_data_serialized_length%s_data_%s_length%s[%s]&compare_int&compare_longchar binary_data[%d][MAXBINSZ]; int compare_binary(char *p, int len, int dem) { if (memcmp(p, binary_data[dem], len) == 0) { return 0; } else { return 1; } } main(int argc, char **argv) { int i; int j; int ret; int occurence; for (i = 0; i < %d; i++) for (j = 0; j < MAXBINSZ; j++) binary_data[i][j] = rand(); ret = initialize_%s_environment(); if (ret != 0) { printf("Initialize error"); return ret; } Now that everything is initialized, insert some records into each database, retrieve and verify themFirst, insert some records into each database using the ...insert_fields functions. These functions take each field of the record as a separate argumentif (ret == 0) printf("*****WELL DONE!*****\n"); if (ret != 0) { printf("Full Iteration Error\n"); goto exit_error; } printf("%s full iteration: %%d\n", count_iteration); assert(count_iteration == %d); if (ret != 0) { printf("ERROR IN INSERT NO.%%d record in %s_dbp\n", i); goto exit_error; } ret = %s_insert_fields( %s_dbp, same = 1; break; if (same == 0) assert(0); else count_iteration++; void %s_iteration_callback_test(void *msg, %s_data *%s_record) { int i; int same = 0; for (i = 0; i < %d; i++) { if (ret != 0) { printf("ERROR IN RETRIEVE NO.%%d record in %s_dbp\n", i); goto exit_error; } , &%s_iteration_callback_test, "retrieval of %s record through %s query"); printf("%s_record_array[%%d].%s: %%d\n", i, count_iteration); assert(count_iteration == 1); if (strcmp(%s_record_array[j].%s, %s_record_array[i].%s) == 0) { if (fabs(%s_record_array[j].%s - %s_record_array[i].%s) <= 0.00001) { if (%s_record_array[j].%s == %s_record_array[i].%s) { assert(count_iteration == occurence); if (ret == %s) ret = 0; else { printf("ERROR IN DELETE NO.%d record in %s_dbp\n"); goto exit_error; } compare_binary(%s_record.%s, %s, i) == 0); strcmp(%s_record.%s, %s_record_array[i].%s) == 0); (fabs(%s_record.%s - %s_record_array[i].%s) <= 0.00001)); %s_record.%s == %s_record_array[i].%s); (compare_binary(%s_record->%s, %s, i) == 0) (strcmp(%s_record->%s, %s_record_array[i].%s) == 0) (fabs(%s_record->%s - %s_record_array[i].%s) <= 0.00001) (%s_record->%s == %s_record_array[i].%s) %s_data %s_record_array[] = { #include #include #define MAXBINSZ %d int count_iteration; Test data for input recordfor (i = 0; i < %d; i++) { count_iteration = 0; }; ret = get_%s_data( %s_dbp, binary_data[i], %s_record_array[i].%s, &%s_record); binary_data[i]%s_record_array[i].%s, occurence = 0; for (j = 0; j < %d; j++) { occurence++; binary_data[%s%d%c0DB_NOTFOUND{0}assert(if (&& {,"0""zero""1""one""2""two""3""three""4""four""5""five""6""six""7""seven""8""eight""9""nine""A""eleven"1111.1"B""twenty-two"2222.2"C""thirty-three"3333.3"D""forty-four"4444.4"E""fifty-five"5555.5"F""sixty-six"6666.6"G""seventy-seven"7777.7"H""eighty-eight"8888.8"I"99.9Warning: , near line %d CACHESIZEunparseable integer string %sDBTYPEbtreehashDB_HASHNo value specified for property %s Property setting (%s) with no antecedent SQL statementunrecognized characters in integer string %sUnrecognized environment property %sunknown DBTYPE %s for antecedent %s, using default of DB_BTREEUnrecognized entity property %sUnrecognized index property %sWarning: incorrect hint comment syntax with property %sd{{;P'4(TzR| '(AB N<$(8AB N̴≮D8@DT<\$P1A h \eoH , OoooDNΊފ.>N^n~΋ދ.>N^f$7(766/737+797=777C7G777O7S777Z7^7 8 8e7i7#8!8o7s7?8=8{77Z8X877c8a877777777777777777788 888 8%8)898<8A8E8T8W8\8`8.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.data.rel.ro.dynamic.got.got.plt.data.bss TThh !$8P4oL> HHF,NoDDZ[o`j  s   |hh 0w pp \e\e` ::\\N\dNdlNlpNp`NоODO|PP QP