From 2eadfd7224d1a60ef8bfc3f52dd151b2acc58f75 Mon Sep 17 00:00:00 2001
From: llea <llea>
Date: Mon, 31 Jan 2005 23:15:40 +0000
Subject: [PATCH] Add ring for incoming call

---
 rings/konga.ul               |  11 +
 src/Makefile                 |   3 +
 src/audiobuffer.cpp          |   2 +-
 src/audiortp.cpp             |  11 +-
 src/configurationpanel.ui    |  25 +-
 src/configurationpanel.ui.h  |  21 +-
 src/configurationpanelui.cpp | 646 +++++++++++++++++------------------
 src/configurationpanelui.h   |   8 +-
 src/global.h                 |   4 +-
 src/manager.cpp              |   9 +-
 src/phonebookui.cpp          |   2 +-
 src/phonebookui.h            |   2 +-
 src/qtGUImainwindow.cpp      |  93 ++++-
 src/qtGUImainwindow.h        |   6 +
 src/skin.cpp                 |   5 +
 src/skin.h                   |   1 +
 src/tonegenerator.cpp        |  60 +++-
 src/tonegenerator.h          |   1 +
 src/url_inputui.cpp          |   2 +-
 src/url_inputui.h            |   2 +-
 src/volumecontrol.cpp        |   3 +-
 21 files changed, 550 insertions(+), 367 deletions(-)
 create mode 100644 rings/konga.ul

diff --git a/rings/konga.ul b/rings/konga.ul
new file mode 100644
index 0000000000..2191150e71
--- /dev/null
+++ b/rings/konga.ul
@@ -0,0 +1,11 @@
+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ~џџџџџџџџџџ~џџџўџџџџўџџџџџџџџџџ~џџџўџўџџџџџџџџџџўџџџџџџџ~~џџўўџџўўџџџџўџџџџўџџџџџџџџџўўўџ~ўџџ}~{|~u}§w~z~zёўьъiuўћьшяєшkљючiфzыцюrёjјъоНИЈЁ ЂŸ˜—––ŸЅ—•ŽŽŽŽ“™œЃМААЏЏ­Ў
+IМ/$ŸŽ‹‹ŒŠŠŒŒŒŒ”šœŸЂЁ›šИ% $5ШЌІ"уЊСA/hnбЁ–’”šœЁЁ ЋвPD? ;Ќ—•—ЖзMHЪХЏІ›™žŸŸЂЈ­ЕТ;1!"#.оаЮЯcLGхвZ<%.=ЯОO0,,%'/CрНЕЖЛл\7.$"$))+,//58<XЪКДЋЂŸŸ ЅЈЊЉЊ­ЎБИГ­АЏЎЌЋЊЈЇЋГЗЏЌЋЉЉЈЋЌ­Ў­ЏЕЩqA84446>AA<2//4;>>=6/*'""$*,.+&"!#(++--+++*-.3>QSчйюndнвЯХРЙЎЉЅЅІЈЇЃЅЄІЉ­ЏДЙЏЊЅЃЁ žœž ЇЎДГАЕОЭпњf§Юу\D91//.)'*.26BA84.0/5;<41;>BEAOpЫМЖНМЛЦжсqбОЎЌЋ­­ЋЖКОШЛИЎ­ЌЏЌЋЏЖЙЗИГВВЙПНКСЫЫжeраЩдXL>B]ЩУЭыOD;36//153/00,)).<GOU:18>N]SNNTVTID<??ELOD:;18=?Z~кзУЬоѕJ?LuзбЩль[EWќ_QѕЯЧООаNMWxпжЛЕЏВЙШ\EROeьюиhF<:BDніYOOT_OPOJLьгЬЬЯвнщ\2/,087>@GKOFђbFD??=<<B]uфмЫМТjSjдЧЭцЪУЛБДНШОЛЗГЙТќоамYSин^UGOќУНМПемONLMEIпШТЯйФЫxLL6/17COYfYфзўEChлЯЬЧЗЕВБГДЗОтT@CL`vќj^иФЫЦУЦЧФсбжЦИИМТгф]щZбХЧбRDCKtшkcєЫСООННО|I>>FO`єШФЯnJCCENLGbmWJ>EIWWX[`фЭњL=>:9<=MrиабнЭТПСЩЯЯЬЛЗГЖНЧћLK\окш_SGE@GF_лЮУМЛЗМЦrW`зкотхжкоZ<77AMебзшoс`REOkcbькеавf@?FJOMKRPN^`e}эЫгљYXgєpљъпвЭжєNF:7>FGGDTuэовЩОСЫбийљe\ѓЯЭСМЛРЧвЩРЫаЯЮЧРЧЫЪЯхvh__\RSE?:9=::=Uяцтщэъ{^gi\m]ZjVM]§кЫЩУУФЪЭЮйЫЩЬЭШХЦЩзdNLSloYJGIUR]эиЩХЦТЦШЬабЮкютоЬЪЬЭшunkиЪМКНФчMJA<;=EMY\JG?<?EC?>@GFMaтймсозЬФНОЬрNKFIPV^їычzкЮйюргШЧЫбцсne]tимl^dkbUKD>?IR[ZY`ov}шtvяiXU^mюЭШУЧУПИИИЙПШзрd\iprX]\XPK??>>===??CJSghoљсьu^sцнжуy[W_ъквнgVWY[\nъжзЭЦЦЯаЫОККОЭтYOqщенjXUZћьћэ^QHDHIKNdnivѕb\a~њіYZWX~фжеЯЭвъ_YW_dfWSczреЪЪЭЯэ§ќїрлъrk\dq№v`]_geo{bVQOLKO_уаХТСЫлќjъпеиплдгЯЯЯвгисы^WSNDCJKMJMSsутюTMGHlыипзЯЦФЦЩЫиъћєљq]Xlќтфъшў\WZTKGGJJKLNMPRLNVVOJJORU\ёпЮЪЦЦЪЬЧХПОРФЩЩЬЬЬбйлpѕястцm]SXXZWNMOX\_e`ZXajcZSOQ_пжабЯмъkWQKMQOPR_da^Z_m_XOMMRZYZk{ълиЮЬЮвпћinічгЭЬЮЭЬЬШЧХЬечxj]ds}yrjd]cdaTTKE>ACGKS[UOO[mіјѓzc\Z_ъевЬЭЯЯаеджкнропыђчжиаЬЬЮипіz`YMLU[kјыщsVMFHGHIMPYi|ыъолйжыo§эииннбЭЬЭЯЮЯвфьснймптохї§jUOLNQOJKLKLR]c]VUSVTW[etэќяыэxhiќюѕонщяqyэойллажеджгпнчъщпгиœІаШ407=>LS5JЈЂЄЅЂЋЖЯUЛЋЏЄЅЩ( ')1­•”“””œ;$& 03ЫŸЅL!#,ЛІŸВ.6ЌЈЊЗ-$NАЏ­ЏХM.*8УЌІЊг0!љЅЉЛ:&$'GЎ––““•œАD))7эЊ›œšŸ­ИK9ЯЋŸŸЊДL(&*+8гОЇ ЊЩH>6-3HОоK:)#%0ВŸ Ђr0$#$1жЮq?&$.=MяЋ  Щ?-,+->ЦЋЉŸŸЌЙбШЊЃЇАH/.:ЭЖЂœžЁЕv.-:lЎЇЅЇНI-.78IлЦЙЙТзPE7469==61/358GaЯЬщ~?/$$+5XЯЛЛФЦЯћьбдтю№пYC<=TоМИЙМСЩа§ORTuЬСМФмкеЯПЛАЏМухЭжёђмЪЬбФФв]@?J_ЦМЙНЮшC:55;99IohdK@FFLYlO9568;;FZЬОМПуQGDEIпПЙОУОУгfиТОРСТШмщивкйЯЧЧЮкjUM\ЪНЖГИСфYOQTRлТНУЯнwMINќфплZ91..28QшЪШСЫU<-.07QђцэQB9<>EhдУТбUJ?9=bТЕДЖФш<89=пУИГГЕТоeOJD\fсЪРЬh`UjЫФМЙЮфNHJKXЬТМЙОлKC87:MгЯХЭjKBFBLRTєиЯрL>?D]нейvDB>>BOЩХНРађJ;78<IцШПТЮчtnbоЯШКЗПеG>;IхПВ­ЎЗОЪгэоЧСМНППпK<<DLіоаЯХХъNIMbЭКДЛЫL40/4FaжЩЪЫеmD=<<J^tокфъшэyRFENукqKDDOђСЗАДЛСЪUE?FѓаУКИЙОШегЯазиьдШЬшfJA@GV`qіSPYмлаЩз§mYL@61/1>CN\hgюпыa]_O_уч[KIM^щњэхъgIMKK\чЭШНКМПШЯЯй`^lmlъзЮдЩНМТЩЪЧв_HHNlиЫЬнgOMDE\ndvfnууюxWH?=7103EUчбагЮдcMCDJWZf_bapk|fяЯлѓЬЬgK?=DLиЬСТк_=4:=FOYOSQqјшбнйМЕЗЖДХжаЫМЎЊЉЈЉЋЎЙПЦПНТСТТЭъX5--5<wдЩУЩгUG<84873.,'$&(/8@BGA73-*.2?_ФЗЙЧЮђSBGUћкзџnH>ALщЬРЛЏ­­­ЏЖЙЖА­ЋЌЌЎЗНЦЫШЧНЕЕВВЗНбп№шЪЧРТЪЯьkыщпгЯа_D1+('(,6?KILG?;;;99:<=><;?ADPaщy^XID>=LcЯТННФЮсхпЯЪФКЛЛМСйюey~ыдЩСТФХХШЩХОСЩЯщo]PQ[}ёжЮШРЬtC<78<AQcџp_^uфърцло]J?>:<?CRYZYSOJFGKY]яйЭЭдфjbZ]|пбЬЬЯейвдеЭЫйш№слдЯЫФТУЦЪеiYRVnхпнтгЧХЧЧЯиiWQLLQSgdzнЭШШЭїVLIHM]^SKFFIIOOVV_b\TY^_nсфѕml`_UOQWpуЭЦХЦЭйщћэє~шиЮЯижеквЯЮЬЪЯмёђ{lызаЦРФЪмzTQXjтуфь№ѓ{{`^UMR^YONMLLS_{}kVJJJJN]jщмжнj]NFHIOPSXUTaf~эфпщц§eSRYcіфжггкяѕghoёшшлЮШФЦЦЩЭЫЩШЬжмцћсгбЬЫЫЭбдн{VNZcѓжЭЯжоушpbjhZOPQPTV[[iіэяdYOOSY_ibhэщэюqm\XX^]^lwx|я}yэпчщчђюпидЭЫЭжчьџmico|ючнлоцфомозпэїm`[^jonqѓыњhYOMOUhwt|ne\^hjnінп№яkWV_nѕўha]\Z^^\^oуолгжпяy`bnћпмсчэћ№ћїчпсхќnnnwюраЭЪЩЭзљbYZgуомсшu\Y^Zclєюцъќrsџёјzxmm_[Y[YNLS[^_f]NLQTgёцрлклофхсмоуфхp]SPRW]b|ьотьътјюовЯааофэњњтнпхюsg_jjянЯЮаврцћpx}ёылМЖЙЩгозlуnмnт/0223FA34;?=;<;йУЗИУжЦЙЛМММНМПЩцпъужч\NNV`}XLA8679;>=<?OlсаЩШЪШПОМЛНЦЭъf^OdдШОЛЛПСЦЩЬй|ROKE=?NzиавлPG=;=?@AIVњюяегеЫЬопѓaRPHHOdиУОЛНТЬцютгбжффr^RQ[mёьуш}cYSLMMJJQ_{йжввЦПОРХЮйzZMPsлХРЛКНФвншjWNHFFEJLNOMNVXTRNKFFJOZinitіщйждбгиотэ}sszѕьъптущфпончђia]_gmgehoьхцррлйлсќўђыфнкижеагрѕe][]l|їvfaYXchyr§mib^__`mehjhinўюфччцээtomnuќъыыслкоюoqpzящфнинэw}nnojnwmb``isюэтщыъчьрслппь{njewppљєющсйоцьєюї|gZY`hbjјэнмэiWWURY[[cfgnwzђыі{svpivlpєомптэ{h`_cfpьсмйршndmjimцлидоъyjrn^]bdљєњlvќтнлнссчui^^ftящчнпсэўccdgd_a]ce|№ьzњtu}xx{fxrџ~ъшуnyibgrqqѕолйрѓ|ішнпсљыѕ~kilvёэј|rђыфј{ьпкнјsusx~яwѓхпя}niqюмчјzdnjhcmwјэопчыџkd[\_nuўќ{§єle^a`_^\]\^hѓыпжЮЯвзт{yqnroўўy{ќщцфьйийпю}mnigўыруыќ][aeg~~ъхсчюvu|ё}њv§uqjяќxj_]diq_hўєєѓђyxіzqd\\^kx§ыуяњ}v|јїќvje_\Y[\iќщиегдпъln~ђплнсыюh`j}ёј§§ыѕі|~oјыщysolbicchjnqnhhmpumjwњѓюym_a\`^a^\fv|xy§ыхтчщрхѓnkblsяєьупцъ№њvyіђїoiuzyѕьуннощmi^b{шррчфчќtmkq~ю№ђъђђўytvџёё|mjhjca`dkbfcifcefixьяьэјyxqџ|qtwќљјzxwwѓэппсч№zffnn{яышфхщъящулммммпєzmorzђћѓѕљђь№ёёўrhd^`fhijpojlqhed_^[\]\]_``brіутчъяѓzk_^_fіъпнкноптшъяќ{ypichzя№§ёчттфшіѕіћ{}vџыщхтутпнрцчю}ufgfjkorssyswo`[[]_]]^^cfgtяфпмнхьuha`agt{ѕююїіяёюњ~uuonpѕѓункмпсутухщщюўviifhflwxpwqxuwuvџю№ээщъшэщьэюьцтшыі{wv~ўќyukgeeefed^a__ceguђшцьѕ{§ўvnlo{ёыыюєќњxvqrѕ№э№іѕњћћѕѕљvrrww}~wxћюяьшчусчя}wwtў~{|ѕіїєђєююї|oihh{ќ№яї§unlnty|yrvqqompzїї§x|oojhegmvѕяѓ~yyz~јєѓќў~~tvp{їээяэюѕѓёђяюэяѕіўћz}{ћєюъьяє§zqnorљэъы№ђ{tpphc`bckooqtџё№ђєјќ{|yvџіыьъьђїїќ{v|їяєіzrpsrtzvnniiiimpu~єя№юяѕћєяюьшчцхччшэяёя№ѕ~xpommntqqqkgedhlyџў|}vkgijpwії№эыьяєіћћѕяя№№ђјњњєѓѓї}wumlkltv§}љћ~џ}|~ќќ§§јјѕіђяэььюя№ђќџќјіююђёэя}uvw{ўћџ|ў}vnmlklkihjjkkkmv|јјљїљ}~§ќљљ§~~ј§љњћјяээыщьђќ}|џєя№ђѕїіў~xsw}|џ~yvuvwx}іѓђяю№іѕ№№эыэяює§}џ{ќџџzwnmpifmjlinknїѓlrulѓ№јswkђl{llїщт№чmmpнлjќћщфьојхяomxvoxtYу_kсгjPfИ“’”›ЈЛ ‘““_c>S'#
+8ЗNК	$КЂŸЃšRЙЄ“Ž‰‰ŠŒŒŒ‘“ЃžІЌE50m&/-FЪTМU(&#вІœž™›ЊЛИЊАМГЂ šŸЉЃЊЅœ˜›БP3<х)$*\Z08:C()/+ />*,%$AфЕщЗВПеSЪiЯлЌœœšš–™žІЉЂЋ­ГЊЋЏЦЪza/*3<=,!(318ZЕГЕЙЛЕАІЋ­­ЋЈ ›——•—˜ЂЄЇДЛЮнU]UK@/..23))$ !&# %# "%=ЭНЗСnY]imЯДЈЈЇЄЉЋІІŸŸŸІЏБВКЙЙТЗКЛНЭl9=H<D81-# !#+2.,-)))&"%+1BWьWE_ЧЏ­ЊЌЋАЌЊЌІŸ›œœ ЇЊГЕБЎЊЊЊЋММСОu?:0187?.+)+/24(*((,-,-,.FeZwf>?=YаОАЎВСпРЗКПТЙККГДПЫУЦШыљѓьjєхLA<==IYъnIo<A9<J<Yd\YHG@AJсПХРг[_SъылшzЭЦЛМЮц\кнШСУЫзщOHпОйбгЬм_^CE6ыф{ШIbC>UA>@>?иХЩгк[LOUUіћкФШrуоgеУФУабdOK?KЯигЦMкlKS>=Dжваг[F;?;?cзЩю\щжгэЬЧZЧКЙОйПРДИЦЦбpНПЦПТлIъOCSљжwN91-@_osGX@:7;=<oзбм^SkцЪЬРРУТртмЗЖЙОкЧЭпШСМПУПЫмsоЮоылS_е`MCVзосѕWH?7<8.3;EKOOC@CSeобнeMUvфаФЗДЕКЧЧЪзОЧФПКЛвНПб|[NMXЯХYt\@FB>:;:PFKERg]J<BcVwёщзџкcmlOvoЬЧХФaMkЯЮЦУLG>>ўгЩЪЙЗи~LMўb\\X^W|XbW`фплгсTNYнбЮЬЩйфцiWUр`kјќнепLJ<?^]yKF^[њ|^mTUgxfьмWTBLPбММЪл\сбk№ъrыЭНПТеіdШЫЯЬШФщъkMWXT`_uФЪмY_P?J?GN]REB=A?Dl№TJDLGSїълпњцнтгфжиЩОСПЛЙУСПЗЛЪвЯЧззЪЫШглSeNFC>?768<BBIJTNOOI<<?EOgўногс№pюОЛНЛНЦЧЪслукУЧФХЯФЬеЬоlWMHFgWdiYK=<=KTYgїlNLB<?VvйруiPkгФЛИИНаlшkZ_йЪОНЦувлюhZщю^G@EBKeлoWNNwskџ\__[јXYck§ежмнтфізШЬЪФопbUpцлеекжЭЩвдлнух^OMLBCGORTUMMWNIGDGI[tfNFMxЯСУЛРСЯЭЦЪЫлЪЯЭзЮкзбгпmiJ??ALH]aI??EMNгЪЭiMHXцЦУФлi]O]]ђuцЩЬеђ_VKMdзЮыPNPgзРОЬнibриЩйчммкрфнhOъоаоiTIIJX]aTS\Z\e^Zbinoуt`_пжЮХЬиi]}йЩЭЯЭвзЯчnd^[fшђUIORYa]xъjXSWW[UXhfpтЪЯслионхтоьуфкозцxиммџSRKJPYaeielhd]][NSvпкпlюшуилоуйkѕршя`юйхюйшvhxчzњvd^e^ZVfшщїbno\_`}db}ямрёџяјђущеетомкаЭЯмnjkъчщэdZ_ja^beVUY[OMNOUnмвнѕўъмонзсзуфгЫШЪгзнфкойрш№cvY[Z[d_[YOICFKXyoZQS\ZtўєќєішюшкеиЮФЦЩЮдмсйдбдзплчмййняzUTSNNONPUSMQX]VPU^OIKMKWsлтъу~ѓѕхрцЯЪЮЮвеЮЭЪЬЯЮЯглзджйкыmz[X^UMIJHHISSLLJKKMOOQZrєшюоыњфмЬЧЧХЫгЭЧЪЫЯбЯЭЭбзщ{d[\fєePKNIHLOOMOMJLOY[]d№слк~bsчззгвбЯЭЯвгеинзлсфўіoыопоооma]ZXX[X\ejZUMMUPTOKMO]inmshbs}ћцумкнзвЬЫЭЭЬЫЪЫбвоъпдбу№|ђышf_WOOIOPOMOP~ўУПБЇЌЋЊЊЎЏЌЌЂœœœžЇЊЎФЪЦЛННДЪ"#&$&&Eх6%'%-7ШЊЁžœœ™›ŸЁЉЈЇЉДСМРФМЌЌO5'***&+&,0=?5<bд1!4:B13*%$.4;A3*%*6ТЙЪbcвЦФЩЭНЙЏЋЄЂЌЎАИйA,,/=ЗЂŸŸЄДЧI;49=DёЧЛДЌЇІЉЋЎУбA2+-5/*)('*'/;<;70.29M[]I?HQL<>OрЭОЛЙЩрMDB5,*$!"'0>@KiЬЮзЮбиЮМДААЊЈЇЇЌЎБВГДАБЗМНМЖАЏЌЉЇЅЅЇЊЙШХЗГЏЏБГИЦвеСРНУпY>:64<CKF5/../42/,(&(*'#"$'/53.(%%',./00/.-.126C№хОЙЙМТПЛКВЎЈЄŸŸЂЄЃЅЅЇЌЏЎВДЏЋЇЃЂЃЂЃЅЊЏПТЧюOI=91/.,*)'%#!$%$%&'+-0357877::55=BIKSgЭСЖВДЗЗЖВВЎЏ­ЌЉЈЈЊЊЌЏЏГЖЏЏ­ЎЏЏГГМУЧЬЩУФЫЭееь`[MA@?CA=<<<=EJC>;:7779:==><;@@AAFoкЮЭм\zуЯЧЩЬвЯЭЬбдшьљёѓуъxfYQLKISOU_{{ddZUhўvdZNK?NqolњјиезюdMLY\Z§еЮЮЫфzRNLHLN_ZOHFMOэfONINRVLFIMSyљh`nl_[F?ALYusenxgRik_ZlvklќпаЭЪЬШУЛОШЧОСМЛНОПМОа[\[hдШЫепнлcJKTQMRRyыЭамucZUURKKPіюq_cu_Wk\LJTnнзрикйуxUaбЯЩХЦОПОРШЪЮЯикйзЫЭЯЯтувжгмќ{ы|mqoукдфzOMR[Rcnў[KFBFMOMLSY`^]][SJIM]op~мхмэі~мЬШПХЪЩвю_ZdёлнолвЪХЭмs{[cїѓтоолфиежсlONMWkуксшњWTWfѕw_^YZTUT[Z|ўьщойуq]\цочыђюьъgZIIP^ьйоёW^]ZQNNULPY]pљp]VZiљјшзезЮЭЯвЯЮЪаихяјёюъzёмЯЬЭЯЮжлдиф{№юzhypyюma__WUNP[mrzмѕn^[neSKQW_ўb\VNMIGIRTPPJHKPNJJOщнЯЬЩЫЪЯдбзвжвЯЭевЬЬШЧФХУУЦФЫбЯджжгЯалч_SPS[XUPQU[Z`ik§nm`VYYellf]_`eZZ]ZjѓъпзЯдоњRNMKLNTVagf^c_nчучx_Za_pюшоиЮЭЬЩХШЪецђvjdkkzљђюяхуtnxэычюќ|ќ§b_m№|e_jeb^VKIIKLMLMU][kѓіщрхmjjdђуйимзЫХТУШЭсцzbftrb[]\XYTOORRRONMMPT\gљчддбгликииуѓeiq}ќхъї№ооуцщшфьыучmязЮЪЭмя\S]ir{^WX]tolj`ZVWWVPQ[_\[agai|рпуяшькаЫЪЪЫЭбофў}ёсрчххцэшфчю{yэойезкхыtecXVQPSSV[_YW[_][]jpъпммхэwёрноыzomhssќјѓ§ћveYZTMOTWYY^k{эфю§zjўнзикиЯЮЮЮЯвкпоонныящшыђхыўfca\VXVSVVVWWYXRZ_YXTWZ[Z\_h№ёщхыфлзвЯагвбгЯвикх№чррхьўklsnkc]_binsxjnpќўnh``eoщухьїvjb]XX\bihgoe_c`iqkhdcoљыъцпйжджимпщєuxў~ъпоорсэ}zєхыљ§{oeklm`]Z[[^bb_b^VTXZX[eb_^uёокизмфэuvѓчрноокгддйтцѓћyklїщыфпппщяyk^YTX\kyћђ§jc^WXXWZ]]`kyxxюээцўrєђхркмдааеозоряјіjыyсцsmmюxђжоТœ›Зв2/LђњЦV:;Лš˜œžЭ$ 60Њ™›Џ)œ––Њ
+	
+#ЩЖœ’!
+#Ї—Њ3б—‘•œf&8Зš‘‘–Ё­F<+&6ЪЗЊЂОШ0*:™н/]Пž™ЃЄ ІЊЙ$"'*:JзЯЌЌЉЊTFЩЌ­Н?E-'<ЙЇЌОИБк8RЋЊБ­ЖQ4.&-Аž•’žЇя79ЧЌЈЃ­@+#"/EьБž”šИїБЅœ™žЙB.=ЋЄАB8Шœ—šš˜Є/9­–“˜Д7%)<ШЊЅЄЉХU/*(,=VSH><VйЗЌŸœЁЭ9>ДŸ™šЁЋЕЭ^йТЬU:37/-,0юЙЊЊЕй5-,-/,.8OјЪйаќ>@ЫВЊЗїOвЪмлЮлN:BОЎБПOENжУКЩиийX?6/,+3XККУнЯНЪя[PFоОБЖкGBcЌŸœ ЌГФe.+=W№П­ЇЌПD;436=X{SLFC85<JhgN>2((/:ёШБЕУдX<--;FmyСНМСаэхХДБЪi9/..9OФЋЁŸВ{+*+2FўЦСЪЯМЖЭoяЮваLB@58AФЏЈЋНр5)!$3MШИЖИПU:.-..03@ѓЮкыь_пЫЯЮhF:-.6NЬНДДЙФJE?89=\ЪФМЧn_їпхЬкъвШШл>>NьУЗПШkLC?GRНЏЏЋДУ№d=>HQsХЙЛФЮрЩгейсЮНЖОk<47AlЩЙЗПЧйяMFEVчвжЭа^86=DSбЯнЩЦиC4<<iФАЏКЦO71/<WСКВДЕЗЪS:>CUЦИДДНЦЫщ]JCNкЗЕзJ84=nКЕ­АПЩY9..9ZСОГИЧo<9?EJ_ъpЫТпMA;<MѕЧЮ[F88OжТКАБЙФ[I41.2DoЯТЪЫЬЪЧШсёXLюЭаYOKMЭЫетљс]MQHH^хеЪУЫуW[цЭг~iWJFDDHEџгХШЫйнW>5:QЯМКОаI?<9HtоеУЩЦФШЦШЫђjB:/.9WаЦМНОМЯVG=;ALрииЮиёngPcмиШМЫzC>;EњЮРОЛОоjSLILKI`иЪХЩўKHNvйЮеbE=9;FцйУХХФјA55FbСЗЎАЙФM5,*0>йЫЙДДПЯOI[kъиlR>;>JvЯКЛЖГОб^A38=BдМ­­ИНсJ:<G^зЦФЧшC?EFGRћбвнrL:>LуООЬЮVB426;RлНКЗКРаND>EoтаЮЮЯккиЬФХПНШєO=98=L]ЯХМЙОЩљZXS\oVQRIEFMtеТОФЭпZB>K^ЭЦХЧиL768C_tЬШбЭгшGD==??MtжпдЮУЧЭШЪы\E>?@@D\ыЭШСКЏГФмPF>?FLYl^XнЩСПНФШЬэY@87?LйХОНЪыTLFHR\џоЮЬфeSMS`шнзШЬгтцымюwuqJ?:?IљгЦОМПЫЮO>65?NьыјlнвЩФТЩЮпx`D=>BjлТМДВКТюD@CNеХЪпTJGMeёунфљ[XPcчсмгейџ^KJIKO_гЧТХЫЮыVNMSRP\pйчeVMN[{лзн~_^_SMSiцФММТдtIFM[тмеЫЬетя}zmlфгйёbUURbфквЯфmYOLOcїЫХЦаѓm^SOMZZmюјzeYfтлЯЮакZGBFMOZnеЭЮЮдоf\POKP[џжбЭЯидждюYSJMfљоЯЧЩабміOJHN_ылфыснпмыlsaQMUpчлигдддйуkVPSVgoяќуеднхvZSQRVWhђойЯдяjXTMKOMWoокЪЦШзп|oYTOQX`фЮШЧиэѕћюяlh^[_kљxћhnпиоє^OMViснъуё{џыхшылебгнљSWhћыьъщіфсё[VU_хжгдэ|VNJLTkъчona\\]iтижгр{_\]iоггзвгоёeZZdойкртreќющгекчђdYSQ\hk}ьшєvigc[NN`єлллоh[ZcьфэљётмыяшпийклчkTOKVicѕупрѓlkcNN[clљхцњesіплт№zePV_hсЮЪЦЩфoi\`kjoыiйЮйьиcP^\WYU]XodоЎ’’šžžŽ‹ŽЮ+/"2	>6В
	kŸŸ™NOВ—•˜“‹ŠŒ‹Œ‰‹Ž—ЅЗЇЏМ'*'
0$'2<o0(ФЊЋЇВЫЖ˜žŸ ЋЗћ8hОЉŸ™—Ја?,|Г.lЄЁЧ,-,"(/-'  -ЬМТМЉžЈŸЈЂЃŸšœ ЂЁœšš›ž žœŸЉЖy<K^'"%( '(-:J^PСМБЌЂŸšœЁŸž›ž›ЃЋЄІЄŸЃЃІЇЎЛОb:;?1(($! ((#++7GЪк^РВЎ­ІЄŸЃЁЅЈЉЄŸЁŸЄЂЅІЉЉЉЊЇЌИМџY<6(#"##"$%#&+/0JйZЫХРКН­ ž››šœššœš”‘’“™Ÿ ЁЁЂЊЏБРBJB=.(,+)'% #&&% (/77;A8DфЩО­ЋЊЌКЛ­ЌЉЌЋЉЏЌЏЕЫУбeОЯцЩн]mYG;32GJUJ?:F;UдзэбРОМУЬјфвПКЖЌДЛПЧХАЬИЗЬЛЙИЙ\I<BKзйкQG7*(32.9EE>E</..?8LX_U=HcNZVHNЬЛЙПвЪЯРВББМЫЦкрЧЛУТТРУEK@=O;_ЛбёJH99?>:8iЫНЫeO7CўgеЦММlуПаТОКЧѓЙЙЌНХНйотЧСрлЩQOgf7.=<>[ЮKE0(*+?мV??GC@NЧш|ЦФПЭнzЯЧУКЗПЙУжЮМЕГИТзПЩцкПМСХХЦe_XbWидїУе?@F\YmpQhхбwnA;?@C551//<Lp[@H<?XigњшШЖРФеФПНЛЭЯХЛТТЕЗЙЛНЯЭСЖМЩНОЯНССлKOQH\N{ЯъI89@@>:CLINBK=C@;BEYh;HfЮЧРx>98GйХЦйУЫяZUЩФНТЦНЮгЦuцeкoсютII?JѓwhYNNооЯдСРЯЬъызишgcQ`ЮЯЬT[ўюЭЪктйЬЫеЯфhICIMzoй[GF=HIIYiSHR^TH227O`вЫЧЬ[\]OuЯЯоиЩРЧгимёvйяЯХЩчYJEONпЭгзхYT[ozoOYQ]^ьњ]ышаЦЬЩКНЪФКЖИФжЩЦнвбгЮкиfфWOLA@78473765<;>@B<?<CK<@?>B?[KћЦППЛОТИЙИАЗЗЕММЧЩЛРМЗЙНаоѓъЪчкгдWZKBJ>EKMGCB69<FLFIB;?DcШЦСРЪў~гпсрцйХЬRT^ZzчШОУвRKTL\ZkUGCEVOYRVWOVVCGMWйЬЮекёребЦУМОЩЬаЬРПОНФЬЭТСЩЮбЯЩФзflTHF@=<;8=@<7988>ENQKCBRaюnлпїдхТМНЛТОХЪЪЧвЪЩФРЫЮн]YP]eо[G?@JLGjыI?:AOфЯЮкy`hwяmy]nЦЬнћ]`mнПКМг`ђьжХЛЛЪЬуубЪЪгфооћZ[NB>ORaNF>78;DED?@HDIKNyсохркtчЮТТЛЛОФЬЧФОНПЩЦЩУОФХЯыќтиp[INSNLAGDCHNZh[XaTURgwYV[kьэшлп|bєйзкймЧШЦкlYO^g{s\SS[^^XRONPac^YNVMT\dyэq[fяккьзЪагЧЭйеЯЧЧПамшмоєџипyїhubZ^_l_f^cpZMGLKNPWXJGNZYјйќчveоолуykrњтњчхr]шчоўыъонзЯиі_ѕзЭджлонodюьту_јhoрцкс§frў_a[_k`њd\[NMVoп§idnтхзйЯЭЯбщїќzljобезюywўуть§l_TQU[jpq_W\TYWYYW[OPX_vspчшќpvqjтЯгнштэымкпмжйзипйЯЬЫЯонэkpюттіш`bcjf`YMONKMT]TLIHSV]YUWezфѕ№цэхлжЭЮЮешцибдипиогвлк~^Z^jуюYY_ZY\[_YT[WYXYd\gњьткчbћьтжвдътомййиимежьєfgWgцyndmshh^^]tqmќt`ZZOTT[]PPKVXZclrkjхсокййхлгЬЬвжаЭЅЇЗХICLзгЦлI,&$$&$м­ЉЊЊЋКZF~тРУДз4$ "$'ЗЉЈЊЊЋу-&$)6=ХЉЎ]-))2цЕЄЅЄЅТL('*5ИЅІЇИо4)06жНЋЊЉЉРL/ (/NъДЖИЭ.#%%5УЈ­ТN*+/AАЅЃЄЄЅЛC,)):OДЋЊЈБЙj<3GМЕИЦE. $'7KСБЌТbGLHCуЛЕМТкJB;00<ШЌЂЁІИтYKOОВВЖЫ>58=QjuУ­ЈЌН:,()),:uЮЬЙИУлEE\ЩОЮX1-1;оСЎЋЏЎЌЕє>/1IЮЏЌЌЏЭH6<>=qиПМПнTF>89BOTM@<>FMbТМГДОЧF/%&5OПЏ­ЏЕЙОЪХХЭжкЭЬwH;=RйОКЗЙПЪa?0./9cЫЯ]PC>BJгРХц`коZFG\џцеТНЮf@>KчЛЏАДИЧd<867:DШКЖИУЪз§biUA;@UQIBGlЛЎ­ЙЧW?619PйлЧОИМњKJNX`дЬЬкшлцbMRTzэџnKFJVмХООЩvJLD?ESsоЭФСЦй№]XWњчWE=>?GaюгЧИДЙШM@>:<ES}лвжвЭмr[mсеr\\JFOмХННШЫZ?66?WйбЦНСЬcNB><>GdгШЭжинйшцмpXMAFLXпЪПООЩ]`OF>CMcфЬЪЬгрѕh\NIV|осLHLUсгмиѓWTU]nЯЧЧУЩЭгјVV\WWrргвЯлбдЬЪЫЧУШоL=8<MgЪФРЩввў]JFHKMS}э]ROXmrэuXblr[PlрЧКИМЧyM;<ALиФОМЙЙПЪWGAARcчэозЫШЬ~O@AOVSHEGRcЩНККХзіd?<<?ZоШППЦичщипїj]fиЭжц_OMQ\фноbSO[эпаЮевмњ_C>:<LS_rнжЫХТЪьkRQiьђWOSyгЬЧШЪи\WTLMXiшЮУСФею`XHDDBBJWlwќЯЭгрљp\G?BImжЧЦЬкpgRLZnёлаЬЩЧШЪЮмq\J?;?LzлЫЬЪЩЧвdNFELNVW`wяхйоойрљсйtPLHMzеТПСУжэZRORY^ьжЮЩЫжaT[flwwhULHFJ}иЬЫЫЮёXC?HRхЮФТУЩу\?:<?OѓЭПМЛРЯкъыќiaXHADLaтЦООПТбћ`@<?BOяРММФгXJCGZ`фйнљVOU\[[їтмоѓjLHS_нЯЯадeLDAHMnрЮШЧЧат[[UYWXcmzt§уебЮЬЫдхPD<<>HlкФРПРЫм`THFKSbћфѓупнжЯЬею§\QLLhлЫШЪЫш^IDDKTdнлгЮеу]OJFELWђцмйкнйбЯи~ZLIIFLVызЩХРНПЫmKGGJYlрззфічлйеделx[MLMVkъзйпх|eSMO\mциаЭгуof^[[\dќрмкмйбгирц_NFIL[uмвЫЩЬЮѓVEAAGQVemрдЮбекяjURNLOT_ьиЪЦРСЬк\QPTmтезпфќzmlj§юъыљoёчуонрьѕmcVOIHN[рЮЦЩЭељgROKIMVѓъїюшьшсммм§aVVYVjъбШРТЬл^OHISgыскежимњo]V[lkccfkmщмжйріZTNOYjнЯШЧЬкуr[TQVZoѓснзйнсяѕvvf]PMQWkєойдлъi[POQUZgъмеелрљxlmmgfadtэюнздийсі[TOT^oпигввифјc`_[ZjьъсроороуіkZTUV_h§іойио№mXRPS^cѓнизйоѕ|ohc``_iяцлебгпщљ}ia[Z_lыпкипъюwhj__^_djwџѓђюррюќga[_vёпплкмнопэ}noєьщыєыфоощћoh^\]]]_xънппхwcUOMOUan№уноц№|ўutsnfjќяойзимофьg^[[e№оижеояьјkdbejt|љїјђђџqlfb^_dmnhnыпккншd[Z^yђчтомкоххъъ§wz{jd^^mќєчщя§i^_^TWcr№уущђџ{s~viihfџёрпоижйошюtnfp§ёцпклущm^daеЦЕЕ­ ЂŸŸžЋЊЃЅ›™••–••™ЁŸЌЛfшmіги



!TЗn.*'.И™””’’’““‘‘‘˜ŸЋЌ­Е­ІБ/*"+,%')/BС­<&PЏЇЙ- *8;PЕŸ–•—š ЊБЖИC50)""I­›˜˜ЌЙСФМГ­ЈŸ›œŸЄЈГНТЫB2*%)FЭШСОбтgхПЦа6)(7iU>-'+-( &-/IрТШЩоN>+% $&)%&&)+.:иБЏІžš––˜š›žŸ Ÿ ЃЇІЄ ŸЂЁŸžžœ›ŸЇЃœœžŸ  ŸžЉД[<-()*)-47*!#&/63*%!$!!! #'4EnЧПЬимЪЙЕЌЈЄ œ™˜—˜˜—––—™œž ЅЅžš–“’‘’•™žЇЈЉ­ЖРЪвў_ъsK=,% #""!!(-9HU_NKXWVKMZЧАЊІІЈІЌ­ЏЗЎЋЉІЂЃ žžŸŸžžžžЁЄЈЉЈЋЌЋЌ­­ЌЋЎДЙЦЪПИВЖОЫcI::40///+(&""(/250***+-../3364303/.39743.1:=Wt~ЮСХЭп~HSжЯЫФХТЧЯСМПЩРМИЕЕОЭЮЬУРКЕАЏЏБНЦхЯыкеипeGB@ERъџQY^V^NQLWSkw_O\REFF:1102029:<=FUUID@=<>>CYXwёгЪп\MTнбШжаШЛЕЖКИЗГВ­ЏКСРСЦЬШНЛЦЧйЯТЙАЏБГЕНЩЫсёфзФЛПЧОТш|S:658>CDHEGMG==KPONMTx№йтпрэhA95467<>ArеЭЭЮЪФТаЬаХЛКОЫпчцжгЧММЦлTL`гЬЪЭХНЙКЛЛРУуWKLQX~нЮЭгnKFJKMGCKMHJACUnb\TY^щVE<;98AAPfижЯьйЭЪЯгЮЧНИДДМХдcIIiкЯгх~TNMMWєЯЧПЛКЗЛЪжјфЬЭеяышh[M>=>NxЬЩЭпlpVQFKYVZ№ёытm]JGECA?DBACPYkщаЧет\OQg}фобЫЮйюZKC>CMPUYedwнЮЦНКСТЦЩлu_rмлЯНОРУежцd^uрвФЬЯЬбрaUNPKEC@>>><99?\юєўw_f_PSSXYbrѓb_чревЪЪЫЩбЫЭдЬЬЮдЭЫЫвпcYRWowdPNSj|еЯЬЦХШШЬЮжииошььпелккrћћ~кЪСХЯйXOKECAFEOSQLE>=CBDDBCLNbjчпцпфубШТУЯяYNKKTZbrўuєметфлеЧЦЪЯоуs``ќйеъ|їќf\MEDJMWd`^oyoїъђъыq]VZciрЮШЫЦПЛМОХзь^XQ^kn^RRPPNLFFJIA??@??HL\aќропяvюъмжшm[_nёъзпe]љьрдвЮЮЯЧТУЧХРНЙИНЪщgo|рпsWOR^jѓяјќngZVOSYXTRVTMMTZ\YOOMU\lwюхптt_TV^uf_ipњюиаЯбпыюутивимщћoyt§ўvџztљњdUTONWbлЯЧФФЮз№vъпвбинйдждеимлмрєlWXOJJNNONPYccfWJGGKpфлллЭЩЫЭЯзтњxuwcYY[pђшуьwc[`VOSSU[]\acee[^_\VXXW]_ikобЬЩШЩЧЦХХФЩЭЯЯЯЬЮемюjjіёюјdX]efi]SPQR\e`\ZZ_^YUPS[uмгдкцьr^SROQVVXX]][[\nzkf[Z\]b`rємлжвЮЮаипчхшфегбЮЫЫЭЮЮЫЫдцћ^XZ^bkolhn{њ|eYWNEDEFJQ_Z[\p}эюњvh``_ўнжбЮЯЯЯадкоэќќ}whqспйвЮадмєzg^USZhєъхояxn_RURQUW[jvэюрйжгйыlnьтцщнгЯЯгвЯвлтьфссшјљіyrn]VTUSROKLMNU]hpwg\\^ZZkvўtѕїo~kuхuzгфкЯЏ“–ІU4),O@Рю*
Ќ——™››ЊЕЯШБЄІœАZ6—ŒŒŽž+ЎšЈ$5І˜••™­%!О››šВ
7МЁЁЃЂm.'2КžžžёЊœЊf!D–‹Š‹ŸЬ"@Ј™‘•žЌ8-Е—™ЇO$$QУЂš˜Є^:1,(9ИДцK)9ЁššЎ8  `ПШR( *CBЏŸ–•Ј]!*EЉŸ•˜ŸЊЭЫЊšŸР0!(MЛ”‘›Ћ/"*=Јœ˜šЂV&%(+EюЗБИо8,$")+'"  %)3LОЎЏЬW!
2ДЄžЁЌБЮтТМеюxЬЫN+%*;ЖЈž Ј­РK.+4OЎЄЄЌЖОтШВЅœžЎВЉЉЛЫпШОПЗЊЈНR-,<ЪЉЁЅЉИo(4ЪТЩ[@;-+,&(*))5^ЈŸŸЉг:'# 'WЧЙЎЅŸІМHOмЪКЎ­­ВЏЌВКУНЙЏ­ЌЏМЩХБЉ ŸЁЉУпYE8:ZЧНЗГЏИа]>:8?>1%! %*7A|ПИЩ5&%,38>?NYD=<QѕаQAH35UЦЈЄЅЈЌП<42BО­ЊЃŸЂЊЕЪO>98JеЊЇЌЎЗККЧеШVJ8/:?SХЖААЖд:=1,&(9JиЩПХкьK?80,2GWZ8/5Cжа^g:.244>зЬХНОПЪn?JFCMZЩМКЖМЖЕЏ­­ЋЊЎЯ?3-?хЖЋЄЂЊЊ­Иаx[YaUѕЬШкODLS^UK>GZVA=L]ЙЏЊБю?%+@згЛКГКM.+),=H[\чЮНЕЙЬD::EKH88?KШЏІЂЂЈЖЙй922=ЮЛ­ЈЊЎЗНРОШжbVtЫНУЭњ@=@GтсэD=>aзЭППжбeN<.&$&-:?UoпЬОНЮzSFFUzL:8>kШПМРШvB=?9=cмМД­ЎЖФмку[MYLIO^я§вЙЕКРЦУј?/0:IЬНЛТшWC97>xлФРООУЯнbOE>4,)*8BTшnаТЛпE,&#).4CXZIHFGKЭкMМЏРзЩеЮЛЉЅЃЁЂЅЌГЙКИГВЎЏЕИНЮKBBMкШУУ§H825KгЫЯзчѕ7,())*7;BB:-$"6љЕ­ЋЎЩT;;=<760+%$)*8ZОИ­­ЗПЯCFреДЈœžЁЉГЮйЩНЖБЎЌЏЙОМЛННАЋІІЉ­ШкмЬМЛЦФнI/,*+.3CMіу[>/+**/57>>92.035:>A</'!"-6dШНЛНШqgLCJZwЬПФЪПМЖАЋЈЋЋЎЕЦзлТЏЋЅЄЅЉГОФХЙЕЏЋ­­ЎЛЯI;:78=]свЯйпnrчсT>0,('$'+18DIR|G3'"!#'-:>KI=<IfмЯЩСФвVE=;?RщФУПНСЦЪЪОИБЏ­ЋЊЌДКПРОМЖГЏЎЎАВГБДЖЗЙг]JNX№ЫФКИЛНЬ`<70069:<<APUKGA<6/.+*++/2:CrкпmA4//4<SYRI?>AADOoЮУОНСПММЖБЏБЕИНОЦЭЪФЗЏЈІІЈЌГЗСФЬгЪСКЛФХЧЯЭЫЫЭбzG?<958DUЮХЯ`D4.,-279::;??;941/1;943568>VtцюL><;>NzЪНЗЖЛПЩЮфхогЩСКЙЖГВБЏЏЏЏЏДКЪЫЧПЛКЖДДЗПШђ^NLSToрЧХЭг{YMMRSH?;6788?HHDFB<7/-04<EYZ`m[WKEKKDDLVV]yьцЭЦУТШЭЯЭЩХРРРМЖЖИКСЩп№уеЮЧСППНПФХЦЧЩЫамрнкЯУСЦЭйфx[IC@AGS^tњ]WZPNMFE@=;;<;??DKNHC>;8:=FKMXZjјъшюxoшжбЮЯфлЮЪХЧЫЪбдаЮЫЬЭЧЛЗЖГГИНШЭлфзЮЫЩУЦЮдоцнкушgUUW[czюцёяiWB=98=DECBC<;@EACEEDDFFMMYmt}xufZXZ\TOZyфжабињkэжЬТППООНПРПОНРСТШлјXR_ћоЮЧЦЧЬленysюйгбжчzZ]acZPOHDA?DHQ]кХДВLПOsXЯамxЯ.))'')3,(*23///QЪА­ВУЯЗЌЌЎЎЌЋЉ­ЛНЪФЭбљTUњ}ЯЭЭь@62211666=NмЫТКНСНЙМКНЩсU@?>BеЦЕАГИРФЪЩоd=<;80.7E_кЪвV>81/339:BLf^VlягТТРОЧЬсo_fмЫЛЗАЎЏВОЧЧОНРФФХнjXVbюэлалох]M>=96;>EJUk§ЫПККПЦШЪўL?@XдОЛЖИХбm_^RD><AHLJEB?>BDA@=<<<AHU^яьшрзнЮЪЪПНОУЧЫЬЪЭЪЩШЧЦФЦХЦЧЧЯй^SNNU]lbefєzjpќуйіlKEHOXlпЯЭЯгмv[GCFJZћклс}_SMNWSUPNIHHMU^_USRTYњмЬЪЭЭЯвяeUQhъЧФПНЛКНЧгs[juмгЪХЪмxn}§ьы}ie_NLLOSUdbgi_gvюозгзођ}]\tєллекмьk\_^gh`RMFJKKOXwйЬЯ§YJJFGKJQR\bсзЦХЯиыээсйздЯЪХХШЫЮейнттлфнзЯдтlPMNPY|ЮЧХЭпo_VNEDIJesќcgoпхќlUSWZUONMWjq№сєfTQNNPOPOY[}єпцяmњ~ѓчспбевеЯеЯЯЫзжсъуоннгЩЧХгьZRTpюпбШЪгє^TNNMJLMlыкэѕшкбо]KKJMYgvткгхpibYbч~rќћчыњdozьщпыyzysљgUOWaѕытуэk]TWcjkjњѕчылодЯЧШЫЮньспсръёћvљtќy}sнбЬЮм]QMKKOvпсыn\W\abєsяѕхчќlsўяffoўњѓoяќ{_UMMXaZgфрнт§ierg_VW_gћпйЯЪЬЮрїiiimuuuoe][ZlљнвЬЪЪЮш_`flэсэїe^NMT]ecfk№tj[XR_{јd`donуухю|he^[\aejrїлеггтѓ\WOSMU]iсджйп№ukkccpup^ZVfsъюшойочэѓ|ъмксtdfjhџыцслзс}gZ_lђсршъєe^_dѕтеимлщљp]YXZjlx§ёї}e[XY\XY^rііёѕww№џјylijfppqњѕшчщ§§їюцмедглхg][bu§уойнрё}љшнкивавощl_[Zduzєопптўlc^YTRORY_goўm_bi_dc\[VUY`~њohfoђуллнмнхёnfgvсйббвемрцячыэђыђјkbdmc^fїхуцьіњѓ}kfdhњьплкйзжощьюodY\aj|ьшхщяћh[QNQX__``^cc]`mяпмлуїf\XZ^n}эчтшџuwxќz{}ѓііљомегвжлллкйиззйтыld^^asјѕѕъщъѓћmafx{ѓхнйзкйфъљўјшяњullhghhge\ZTPOPOOOOPT\_jќсмнъќkomkfiўщйжвгймхѓ}~єснмоохцњzvzx}љъупотуэыїxѕэыфпхћ}z~yўyxqymmop|ђђ}vc_\`fikkc^YWWZbilnўњїјnbcjlxxљ№|{zvhimџѕыьыщшьъщшь№іљў§яснзийлмныэєњюыууутххъъёіѕьыэј~oibabrѓчцшыњwf`YWUTY\ejcbceifcbbgmqsmtёюэъї|{џ{љьтончъxpmo{іяэцхщь№ђђ№ёшццчцшььхфуфнммнрфэћwrsyrvowz}tomhf`]YXY\binjgc^[XY^buєшщцыќpjeekwяшуфшьќј~ў|{tzurq}єяэщщьњћzvm{ћќўђьшычцуттфшъъюїіѕёэъъэьщ§lfijprqorulf\[YZ[]_cmrnmdeadeghnjpwљђшчыьююћўќіыцчсонтшя№ѕьцхцщщыяіynnuzљіњќsnmnty№юыъыэ№эьэююёьщьёјџџyvqmhfdaa_bghllkiljefinwџ{xtztoy{ќјюсуъюјїўєљььунмфршљю|ъыяъштѓщыьрyzouќyњлцюх№nцY[Tgfyіјэеœ‘‘’Ÿо	Њœ‘’”
ž­™-*™Г­
+	
+o’“ЅŸв!5Зž—‘Š‹Ž’Ž‘‘Ž”ЃШПќ?!0!+A!"'$(7"#ЯЂЄЅŸ­Љœ”“—œžЏНA,_ЮЋžš˜ŸЄЈЖЈЅNRФТ3!6UУ(  #7Z6@Ж ЊІЇЇГХПЃ ЌЉІŸœœœš•™œŸЄЋЛОкЬШј/*1>)"$*&$&%-::gЯКЊŸœ›šžžІЈЃЂЃЁœœœœ—››ŸЂІЌБЪI4%$&(#$%& (.?CE::њЏЖ­ЃЂЁІЇЋ­ЎЇžž™›šŸЅЅЁ žЂЎЦРъVCA0,2451,-#%  "&%)1*-=FхљT=/3пВІŸЁŸЇЄ Є Ÿš™™žЄЇЉЇЇІЋВИФdЬбeIJBA<//$" $"))-0+)!!.>;LBFWHVСИЋЉЈЋЙВЊЈ­ГЌЋЊЅ­БОДИМИУнzyјi=:/3+)7:<:?1313:49FUR=9:49GЬХЗНЬМИАВОАЎЖИЕБЯkwЮЮЩ­ЎБШW;.4I?GKщџMND:3EA9]5G=7ceZUXHЯнзкgЭФГЎГЏЕНОХбнмжСНЪШмяW^WPCoI@4(3/.342/SQL\;807BVнзЬиBзОЛБЋЉЏ­ЊЉІ­Ћ­ЈЊ­ЊАМЎЏКЙМЯKe_EHBљ?8*!#,2/$-&(*,,+6<A52/7eХКЕЏЖЏДВЏІЃІЉБ­­ЎЇЃ ЂЇЉЊЖОФШвЧЬ_VZ<1,,/023.,,-/,+'('&$#"%.>йЧЙЕНМХЦУЫЏЈІЄЊЉЌЊЋІЊЌЋ­ГМЏЎЛПЫжsPюX7CH:;>7-+&,'*,2<?;/0??DANx}зжТРЩТЦЛЙЙДЪЮЛЏЏ­БОжіDљжв]oa==AHЪЩЫпї];7//-1:Fbн}RGSёмкЮЫЯЩПРУРЗПРНХЦМРЬмnщФЮЧe^ы\_O@A=>CIDE>1.,11Cю`\OBDO]аЦЮЬРМЧХкyjКЖКЕБЌГЛНЦМПХШакШќWLXNK^OOIM?60,--4=KLNEIJLSNU]QzййЭЩОКОКЧЬУПУОЗБАЖМЗЛЦджтнoeO_NW]SRE;533266<IZћчMFDEJ?KORVQjLkУКРЗЖКЖИОПЧЧСйвnVыjxЧЩЭчdOHfPTXZC@;8JLNVZWHK@:IeзбжeKLNфЭПЛКПЬоУХЦЧППЬшI<JQїдХИОШUDLEKO[B>=@TW`эќыж}cHGFZ~ЬЫЮвппяиЩгЩШвЯиоаЬемцTbія_qђнЯЬмb]MA@CEFBBEJKFKVQ|гЫЧдYEPUрЭЩШкШеШКЙКПОЦйghXєяиЫгдхVKHHDE?;24=BKій_>:>EчЩФЧЮщфовеЩЯЭХжdXSfнЩДАЖРUJKRаУПЭмVQјзвзоктљSXSEE[lщl[KCEFOT_MNYYх}_ёпочмЯт{оЭЭУСЦЭщфпбЦЧаЭкил}ok^ыпојLGJHIBHTROanљчкмцќ[SVi\XcфаЮЫЧЧЭжиињя\mЭЪХЬвэUOOKLRQLVZ[]c|exѓe[KGIG]mсэкиюђэьi]ужъoрђkьжгаажсrєcMNdnabdvfgюэшѓu|nюc`^g^anљнkbo}jъзоэўxигаифaXUZSX|ыьеагфьuqјьуђi]nвЪЩШЫдяeUoэыыhєящкоеншc^XKILU^afiPLDCN[ь_RYjћцЮЪЮбаесьёьѕхЪХШЫЮЮвЮЬЭЯапщ``ghьяяt^aZXNTLGE>?EHV\fьј~VROO]їlhu|усбвббШЬгзупжЬЫЩШХЧнусэwmњ`nq_g_\KKKDEHJEBDEQ_jmc^ytшђтлнкЯЯППЦЦЯЮХУЧЭвЫЯбЮеЯ№јceoы_MMKIGMMLIKKIMOSNLQZ_mяїfэйЯЬЩЩаббаеЮгЧЩЫЩЮбоПЭДАЉИКЅЊЄЅЎКЌЌЈЉЊЊЎЇЁŸžž žЄЋБАы"+На-*.+JЪІœŸš››š™™˜˜šœœЂЊЊДОщ/%+,*$#*4§чЛФ( ('$ (9iЗЖъ-($*=ENЮЇž˜™ŸЉЎЛЛЛщEBK9,  &>СІЂЄЊП|nlбП­ЌЎ­Ў­Њ­ВЗКФeі?<JЫПХлcO?:7;2/*($(7IУСE3+(# '<ъаИГИНЪV;3)" ,/38I[`[\YљЧЗЎЌЃŸœšœŸЃЇ­ЏДМХХЩУВЋЋЉЈЇЉЌАЏАЖЏІŸŸЂЈЊЎЕЕГАЗХй;.*+-9OлСТT8,+,-0/-)##!#+1.&""')(*+*,+++,/>KнЛМППРЛИАЋЇЂžœ›šššš˜š›œЁІЋ­ЎЊЅЃ  ŸžžŸЄЌЖНбn?9473553*#!&*+**,-.45504:>=>GuЩНДВВГАВАБАЌІЂŸŸЁЉЊЎБЎА­­ЌЌЋЊ­ЏЕИКЖДДЛРФХпebJNTWUMA846=FKLF=3-)'$$'),*,+)''*4?FI?HSiйвжддбЮгажкЫЫЧСФЫвиоЮХПЗДГЖДЗЛТЩгШННКЙШЮk_OJ>8>M]ѕdO@@C??FRVW^B:9:?IS_џ_K;69=M\_№ьёрёOUMRYЬЭЩЪЩЧетI=9<GMRYёv[QnёњtјcYOFISъдШОЕВЙРРНИБЎЎЏЏ­ЎДЙИЙИЗКТo]ћыbY\[SKI??GPOLGD?A?:5225876:??;;8317?NX\nяоррлЫКЗЖЖВЏЎЌЌ­­­АЕРУСПОМЛПРКМПУЫЮЭбЬЭгЬйгѓPC?>AAJKK?=968>>?@HM[dcgYH:97:@CWпЫЦЭкtj_^l^ёШХЭбйнзЮеииЭУФЬищпчпЯЭФТЛЙЙМППШбкиЭОМККШЯfH@@FMLKIDB??>AEXg{fp_QGCCKPSWSW^UI=99<LbзЭЫЯбсeNMNckсллзкэ_^bhf`_ћvee^gшмЩОПРШЭйпнзнаЦСФЬжmglолновЩЬЭЮЯЫЩЮабеш[MGIOOYqbb^^dWI?ACJNMMONMME@?<:6558>??H_аЫШШШЫЩЪЪЦЩЧЧЦТСЦСОМЛКЗЗИЛМКОРООММОСЧбоk]fmjZMIGGDDKNOYYb[Y[VVZOIHHKLGC@@FMPkйЭЮмыNJGBCDJL]nfdb]W^WLLRZюмЫШЦЪЩЦТТОМЛНУаьѕlnћьеемnw~§c~йЯЬЭкф|gWOOR__YVXQLLE?BEJNYWTPLIJMN^akemo{цтпснЯЦМККМТЫепhjwvk}|эєjRNNONKKJKOQvхлпоксхчшпнжир|oітспфeVQOQ_tиаавбгнщеЬШЩЮт_RNSSVTNJKMOQRUVSSORQUZfaWSOLMR_}ччътнЭЩЧЦШЪЪЮвгеЯЫЪЮЮЫЫЫЪЩШЬЮикидбЮЯвгйнљfNJHHIKLLJFFFA@BHPXћчуњaUUcfшфшцомиклсьчьёьцяїj`ooihi~нжзйшo_YkрйдЯЫЧХЦЩЫгнцпхэјpїєыюхнх~icaWUX^ZZ^^ZYSNLMLHDFIKRU]^sъхэ§v§ыумиккйлижлопчьяыёk`[[qѕфмопрѓf]\Y[fќпрцѓјєпибвжйѕye_ZZbiimifd^_]]a^YX[_mtg_]_qќфмжзнрю~sm{ырсфнлмидбгкцёlbimgd^]\]kmc[WSKILNOYbowqvіынллпчыюыкеЯЭЮаггжекпуслнрхфмполнш{qc\WQNOW[k}љ~^TMIGGIKOSX^bffrvіъѕmіщмлккгаЮЯаЯЯаикикиззииоьђz_^ZY\YVY^\bginj_YWZYYa^jiюoin\]XP§ngd[jяђ§эдэжЮэайхьѓЪЦЦ’šЈБ7..rJэ{:Х—––•“žЇA:L:=­ЫF*Ђ”—“”’ #
+%‘Ћ(2К•—’œ[
+[Œ–Ÿ=,ГŽ‹ŠŠžИ"ЌœŽŽ–Ї	ь‘Їа
Ь”ˆ‰Ž–R(
#њ›••ЎN(1›˜–ŸF$6ФЋЅІЖ,'-:L­œ›ЊВЧ-&*&,ЧЈ˜™Ёу:AЛЛ›ЃЋм, (8JШ>JЂ˜“šя/+- ,XпЊŸŸЊЭЦЛЉЈЏR,!.ВЅžš’–Д5+ЎЃ—–Їв%!/EИЊЂЄДЪ<%&-I[?2/>W{ЎŸ—•—œв$	Ж™Ž—ЋОЗЕЮWUЫЧ9"&>ЇšœЊЧ1"оЏЉГP5+:mЏЃЃЊККМr:8OсФИЎЎЭ;+,?МŸššŸКm$)8АЃŸЄЗШS74HL/#%=хКПОЏŸœ›ЁЗж6))DНЎЗОГЇЈОS@FYщЫЪжM?N]>../3EUrB60>_кРПгJ8?DBG\ќћЬЖЎЎРиKIJNпщїJ953<Fgв­ІЇЋе>>/'(3EгЩРЛЗЮiќФХЙЛdD-,1]ИЈІЇЉХ=#%8ю­Ѓ ЇПb,##-џОНЦФеЮдaљ\H:$%(-CжЋЃ Їгb;,&&<{МДЏЏЕХхMTI>UФОРA5=QНБАВШQ5/5<ЯГГЋЊЌИt7268<D{ЪЭОЯШШЙЏЎЎГЬ;)!#,=ЦЏЅІЎНкA;58>AI{ШР~B>IzяЭжIMmжпYьmХВЋЌЙX5'*5VИАЖББЌЎН?376@LnъФКЎЊЏМN4,;?KAD_вЮИВВАКЫЮп2+&)>WР­Ћ­Ржnv[H?@@ЬЗУкJ4/4AЫЕГПs;4>HеЧЩКВДЛ`3+(1=IYЪПЕЏЎВЩеSHReJ3-/EЩЏЎ­ГЭP84//:IкКЎЋ­ХчEA:773/6LлСЪЕГКФрdE=+)8иОЎ­ДМщU>77?LbгЫПЛЗЙИЛЯ];/$#->nСБЌЎ­ОR=0.68@IbзЧЧРТЬЪбa_яVH@9<NЩВЎЏБаJ:;<BrfцШТРУжK?BUђзкюTG:7:KФЕБДИФR/,2>qСЎЊЋ­Иі.'%(5KЯЖЋЈ­Й№MSJ>=?40/3EпЗЎ­ЎБЛыN,&).=bБЋЉЋГЧ>48O|ХОЧкE<GeocЭСЛПиT7/6?ыШРОЗОV5/02?rЧМЖЕЙСw_IE>;I`nыtпУПЗЗДЗпO1)(-6cХГЏВЕРаT>505BsзЫ{Z^e№ЬЦХкьiQ<:GwПЕГГПm;804;EЪНГЏЕХG<7558D|ЯФТТЩЫЩПФљP>85/2<фЫИЕАЎВЬ=527?IрШУв_AAS]ЩЛЖЖОкF?9<?EaьгШФЪлnOW№нЬЧЧЯqRKMOZkнЭРПТХЯЮЯажзV@457:FhСДГЗЛйM6/.0:?amЬРОСШЯёыaSMBC@?FNзЗЌЋАЛfF;<Hdпеегє_IKJbкЭЪаљdcjљлЬЭиэ{VD96<UРЖ­ЌБЙљJ;977BZЦПЭвдыzc_~чlYFA@>LуЦЛБДФзQ?79?XееЮЮЪЬЫлdWJQxэm_U[YoдХЦЫэG?==JSкФЙЗКПбпE<9?E_жУУСШдоi`eщуёTKQWjpкЯЬЬжнZNJKW^lдЫЩвiVMO`іеейтTQLFRmЭЪШЩбrH>>FPяиЪХЧаој\Y[SMZћјухзЯЩФТШу_KKMOUdmиЫПУЫе]GBCQ[ѕрмлззхьчыhTKDBFZшеХТЫЬЯжtZFCDIfлЫЩЫЪЫЭјoOLHHNVuнбЭвбвыx[MEFPnзаЫШЭадфl\TXџуЯЭмчклйшџn]XW_]b_mьЮЮЪЪзьM@??CJbјдШЬељdituj\ON^џиЯЭЯаЭдуSMDBLgеЪФУЭш_^UY\bwнмощzlj_Z]ahnwѓфў]WiнжежнsNR_оЯбвейзтырниклзиrXHDIRlювгитq^SCCKVfћпьюnwщцѕtf\ZUYiyїнЫЧЧЪеоePTUVayнзздцq§q\SZQMRYoнолспнmd^]SNsйЭУЧЧУдnT[_N^nоЬмŸ‘›У	­œ“іьЇЖœ>[!Ї
+mŸ›–З&НЃ”Œ‹‹ŒŒŠŽ’––“žНмЌІЌ?:)KК! 'BE/7F+*КзКЂЖеВЂЋГжЮи^43CXзБІŸЋІЎМДS*'GкF+8BAЪМм^!'' 2аИаЖЃ™ЁЂЄЃЋЋЅ•”ššœŸЃЈЇЄЊЎГЋДЏЋВЋЉД~=ѕЦ<3&( #,(%),2>еКЊЂЇЇ­ЌЇЃЉЊІЋ­ВЈЌЌ­­ВЖАЙМзJMUЮйЭШpJ>;><50+-)%+&1C}ЦЛЧы|УЪШВЌІЈЄЇЅЃŸ›œœІЃЏВЎЉГКДЫpтNьL=30401.(& #5>8?A98>нЋЇžЁŸЃЃžŸš˜˜˜›šžžŸЂ ЄБЎГПmмQOaRn60('""%().+(#'3CFK=6:48HфК­Ќ­ЛШПСШнХЧСЖНФчФдgуL79=9?62'%""-76.3*/-0A;NaШПЮЯШСЛАЄЂ ЅЌЉЉІЃЃŸžžŸžžЄЊЏЏЕВЋЌЎПЦlBET;;:<3-.-'!&#$.(+)'+(++++=OMQI?>JX]ЪЫЭУЩХЧХЭХКаЭЪы]Z[IKЦчbK3LIDMG;8фйЩКooFэ\зеФПЪЩЎЌЋЉЇЉЗЎЉЊЉЊЉ­ЈЌЎЉЎНЕКФНН}=?@5AQC//()&##)+,6;?F;4=KмЯЖЕВЏЖЕАЇІЉЏКЏАДЊЄЃЅЈІІЏБЗМХПЦSVlC85=G<:1./2/53//08:20,/;oгФЙЗФЫбеЯМГЉЉЈЌЖДАИЎЕМЛЗЙШИЛвdhOA:I?/41(,,-+,,61;9>FD:4:ўfisтаХКОКИЙЛЙГБЏ­ЛНЗ­ЎЌЊЛЭўXЪНМЫЩЪX?::HFQNG799083=:JLPG:69@LLOJ>AOWGF[LrмлЬжЯ~fQG}дПжлЫзжсджючрбЮШРъcRђкОАЖКОфЬШЭШТЯюЮПФЦXMAfеЯЧТПиппOqSOWYcјdbSMH<A7:AD9:2.02C]міRGFAJTZрйqэфщдџр№угъйСНЮЬМЕБИЛЙЛНОЛССглWшgјжцьID><<@FOлхркчZLGCMSkууп_cHMЬТФППЩСЦ№пZiнmюhUq`\иxO@=;:KFNGH>845<CMPO><<8:DVmлнхgѓщФЛДАЏЖХбТФЪЧТТЛИУЪЧЮЬЧХНПЫo]сzюмдhQECWM[QVPKMJ@D?BW~цщяf_ORaTunVUPObѓїћљX]iхrbhшиЬзv~ZKORLLGIMOWMMWbмЭЧХлoSчЯЧОЛНПОЪУМООЩУЬбвЬйбиаЮлџR@=<>E^L?:8>CDaъI=8>JњдЯсoMKOf|ъihвч\PNZfкПКНнZamяЦМЙШЬg\нЫФЬЯЯеляижTJcmфrVUMHLVVVMNgsмфtпйепшењциХХУЩЫмяђяЮЩЯдЬдийѕюjalћ{dI>@CIELXQEEGBKIKJGGKYф§ѕn|члзЬЫбснмгЭеЭНМКЦЩоoётгежунилзйпктйзрфeSZSdgєєђ_TXYhVPY^V[ql]^ћысляYQWPKITYQX\ўrffёѕ^Y\cye^ee_oєчпyhvшїоехяќgъжЪЭемѕ}ыёодмчккпјцќючйЯЬдцнаЫЮЬЬеє^Sћіолnrk`hh§fUKLNJNOV[Z\UHHC@JZёXOY\u§бЬЮЮекtirўэцЭФШЪгвомжйжнчы§њхижуфj`lYXNHHJNJObd|ѕэрєџb[X^ыинмлщчпизмеакосѓ~шзбЬЭЫЭьњјod__TTNOPROFHJGHOWNKKFMY[\Y]ђяйривпгЬШСФУЧЯдЪЧФЦШЦЫЭЬдбфv]^nть]XSNQUZ\SQPMMLMNNSlvzэiQYTgшжечмблгЯеотзофпh^Y^{ъящшggnf_`уdЇЈЩзB9>[QъS<(!#%ОЈІЅЅЃЎМўвРЖЖЉИi&%%&/НЅЄЇЇЄЮ)  $2:Я­И6"*4Ч­ЉЉЌЩ2'/НЊЈЉМ}-#-2ЮЏЃЅЄЅИЪ9&&+:[ИЋЉЊР@%%'>МЈЎыE().9ЕЅЅЇЈЎу?$!%,AЫ­ЏЉ­Нб90OГБВНM3#%-.DЯДЌІ­ЩвЬе]йГЎЗКкI95)*4јДЉЈЏЬI:8<еОПЧ\9,/7>hQШВЇІЖP,+,,3PЫКЕЊЉЎМzeжИВИм<./:VОВЋ­ЏЌДн.&(4vБЎ­ЖY:.066LэРКЙХ]J=9;Dhщю[GMV{пЙБ­­ЖСC0$&6MПЏЌЎДЙФЭЫЪљbT_vV9/0>VТЙЖЙУнM=/,.5aЦМШюVBKђУБДЦиУСЯw|гЮЭУИДРяC@WЮИАГЖОХQ:.,,-9VСННЮмљWJOB529IMF@GёДЌЉ­РлF;7<ьШФПЗБЗсOMNXgеЮаєpш~_LHJMNSULDEWјЫФЦЯ]HIFCJfмдЩОЛНТЩлхљпйvLB?BKYйдФКЕМЩK<:68>DLXg\mнaOFNVkWGI<:B^ТНМСЫ[B9:JyЫСЛЖЙПдщSIA?FVЦОТЦЧЫЭйюэ^LE<AIU№бЪШЦдOVKA;;IZлЫХУЦЪйяmWNYиШЧfV`цЩФЫЫяUWbnіЮЧЬХЬдoUADGAACP_fїhфыомогЬзeD:6>HlЬОНРПФЭ№]TT_cьЬЩецўщивЭеўірпєgохЧОЙЛЬў?866C]гЫХРНХнH>;<HJZ^§рЬЦЯьK@@IUXHDMZлЦКЖЗПЪжxC>=DlоЬРТЦецшзрoWSUќЯвнnLHIRјтйs^WlхйЬЭвЭвжчSC>>HY^ьвЧТММУмѕOQ_ўkNJKeеЮЭЬгxVMJA@KTікУОФв~XO@???BIcрлкЦУЪалк|XBAN]гФТЧкlYMGNYatрйЮЬЩЮлъZK?:68KdпЭЫШФТгшTLGOQ]h№чйдЪЯбЮлэкгzXJEKVнШТУЧкWMIGIMN\ѓнаЯнVOV^inpaRNKITћЬФРПУЩiLEOpЫРЛКОСв[>::=NnЮТЛЙПЭxrh[ONI?::ANzЪУСТЧдjN;9=BOјПЛКНШсLGKVіоЯвлkbwь№tндвзп}NJUeиЯаайђMDBDJUтиЫЧШЯоaVNRON[cjllщеЯЫЬШЭђYC<;<I^ЯЦПНРЮс[MDCEKT_f^џѕщоаЯлїb\LHHTмЭХЦЩчXGDEMXiзбЪЧЫеo\VNKNaсвЬЫЭаЯЭЫвј_MHFDIUшйЩФПМПЯXJBCGL_ћийё{ёпйзжжжљYLKIPhїегйльkUONWsєйЯЪЬмњ]ZTUY`vцмкмйвдйох\NFGKQlчЮШЦЧЬзZK@?FXhщъЯЩЧШЫарј^WNJNO_{мЯЧСТЪщ]KGIWlхфўu_]XWU[]ajhfqяэцсты{xi_QLLOoдЩРРФЩнzXUMKS^рйоооъфуорхќ[TSRO\їдЪСУЯоXHBDM^ѓчйзггиу~gYZtxgmќѓюлгЮЯзяYSMNZiнЭЧЧЬзјlTNJKOXoітйкнуяњlneYLKO\}ыиаЭЮжпi]XUZ\sпЯЬЬЭешђolked^]jt~плкотфnXJGIM[pркжен№hVWROQ_ёшнммнмкмфm_VV[avъсиЯЯдкј]ROR\fэмеджміlc_\\][cqчпжбвкхяwd]XZ`lфзЯЯзпчєqnbddgouђэщыыпнфіo[UXf§хщспттхюk_Y[hkјя{ќчпоч§o^iachwјчсруэћpmhfghmxѓьхучыћukihimnvњ№ъщщыѕџoifglp~јяьыьэђ~ukhilw§єяяя№єѕћ~xtont}џџџџџџ
\ No newline at end of file
diff --git a/src/Makefile b/src/Makefile
index bfe919917c..6bb42efa67 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -14,6 +14,7 @@ BIN_DIR  = $(PREFIX)/bin
 SHARE_DIR  = $(PREFIX)/share
 PIXMAPS = pixmaps
 SKINS = skins
+RINGS = rings
 METAL_SKINS = metal
 
 INC_OTHERS = ../stund
@@ -106,6 +107,8 @@ install:	all
 		chmod -R a+rX $(SHARE_DIR)/$(PROGNAME)/$(PIXMAPS)
 	cd ..; cp -R $(SKINS) $(SHARE_DIR)/$(PROGNAME)/ ; \
 		chmod -R a+rX $(SHARE_DIR)/$(PROGNAME)/$(SKINS)
+	cd ..; cp -R $(RINGS) $(SHARE_DIR)/$(PROGNAME)/ ; \
+		chmod -R a+rX $(SHARE_DIR)/$(PROGNAME)/$(RINGS)
 
 uninstall: 
 	rm -f $(BIN_DIR)/$(PROGNAME)
diff --git a/src/audiobuffer.cpp b/src/audiobuffer.cpp
index 06f8db3318..349d033d53 100644
--- a/src/audiobuffer.cpp
+++ b/src/audiobuffer.cpp
@@ -54,7 +54,7 @@ AudioBuffer::setData (short *buf, int vol) {
 	short *databuf = data;
 	
 	for (int i = 0; i < (int)size; i++) {
-		databuf[i] = buf[i]*vol;
+		databuf[i] = buf[i]*vol/100;
 	}
 }
 
diff --git a/src/audiortp.cpp b/src/audiortp.cpp
index a5f8a8938f..91eb95a623 100644
--- a/src/audiortp.cpp
+++ b/src/audiortp.cpp
@@ -245,9 +245,6 @@ AudioRtpRTX::run (void) {
 		// Send session
 		////////////////////////////
 		if (!manager->mute) {
-		//	i = audioDevice->readBuffer (320);
-		//	data_from_mic = (short*)manager->audiodriver->audio_buf.getData();
-		//	qDebug("audiortp data_from_mic 0x%d", data_from_mic); 
 			i = audioDevice->readBuffer (data_from_mic, 320);
 		} else {
 			// When IP-phone user click on mute button, we read buffer of a
@@ -256,7 +253,7 @@ AudioRtpRTX::run (void) {
 		}
 
 		for (int j = 0; j < i; j++)
-			data_from_mic_tmp[j] = data_from_mic[j]*manager->getMicVolume()/10;
+			data_from_mic_tmp[j] = data_from_mic[j]*manager->getMicVolume()/100;
 
 		// Encode acquired audio sample
 		compSize = AudioCodec::codecEncode (
@@ -294,9 +291,9 @@ AudioRtpRTX::run (void) {
 				adu->getSize());
 		
 		// Write decoded data to sound device
-		manager->audiodriver->audio_buf.resize(expandedSize);
-		manager->audiodriver->audio_buf.setData (data_for_speakers, 
-				manager->getSpkrVolume()/10);
+		audioDevice->audio_buf.resize(expandedSize);
+		audioDevice->audio_buf.setData (data_for_speakers, 
+				manager->getSpkrVolume());
 	//	i = audioDevice->writeBuffer (data_for_speakers, expandedSize);
 		i = audioDevice->writeBuffer ();
 		delete adu;
diff --git a/src/configurationpanel.ui b/src/configurationpanel.ui
index f4c90f4994..5c41ea5cd9 100644
--- a/src/configurationpanel.ui
+++ b/src/configurationpanel.ui
@@ -148,7 +148,7 @@
         </widget>
         <widget class="QLayoutWidget" row="0" column="1">
             <property name="name">
-                <cstring>layout17</cstring>
+                <cstring>layout19</cstring>
             </property>
             <vbox>
                 <property name="name">
@@ -792,6 +792,27 @@
                             </grid>
                         </widget>
                     </widget>
+                    <widget class="QWidget">
+                        <property name="name">
+                            <cstring>RingPage</cstring>
+                        </property>
+                        <attribute name="title">
+                            <string>Rings</string>
+                        </attribute>
+                        <widget class="QComboBox">
+                            <property name="name">
+                                <cstring>ringsChoice</cstring>
+                            </property>
+                            <property name="geometry">
+                                <rect>
+                                    <x>20</x>
+                                    <y>21</y>
+                                    <width>150</width>
+                                    <height>20</height>
+                                </rect>
+                            </property>
+                        </widget>
+                    </widget>
                 </widget>
                 <widget class="QTabWidget">
                     <property name="name">
@@ -1115,7 +1136,7 @@ Montreal, Quebec H2T 1S6&lt;/p&gt;</string>
 </widget>
 <images>
     <image name="image0">
-        <data format="PNG" length="3693">89504e470d0a1a0a0000000d49484452000000ad0000003008060000006357fade00000e3449444154789ced5d4d6c1bc719fd08f8a0044640073d584150484113802a1084aa72a0da045e219750729050c9c1529b0365b9b0945e22bb17ff040ee3832333855b298552d18051310104d907995601a3a203065400b9a40a15940b06900ab5580542410bac410b8281d7c372a9dde5cceecc924ee4987379367767e69bd96fdebef976664420a24922aa1b02c03a0000e9326207a87b3d0d7c6cb166074de455144a807f621e741ea073335c54e2c0c8cd1c00e0fb6e78031f5d749531b709ac16016f34014a01747e461abd8b4078160d076ea034ca6500a05c7166545954e2805a2c352444038550e846ec00851d778c2a839154aee1b80d7444c71b729b25f863f565563bf44fcc372443036dd1f6066c02dec587cfb056f446130dc76d2017b917729b2578a32e18733c018a0134310f8a01c16b1900c0cc8a8ad28e7839de0b33b53b2e80b18949848f0f213c3854c630c2c787301a1d058a80aaaa8f8e24019098adef802e154b188d02e1c121040e29080f8681a2cbf21f827d2cac0fc35ed00c4511b629bd8aef8471510290047c1d7ecc7424e0ebf0c3df11e0feffd4b9c823c1eca7ce452af6d7cb5e35ae56f5c7c8c9115703f961d827c4b4a51d4833ac480acf655c695c378c1b3e3e647a10c19e10c62626010053f119200a283dc1ca757f4700996c66ef33ae6e7fbd1c0230f593bf2380f0e090fbf2eb6d1f07ab7e50d62535e8b2b3c306a6d335695ce54a5adca16066d8c26c89db81c8035081c45cc2b67ce451fb8370ca5f43f9505dd807207048a97a0321cb2f0779b81ad8b2f639ddef9924a201228a11d10000cf875789f6f5123d10c3b03f4bb1d7db899706fe92a5cb4bedc2e5f170eaf006f5bff88c2766b49781d96c06478fbd47dbb44d4dd44401a593c647a38ef94c08a0b7af9fd6be59ab9463c4a012a4e1c1016a7de1394fe72105dbf7b6a9697f132ddc4a52cce3f118cb4ba6d2387df6346ddddb22bfcf475d7ffedca3dbd9fa858fba6f77d3f6bd6d53f97e9f8ffc2ff9e9c4fb27cce54581b62fdaa9899ae8e22717a9ebd59f7bc6272611fb53ac92df7bf0006d7d7b97b6699b5666b3147bc66c8f8ebaddacf6ad24b3147bcae31928025d7ddd95f28cf735ed6fa20525491b831bd4fc4cf9b908d8d7b4bfa9d2de8a7d00c63f8bd1dcf5395afb76cd548ff7e0014abe7583eebf739f9e78ea494f8c2c23cfcd172eb5c46758590debf4054d680d83e59537d39140b027046481742a2d34e2f5fc81438aa6d3cb4c3b7272a4c24881d714a004ccbf96aed417ec0956d9977e3353757d343a5665df6a5c45f8f890a93c5f87df34293231625efb9da549f5ff9f3a17e1f797cad6fc85d91250d2fad9d47f456812aadc0ffafde93733b5d96761fcf49b19edf72c103ad267eeef32d3579876603683cbff70c1883f4a128e75315976f87f449ffeae36863562e46c2f357bd8cc61c222d0d6d55ec52056a6f0f97cd4f58b2eeaefeb35331a80ec5296dadb7f56c5d06d1d7e5418e97696c63f8b9191496ecc5edd651e006d2fb79b18ecc69737e8cc87e7699bb6c9bbdf4bc383c3d4dfffb6b91e15687bc390ef7696621e8f67bc2300bd9e81c1011afef551cfc0e010969696aa98baef9d3eea7ea3c7138fcf20f8f7209dd87a8f685f13b5bfd44ec3c706b4f65aea091d0e51eb07679cfbc1da2eb7f61deea68163c3a45f0f2a41f28d9e373ddfd3e72298bb3e47dbb44d819703d4f9c74f3d9a86d8a92d1e9bdbe450ed66fd98563a9a0060343a86dcc4aa50144167065679996c065081604fc8941f595498c2ca30206d366d65249d79673a12989a9ee1336172f78da1cfe659f6ae96998c55ff2411b1daabd78b2caadb63d3afc8a2dc0f415379fa2456d63ee4cdf5878ef401d86574a450f5fc0040635a175ad68881c15e5a6866922d5dfc7a8d4ede6aad0bd36ada768dfa5f7c4e4ea312d186aaa2b9b999925f2d50d7379dd4fbd76acdaa33c64011188e9ca0a5db59dabab7c5656cfdfebb51e07259cbe9da76ed9b35ea3f3650c91f397b8abadfe8f15899daaa818d5af8c4fb272a8c3cf0e52d0e9385b1b474a762d7f0dfbeae62aa8d6f37881e10d13ea2a6fd4fd0f8c717b57a398c697c63c9f483b47d96fa9dd0bbdf4bf3b337348ff74fd4ce88766974a17e8c3b63c388b298984b98186372621246860b1c520055631700989a9e61320c547019bca209cbf5b2f233ed2ba22abf886694697f269b61b6c7ca90baa635f6038ba165edb3d62f1a2ff7a8c5129ef9c3133533e0cc5b1bd4ebe3d02d115dbdb3416f5f6f26daae9d7171b697cb50262de66f77bccf38d2c347b264654c6bfeae9e202ab373033319b55715131dcf526c40bbcfa8f1581a4ec7de237dd0df042b87b314fb404c335a99d6294ac2645ac3efcc7ea841d3da31addd9b674355a1cf1508a803038ecfdb326d251501b5547b7d53cb36da0bd571daa9e9f29ba01ce948a7d22646d5352752361a0fe65933eb3a4b33eb51063bfb4cf14f3066cdea2e93396a4609a6e5695ae31b28f09a627e2358ec93d6b4563bb2bbfda1476b2af69500e477e70c95e841d86dd44047ef0dc25037976179c9f35992e8bf5daeea1d39d94bbe27d923f27eb184a3c34769e9ce1d61ade4f7f9e8a3331f51ebf3ad648dcf7a0f1ea0ed7bf7999aae8a19ce016dd7cd1a4d671c2bc3751d66c73f8dd87ab095c63eb948ad2f681a3e7648816e074b33b61e6ca550e25a5d98b653e932c58f45fae15a4f087a9c95659faecdad7618e704bcfe687dbe95ae7e1ea798c7e3a179d92f60060c9517c3b84da79239975fc86c98d6c008a3d151f0e284b989554d4359178740d36c7adc548dabdaec5d2dcf6af3d0b4af0a3383eacc9004c2c787b01a57b54539367626e612a6fbf5fa46a36300aab55d622eb16b8f7e1dbbf9d329892f8786f6eaed61fdae96ed5a8dab5a7fa9d018395f9dcfc93edb2f8f8cfac2c78780248094b99fc9d5bad74bdaaaad7aa4f46a01342e57bf37baf717b734f0e121c9325da600c7d55cd2a9082454c968854dc3b0a3153b721350d6773753367605ff30509c692f88ade6aa25c9acb7b56b580b87b9fdb1da19ba541e10e9f502004e7986ebe9f5425d074a8933f0f4fa22a91c22d07649d7a3beb1c555848be5454b00729be6f624f22a94b8765dc37944e07ecf5f6eb38008cce58536cde58931edf843f75753aa9569dde613c1997c757cdaeab0ac7a0b3bb5af12d3d786f827cc8e8b2298ed4dafb31d5cdc61abcbf52e9adb91d9e43fa7919b127bfe00846c56031afbd99969bf038665a55a98d66d3ea15793a53ceb66ccd0749a6bb712d7de266e198fdb0e4e7f45505b7b239c728d0e54da019438bfbf85f6fc0168b994e0f65ba164ceefc8b40f23e536350d9b587170dc3dc8b4760c3049ceeb91fdf9f25a0dd9fac16f477a9dcdb491948b7a0c1849493038f8ab046dd78cd8e46b1967e7233b0f0fd42740c07648c39eb2510005c6e42e5470a74dbf4fa6153917c21b95d7ba91544e9a69b98e22335064ca85fd49432de3bb9a7be4660ebcb9079db73f89881fa75d04374a10ba06505e930e9402e88a0ba75d66d45b16fb955404285b7d5f681a7b966965e2deb65ff6580ec46907b84c5bdb391291143b8e0e07adcc636811f42e3a975f3582750c5a3e1c8c2473a04bec91a1cfa8a59c9637222d1a3a74ad7a6f99d551f616d3f2352d0bc3b3627bd3dc30ed77a16979985e2f48ef35f4c7c4343f77b66b72b0f179db11e2a44d994e9be7975755bfe4ac782f695a7f1e4818f798417374e3fae5d0b4c08e0af0dbb127342d03657675b72c43388ece65a65d87e56b5ee3c893765a815316036af57dde0bce8eb797342d8f394a3b406873f73ea759f6c8cd4740d30ae66761cb25f105fe04220a4d578f28b50490c89e3181ddb84ca775605a1eae0a1c24b15734adc82e62eb1969851d687309c38367c54b4d8cb6c734ad6eb7ec9e43d123b16adfb9f0ec02e1dd4e924d6e5779a57f75973a7ffcb4edce85a3e7015e7ef537f7a9b9bcab5366e7838e9e73333096177965854ebffad34a795d57d2b8f59f4ea2075749f9492ff5f70bec690370e0e3abb4f540bc1f264f99d7b7b29e9ff09e3a0ede2901d151b9f5ccf77780ed07444f33f289a077df55bafb5bfbf5d2150f6e61cde605d06e376ebd9956687517913dd30abe82eaa16945ed75c34cc6fc39ce5e3ca9fa19d832ceb687ab61d7013b3ff24f68cf3e92caa1b0a3c56179ed9b5fb7bc718ccf57ffc7d4b22aa43d9ca20cc24e2b598f8c96722a275c74583b6037202434ad12973f4043e444759636e7c5dbdd4a84f02cfb442066b4035a5cd52e2ac08b4b8f2dae72a30cde2830b6b85a958fcc1deee22498bc0b8f75711e82b22eee006ede1876233e61d859506f4dcb7618e7fe91616a458fa33bcccef5d5713c06646a4e9bfb758deed45e1401bfcd9b57b7dfac69c9fd0933bac69149b2e72178f7f7d2caa0b816b5d3b46e51d7904e9ad6787e84b0a665607c7915bfbccedfc56cd2b486e7d7fafb1bf4af7bdddc7ccab30b74e0f54ef2ff7385e89536a2af5628f9ef36daba97a4259b3986f26c9292ef7655b4e6fd1de0cc032296e615d5a6565c280297397e612c8f1da69064a453c99c14d10a45250c28f5e588cae1a13a31ad75166ed4ac4c8d6ce8bf919b7276b334228b81fc13f3b6e54e2d03d6d5686e31b3c98ecbdaadeed29731ba6ab7cd1b43ef6f66c6705152735ed076208824d9d31345bf1859d1baeed52df23ad6e97a5dff8684d52e897c53cbaba6f5a93cedeb9f988712d73e7454d6e3da38ded4b2b68ed67b41cbaf5c4923b459a775bcd0b4ac12dffd1b1f2d971295bfcdc1d536761a8389cbdad95d7649f6fc03b79ab0813f6cb4652a377f6b81b7d9d11f97fb262ff469b3818f253adeb05aac9f361445b792a0818f078add885dede226be2a8adea8a6c1f642c73470efa27886b2987f580cabd87c016960038d289d21bd5eb0dd13248b3585471af858a2fb02a0c521ddac5968194f54af666a600305b13e0501985ad6e27aa1e974d53ef8d06639405feff865031f4bfc3fdcfb64f7cd732d720000000049454e44ae426082</data>
+        <data format="PNG" length="3603">89504e470d0a1a0a0000000d49484452000000ad0000003008060000006357fade00000dda49444154789ced5d5f685bd71dfe095270465694b187b8946197b5e00c4ae5b90ff2d6926bfa32c529addc3e24defa20c519b1b787d5695f9ca4b86a1e5247856c76873b2b1066b5609c3c388a076156868b5c706a7964480117e4e10db998e118116e8c097c7bb8bad2fd73cebde75c29a9d3e8bc7c89eef9f33be7fece77bff3bbe75c1388688288ea8600b0060040a68cd801eade4e039f58acd941532b450040607c0e740ea0e1692e2a4960f0460e00f05d77bc818f2f7a2a98db005400fe780a9405e8dcb434faf34064060d076ea034ca1500a05c76675459549240b1a43624440385502823763446f4c2a832189bcf351cb781aee89a21b7a12290a82fb33a61607cae21191ae8888e19b001f8f30f9f61ade88fa71a8edb402e722fe43654f8e31e18732c054a00343e074a00a1ab4b0080e9bc166510adc77f7eba76c705303a3e81c8c97e44fafacb1841e4643f46e223008062b1f8f8481200a999fa4e68b5a462240e44fafa113ca420d217f15eff43b08f85f561d8f39aa128c131650a78248c0b15c022d0d61140a663096d1d01043a82dcff0f0dc71e0b661f1a8e55ecaf9bbd33b08dc7e07b839e26f243b18f81f699b7036986154991d9254f1ad70be3464ef69b6e44a83b8cd1f10900c064721a88034a77a8723dd011c4527669f733ae6e7fbd1c0266870d740411e9ebaf8969eb6a1f076d3f289b921ab4e0eeb0c1a94c4d1a57b99c11772898191669fe006205400948cda61cebc70a6abf116ee56ba81f450ff601081e526c4f20acb88cd723b0cf2dbf6f8288a2449420a22800df875788f6f4103d10c348204b895fb5132f45ff96a54bcbedc2f5f170f2c83af5bef88c2f61b49781d9ec128e9ff81d6dd33635511305954e1a1b89bb963321809e63bdb4facd6aa51e238694100df445a9f585e77c9d87146cdfdba6a67d4db470334d099fcf67ac2f3d9fc1e9b3a769ebde1605dadaa8ebaf9ffb743bdbbf68a7ce5b5db47d6fdb547fa0ad8d022f05e8d4bba7ccf5c581835fb4531335d1854f2e50d7abbff08d8d4f20f19744a5bcffc07edafaf62e6dd336e5d3594a3c6db64747dd6e56fff2b7b25abb00ba8e1caed467ccd7b4af89169434adf7ad53f333e5fb22605fd3bea64a7f2bf60118fb2c41b3d76669f5db55533bfe03fb29fde675bafff67ddafbf40f7c09b2cc3c2f6fb89c92ac86757b8326b48701768d16ea0e032b40663e2334e3f5f2c1438ad69132d30ebe375861a4e06b0aa002b9d70a95f642dd219b7d85378ab6eb23f1519b7dea0c1039d96faacfaa0d4d8c582cffced0a4faff878663fcf12ab1353fd2d05e771ada0b758701409350e571d0f317de28d6669f85f10b6f14b5df5780f0d163e6f12e337d8569a3334bb8f42f0f8cf8e334e1441793650788e85349e676c2d8d91e6af6b199c3ca94075f6eb731889529dadadaa8eb975dd47bacc7cc6800b2cb596a6fffb98da10f76046064a4b1cf12646492eb3357aacc63b1237f2b4bd7af5da7331f9ea36dda26ff3e3f0df40d506fef5be6764ac0c1ae761bf38d7504a1b713ed8bd2c06f8ffba27dfd585e5eb631f5b1b78fd1e1d7bb7dc9e4347affd943d1ad28d19e266a7fa99d064e44b5fe5ada091f0953eb0767dcc781d12f4ff61d394cd11303a45f0f29216a1b3967babfa7876398bd364bdbb44dc19783d4f9e74f7d9a86d8a92d1e9bdbe050ed46fd98563a9a0060243e8acda42a1445a83003a3bea5ec12500242dd6153796451610a1bc390b69ab63292cebc998e254c4e4df39970b1ca50fa6a9e65af3a63d1f0967eb0faabb78b2cecfd71185764511e8790a93e7d112b6b1f56cced878f1e33313ae661bb7f00a031ad072d6bc4e01f7a68e1874cb2a50b5fadd27b375bebc2b49ab65da5de179f93d3a844b45e2ca2b9b999d25f2e50d7379dd4f377bb66356ab981f74fd1f2ad2c6ddddbe232b69eff6e1cb854d672bab65dfd66957a4f442be5636787e8f0ebdd3e2b535b35b0510b9f7af7548591a3ffb8c961b2089697ef54ec1af8fa2b1b53ad7fbb4ef48088f61035eddb4b631f5fa8f493c598464695190769fb049e8846f4eff3d3dccc75cde303e3b533a2531a59a81fe3661c18511653b32913634c8c4fc0c870c1438a167b2eaf6627a7a6990c8322b80c5ed184e57659e5dda2207a7911cd28d3ffa5ec12b33f5686d435ad711c580c2d6b9fb57dd178b9af5852f1cc9ff6d6cc80d36fae534f5b339b6e89e8ca9d757aeb5a33d176ed8c8bb33d5c863269b140bb6b3ee34c8f1ccd929531ade5bbba43a8acce0dcc64d45e36263a99a54454cb67d4782c0da763cfd163d09f04f923594a7c20a619ad4c2ba3fd8d4f1afd77e638d4a0699d98d6e9c9b35e2c425f2b105007061c9b7364da4a2abf31abb5bdc9db0eda0bf638ede454f949a06a9099cf981855d79c9877d07830af9a59d7599a598f3238d9678a7f82b16a2e5699cc55334a302d4fd31a9f40c1d714f313c1629fb4a6b5dab152bdae476b2af6a91abbeb6b864af420e2356aa0a3ff3aa1ff30976179c9f7599ae87f5d9eda1d3cdb436d9c1979bfa4e2f8c0715abe7347582b05dadae8a3331f51ebf3ad648dcffa0feca7ed7bf7999acec60cc3c0c16b668da6338e95e178f14f23b61e68a5d14f2e50eb0b9a864f1c52a0dbc1d28cad075a299cba5a17a6ed54ccf1639171b8da1d861e6765d9a76b73ab1dc635016f3c5a9f6fa52b9f2729e1f3f92827fb06cc80e1f26618af69289df3f886cc81690d8c30121f012f4eb89954d91a0a1a33eb7153cc680c8b5279555b84a67d4b3033a8ce0c8b5a3975a6dcbe839da9d99429bfdede487cd46e979e5fb747bf8e6af9ccbcc49b43437ff5fe307f9fa9d63f341cd3fa9d85691c44ed737cf3c8682f72b21f5804306f1e67f2b4eff56275d756ad2953d8048dc9b5ef8feffecd2d0d7c7848b24c57dc81eb6e2ee95402964a92d10a878ee9272d066f00ca66f53065e354f0f703c599f6bcd86eae5a93a83d4e1d6be1307720513b43abe5099159db04c0a9cf703db3b659d789a272269ede5e6c3e8718caa7a4ebd0dee862011194372d01c86d98fb935a2942496ad7359c430cdecffce536361183b9beb06aae4f8c69c71e89bf5652ad4cebb59c08668af6f8b4d5617971ec9a1c08d5bd21817198b57409ccfe66d650537f4717edf5faf3e67e1455fe7d1abc2171e60f40d86137a071fcdc99f61131ac35d5c2b45ecb093d9a2cf5590f6386a7325cbb9524c0634a11c6e3f683335eb11a274a8c53afd181d41d4049f2c75be8cc1f80968b29eeb859cbbb32edc348b90d4dc3a6f22e8ebb0b99d68d411597684ca058deab21db3ef8fdc8acb1993636efa11d03c6e625181cfc5d828e7b461ccab58cb1cb91938707ebbde0323aa4e14cd908804d465be11d6fdaf4bb645a91ef42f8e3f25a37369f93665aaea3c84c14997ae1fca5a196b1aae61ebc91036fed41e79cbf44c48fd3e6c18d1284af0254d4a4036501baecc1690b8c76cb62bf924a00add8f385a7b06b995626eeedf8668fe5409c7e80cbb4b57d472236cf8ea3c3452bf3185a04fd79f7fa6d3358c790e5c5c1603a07bac89f79d24ecb9b91160d1dbe6a3f5b667594ddc5b47c4dcbc2c88cd8d9342f4cfb28342d0f336b9bd2670d030931cdefb8daad38d8d89ce30c71d3a64ca72df2ebb3b52fb92ade4d9a36500452c63366d01cddb87f393c2570a202fc7eec0a4dcb409953dd2d0508c7d1b9cc547558bee67d284c6bd1d4d67cfef3ee8eb79b342d8f39d41d20ac56f3b9adb2076f3c069a56b03c0b5b2e8a6ff027105178ca3ea3008044ce8c099cc6653aad0bd3f25015e8d86ed1b442a788c178c2940c8e0e80152f3531da2ed3b4baddb2670e453f8955fbc985671708ef74926cf2bacb2bf39bbbd4f9931f399e5c387e0ee0952ffefe3e35974f75ca9c7cd0d1373c0d637db157f274fad59f55eaebba9cc1cdff76123db842ca4f7ba8b757ec4cdbfe8fafd0d603f171981832ef6f65dd3fe133751cbc0320cea8d7693ff3fd1d60ef53445efdc9bfe70add7ddf79bf74c5835b58ab7901f49abc30add0ee2e2267a61598c9f5d2b4a2f67a612663f91ce72c9e54fb0c6c1963dbc3d5b06b80931f05c6b57b1f9bd7c259bcfae9dc34729b96278ef1feeaff98bc5d14d21e6e510661a7956c47464bb9d51381cbde01a70921a16995a4fc073444bea8ced2e6bc78bb57891099617f118819ed801657758a0af0e2d2a38b056e94c11f0746170bb672641e700f5f82f1b243d1c3f710944d7107f0f2c4709af129c3c982ba6b5aa6c3b88f8f0c532b7a1cdd6575aeef8ee3312053733ae4177db2a104041c9ebcbafd664d4bdebf30a36b1c9924fb3d04ffbe1ecaf7896b51274deb15750de9a6698ddf8f10d6b40c4cde2ee0d7d7f8a7984d9ad670ff5aff789dfe7def30b79cf2ec02ed7fbb93025fe7895e3948f4659ed2ff39485bf7d2b4ecb0c6509e4d53fa9dae8ad6bcbf039c798a88a57945b5a91517005c12a8cf75352b8243e99c14d10a45250c28f5e688cae1a13a31ad75156ed4ac4c26318cdfe00d39bb591a91c54081f139c77a276f03d6dd685eb1a8b2e3b24ebbbbf46d8c9efaedf0c4d0c79b59300249cd795e3b81209264bf9e28fac6c88ad67daf5e9137b06ed7ebfa3724ac7649949bbc5d30ed4fe569dfc0f81c94a4f6a2a3b21fd7c1f1266f6bfb68fde7b5f2cae50cc26a9df6f142d3b24ab2fa373e5a2ea62a7f9b83ab6d9c3406130bdab7bb9c92ecf70fbc6ac2067ebfd191a9bcfcad05de61c74052ee9dbcd0abcd063e91e89a4145fdb4a1287a95040d7c32502c23aadac54b7c5514fd714d83ed868169e0ee45f1026531ffb01856d904f70d48031b6844e90299b54dc73341b2585378a4814f247aaf005a1cd2cb9e05fdec4f83591be805eb531180c9db5a5c2f3c95b19d830fabd54d128dbf81dbc05af1ff246a91a21391b6b20000000049454e44ae426082</data>
     </image>
 </images>
 <connections>
diff --git a/src/configurationpanel.ui.h b/src/configurationpanel.ui.h
index f300d7b431..2e82b7575c 100644
--- a/src/configurationpanel.ui.h
+++ b/src/configurationpanel.ui.h
@@ -38,8 +38,22 @@ void ConfigurationPanel::init()
       SkinChoice->insertItem(list[i]);
        }
    } 
-
-
+   
+       // List ring choice from "rings" directory
+   QDir ringdir(Skin::getPath(QString(RINGDIR)));
+   if ( !ringdir.exists() ) {
+        printf ("Cannot find rings directory\n");
+    }
+   ringdir.setFilter( QDir::Files | QDir::NoSymLinks);
+   ringdir.setSorting( QDir::Name );
+    
+   QStringList ringlist;
+   ringlist = ringdir.entryList();
+   for (unsigned int i = 0; i < ringdir.count(); i++) {
+       if (ringlist[i] != "." && ringlist[i] != ".." && ringlist[i] != "CVS") {
+      ringsChoice->insertItem(ringlist[i]);
+       }
+   } 
   // For signalisations tab
    fullName->setText(QString(Config::getchar("Signalisations", "SIP.fullName", "")));
    userPart->setText(QString(Config::getchar("Signalisations", "SIP.userPart", "")));
@@ -61,6 +75,8 @@ void ConfigurationPanel::init()
    codec3->setCurrentText(QString(Config::getchar("Audio", "Codecs.codec3", "G711u")));
    codec4->setCurrentText(QString(Config::getchar("Audio", "Codecs.codec4", "G711u")));
    codec5->setCurrentText(QString(Config::getchar("Audio", "Codecs.codec5", "G711u")));
+     ringsChoice->setCurrentText(QString(Config::getchar(
+      "Audio", "Rings.ringChoice", "konga.ul")));
    
    // For preferences tab
    SkinChoice->setCurrentText(QString(Config::getchar(
@@ -125,6 +141,7 @@ void ConfigurationPanel::saveSlot()
    Config::set("Audio", "Codecs.codec3", codec3->currentText());
    Config::set("Audio", "Codecs.codec4", codec4->currentText());
    Config::set("Audio", "Codecs.codec5", codec5->currentText());
+   Config::set("Audio", "Rings.ringChoice", ringsChoice->currentText());
    
    Config::set("Preferences", "Themes.skinChoice", SkinChoice->currentText());
    Config::set("Preferences", "Options.zoneToneChoice", 
diff --git a/src/configurationpanelui.cpp b/src/configurationpanelui.cpp
index df9edd2680..aafccf5a27 100644
--- a/src/configurationpanelui.cpp
+++ b/src/configurationpanelui.cpp
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form implementation generated from reading ui file 'configurationpanel.ui'
 **
-** Created: Fri Jan 28 18:58:55 2005
+** Created: Mon Jan 31 18:13:29 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
@@ -33,312 +33,305 @@
 static const unsigned char image0_data[] = { 
     0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
     0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x30,
-    0x08, 0x06, 0x00, 0x00, 0x00, 0x63, 0x57, 0xfa, 0xde, 0x00, 0x00, 0x0e,
-    0x34, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9c, 0xed, 0x5d, 0x4d, 0x6c, 0x1b,
-    0xc7, 0x19, 0xfd, 0x08, 0xf8, 0xa0, 0x04, 0x46, 0x40, 0x07, 0x3d, 0x58,
-    0x41, 0x50, 0x48, 0x41, 0x13, 0x80, 0x2a, 0x10, 0x84, 0xaa, 0x72, 0xa0,
-    0xda, 0x04, 0x5e, 0x21, 0x97, 0x50, 0x72, 0x90, 0x50, 0xc9, 0xc1, 0x52,
-    0x9b, 0x03, 0x65, 0xb9, 0xb0, 0x94, 0x5e, 0x22, 0xbb, 0x17, 0xff, 0x04,
-    0x0e, 0xe3, 0x83, 0x23, 0x33, 0x85, 0x5b, 0x29, 0x85, 0x52, 0xd1, 0x80,
-    0x51, 0x31, 0x01, 0x04, 0xd9, 0x07, 0x99, 0x56, 0x01, 0xa3, 0xa2, 0x03,
-    0x06, 0x54, 0x00, 0xb9, 0xa4, 0x0a, 0x15, 0x94, 0x0b, 0x06, 0x90, 0x0a,
-    0xb5, 0x58, 0x05, 0x42, 0x41, 0x0b, 0xac, 0x41, 0x0b, 0x82, 0x81, 0xd7,
-    0xc3, 0x72, 0xa9, 0xdd, 0xe5, 0xcc, 0xee, 0xcc, 0x92, 0x4e, 0xe4, 0x98,
-    0x73, 0x79, 0x36, 0x77, 0x67, 0xe6, 0x9b, 0xd9, 0x6f, 0xde, 0xbe, 0xf9,
-    0x76, 0x66, 0x44, 0x20, 0xa2, 0x49, 0x22, 0xaa, 0x1b, 0x02, 0xc0, 0x3a,
-    0x00, 0x00, 0xe9, 0x32, 0x62, 0x07, 0xa8, 0x7b, 0x3d, 0x0d, 0x7c, 0x6c,
-    0xb1, 0x66, 0x07, 0x4d, 0xe4, 0x55, 0x14, 0x4a, 0x80, 0x7f, 0x62, 0x1e,
-    0x74, 0x1e, 0xa0, 0x73, 0x33, 0x5c, 0x54, 0xe2, 0xc0, 0xc8, 0xcd, 0x1c,
-    0x00, 0xe0, 0xfb, 0x6e, 0x78, 0x03, 0x1f, 0x5d, 0x74, 0x95, 0x31, 0xb7,
-    0x09, 0xac, 0x16, 0x01, 0x6f, 0x34, 0x01, 0x4a, 0x01, 0x74, 0x7e, 0x46,
-    0x1a, 0xbd, 0x8b, 0x40, 0x78, 0x16, 0x0d, 0x07, 0x6e, 0xa0, 0x34, 0xca,
-    0x65, 0x00, 0xa0, 0x5c, 0x71, 0x66, 0x54, 0x59, 0x54, 0xe2, 0x80, 0x5a,
-    0x2c, 0x35, 0x24, 0x44, 0x03, 0x85, 0x50, 0xe8, 0x46, 0xec, 0x00, 0x85,
-    0x1d, 0x77, 0x8c, 0x2a, 0x83, 0x91, 0x54, 0xae, 0xe1, 0xb8, 0x0d, 0x74,
-    0x44, 0xc7, 0x1b, 0x72, 0x9b, 0x25, 0xf8, 0x63, 0xf5, 0x65, 0x56, 0x3b,
-    0xf4, 0x4f, 0xcc, 0x37, 0x24, 0x43, 0x03, 0x6d, 0xd1, 0xf6, 0x06, 0x6c,
-    0x02, 0xde, 0xc5, 0x87, 0xcf, 0xb0, 0x56, 0xf4, 0x46, 0x13, 0x0d, 0xc7,
-    0x6d, 0x20, 0x17, 0xb9, 0x17, 0x72, 0x9b, 0x25, 0x78, 0xa3, 0x2e, 0x18,
-    0x73, 0x3c, 0x01, 0x8a, 0x01, 0x34, 0x31, 0x0f, 0x8a, 0x01, 0xc1, 0x6b,
-    0x19, 0x00, 0xc0, 0xcc, 0x8a, 0x8a, 0xd2, 0x8e, 0x78, 0x39, 0xde, 0x0b,
-    0x33, 0xb5, 0x3b, 0x2e, 0x80, 0xb1, 0x89, 0x49, 0x84, 0x8f, 0x0f, 0x21,
-    0x3c, 0x38, 0x54, 0xc6, 0x30, 0xc2, 0xc7, 0x87, 0x30, 0x1a, 0x1d, 0x05,
-    0x8a, 0x80, 0xaa, 0xaa, 0x8f, 0x8e, 0x24, 0x01, 0x90, 0x98, 0xad, 0xef,
-    0x80, 0x2e, 0x15, 0x4b, 0x18, 0x8d, 0x02, 0xe1, 0xc1, 0x21, 0x04, 0x0e,
-    0x29, 0x08, 0x0f, 0x86, 0x81, 0xa2, 0xcb, 0xf2, 0x1f, 0x82, 0x7d, 0x2c,
-    0xac, 0x0f, 0xc3, 0x5e, 0xd0, 0x0c, 0x45, 0x11, 0xb6, 0x29, 0xbd, 0x8a,
-    0xef, 0x84, 0x71, 0x51, 0x02, 0x90, 0x04, 0x7c, 0x1d, 0x7e, 0xcc, 0x74,
-    0x24, 0xe0, 0xeb, 0xf0, 0xc3, 0xdf, 0x11, 0xe0, 0xfe, 0xff, 0xd4, 0xb9,
-    0xc8, 0x23, 0xc1, 0xec, 0xa7, 0xce, 0x45, 0x2a, 0xf6, 0xd7, 0xcb, 0x5e,
-    0x35, 0xae, 0x56, 0xf5, 0xc7, 0xc8, 0xc9, 0x11, 0x57, 0x03, 0xf9, 0x61,
-    0xd8, 0x27, 0xc4, 0xb4, 0xa5, 0x1d, 0x48, 0x33, 0xac, 0x48, 0x0a, 0xcf,
-    0x65, 0x5c, 0x69, 0x5c, 0x37, 0x8c, 0x1b, 0x3e, 0x3e, 0x64, 0x7a, 0x10,
-    0xc1, 0x9e, 0x10, 0xc6, 0x26, 0x26, 0x01, 0x00, 0x53, 0xf1, 0x19, 0x20,
-    0x0a, 0x28, 0x3d, 0xc1, 0xca, 0x75, 0x7f, 0x47, 0x00, 0x99, 0x6c, 0x66,
-    0xef, 0x33, 0xae, 0x6e, 0x7f, 0xbd, 0x1c, 0x02, 0x30, 0xf5, 0x93, 0xbf,
-    0x23, 0x80, 0xf0, 0xe0, 0x90, 0xfb, 0xf2, 0xeb, 0x6d, 0x1f, 0x07, 0xab,
-    0x7e, 0x50, 0xd6, 0x25, 0x35, 0xe8, 0xb2, 0xb3, 0xc3, 0x06, 0xa6, 0xd3,
-    0x35, 0x69, 0x5c, 0xe5, 0x4a, 0x5a, 0xdc, 0xa1, 0x60, 0x66, 0xd8, 0xc2,
-    0x6c, 0x89, 0xdb, 0x81, 0xc8, 0x03, 0x50, 0x81, 0xc4, 0x5c, 0xc2, 0xb6,
-    0x7c, 0xe4, 0x51, 0xfb, 0x83, 0x70, 0xca, 0x5f, 0x43, 0xf9, 0x50, 0x5d,
-    0xd8, 0x07, 0x20, 0x70, 0x48, 0xa9, 0x7a, 0x03, 0x21, 0xcb, 0x2f, 0x07,
-    0x79, 0xb8, 0x1a, 0xd8, 0xb2, 0xf6, 0x39, 0xdd, 0xef, 0x99, 0x24, 0xa2,
-    0x01, 0x22, 0x8a, 0x11, 0xd1, 0x00, 0x00, 0xcf, 0x87, 0x57, 0x89, 0xf6,
-    0xf5, 0x12, 0x3d, 0x10, 0xc3, 0xb0, 0x3f, 0x4b, 0xb1, 0xd7, 0xdb, 0x89,
-    0x97, 0x06, 0xfe, 0x92, 0xa5, 0xcb, 0x4b, 0xed, 0xc2, 0xe5, 0xf1, 0x70,
-    0xea, 0xf0, 0x06, 0xf5, 0xbf, 0xf8, 0x8c, 0x27, 0x66, 0xb4, 0x97, 0x81,
-    0xd9, 0x6c, 0x06, 0x47, 0x8f, 0xbd, 0x47, 0xdb, 0xb4, 0x4d, 0x4d, 0xd4,
-    0x44, 0x01, 0xa5, 0x93, 0xc6, 0x47, 0xa3, 0x8e, 0xf9, 0x4c, 0x08, 0xa0,
-    0xb7, 0xaf, 0x9f, 0xd6, 0xbe, 0x59, 0xab, 0x94, 0x63, 0xc4, 0xa0, 0x12,
-    0xa4, 0xe1, 0xc1, 0x01, 0x6a, 0x7d, 0xe1, 0x39, 0x4f, 0xe7, 0x21, 0x05,
-    0xdb, 0xf7, 0xb6, 0xa9, 0x69, 0x7f, 0x13, 0x2d, 0xdc, 0x4a, 0x52, 0xcc,
-    0xe3, 0xf1, 0x18, 0xcb, 0x4b, 0xa6, 0xd2, 0x38, 0x7d, 0xf6, 0x34, 0x6d,
-    0xdd, 0xdb, 0x22, 0xbf, 0xcf, 0x47, 0x5d, 0x7f, 0xfe, 0xdc, 0xa3, 0xdb,
-    0xd9, 0xfa, 0x85, 0x8f, 0xba, 0x6f, 0x77, 0xd3, 0xf6, 0xbd, 0x6d, 0x53,
-    0xf9, 0x7e, 0x9f, 0x8f, 0xfc, 0x2f, 0xf9, 0xe9, 0xc4, 0xfb, 0x27, 0xcc,
-    0xe5, 0x45, 0x81, 0xb6, 0x2f, 0xda, 0xa9, 0x89, 0x9a, 0xe8, 0xe2, 0x27,
-    0x17, 0xa9, 0xeb, 0xd5, 0x9f, 0x7b, 0xc6, 0x27, 0x26, 0x11, 0xfb, 0x53,
-    0xac, 0x92, 0xdf, 0x7b, 0xf0, 0x00, 0x6d, 0x7d, 0x7b, 0x97, 0xb6, 0x69,
-    0x9b, 0x56, 0x66, 0xb3, 0x14, 0x7b, 0xc6, 0x6c, 0x8f, 0x8e, 0xba, 0xdd,
-    0xac, 0xf6, 0xad, 0x24, 0xb3, 0x14, 0x7b, 0xca, 0xe3, 0x19, 0x28, 0x02,
-    0x5d, 0x7d, 0xdd, 0x95, 0xf2, 0x8c, 0xf7, 0x35, 0xed, 0x6f, 0xa2, 0x05,
-    0x25, 0x49, 0x1b, 0x83, 0x1b, 0xd4, 0xfc, 0x4c, 0xf9, 0xb9, 0x08, 0xd8,
-    0xd7, 0xb4, 0xbf, 0xa9, 0xd2, 0xde, 0x8a, 0x7d, 0x00, 0xc6, 0x3f, 0x8b,
-    0xd1, 0xdc, 0xf5, 0x39, 0x5a, 0xfb, 0x76, 0xcd, 0x54, 0x8f, 0xf7, 0xe0,
-    0x01, 0x4a, 0xbe, 0x75, 0x83, 0xee, 0xbf, 0x73, 0x9f, 0x9e, 0x78, 0xea,
-    0x49, 0x4f, 0x8c, 0x2c, 0x23, 0xcf, 0xcd, 0x17, 0x2e, 0xb5, 0xc4, 0x67,
-    0x58, 0x59, 0x0d, 0xeb, 0xf4, 0x05, 0x4d, 0x68, 0x0d, 0x83, 0xe5, 0x95,
-    0x37, 0xd3, 0x91, 0x40, 0xb0, 0x27, 0x04, 0x64, 0x81, 0x74, 0x2a, 0x2d,
-    0x34, 0xe2, 0xf5, 0xfc, 0x81, 0x43, 0x8a, 0xa6, 0xd3, 0xcb, 0x4c, 0x3b,
-    0x72, 0x72, 0xa4, 0xc2, 0x48, 0x81, 0xd7, 0x14, 0xa0, 0x04, 0xcc, 0xbf,
-    0x96, 0xae, 0xd4, 0x17, 0xec, 0x09, 0x56, 0xd9, 0x97, 0x7e, 0x33, 0x53,
-    0x75, 0x7d, 0x34, 0x3a, 0x56, 0x65, 0xdf, 0x6a, 0x5c, 0x45, 0xf8, 0xf8,
-    0x90, 0xa9, 0x3c, 0x5f, 0x87, 0xdf, 0x34, 0x29, 0x32, 0x31, 0x62, 0x5e,
-    0xfb, 0x9d, 0xa5, 0x49, 0xf5, 0xff, 0x9f, 0x3a, 0x17, 0xe1, 0xf7, 0x97,
-    0xca, 0xd6, 0xfc, 0x85, 0xd9, 0x12, 0x50, 0xd2, 0xfa, 0xd9, 0xd4, 0x7f,
-    0x45, 0x68, 0x12, 0xaa, 0xdc, 0x0f, 0xfa, 0xfd, 0xe9, 0x37, 0x33, 0xb5,
-    0xd9, 0x67, 0x61, 0xfc, 0xf4, 0x9b, 0x19, 0xed, 0xf7, 0x2c, 0x10, 0x3a,
-    0xd2, 0x67, 0xee, 0xef, 0x32, 0xd3, 0x57, 0x98, 0x76, 0x60, 0x36, 0x83,
-    0xcb, 0xff, 0x70, 0xc1, 0x88, 0x3f, 0x4a, 0x12, 0x8e, 0x75, 0x31, 0x59,
-    0x76, 0xf8, 0x7f, 0x44, 0x9f, 0xfe, 0xae, 0x36, 0x86, 0x35, 0x62, 0xe4,
-    0x6c, 0x2f, 0x35, 0x7b, 0xd8, 0xcc, 0x61, 0xc2, 0x22, 0xd0, 0xd6, 0xd5,
-    0x5e, 0xc5, 0x20, 0x56, 0xa6, 0xf0, 0xf9, 0x7c, 0xd4, 0xf5, 0x8b, 0x2e,
-    0xea, 0xef, 0xeb, 0x35, 0x33, 0x1a, 0x80, 0xec, 0x52, 0x96, 0xda, 0xdb,
-    0x7f, 0x56, 0xc5, 0xd0, 0x6d, 0x1d, 0x7e, 0x54, 0x18, 0xe9, 0x76, 0x96,
-    0xc6, 0x3f, 0x8b, 0x91, 0x91, 0x49, 0x6e, 0xcc, 0x5e, 0xdd, 0x65, 0x1e,
-    0x00, 0x6d, 0x2f, 0xb7, 0x9b, 0x18, 0xec, 0xc6, 0x97, 0x37, 0xe8, 0xcc,
-    0x87, 0xe7, 0x69, 0x9b, 0xb6, 0xc9, 0xbb, 0xdf, 0x4b, 0xc3, 0x83, 0xc3,
-    0xd4, 0xdf, 0xff, 0xb6, 0xb9, 0x1e, 0x15, 0x68, 0x7b, 0xc3, 0x90, 0xef,
-    0x76, 0x96, 0x62, 0x1e, 0x8f, 0x67, 0xbc, 0x23, 0x00, 0xbd, 0x9e, 0x81,
-    0xc1, 0x01, 0x1a, 0xfe, 0xf5, 0x51, 0xcf, 0xc0, 0xe0, 0x10, 0x96, 0x96,
-    0x96, 0xaa, 0x98, 0xba, 0xef, 0x9d, 0x3e, 0xea, 0x7e, 0xa3, 0xc7, 0x13,
-    0x8f, 0xcf, 0x20, 0xf8, 0xf7, 0x20, 0x9d, 0xd8, 0x7a, 0x8f, 0x68, 0x5f,
-    0x13, 0xb5, 0xbf, 0xd4, 0x4e, 0xc3, 0xc7, 0x06, 0xb4, 0xf6, 0x5a, 0xea,
-    0x09, 0x1d, 0x0e, 0x51, 0xeb, 0x07, 0x67, 0x9c, 0xfb, 0xc1, 0xda, 0x2e,
-    0xb7, 0xf6, 0x1d, 0xee, 0xa6, 0x81, 0x63, 0xc3, 0xa4, 0x5f, 0x0f, 0x2a,
-    0x41, 0xf2, 0x8d, 0x9e, 0x37, 0x3d, 0xdf, 0xd3, 0xe7, 0x22, 0x98, 0xbb,
-    0x3e, 0x47, 0xdb, 0xb4, 0x4d, 0x81, 0x97, 0x03, 0xd4, 0xf9, 0xc7, 0x4f,
-    0x3d, 0x9a, 0x86, 0xd8, 0xa9, 0x2d, 0x1e, 0x9b, 0xdb, 0xe4, 0x50, 0xed,
-    0x66, 0xfd, 0x98, 0x56, 0x3a, 0x9a, 0x00, 0x60, 0x34, 0x3a, 0x86, 0xdc,
-    0xc4, 0xaa, 0x50, 0x14, 0x41, 0x67, 0x06, 0x56, 0x79, 0x99, 0x6c, 0x06,
-    0x50, 0x81, 0x60, 0x4f, 0xc8, 0x94, 0x1f, 0x59, 0x54, 0x98, 0xc2, 0xca,
-    0x30, 0x20, 0x6d, 0x36, 0x6d, 0x65, 0x24, 0x9d, 0x79, 0x67, 0x3a, 0x12,
-    0x98, 0x9a, 0x9e, 0xe1, 0x33, 0x61, 0x72, 0xf7, 0x8d, 0xa1, 0xcf, 0xe6,
-    0x59, 0xf6, 0xae, 0x96, 0x99, 0x8c, 0x55, 0xff, 0x24, 0x11, 0xb1, 0xda,
-    0xab, 0xd7, 0x8b, 0x2c, 0xaa, 0xdb, 0x63, 0xd3, 0xaf, 0xc8, 0xa2, 0xdc,
-    0x0f, 0x41, 0x53, 0x79, 0xfa, 0x24, 0x56, 0xd6, 0x3e, 0xe4, 0xcd, 0xf5,
-    0x87, 0x8e, 0xf4, 0x01, 0xd8, 0x65, 0x74, 0xa4, 0x50, 0xf5, 0xfc, 0x00,
-    0x40, 0x63, 0x5a, 0x17, 0x5a, 0xd6, 0x88, 0x81, 0xc1, 0x5e, 0x5a, 0x68,
-    0x66, 0x92, 0x2d, 0x5d, 0xfc, 0x7a, 0x8d, 0x4e, 0xde, 0x6a, 0xad, 0x0b,
-    0xd3, 0x6a, 0xda, 0x76, 0x8d, 0xfa, 0x5f, 0x7c, 0x4e, 0x4e, 0xa3, 0x12,
-    0xd1, 0x86, 0xaa, 0xa2, 0xb9, 0xb9, 0x99, 0x92, 0x5f, 0x2d, 0x50, 0xd7,
-    0x37, 0x9d, 0xd4, 0xfb, 0xd7, 0x6a, 0xcd, 0xaa, 0x33, 0xc6, 0x40, 0x11,
-    0x18, 0x8e, 0x9c, 0xa0, 0xa5, 0xdb, 0x59, 0xda, 0xba, 0xb7, 0xc5, 0x65,
-    0x6c, 0xfd, 0xfe, 0xbb, 0x51, 0xe0, 0x72, 0x59, 0xcb, 0xe9, 0xda, 0x76,
-    0xed, 0x9b, 0x35, 0xea, 0x3f, 0x36, 0x50, 0xc9, 0x1f, 0x39, 0x7b, 0x8a,
-    0xba, 0xdf, 0xe8, 0xf1, 0x58, 0x99, 0xda, 0xaa, 0x81, 0x8d, 0x5a, 0xf8,
-    0xc4, 0xfb, 0x27, 0x2a, 0x8c, 0x3c, 0xf0, 0xe5, 0x2d, 0x0e, 0x93, 0x85,
-    0xb1, 0xb4, 0x74, 0xa7, 0x62, 0xd7, 0xf0, 0xdf, 0xbe, 0xae, 0x62, 0xaa,
-    0x8d, 0x6f, 0x37, 0x88, 0x1e, 0x10, 0xd1, 0x3e, 0xa2, 0xa6, 0xfd, 0x4f,
-    0xd0, 0xf8, 0xc7, 0x17, 0xb5, 0x7a, 0x39, 0x8c, 0x69, 0x7c, 0x63, 0xc9,
-    0xf4, 0x83, 0xb4, 0x7d, 0x96, 0xfa, 0x9d, 0xd0, 0xbb, 0xdf, 0x4b, 0xf3,
-    0xb3, 0x37, 0x34, 0x8f, 0xf7, 0x4f, 0xd4, 0xce, 0x88, 0x76, 0x69, 0x74,
-    0xa1, 0x7e, 0x8c, 0x3b, 0x63, 0xc3, 0x88, 0xb2, 0x98, 0x98, 0x4b, 0x98,
-    0x18, 0x63, 0x72, 0x62, 0x12, 0x46, 0x86, 0x0b, 0x1c, 0x52, 0x00, 0x55,
-    0x63, 0x17, 0x00, 0x98, 0x9a, 0x9e, 0x61, 0x32, 0x0c, 0x54, 0x70, 0x19,
-    0xbc, 0xa2, 0x09, 0xcb, 0xf5, 0xb2, 0xf2, 0x33, 0xed, 0x2b, 0xa2, 0x2a,
-    0xbf, 0x88, 0x66, 0x94, 0x69, 0x7f, 0x26, 0x9b, 0x61, 0xb6, 0xc7, 0xca,
-    0x90, 0xba, 0xa6, 0x35, 0xf6, 0x03, 0x8b, 0xa1, 0x65, 0xed, 0xb3, 0xd6,
-    0x2f, 0x1a, 0x2f, 0xf7, 0xa8, 0xc5, 0x12, 0x9e, 0xf9, 0xc3, 0x13, 0x35,
-    0x33, 0xe0, 0xcc, 0x5b, 0x1b, 0xd4, 0xeb, 0xe3, 0xd0, 0x2d, 0x11, 0x5d,
-    0xbd, 0xb3, 0x41, 0x6f, 0x5f, 0x6f, 0x26, 0xda, 0xae, 0x9d, 0x71, 0x71,
-    0xb6, 0x97, 0xcb, 0x50, 0x26, 0x2d, 0xe6, 0x6f, 0x77, 0xbc, 0xcf, 0x38,
-    0xd2, 0xc3, 0x47, 0xb2, 0x64, 0x65, 0x4c, 0x6b, 0xfe, 0xae, 0x9e, 0x20,
-    0x2a, 0xb3, 0x73, 0x03, 0x33, 0x19, 0xb5, 0x57, 0x15, 0x13, 0x1d, 0xcf,
-    0x52, 0x6c, 0x40, 0xbb, 0xcf, 0xa8, 0xf1, 0x58, 0x1a, 0x4e, 0xc7, 0xde,
-    0x23, 0x7d, 0xd0, 0xdf, 0x04, 0x2b, 0x87, 0xb3, 0x14, 0xfb, 0x40, 0x4c,
-    0x33, 0x5a, 0x99, 0xd6, 0x29, 0x4a, 0xc2, 0x64, 0x5a, 0xc3, 0xef, 0xcc,
-    0x7e, 0xa8, 0x41, 0xd3, 0xda, 0x31, 0xad, 0xdd, 0x9b, 0x67, 0x43, 0x55,
-    0xa1, 0xcf, 0x15, 0x08, 0xa8, 0x03, 0x03, 0x8e, 0xcf, 0xdb, 0x32, 0x6d,
-    0x25, 0x15, 0x01, 0xb5, 0x54, 0x7b, 0x7d, 0x53, 0xcb, 0x36, 0xda, 0x0b,
-    0xd5, 0x71, 0xda, 0xa9, 0xe9, 0xf2, 0x9b, 0xa0, 0x1c, 0xe9, 0x48, 0xa7,
-    0xd2, 0x26, 0x46, 0xd5, 0x35, 0x27, 0x52, 0x36, 0x1a, 0x0f, 0xe6, 0x59,
-    0x33, 0xeb, 0x3a, 0x4b, 0x33, 0xeb, 0x51, 0x06, 0x3b, 0xfb, 0x4c, 0xf1,
-    0x4f, 0x30, 0x66, 0xcd, 0xea, 0x2e, 0x93, 0x39, 0x6a, 0x46, 0x09, 0xa6,
-    0xe5, 0x69, 0x5a, 0xe3, 0x1b, 0x28, 0xf0, 0x9a, 0x62, 0x7e, 0x23, 0x58,
-    0xec, 0x93, 0xd6, 0xb4, 0x56, 0x3b, 0xb2, 0xbb, 0xfd, 0xa1, 0x47, 0x6b,
-    0x2a, 0xf6, 0x95, 0x00, 0xe4, 0x77, 0xe7, 0x0c, 0x95, 0xe8, 0x41, 0xd8,
-    0x6d, 0xd4, 0x40, 0x47, 0xef, 0x0d, 0xc2, 0x50, 0x37, 0x97, 0x61, 0x79,
-    0xc9, 0xf3, 0x59, 0x92, 0xe8, 0xbf, 0x5d, 0xae, 0xea, 0x1d, 0x39, 0xd9,
-    0x4b, 0xbe, 0x27, 0xd9, 0x23, 0xf2, 0x7e, 0xb1, 0x84, 0xa3, 0xc3, 0x47,
-    0x69, 0xe9, 0xce, 0x1d, 0x61, 0xad, 0xe4, 0xf7, 0xf9, 0xe8, 0xa3, 0x33,
-    0x1f, 0x51, 0xeb, 0xf3, 0xad, 0x64, 0x8d, 0xcf, 0x7a, 0x0f, 0x1e, 0xa0,
-    0xed, 0x7b, 0xf7, 0x99, 0x9a, 0xae, 0x8a, 0x19, 0xce, 0x01, 0x6d, 0xd7,
-    0xcd, 0x1a, 0x4d, 0x67, 0x1c, 0x2b, 0xc3, 0x75, 0x1d, 0x66, 0xc7, 0x3f,
-    0x8d, 0xd8, 0x7a, 0xb0, 0x95, 0xc6, 0x3e, 0xb9, 0x48, 0xad, 0x2f, 0x68,
-    0x1a, 0x3e, 0x76, 0x48, 0x81, 0x6e, 0x07, 0x4b, 0x33, 0xb6, 0x1e, 0x6c,
-    0xa5, 0x50, 0xe2, 0x5a, 0x5d, 0x98, 0xb6, 0x53, 0xe9, 0x32, 0xc5, 0x8f,
-    0x45, 0xfa, 0xe1, 0x5a, 0x4f, 0x08, 0x7a, 0x9c, 0x95, 0x65, 0x9f, 0xae,
-    0xcd, 0xad, 0x76, 0x18, 0xe7, 0x04, 0xbc, 0xfe, 0x68, 0x7d, 0xbe, 0x95,
-    0xae, 0x7e, 0x1e, 0xa7, 0x98, 0xc7, 0xe3, 0xa1, 0x79, 0xd9, 0x2f, 0x60,
-    0x06, 0x0c, 0x95, 0x17, 0xc3, 0xb8, 0x4d, 0xa7, 0x92, 0x39, 0x97, 0x5f,
-    0xc8, 0x6c, 0x98, 0xd6, 0xc0, 0x08, 0xa3, 0xd1, 0x51, 0xf0, 0xe2, 0x84,
-    0xb9, 0x89, 0x55, 0x4d, 0x43, 0x59, 0x17, 0x87, 0x40, 0xd3, 0x6c, 0x7a,
-    0xdc, 0x54, 0x8d, 0xab, 0xda, 0xec, 0x5d, 0x2d, 0xcf, 0x6a, 0xf3, 0xd0,
-    0xb4, 0xaf, 0x0a, 0x33, 0x83, 0xea, 0xcc, 0x90, 0x04, 0xc2, 0xc7, 0x87,
-    0xb0, 0x1a, 0x57, 0xb5, 0x45, 0x39, 0x36, 0x76, 0x26, 0xe6, 0x12, 0xa6,
-    0xfb, 0xf5, 0xfa, 0x46, 0xa3, 0x63, 0x00, 0xaa, 0xb5, 0x5d, 0x62, 0x2e,
-    0xb1, 0x6b, 0x8f, 0x7e, 0x1d, 0xbb, 0xf9, 0xd3, 0x29, 0x89, 0x2f, 0x87,
-    0x86, 0xf6, 0xea, 0xed, 0x61, 0xfd, 0xae, 0x96, 0xed, 0x5a, 0x8d, 0xab,
-    0x5a, 0x7f, 0xa9, 0xd0, 0x18, 0x39, 0x5f, 0x9d, 0xcf, 0xc9, 0x3e, 0xdb,
-    0x2f, 0x8f, 0x8c, 0xfa, 0xc2, 0xc7, 0x87, 0x80, 0x24, 0x80, 0x94, 0xb9,
-    0x9f, 0xc9, 0xd5, 0xba, 0xd7, 0x4b, 0xda, 0xaa, 0xad, 0x7a, 0xa4, 0xf4,
-    0x6a, 0x01, 0x34, 0x2e, 0x57, 0xbf, 0x37, 0xba, 0xf7, 0x17, 0xb7, 0x34,
-    0xf0, 0xe1, 0x21, 0xc9, 0x32, 0x5d, 0xa6, 0x00, 0xc7, 0xd5, 0x5c, 0xd2,
-    0xa9, 0x08, 0x24, 0x54, 0xc9, 0x68, 0x85, 0x4d, 0xc3, 0xb0, 0xa3, 0x15,
-    0x3b, 0x72, 0x13, 0x50, 0xd6, 0x77, 0x37, 0x53, 0x36, 0x76, 0x05, 0xff,
-    0x30, 0x50, 0x9c, 0x69, 0x2f, 0x88, 0xad, 0xe6, 0xaa, 0x25, 0xc9, 0xac,
-    0xb7, 0xb5, 0x6b, 0x58, 0x0b, 0x87, 0xb9, 0xfd, 0xb1, 0xda, 0x19, 0xba,
-    0x54, 0x1e, 0x10, 0xe9, 0xf5, 0x02, 0x00, 0x4e, 0x79, 0x86, 0xeb, 0xe9,
-    0xf5, 0x42, 0x5d, 0x07, 0x4a, 0x89, 0x33, 0xf0, 0xf4, 0xfa, 0x22, 0xa9,
-    0x1c, 0x22, 0xd0, 0x76, 0x49, 0xd7, 0xa3, 0xbe, 0xb1, 0xc5, 0x55, 0x84,
-    0x8b, 0xe5, 0x45, 0x4b, 0x00, 0x72, 0x9b, 0xe6, 0xf6, 0x24, 0xf2, 0x2a,
-    0x94, 0xb8, 0x76, 0x5d, 0xc3, 0x79, 0x44, 0xe0, 0x7e, 0xcf, 0x5f, 0x6e,
-    0xb3, 0x80, 0x08, 0xcc, 0xe5, 0x85, 0x36, 0xcd, 0xe5, 0x89, 0x31, 0xed,
-    0xf8, 0x43, 0xf7, 0x57, 0x53, 0xaa, 0x95, 0x69, 0xdd, 0xe6, 0x13, 0xc1,
-    0x99, 0x7c, 0x75, 0x7c, 0xda, 0xea, 0xb0, 0xac, 0x7a, 0x0b, 0x3b, 0xb5,
-    0xaf, 0x12, 0xd3, 0xd7, 0x86, 0xf8, 0x27, 0xcc, 0x8e, 0x8b, 0x22, 0x98,
-    0xed, 0x4d, 0xaf, 0xb3, 0x1d, 0x5c, 0xdc, 0x61, 0xab, 0xcb, 0xf5, 0x2e,
-    0x9a, 0xdb, 0x91, 0xd9, 0xe4, 0x3f, 0xa7, 0x91, 0x9b, 0x12, 0x7b, 0xfe,
-    0x00, 0x84, 0x6c, 0x56, 0x03, 0x1a, 0xfb, 0xd9, 0x99, 0x69, 0xbf, 0x03,
-    0x86, 0x65, 0xa5, 0x5a, 0x98, 0xd6, 0x6d, 0x3e, 0xa1, 0x57, 0x93, 0xa5,
-    0x3c, 0xeb, 0x66, 0xcc, 0xd0, 0x74, 0x9a, 0x6b, 0xb7, 0x12, 0xd7, 0xde,
-    0x26, 0x6e, 0x19, 0x8f, 0xdb, 0x0e, 0x4e, 0x7f, 0x45, 0x50, 0x5b, 0x7b,
-    0x23, 0x9c, 0x72, 0x8d, 0x0e, 0x54, 0xda, 0x01, 0x94, 0x38, 0xbf, 0xbf,
-    0x85, 0xf6, 0xfc, 0x01, 0x68, 0xb9, 0x94, 0xe0, 0xf6, 0x5b, 0xa1, 0x64,
-    0xce, 0xef, 0xc8, 0xb4, 0x0f, 0x23, 0xe5, 0x36, 0x35, 0x0d, 0x9b, 0x58,
-    0x71, 0x70, 0xdc, 0x3d, 0xc8, 0xb4, 0x76, 0x0c, 0x30, 0x49, 0xce, 0xeb,
-    0x91, 0xfd, 0xf9, 0xf2, 0x5a, 0x0d, 0xd9, 0xfa, 0xc1, 0x6f, 0x47, 0x7a,
-    0x9d, 0xcd, 0xb4, 0x91, 0x94, 0x8b, 0x7a, 0x0c, 0x18, 0x49, 0x49, 0x30,
-    0x38, 0xf8, 0xab, 0x04, 0x6d, 0xd7, 0x8c, 0xd8, 0xe4, 0x6b, 0x19, 0x67,
-    0xe7, 0x23, 0x3b, 0x0f, 0x0f, 0xd4, 0x27, 0x40, 0xc0, 0x76, 0x48, 0xc3,
-    0x9e, 0xb2, 0x51, 0x00, 0x05, 0xc6, 0xe4, 0x2e, 0x54, 0x70, 0xa7, 0x4d,
-    0xbf, 0x4f, 0xa6, 0x15, 0x39, 0x17, 0xc2, 0x1b, 0x95, 0xd7, 0xba, 0x91,
-    0x54, 0x4e, 0x9a, 0x69, 0xb9, 0x8e, 0x22, 0x33, 0x50, 0x64, 0xca, 0x85,
-    0xfd, 0x49, 0x43, 0x2d, 0xe3, 0xbb, 0x9a, 0x7b, 0xe4, 0x66, 0x0e, 0xbc,
-    0xb9, 0x07, 0x9d, 0xb7, 0x3f, 0x89, 0x88, 0x1f, 0xa7, 0x5d, 0x04, 0x37,
-    0x4a, 0x10, 0xba, 0x06, 0x50, 0x5e, 0x93, 0x0e, 0x94, 0x02, 0xe8, 0x8a,
-    0x0b, 0xa7, 0x5d, 0x66, 0xd4, 0x5b, 0x16, 0xfb, 0x95, 0x54, 0x04, 0x28,
-    0x5b, 0x7d, 0x5f, 0x68, 0x1a, 0x7b, 0x96, 0x69, 0x65, 0xe2, 0xde, 0xb6,
-    0x5f, 0xf6, 0x58, 0x0e, 0xc4, 0x69, 0x07, 0xb8, 0x4c, 0x5b, 0xdb, 0x39,
-    0x12, 0x91, 0x14, 0x3b, 0x8e, 0x0e, 0x07, 0xad, 0xcc, 0x63, 0x68, 0x11,
-    0xf4, 0x2e, 0x3a, 0x97, 0x5f, 0x35, 0x82, 0x75, 0x0c, 0x5a, 0x3e, 0x1c,
-    0x8c, 0x24, 0x73, 0xa0, 0x4b, 0xec, 0x91, 0xa1, 0xcf, 0xa8, 0xa5, 0x9c,
-    0x96, 0x37, 0x22, 0x2d, 0x1a, 0x3a, 0x74, 0xad, 0x7a, 0x6f, 0x99, 0xd5,
-    0x51, 0xf6, 0x16, 0xd3, 0xf2, 0x35, 0x2d, 0x0b, 0xc3, 0xb3, 0x62, 0x7b,
-    0xd3, 0xdc, 0x30, 0xed, 0x77, 0xa1, 0x69, 0x79, 0x98, 0x5e, 0x2f, 0x48,
-    0xef, 0x35, 0xf4, 0xc7, 0xc4, 0x34, 0x3f, 0x77, 0xb6, 0x6b, 0x72, 0xb0,
-    0xf1, 0x79, 0xdb, 0x11, 0xe2, 0xa4, 0x4d, 0x99, 0x4e, 0x9b, 0xe7, 0x97,
-    0x57, 0x55, 0xbf, 0xe4, 0xac, 0x78, 0x2f, 0x69, 0x5a, 0x7f, 0x1e, 0x48,
-    0x18, 0xf7, 0x98, 0x41, 0x73, 0x74, 0xe3, 0xfa, 0xe5, 0xd0, 0xb4, 0xc0,
-    0x8e, 0x0a, 0xf0, 0xdb, 0xb1, 0x27, 0x34, 0x2d, 0x03, 0x65, 0x76, 0x75,
-    0xb7, 0x2c, 0x43, 0x38, 0x8e, 0xce, 0x65, 0xa6, 0x5d, 0x87, 0xe5, 0x6b,
-    0x5e, 0xe3, 0xc8, 0x93, 0x76, 0x5a, 0x81, 0x53, 0x16, 0x03, 0x6a, 0xf5,
-    0x7d, 0xde, 0x0b, 0xce, 0x8e, 0xb7, 0x97, 0x34, 0x2d, 0x8f, 0x39, 0x4a,
-    0x3b, 0x40, 0x68, 0x73, 0xf7, 0x3e, 0xa7, 0x59, 0xf6, 0xc8, 0xcd, 0x47,
-    0x40, 0xd3, 0x0a, 0xe6, 0x67, 0x61, 0xcb, 0x25, 0xf1, 0x05, 0xfe, 0x04,
-    0x22, 0x0a, 0x4d, 0x57, 0x8f, 0x28, 0xb5, 0x04, 0x90, 0xc8, 0x9e, 0x31,
-    0x81, 0xdd, 0xb8, 0x4c, 0xa7, 0x75, 0x60, 0x5a, 0x1e, 0xae, 0x0a, 0x1c,
-    0x24, 0xb1, 0x57, 0x34, 0xad, 0xc8, 0x2e, 0x62, 0xeb, 0x19, 0x69, 0x85,
-    0x1d, 0x68, 0x73, 0x09, 0xc3, 0x83, 0x67, 0xc5, 0x4b, 0x4d, 0x8c, 0xb6,
-    0xc7, 0x34, 0xad, 0x6e, 0xb7, 0xec, 0x9e, 0x43, 0xd1, 0x23, 0xb1, 0x6a,
-    0xdf, 0xb9, 0xf0, 0xec, 0x02, 0xe1, 0xdd, 0x4e, 0x92, 0x4d, 0x6e, 0x57,
-    0x79, 0xa5, 0x7f, 0x75, 0x97, 0x3a, 0x7f, 0xfc, 0xb4, 0xed, 0xce, 0x85,
-    0xa3, 0xe7, 0x01, 0x5e, 0x7e, 0xf5, 0x37, 0xf7, 0xa9, 0xb9, 0xbc, 0xab,
-    0x53, 0x66, 0xe7, 0x83, 0x8e, 0x9e, 0x73, 0x33, 0x30, 0x96, 0x17, 0x79,
-    0x65, 0x85, 0x4e, 0xbf, 0xfa, 0xd3, 0x4a, 0x79, 0x5d, 0x57, 0xd2, 0xb8,
-    0xf5, 0x9f, 0x4e, 0xa2, 0x07, 0x57, 0x49, 0xf9, 0x49, 0x2f, 0xf5, 0xf7,
-    0x0b, 0xec, 0x69, 0x03, 0x70, 0xe0, 0xe3, 0xab, 0xb4, 0xf5, 0x40, 0xbc,
-    0x1f, 0x26, 0x4f, 0x99, 0xd7, 0xb7, 0xb2, 0x9e, 0x9f, 0xf0, 0x9e, 0x3a,
-    0x0e, 0xde, 0x29, 0x01, 0xd1, 0x51, 0xb9, 0xf5, 0xcc, 0xf7, 0x77, 0x80,
-    0xed, 0x07, 0x44, 0x4f, 0x33, 0xf2, 0x89, 0xa0, 0x77, 0xdf, 0x55, 0xba,
-    0xfb, 0x5b, 0xfb, 0xf5, 0xd2, 0x15, 0x0f, 0x6e, 0x61, 0xcd, 0xe6, 0x05,
-    0xd0, 0x6e, 0x37, 0x6e, 0xbd, 0x99, 0x56, 0x68, 0x75, 0x17, 0x91, 0x3d,
-    0xd3, 0x0a, 0xbe, 0x82, 0xea, 0xa1, 0x69, 0x45, 0xed, 0x75, 0xc3, 0x4c,
-    0xc6, 0xfc, 0x39, 0xce, 0x5e, 0x3c, 0xa9, 0xfa, 0x19, 0xd8, 0x32, 0xce,
-    0xb6, 0x87, 0xab, 0x61, 0xd7, 0x01, 0x3b, 0x3f, 0xf2, 0x4f, 0x68, 0xcf,
-    0x3e, 0x92, 0xca, 0xa1, 0xb0, 0xa3, 0xc5, 0x61, 0x79, 0xed, 0x9b, 0x5f,
-    0xb7, 0xbc, 0x71, 0x8c, 0xcf, 0x57, 0xff, 0xc7, 0xd4, 0xb2, 0x2a, 0xa4,
-    0x3d, 0x9c, 0xa2, 0x0c, 0xc2, 0x4e, 0x2b, 0x59, 0x8f, 0x8c, 0x96, 0x72,
-    0x2a, 0x27, 0x5c, 0x74, 0x58, 0x3b, 0x60, 0x37, 0x20, 0x24, 0x34, 0xad,
-    0x12, 0x97, 0x3f, 0x40, 0x43, 0xe4, 0x44, 0x75, 0x96, 0x36, 0xe7, 0xc5,
-    0xdb, 0xdd, 0x4a, 0x84, 0xf0, 0x2c, 0xfb, 0x44, 0x20, 0x66, 0xb4, 0x03,
-    0x5a, 0x5c, 0xd5, 0x2e, 0x2a, 0xc0, 0x8b, 0x4b, 0x8f, 0x2d, 0xae, 0x72,
-    0xa3, 0x0c, 0xde, 0x28, 0x30, 0xb6, 0xb8, 0x5a, 0x95, 0x8f, 0xcc, 0x1d,
-    0xee, 0xe2, 0x24, 0x98, 0xbc, 0x0b, 0x8f, 0x75, 0x71, 0x1e, 0x82, 0xb2,
-    0x2e, 0xee, 0x00, 0x6e, 0xde, 0x18, 0x76, 0x23, 0x3e, 0x61, 0xd8, 0x59,
-    0x50, 0x6f, 0x4d, 0xcb, 0x76, 0x18, 0xe7, 0xfe, 0x91, 0x61, 0x6a, 0x45,
-    0x8f, 0xa3, 0x3b, 0xcc, 0xce, 0xf5, 0xd5, 0x71, 0x3c, 0x06, 0x64, 0x6a,
-    0x4e, 0x9b, 0xfb, 0x75, 0x8d, 0xee, 0xd4, 0x5e, 0x14, 0x01, 0xbf, 0xcd,
-    0x9b, 0x57, 0xb7, 0xdf, 0xac, 0x69, 0xc9, 0xfd, 0x09, 0x33, 0xba, 0xc6,
-    0x91, 0x49, 0xb2, 0xe7, 0x21, 0x78, 0xf7, 0xf7, 0xd2, 0xca, 0xa0, 0xb8,
-    0x16, 0xb5, 0xd3, 0xb4, 0x6e, 0x51, 0xd7, 0x90, 0x4e, 0x9a, 0xd6, 0x78,
-    0x7e, 0x84, 0xb0, 0xa6, 0x65, 0x60, 0x7c, 0x79, 0x15, 0xbf, 0xbc, 0xce,
-    0xdf, 0xc5, 0x6c, 0xd2, 0xb4, 0x86, 0xe7, 0xd7, 0xfa, 0xfb, 0x1b, 0xf4,
-    0xaf, 0x7b, 0xdd, 0xdc, 0x7c, 0xca, 0xb3, 0x0b, 0x74, 0xe0, 0xf5, 0x4e,
-    0xf2, 0xff, 0x73, 0x85, 0xe8, 0x95, 0x36, 0xa2, 0xaf, 0x56, 0x28, 0xf9,
-    0xef, 0x36, 0xda, 0xba, 0x97, 0xa4, 0x25, 0x9b, 0x39, 0x86, 0xf2, 0x6c,
-    0x92, 0x92, 0xef, 0x76, 0x55, 0xb4, 0xe6, 0xfd, 0x1d, 0xe0, 0xcc, 0x03,
-    0x22, 0x96, 0xe6, 0x15, 0xd5, 0xa6, 0x56, 0x5c, 0x28, 0x02, 0x97, 0x39,
-    0x7e, 0x61, 0x2c, 0x8f, 0x1d, 0xa6, 0x90, 0x64, 0xa4, 0x53, 0xc9, 0x9c,
-    0x14, 0xd1, 0x0a, 0x45, 0x25, 0x0c, 0x28, 0xf5, 0xe5, 0x88, 0xca, 0xe1,
-    0xa1, 0x3a, 0x31, 0xad, 0x75, 0x16, 0x6e, 0xd4, 0xac, 0x4c, 0x8d, 0x6c,
-    0xe8, 0xbf, 0x91, 0x9b, 0x72, 0x76, 0xb3, 0x34, 0x22, 0x8b, 0x81, 0xfc,
-    0x13, 0xf3, 0xb6, 0xe5, 0x4e, 0x2d, 0x03, 0xd6, 0xd5, 0x68, 0x6e, 0x31,
-    0xb3, 0xc9, 0x8e, 0xcb, 0xda, 0xad, 0xee, 0xd2, 0x97, 0x31, 0xba, 0x6a,
-    0xb7, 0xcd, 0x1b, 0x43, 0xef, 0x6f, 0x66, 0xc6, 0x70, 0x51, 0x52, 0x73,
-    0x5e, 0xd0, 0x76, 0x20, 0x88, 0x24, 0xd9, 0xd3, 0x13, 0x45, 0xbf, 0x18,
-    0x59, 0xd1, 0xba, 0xee, 0xd5, 0x2d, 0xf2, 0x3a, 0xd6, 0xe9, 0x7a, 0x5d,
-    0xff, 0x86, 0x84, 0xd5, 0x2e, 0x89, 0x7c, 0x53, 0xcb, 0xab, 0xa6, 0xf5,
-    0xa9, 0x3c, 0xed, 0xeb, 0x9f, 0x98, 0x87, 0x12, 0xd7, 0x3e, 0x74, 0x54,
-    0xd6, 0xe3, 0xda, 0x38, 0xde, 0xd4, 0xb2, 0xb6, 0x8e, 0xd6, 0x7b, 0x41,
-    0xcb, 0xaf, 0x5c, 0x49, 0x23, 0xb4, 0x59, 0xa7, 0x75, 0xbc, 0xd0, 0xb4,
-    0xac, 0x12, 0xdf, 0xfd, 0x1b, 0x1f, 0x2d, 0x97, 0x12, 0x95, 0xbf, 0xcd,
-    0xc1, 0xd5, 0x36, 0x76, 0x1a, 0x83, 0x89, 0xcb, 0xda, 0xd9, 0x5d, 0x76,
-    0x49, 0xf6, 0xfc, 0x03, 0xb7, 0x9a, 0xb0, 0x81, 0x3f, 0x6c, 0xb4, 0x65,
-    0x2a, 0x37, 0x7f, 0x6b, 0x81, 0xb7, 0xd9, 0xd1, 0x1f, 0x97, 0xfb, 0x26,
-    0x2f, 0xf4, 0x69, 0xb3, 0x81, 0x8f, 0x25, 0x3a, 0xde, 0xb0, 0x5a, 0xac,
-    0x9f, 0x36, 0x14, 0x45, 0xb7, 0x92, 0xa0, 0x81, 0x8f, 0x07, 0x8a, 0xdd,
-    0x88, 0x5d, 0xed, 0xe2, 0x26, 0xbe, 0x2a, 0x8a, 0xde, 0xa8, 0xa6, 0xc1,
-    0xf6, 0x42, 0xc7, 0x34, 0x70, 0xef, 0xa2, 0x78, 0x86, 0xb2, 0x98, 0x7f,
-    0x58, 0x0c, 0xab, 0xd8, 0x7c, 0x01, 0x69, 0x60, 0x03, 0x8d, 0x28, 0x9d,
-    0x21, 0xbd, 0x5e, 0xb0, 0xdd, 0x13, 0x24, 0x8b, 0x35, 0x85, 0x47, 0x1a,
-    0xf8, 0x58, 0xa2, 0xfb, 0x02, 0xa0, 0xc5, 0x21, 0xdd, 0xac, 0x59, 0x68,
-    0x19, 0x4f, 0x54, 0xaf, 0x66, 0x6a, 0x60, 0x03, 0x05, 0xb1, 0x3e, 0x05,
-    0x01, 0x98, 0x5a, 0xd6, 0xe2, 0x7a, 0xa1, 0xe9, 0x74, 0xd5, 0x3e, 0xf8,
-    0xd0, 0x66, 0x39, 0x40, 0x5f, 0xef, 0xf8, 0x65, 0x03, 0x1f, 0x4b, 0xfc,
-    0x3f, 0xdc, 0xfb, 0x64, 0xf7, 0xcd, 0x73, 0x2d, 0x72, 0x00, 0x00, 0x00,
-    0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
+    0x08, 0x06, 0x00, 0x00, 0x00, 0x63, 0x57, 0xfa, 0xde, 0x00, 0x00, 0x0d,
+    0xda, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9c, 0xed, 0x5d, 0x5f, 0x68, 0x5b,
+    0xd7, 0x1d, 0xfe, 0x09, 0x52, 0x70, 0x46, 0x56, 0x94, 0xb1, 0x87, 0xb8,
+    0x94, 0x61, 0x97, 0xb5, 0xe0, 0x0c, 0x4a, 0xe5, 0xb9, 0x0f, 0xf2, 0xd6,
+    0x92, 0x6b, 0xfa, 0x32, 0xc5, 0x29, 0xad, 0xdc, 0x3e, 0x24, 0xde, 0xfa,
+    0x20, 0xc5, 0x19, 0xb1, 0xb7, 0x87, 0xd5, 0x69, 0x5f, 0x9c, 0xa4, 0xb8,
+    0x6a, 0x1e, 0x52, 0x47, 0x85, 0x6c, 0x76, 0x87, 0x3b, 0x2b, 0x10, 0x66,
+    0xb5, 0x60, 0x9c, 0x3c, 0x38, 0x8a, 0x07, 0x61, 0x56, 0x86, 0x8b, 0x5c,
+    0x70, 0x6a, 0x79, 0x64, 0x48, 0x01, 0x17, 0xe4, 0xe1, 0x0d, 0xb9, 0x98,
+    0xe1, 0x18, 0x11, 0x6e, 0x8c, 0x09, 0x7c, 0x7b, 0xb8, 0xba, 0xd2, 0xfd,
+    0x73, 0xce, 0xbd, 0xe7, 0x5c, 0x29, 0xa9, 0xd3, 0xe8, 0xbc, 0x7c, 0x89,
+    0xee, 0xf9, 0xf3, 0x3b, 0xe7, 0xfe, 0xce, 0x77, 0xbf, 0xf3, 0xbb, 0xe7,
+    0x5c, 0x13, 0x88, 0x68, 0x82, 0x88, 0xea, 0x86, 0x00, 0xb0, 0x06, 0x00,
+    0x40, 0xa6, 0x8c, 0xd8, 0x01, 0xea, 0xde, 0x4e, 0x03, 0x9f, 0x58, 0xac,
+    0xd9, 0x41, 0x53, 0x2b, 0x45, 0x00, 0x40, 0x60, 0x7c, 0x0e, 0x74, 0x0e,
+    0xa0, 0xe1, 0x69, 0x2e, 0x2a, 0x49, 0x60, 0xf0, 0x46, 0x0e, 0x00, 0xf0,
+    0x5d, 0x77, 0xbc, 0x81, 0x8f, 0x2f, 0x7a, 0x2a, 0x98, 0xdb, 0x00, 0x54,
+    0x00, 0xfe, 0x78, 0x0a, 0x94, 0x05, 0xe8, 0xdc, 0xb4, 0x34, 0xfa, 0xf3,
+    0x40, 0x64, 0x06, 0x0d, 0x07, 0x6e, 0xa0, 0x34, 0xca, 0x15, 0x00, 0xa0,
+    0x5c, 0x76, 0x67, 0x54, 0x59, 0x54, 0x92, 0x40, 0xb1, 0xa4, 0x36, 0x24,
+    0x44, 0x03, 0x85, 0x50, 0x28, 0x23, 0x76, 0x34, 0x46, 0xf4, 0xc2, 0xa8,
+    0x32, 0x18, 0x9b, 0xcf, 0x35, 0x1c, 0xb7, 0x81, 0xae, 0xe8, 0x9a, 0x21,
+    0xb7, 0xa1, 0x22, 0x90, 0xa8, 0x2f, 0xb3, 0x3a, 0x61, 0x60, 0x7c, 0xae,
+    0x21, 0x19, 0x1a, 0xe8, 0x88, 0x8e, 0x19, 0xb0, 0x01, 0xf8, 0xf3, 0x0f,
+    0x9f, 0x61, 0xad, 0xe8, 0x8f, 0xa7, 0x1a, 0x8e, 0xdb, 0x40, 0x2e, 0x72,
+    0x2f, 0xe4, 0x36, 0x54, 0xf8, 0xe3, 0x1e, 0x18, 0x73, 0x2c, 0x05, 0x4a,
+    0x00, 0x34, 0x3e, 0x07, 0x4a, 0x00, 0xa1, 0xab, 0x4b, 0x00, 0x80, 0xe9,
+    0xbc, 0x16, 0x65, 0x10, 0xad, 0xc7, 0x7f, 0x7e, 0xba, 0x76, 0xc7, 0x05,
+    0x30, 0x3a, 0x3e, 0x81, 0xc8, 0xc9, 0x7e, 0x44, 0xfa, 0xfa, 0xcb, 0x18,
+    0x41, 0xe4, 0x64, 0x3f, 0x46, 0xe2, 0x23, 0x00, 0x80, 0x62, 0xb1, 0xf8,
+    0xf8, 0x48, 0x12, 0x00, 0xa9, 0x99, 0xfa, 0x4e, 0x68, 0xb5, 0xa4, 0x62,
+    0x24, 0x0e, 0x44, 0xfa, 0xfa, 0x11, 0x3c, 0xa4, 0x20, 0xd2, 0x17, 0xf1,
+    0x5e, 0xff, 0x43, 0xb0, 0x8f, 0x85, 0xf5, 0x61, 0xd8, 0xf3, 0x9a, 0xa1,
+    0x28, 0xc1, 0x31, 0x65, 0x0a, 0x78, 0x24, 0x8c, 0x0b, 0x15, 0xc0, 0x22,
+    0xd0, 0xd6, 0x11, 0x40, 0xa6, 0x63, 0x09, 0x6d, 0x1d, 0x01, 0x04, 0x3a,
+    0x82, 0xdc, 0xff, 0x0f, 0x0d, 0xc7, 0x1e, 0x0b, 0x66, 0x1f, 0x1a, 0x8e,
+    0x55, 0xec, 0xaf, 0x9b, 0xbd, 0x33, 0xb0, 0x8d, 0xc7, 0xe0, 0x7b, 0x83,
+    0x9e, 0x26, 0xf2, 0x43, 0xb1, 0x8f, 0x81, 0xf6, 0x99, 0xb7, 0x03, 0x69,
+    0x86, 0x15, 0x49, 0x91, 0xd9, 0x25, 0x4f, 0x1a, 0xd7, 0x0b, 0xe3, 0x46,
+    0x4e, 0xf6, 0x9b, 0x6e, 0x44, 0xa8, 0x3b, 0x8c, 0xd1, 0xf1, 0x09, 0x00,
+    0xc0, 0x64, 0x72, 0x1a, 0x88, 0x03, 0x4a, 0x77, 0xa8, 0x72, 0x3d, 0xd0,
+    0x11, 0xc4, 0x52, 0x76, 0x69, 0xf7, 0x33, 0xae, 0x6e, 0x7f, 0xbd, 0x1c,
+    0x02, 0x66, 0x87, 0x0d, 0x74, 0x04, 0x11, 0xe9, 0xeb, 0xaf, 0x89, 0x69,
+    0xeb, 0x6a, 0x1f, 0x07, 0x6d, 0x3f, 0x28, 0x9b, 0x92, 0x1a, 0xb4, 0xe0,
+    0xee, 0xb0, 0xc1, 0xa9, 0x4c, 0x4d, 0x1a, 0x57, 0xb9, 0x9c, 0x11, 0x77,
+    0x28, 0x98, 0x19, 0x16, 0x69, 0xfe, 0x00, 0x62, 0x05, 0x40, 0x09, 0x48,
+    0xcd, 0xa6, 0x1c, 0xeb, 0xc7, 0x0a, 0x6a, 0xbf, 0x11, 0x6e, 0xe5, 0x6b,
+    0xa8, 0x1f, 0x45, 0x0f, 0xf6, 0x01, 0x08, 0x1e, 0x52, 0x6c, 0x4f, 0x20,
+    0xac, 0xb8, 0x8c, 0xd7, 0x23, 0xb0, 0xcf, 0x2d, 0xbf, 0x6f, 0x82, 0x88,
+    0xa2, 0x44, 0x94, 0x20, 0xa2, 0x28, 0x00, 0xdf, 0x87, 0x57, 0x88, 0xf6,
+    0xf4, 0x10, 0x3d, 0x10, 0xc3, 0x48, 0x20, 0x4b, 0x89, 0x5f, 0xb5, 0x13,
+    0x2f, 0x45, 0xff, 0x96, 0xa5, 0x4b, 0xcb, 0xed, 0xc2, 0xf5, 0xf1, 0x70,
+    0xf2, 0xc8, 0x3a, 0xf5, 0xbe, 0xf8, 0x8c, 0x2f, 0x61, 0xb4, 0x97, 0x81,
+    0xd9, 0xec, 0x12, 0x8e, 0x9f, 0xf8, 0x1d, 0x6d, 0xd3, 0x36, 0x35, 0x51,
+    0x13, 0x05, 0x95, 0x4e, 0x1a, 0x1b, 0x89, 0xbb, 0x96, 0x33, 0x21, 0x80,
+    0x9e, 0x63, 0xbd, 0xb4, 0xfa, 0xcd, 0x6a, 0xa5, 0x1e, 0x23, 0x86, 0x94,
+    0x10, 0x0d, 0xf4, 0x45, 0xa9, 0xf5, 0x85, 0xe7, 0x7c, 0x9d, 0x87, 0x14,
+    0x6c, 0xdf, 0xdb, 0xa6, 0xa6, 0x7d, 0x4d, 0xb4, 0x70, 0x33, 0x4d, 0x09,
+    0x9f, 0xcf, 0x67, 0xac, 0x2f, 0x3d, 0x9f, 0xc1, 0xe9, 0xb3, 0xa7, 0x69,
+    0xeb, 0xde, 0x16, 0x05, 0xda, 0xda, 0xa8, 0xeb, 0xaf, 0x9f, 0xfb, 0x74,
+    0x3b, 0xdb, 0xbf, 0x68, 0xa7, 0xce, 0x5b, 0x5d, 0xb4, 0x7d, 0x6f, 0xdb,
+    0x54, 0x7f, 0xa0, 0xad, 0x8d, 0x02, 0x2f, 0x05, 0xe8, 0xd4, 0xbb, 0xa7,
+    0xcc, 0xf5, 0xc5, 0x81, 0x83, 0x5f, 0xb4, 0x53, 0x13, 0x35, 0xd1, 0x85,
+    0x4f, 0x2e, 0x50, 0xd7, 0xab, 0xbf, 0xf0, 0x8d, 0x8d, 0x4f, 0x20, 0xf1,
+    0x97, 0x44, 0xa5, 0xbc, 0xff, 0xc0, 0x7e, 0xda, 0xfa, 0xf6, 0x2e, 0x6d,
+    0xd3, 0x36, 0xe5, 0xd3, 0x59, 0x4a, 0x3c, 0x6d, 0xb6, 0x47, 0x47, 0xdd,
+    0x6e, 0x56, 0xff, 0xf2, 0xb7, 0xb2, 0x5a, 0xbb, 0x00, 0xba, 0x8e, 0x1c,
+    0xae, 0xd4, 0x67, 0xcc, 0xd7, 0xb4, 0xaf, 0x89, 0x16, 0x94, 0x34, 0xad,
+    0xf7, 0xad, 0x53, 0xf3, 0x33, 0xe5, 0xfb, 0x22, 0x60, 0x5f, 0xd3, 0xbe,
+    0xa6, 0x4a, 0x7f, 0x2b, 0xf6, 0x01, 0x18, 0xfb, 0x2c, 0x41, 0xb3, 0xd7,
+    0x66, 0x69, 0xf5, 0xdb, 0x55, 0x53, 0x3b, 0xfe, 0x03, 0xfb, 0x29, 0xfd,
+    0xe6, 0x75, 0xba, 0xff, 0xf6, 0x7d, 0xda, 0xfb, 0xf4, 0x0f, 0x7c, 0x09,
+    0xb2, 0xcc, 0x3c, 0x2f, 0x6f, 0xb8, 0x9c, 0x92, 0xac, 0x86, 0x75, 0x7b,
+    0x83, 0x26, 0xb4, 0x87, 0x01, 0x76, 0x8d, 0x16, 0xea, 0x0e, 0x03, 0x2b,
+    0x40, 0x66, 0x3e, 0x23, 0x34, 0xe3, 0xf5, 0xf2, 0xc1, 0x43, 0x8a, 0xd6,
+    0x91, 0x32, 0xd3, 0x0e, 0xbe, 0x37, 0x58, 0x61, 0xa4, 0xe0, 0x6b, 0x0a,
+    0xa0, 0x02, 0xb9, 0xd7, 0x0a, 0x95, 0xf6, 0x42, 0xdd, 0x21, 0x9b, 0x7d,
+    0x85, 0x37, 0x8a, 0xb6, 0xeb, 0x23, 0xf1, 0x51, 0x9b, 0x7d, 0xea, 0x0c,
+    0x10, 0x39, 0xd9, 0x6f, 0xaa, 0xcf, 0xaa, 0x0d, 0x4d, 0x8c, 0x58, 0x2c,
+    0xff, 0xce, 0xd0, 0xa4, 0xfa, 0xff, 0x87, 0x86, 0x63, 0xfc, 0xf1, 0x2a,
+    0xb1, 0x35, 0x3f, 0xd2, 0xd0, 0x5e, 0x77, 0x1a, 0xda, 0x0b, 0x75, 0x87,
+    0x01, 0x40, 0x93, 0x50, 0xe5, 0x71, 0xd0, 0xf3, 0x17, 0xde, 0x28, 0xd6,
+    0x66, 0x9f, 0x85, 0xf1, 0x0b, 0x6f, 0x14, 0xb5, 0xdf, 0x57, 0x80, 0xf0,
+    0xd1, 0x63, 0xe6, 0xf1, 0x2e, 0x33, 0x7d, 0x85, 0x69, 0xa3, 0x33, 0x4b,
+    0xb8, 0xf4, 0x2f, 0x0f, 0x8c, 0xf8, 0xe3, 0x34, 0xe1, 0x44, 0x17, 0x93,
+    0x65, 0x07, 0x88, 0xe8, 0x53, 0x49, 0xe6, 0x76, 0xc2, 0xd8, 0xd9, 0x1e,
+    0x6a, 0xf6, 0xb1, 0x99, 0xc3, 0xca, 0x94, 0x07, 0x5f, 0x6e, 0xb7, 0x31,
+    0x88, 0x95, 0x29, 0xda, 0xda, 0xda, 0xa8, 0xeb, 0x97, 0x5d, 0xd4, 0x7b,
+    0xac, 0xc7, 0xcc, 0x68, 0x00, 0xb2, 0xcb, 0x59, 0x6a, 0x6f, 0xff, 0xb9,
+    0x8d, 0xa1, 0x0f, 0x76, 0x04, 0x60, 0x64, 0xa4, 0xb1, 0xcf, 0x12, 0x64,
+    0x64, 0x92, 0xeb, 0x33, 0x57, 0xaa, 0xcc, 0x63, 0xb1, 0x23, 0x7f, 0x2b,
+    0x4b, 0xd7, 0xaf, 0x5d, 0xa7, 0x33, 0x1f, 0x9e, 0xa3, 0x6d, 0xda, 0x26,
+    0xff, 0x3e, 0x3f, 0x0d, 0xf4, 0x0d, 0x50, 0x6f, 0xef, 0x5b, 0xe6, 0x76,
+    0x4a, 0xc0, 0xc1, 0xae, 0x76, 0x1b, 0xf3, 0x8d, 0x75, 0x04, 0xa1, 0xb7,
+    0x13, 0xed, 0x8b, 0xd2, 0xc0, 0x6f, 0x8f, 0xfb, 0xa2, 0x7d, 0xfd, 0x58,
+    0x5e, 0x5e, 0xb6, 0x31, 0xf5, 0xb1, 0xb7, 0x8f, 0xd1, 0xe1, 0xd7, 0xbb,
+    0x7d, 0xc9, 0xe4, 0x34, 0x7a, 0xff, 0xd9, 0x43, 0xd1, 0xad, 0x28, 0xd1,
+    0x9e, 0x26, 0x6a, 0x7f, 0xa9, 0x9d, 0x06, 0x4e, 0x44, 0xb5, 0xfe, 0x5a,
+    0xda, 0x09, 0x1f, 0x09, 0x53, 0xeb, 0x07, 0x67, 0xdc, 0xc7, 0x81, 0xd1,
+    0x2f, 0x4f, 0xf6, 0x1d, 0x39, 0x4c, 0xd1, 0x13, 0x03, 0xa4, 0x5f, 0x0f,
+    0x29, 0x21, 0x6a, 0x1b, 0x39, 0x67, 0xba, 0xbf, 0xa7, 0x87, 0x63, 0x98,
+    0xbd, 0x36, 0x4b, 0xdb, 0xb4, 0x4d, 0xc1, 0x97, 0x83, 0xd4, 0xf9, 0xe7,
+    0x4f, 0x7d, 0x9a, 0x86, 0xd8, 0xa9, 0x2d, 0x1e, 0x9b, 0xdb, 0xe0, 0x50,
+    0xed, 0x46, 0xfd, 0x98, 0x56, 0x3a, 0x9a, 0x00, 0x60, 0x24, 0x3e, 0x8a,
+    0xcd, 0xa4, 0x2a, 0x14, 0x45, 0xa8, 0x30, 0x03, 0xa3, 0xbe, 0xa5, 0xec,
+    0x12, 0x50, 0x02, 0x42, 0xdd, 0x61, 0x53, 0x79, 0x64, 0x51, 0x61, 0x0a,
+    0x1b, 0xc3, 0x90, 0xb6, 0x9a, 0xb6, 0x32, 0x92, 0xce, 0xbc, 0x99, 0x8e,
+    0x25, 0x4c, 0x4e, 0x4d, 0xf3, 0x99, 0x70, 0xb1, 0xca, 0x50, 0xfa, 0x6a,
+    0x9e, 0x65, 0xaf, 0x3a, 0x63, 0xd1, 0xf0, 0x96, 0x7e, 0xb0, 0xfa, 0xab,
+    0xb7, 0x8b, 0x2c, 0xec, 0xfd, 0x71, 0x18, 0x57, 0x64, 0x51, 0x1e, 0x87,
+    0x90, 0xa9, 0x3e, 0x7d, 0x11, 0x2b, 0x6b, 0x1f, 0x56, 0xcc, 0xed, 0x87,
+    0x8f, 0x1e, 0x33, 0x31, 0x3a, 0xe6, 0x61, 0xbb, 0x7f, 0x00, 0xa0, 0x31,
+    0xad, 0x07, 0x2d, 0x6b, 0xc4, 0xe0, 0x1f, 0x7a, 0x68, 0xe1, 0x87, 0x4c,
+    0xb2, 0xa5, 0x0b, 0x5f, 0xad, 0xd2, 0x7b, 0x37, 0x5b, 0xeb, 0xc2, 0xb4,
+    0x9a, 0xb6, 0x5d, 0xa5, 0xde, 0x17, 0x9f, 0x93, 0xd3, 0xa8, 0x44, 0xb4,
+    0x5e, 0x2c, 0xa2, 0xb9, 0xb9, 0x99, 0xd2, 0x5f, 0x2e, 0x50, 0xd7, 0x37,
+    0x9d, 0xd4, 0xf3, 0x77, 0xbb, 0x66, 0x35, 0x6a, 0xb9, 0x81, 0xf7, 0x4f,
+    0xd1, 0xf2, 0xad, 0x2c, 0x6d, 0xdd, 0xdb, 0xe2, 0x32, 0xb6, 0x9e, 0xff,
+    0x6e, 0x1c, 0xb8, 0x54, 0xd6, 0x72, 0xba, 0xb6, 0x5d, 0xfd, 0x66, 0x95,
+    0x7a, 0x4f, 0x44, 0x2b, 0xe5, 0x63, 0x67, 0x87, 0xe8, 0xf0, 0xeb, 0xdd,
+    0x3e, 0x2b, 0x53, 0x5b, 0x35, 0xb0, 0x51, 0x0b, 0x9f, 0x7a, 0xf7, 0x54,
+    0x85, 0x91, 0xa3, 0xff, 0xb8, 0xc9, 0x61, 0xb2, 0x08, 0x96, 0x97, 0xef,
+    0x54, 0xec, 0x1a, 0xf8, 0xfa, 0x2b, 0x1b, 0x53, 0xad, 0x7f, 0xbb, 0x4e,
+    0xf4, 0x80, 0x88, 0xf6, 0x10, 0x35, 0xed, 0xdb, 0x4b, 0x63, 0x1f, 0x5f,
+    0xa8, 0xf4, 0x93, 0xc5, 0x98, 0x46, 0x46, 0x95, 0x19, 0x07, 0x69, 0xfb,
+    0x04, 0x9e, 0x88, 0x46, 0xf4, 0xef, 0xf3, 0xd3, 0xdc, 0xcc, 0x75, 0xcd,
+    0xe3, 0x03, 0xe3, 0xb5, 0x33, 0xa2, 0x53, 0x1a, 0x59, 0xa8, 0x1f, 0xe3,
+    0x66, 0x1c, 0x18, 0x51, 0x16, 0x53, 0xb3, 0x29, 0x13, 0x63, 0x4c, 0x8c,
+    0x4f, 0xc0, 0xc8, 0x70, 0xc1, 0x43, 0x8a, 0x16, 0x7b, 0x2e, 0xaf, 0x66,
+    0x27, 0xa7, 0xa6, 0x99, 0x0c, 0x83, 0x22, 0xb8, 0x0c, 0x5e, 0xd1, 0x84,
+    0xe5, 0x76, 0x59, 0xe5, 0xdd, 0xa2, 0x20, 0x7a, 0x79, 0x11, 0xcd, 0x28,
+    0xd3, 0xff, 0xa5, 0xec, 0x12, 0xb3, 0x3f, 0x56, 0x86, 0xd4, 0x35, 0xad,
+    0x71, 0x1c, 0x58, 0x0c, 0x2d, 0x6b, 0x9f, 0xb5, 0x7d, 0xd1, 0x78, 0xb9,
+    0xaf, 0x58, 0x52, 0xf1, 0xcc, 0x9f, 0xf6, 0xd6, 0xcc, 0x80, 0xd3, 0x6f,
+    0xae, 0x53, 0x4f, 0x5b, 0x33, 0x9b, 0x6e, 0x89, 0xe8, 0xca, 0x9d, 0x75,
+    0x7a, 0xeb, 0x5a, 0x33, 0xd1, 0x76, 0xed, 0x8c, 0x8b, 0xb3, 0x3d, 0x5c,
+    0x86, 0x32, 0x69, 0xb1, 0x40, 0xbb, 0x6b, 0x3e, 0xe3, 0x4c, 0x8f, 0x1c,
+    0xcd, 0x92, 0x95, 0x31, 0xad, 0xe5, 0xbb, 0xba, 0x43, 0xa8, 0xac, 0xce,
+    0x0d, 0xcc, 0x64, 0xd4, 0x5e, 0x36, 0x26, 0x3a, 0x99, 0xa5, 0x44, 0x54,
+    0xcb, 0x67, 0xd4, 0x78, 0x2c, 0x0d, 0xa7, 0x63, 0xcf, 0xd1, 0x63, 0xd0,
+    0x9f, 0x04, 0xf9, 0x23, 0x59, 0x4a, 0x7c, 0x20, 0xa6, 0x19, 0xad, 0x4c,
+    0x2b, 0xa3, 0xfd, 0x8d, 0x4f, 0x1a, 0xfd, 0x77, 0xe6, 0x38, 0xd4, 0xa0,
+    0x69, 0x9d, 0x98, 0xd6, 0xe9, 0xc9, 0xb3, 0x5e, 0x2c, 0x42, 0x5f, 0x2b,
+    0x10, 0x50, 0x07, 0x06, 0x1c, 0x9b, 0x73, 0x64, 0xda, 0x4a, 0x2a, 0xbf,
+    0x31, 0xab, 0xb5, 0xbd, 0xc9, 0xdb, 0x0e, 0xda, 0x0b, 0xf6, 0x38, 0xed,
+    0xe4, 0x54, 0xf9, 0x49, 0xa0, 0x6a, 0x90, 0x99, 0xcf, 0x98, 0x18, 0x55,
+    0xd7, 0x9c, 0x98, 0x77, 0xd0, 0x78, 0x30, 0xaf, 0x9a, 0x59, 0xd7, 0x59,
+    0x9a, 0x59, 0x8f, 0x32, 0x38, 0xd9, 0x67, 0x8a, 0x7f, 0x82, 0xb1, 0x6a,
+    0x2e, 0x56, 0x99, 0xcc, 0x55, 0x33, 0x4a, 0x30, 0x2d, 0x4f, 0xd3, 0x1a,
+    0x9f, 0x40, 0xc1, 0xd7, 0x14, 0xf3, 0x13, 0xc1, 0x62, 0x9f, 0xb4, 0xa6,
+    0xb5, 0xda, 0xb1, 0x52, 0xbd, 0xae, 0x47, 0x6b, 0x2a, 0xf6, 0xa9, 0x1a,
+    0xbb, 0xeb, 0x6b, 0x86, 0x4a, 0xf4, 0x20, 0xe2, 0x35, 0x6a, 0xa0, 0xa3,
+    0xff, 0x3a, 0xa1, 0xff, 0x30, 0x97, 0x61, 0x79, 0xc9, 0xf7, 0x59, 0x9a,
+    0xe8, 0x7f, 0x5d, 0x9e, 0xda, 0x1d, 0x3c, 0xdb, 0x43, 0x6d, 0x9c, 0x19,
+    0x79, 0xbf, 0xa4, 0xe2, 0xf8, 0xc0, 0x71, 0x5a, 0xbe, 0x73, 0x47, 0x58,
+    0x2b, 0x05, 0xda, 0xda, 0xe8, 0xa3, 0x33, 0x1f, 0x51, 0xeb, 0xf3, 0xad,
+    0x64, 0x8d, 0xcf, 0xfa, 0x0f, 0xec, 0xa7, 0xed, 0x7b, 0xf7, 0x99, 0x9a,
+    0xce, 0xc6, 0x0c, 0xc3, 0xc0, 0xc1, 0x6b, 0x66, 0x8d, 0xa6, 0x33, 0x8e,
+    0x95, 0xe1, 0x78, 0xf1, 0x4f, 0x23, 0xb6, 0x1e, 0x68, 0xa5, 0xd1, 0x4f,
+    0x2e, 0x50, 0xeb, 0x0b, 0x9a, 0x86, 0x4f, 0x1c, 0x52, 0xa0, 0xdb, 0xc1,
+    0xd2, 0x8c, 0xad, 0x07, 0x5a, 0x29, 0x9c, 0xba, 0x5a, 0x17, 0xa6, 0xed,
+    0x54, 0xcc, 0xf1, 0x63, 0x91, 0x71, 0xb8, 0xda, 0x1d, 0x86, 0x1e, 0x67,
+    0x65, 0xd9, 0xa7, 0x6b, 0x73, 0xab, 0x1d, 0xc6, 0x35, 0x01, 0x6f, 0x3c,
+    0x5a, 0x9f, 0x6f, 0xa5, 0x2b, 0x9f, 0x27, 0x29, 0xe1, 0xf3, 0xf9, 0x28,
+    0x27, 0xfb, 0x06, 0xcc, 0x80, 0xe1, 0xf2, 0x66, 0x18, 0xaf, 0x69, 0x28,
+    0x9d, 0xf3, 0xf8, 0x86, 0xcc, 0x81, 0x69, 0x0d, 0x8c, 0x30, 0x12, 0x1f,
+    0x01, 0x2f, 0x4e, 0xb8, 0x99, 0x54, 0xd9, 0x1a, 0x0a, 0x1a, 0x33, 0xeb,
+    0x71, 0x53, 0xcc, 0x68, 0x0c, 0x8b, 0x52, 0x79, 0x55, 0x5b, 0x84, 0xa6,
+    0x7d, 0x4b, 0x30, 0x33, 0xa8, 0xce, 0x0c, 0x8b, 0x5a, 0x39, 0x75, 0xa6,
+    0xdc, 0xbe, 0x83, 0x9d, 0xa9, 0xd9, 0x94, 0x29, 0xbf, 0xde, 0xde, 0x48,
+    0x7c, 0xd4, 0x6e, 0x97, 0x9e, 0x5f, 0xb7, 0x47, 0xbf, 0x8e, 0x6a, 0xf9,
+    0xcc, 0xbc, 0xc4, 0x9b, 0x43, 0x43, 0x7f, 0xf5, 0xfe, 0x30, 0x7f, 0x9f,
+    0xa9, 0xd6, 0x3f, 0x34, 0x1c, 0xd3, 0xfa, 0x9d, 0x85, 0x69, 0x1c, 0x44,
+    0xed, 0x73, 0x7c, 0xf3, 0xc8, 0x68, 0x2f, 0x72, 0xb2, 0x1f, 0x58, 0x04,
+    0x30, 0x6f, 0x1e, 0x67, 0xf2, 0xb4, 0xef, 0xf5, 0x62, 0x75, 0xd7, 0x56,
+    0xad, 0x29, 0x53, 0xd8, 0x04, 0x8d, 0xc9, 0xb5, 0xef, 0x8f, 0xef, 0xfe,
+    0xcd, 0x2d, 0x0d, 0x7c, 0x78, 0x48, 0xb2, 0x4c, 0x57, 0xdc, 0x81, 0xeb,
+    0x6e, 0x2e, 0xe9, 0x54, 0x02, 0x96, 0x4a, 0x92, 0xd1, 0x0a, 0x87, 0x8e,
+    0xe9, 0x27, 0x2d, 0x06, 0x6f, 0x00, 0xca, 0x66, 0xf5, 0x30, 0x65, 0xe3,
+    0x54, 0xf0, 0xf7, 0x03, 0xc5, 0x99, 0xf6, 0xbc, 0xd8, 0x6e, 0xae, 0x5a,
+    0x93, 0xa8, 0x3d, 0x4e, 0x1d, 0x6b, 0xe1, 0x30, 0x77, 0x20, 0x51, 0x3b,
+    0x43, 0xab, 0xe5, 0x09, 0x91, 0x59, 0xdb, 0x04, 0xc0, 0xa9, 0xcf, 0x70,
+    0x3d, 0xb3, 0xb6, 0x59, 0xd7, 0x89, 0xa2, 0x72, 0x26, 0x9e, 0xde, 0x5e,
+    0x6c, 0x3e, 0x87, 0x18, 0xca, 0xa7, 0xa4, 0xeb, 0xd0, 0xde, 0xe8, 0x62,
+    0x01, 0x11, 0x94, 0x37, 0x2d, 0x01, 0xc8, 0x6d, 0x98, 0xfb, 0x93, 0x5a,
+    0x29, 0x42, 0x49, 0x6a, 0xd7, 0x35, 0x9c, 0x43, 0x0c, 0xde, 0xcf, 0xfc,
+    0xe5, 0x36, 0x36, 0x11, 0x83, 0xb9, 0xbe, 0xb0, 0x6a, 0xae, 0x4f, 0x8c,
+    0x69, 0xc7, 0x1e, 0x89, 0xbf, 0x56, 0x52, 0xad, 0x4c, 0xeb, 0xb5, 0x9c,
+    0x08, 0x66, 0x8a, 0xf6, 0xf8, 0xb4, 0xd5, 0x61, 0x79, 0x71, 0xec, 0x9a,
+    0x1c, 0x08, 0xd5, 0xbd, 0x21, 0x81, 0x71, 0x98, 0xb5, 0x74, 0x09, 0xcc,
+    0xfe, 0x66, 0xd6, 0x50, 0x53, 0x7f, 0x47, 0x17, 0xed, 0xf5, 0xfa, 0xf3,
+    0xe6, 0x7e, 0x14, 0x55, 0xfe, 0x7d, 0x1a, 0xbc, 0x21, 0x71, 0xe6, 0x0f,
+    0x40, 0xd8, 0x61, 0x37, 0xa0, 0x71, 0xfc, 0xdc, 0x99, 0xf6, 0x11, 0x31,
+    0xac, 0x35, 0xd5, 0xc2, 0xb4, 0x5e, 0xcb, 0x09, 0x3d, 0x9a, 0x2c, 0xf5,
+    0x59, 0x0f, 0x63, 0x86, 0xa7, 0x32, 0x5c, 0xbb, 0x95, 0x24, 0xc0, 0x63,
+    0x4a, 0x11, 0xc6, 0xe3, 0xf6, 0x83, 0x33, 0x5e, 0xb1, 0x1a, 0x27, 0x4a,
+    0x8c, 0x53, 0xaf, 0xd1, 0x81, 0xd4, 0x1d, 0x40, 0x49, 0xf2, 0xc7, 0x5b,
+    0xe8, 0xcc, 0x1f, 0x80, 0x96, 0x8b, 0x29, 0xee, 0xb8, 0x59, 0xcb, 0xbb,
+    0x32, 0xed, 0xc3, 0x48, 0xb9, 0x0d, 0x4d, 0xc3, 0xa6, 0xf2, 0x2e, 0x8e,
+    0xbb, 0x0b, 0x99, 0xd6, 0x8d, 0x41, 0x15, 0x97, 0x68, 0x4c, 0xa0, 0x58,
+    0xde, 0xab, 0x21, 0xdb, 0x3e, 0xf8, 0xfd, 0xc8, 0xac, 0xb1, 0x99, 0x36,
+    0x36, 0xef, 0xa1, 0x1d, 0x03, 0xc6, 0xe6, 0x25, 0x18, 0x1c, 0xfc, 0x5d,
+    0x82, 0x8e, 0x7b, 0x46, 0x1c, 0xca, 0xb5, 0x8c, 0xb1, 0xcb, 0x91, 0x93,
+    0x87, 0x07, 0xeb, 0xbd, 0xe0, 0x32, 0x3a, 0xa4, 0xe1, 0x4c, 0xd9, 0x08,
+    0x80, 0x4d, 0x46, 0x5b, 0xe1, 0x1d, 0x6f, 0xda, 0xf4, 0xbb, 0x64, 0x5a,
+    0x91, 0xef, 0x42, 0xf8, 0xe3, 0xf2, 0x5a, 0x37, 0x36, 0x9f, 0x93, 0x66,
+    0x5a, 0xae, 0xa3, 0xc8, 0x4c, 0x14, 0x99, 0x7a, 0xe1, 0xfc, 0xa5, 0xa1,
+    0x96, 0xb1, 0xaa, 0xe6, 0x1e, 0xbc, 0x91, 0x03, 0x6f, 0xed, 0x41, 0xe7,
+    0x9c, 0xbf, 0x44, 0xc4, 0x8f, 0xd3, 0xe6, 0xc1, 0x8d, 0x12, 0x84, 0xaf,
+    0x02, 0x54, 0xd4, 0xa4, 0x03, 0x65, 0x01, 0xba, 0xec, 0xc1, 0x69, 0x0b,
+    0x8c, 0x76, 0xcb, 0x62, 0xbf, 0x92, 0x4a, 0x00, 0xad, 0xd8, 0xf3, 0x85,
+    0xa7, 0xb0, 0x6b, 0x99, 0x56, 0x26, 0xee, 0xed, 0xf8, 0x66, 0x8f, 0xe5,
+    0x40, 0x9c, 0x7e, 0x80, 0xcb, 0xb4, 0xb5, 0x7d, 0x47, 0x22, 0x36, 0xcf,
+    0x8e, 0xa3, 0xc3, 0x45, 0x2b, 0xf3, 0x18, 0x5a, 0x04, 0xfd, 0x79, 0xf7,
+    0xfa, 0x6d, 0x33, 0x58, 0xc7, 0x90, 0xe5, 0xc5, 0xc1, 0x60, 0x3a, 0x07,
+    0xba, 0xc8, 0x9f, 0x79, 0xd2, 0x4e, 0xcb, 0x9b, 0x91, 0x16, 0x0d, 0x1d,
+    0xbe, 0x6a, 0x3f, 0x5b, 0x66, 0x75, 0x94, 0xdd, 0xc5, 0xb4, 0x7c, 0x4d,
+    0xcb, 0xc2, 0xc8, 0x8c, 0xd8, 0xd9, 0x34, 0x2f, 0x4c, 0xfb, 0x28, 0x34,
+    0x2d, 0x0f, 0x33, 0x6b, 0x9b, 0xd2, 0x67, 0x0d, 0x03, 0x09, 0x31, 0xcd,
+    0xef, 0xb8, 0xda, 0xad, 0x38, 0xd8, 0xd8, 0x9c, 0xe3, 0x0c, 0x71, 0xd3,
+    0xa6, 0x4c, 0xa7, 0x2d, 0xf2, 0xeb, 0xb3, 0xb5, 0x2f, 0xb9, 0x2a, 0xde,
+    0x4d, 0x9a, 0x36, 0x50, 0x04, 0x52, 0xc6, 0x33, 0x66, 0xd0, 0x1c, 0xdd,
+    0xb8, 0x7f, 0x39, 0x3c, 0x25, 0x70, 0xa2, 0x02, 0xfc, 0x7e, 0xec, 0x0a,
+    0x4d, 0xcb, 0x40, 0x99, 0x53, 0xdd, 0x2d, 0x05, 0x08, 0xc7, 0xd1, 0xb9,
+    0xcc, 0x54, 0x75, 0x58, 0xbe, 0xe6, 0x7d, 0x28, 0x4c, 0x6b, 0xd1, 0xd4,
+    0xd6, 0x7c, 0xfe, 0xf3, 0xee, 0x8e, 0xb7, 0x9b, 0x34, 0x2d, 0x8f, 0x39,
+    0xd4, 0x1d, 0x20, 0xac, 0x56, 0xf3, 0xb9, 0xad, 0xb2, 0x07, 0x6f, 0x3c,
+    0x06, 0x9a, 0x56, 0xb0, 0x3c, 0x0b, 0x5b, 0x2e, 0x8a, 0x6f, 0xf0, 0x27,
+    0x10, 0x51, 0x78, 0xca, 0x3e, 0xa3, 0x00, 0x80, 0x44, 0xce, 0x8c, 0x09,
+    0x9c, 0xc6, 0x65, 0x3a, 0xad, 0x0b, 0xd3, 0xf2, 0x50, 0x15, 0xe8, 0xd8,
+    0x6e, 0xd1, 0xb4, 0x42, 0xa7, 0x88, 0xc1, 0x78, 0xc2, 0x94, 0x0c, 0x8e,
+    0x0e, 0x80, 0x15, 0x2f, 0x35, 0x31, 0xda, 0x2e, 0xd3, 0xb4, 0xba, 0xdd,
+    0xb2, 0x67, 0x0e, 0x45, 0x3f, 0x89, 0x55, 0xfb, 0xc9, 0x85, 0x67, 0x17,
+    0x08, 0xef, 0x74, 0x92, 0x6c, 0xf2, 0xba, 0xcb, 0x2b, 0xf3, 0x9b, 0xbb,
+    0xd4, 0xf9, 0x93, 0x1f, 0x39, 0x9e, 0x5c, 0x38, 0x7e, 0x0e, 0xe0, 0x95,
+    0x2f, 0xfe, 0xfe, 0x3e, 0x35, 0x97, 0x4f, 0x75, 0xca, 0x9c, 0x7c, 0xd0,
+    0xd1, 0x37, 0x3c, 0x0d, 0x63, 0x7d, 0xb1, 0x57, 0xf2, 0x74, 0xfa, 0xd5,
+    0x9f, 0x55, 0xea, 0xeb, 0xba, 0x9c, 0xc1, 0xcd, 0xff, 0x76, 0x12, 0x3d,
+    0xb8, 0x42, 0xca, 0x4f, 0x7b, 0xa8, 0xb7, 0x57, 0xec, 0x4c, 0xdb, 0xfe,
+    0x8f, 0xaf, 0xd0, 0xd6, 0x03, 0xf1, 0x71, 0x98, 0x18, 0x32, 0xef, 0x6f,
+    0x65, 0xdd, 0x3f, 0xe1, 0x33, 0x75, 0x1c, 0xbc, 0x03, 0x20, 0xce, 0xa8,
+    0xd7, 0x69, 0x3f, 0xf3, 0xfd, 0x1d, 0x60, 0xef, 0x53, 0x44, 0x5e, 0xfd,
+    0xc9, 0xbf, 0xe7, 0x0a, 0xdd, 0x7d, 0xdf, 0x79, 0xbf, 0x74, 0xc5, 0x83,
+    0x5b, 0x58, 0xab, 0x79, 0x01, 0xf4, 0x9a, 0xbc, 0x30, 0xad, 0xd0, 0xee,
+    0x2e, 0x22, 0x67, 0xa6, 0x15, 0x98, 0xc9, 0xf5, 0xd2, 0xb4, 0xa2, 0xf6,
+    0x7a, 0x61, 0x26, 0x63, 0xf9, 0x1c, 0xe7, 0x2c, 0x9e, 0x54, 0xfb, 0x0c,
+    0x6c, 0x19, 0x63, 0xdb, 0xc3, 0xd5, 0xb0, 0x6b, 0x80, 0x93, 0x1f, 0x05,
+    0xc6, 0xb5, 0x7b, 0x1f, 0x9b, 0xd7, 0xc2, 0x59, 0xbc, 0xfa, 0xe9, 0xdc,
+    0x34, 0x72, 0x9b, 0x96, 0x27, 0x8e, 0xf1, 0xfe, 0xea, 0xff, 0x98, 0xbc,
+    0x5d, 0x14, 0xd2, 0x1e, 0x6e, 0x51, 0x06, 0x61, 0xa7, 0x95, 0x6c, 0x47,
+    0x46, 0x4b, 0xb9, 0xd5, 0x13, 0x81, 0xcb, 0xde, 0x01, 0xa7, 0x09, 0x21,
+    0xa1, 0x69, 0x95, 0xa4, 0xfc, 0x07, 0x34, 0x44, 0xbe, 0xa8, 0xce, 0xd2,
+    0xe6, 0xbc, 0x78, 0xbb, 0x57, 0x89, 0x10, 0x99, 0x61, 0x7f, 0x11, 0x88,
+    0x19, 0xed, 0x80, 0x16, 0x57, 0x75, 0x8a, 0x0a, 0xf0, 0xe2, 0xd2, 0xa3,
+    0x8b, 0x05, 0x6e, 0x94, 0xc1, 0x1f, 0x07, 0x46, 0x17, 0x0b, 0xb6, 0x72,
+    0x64, 0x1e, 0x70, 0x0f, 0x5f, 0x82, 0xf1, 0xb2, 0x43, 0xd1, 0xc3, 0xf7,
+    0x10, 0x94, 0x4d, 0x71, 0x07, 0xf0, 0xf2, 0xc4, 0x70, 0x9a, 0xf1, 0x29,
+    0xc3, 0xc9, 0x82, 0xba, 0x6b, 0x5a, 0xa6, 0xc3, 0xb8, 0x8f, 0x8f, 0x0c,
+    0x53, 0x2b, 0x7a, 0x1c, 0xdd, 0x65, 0x75, 0xae, 0xef, 0x8e, 0xe3, 0x31,
+    0x20, 0x53, 0x73, 0x3a, 0xe4, 0x17, 0x7d, 0xb2, 0xa1, 0x04, 0x04, 0x1c,
+    0x9e, 0xbc, 0xba, 0xfd, 0x66, 0x4d, 0x4b, 0xde, 0xbf, 0x30, 0xa3, 0x6b,
+    0x1c, 0x99, 0x24, 0xfb, 0x3d, 0x04, 0xff, 0xbe, 0x1e, 0xca, 0xf7, 0x89,
+    0x6b, 0x51, 0x27, 0x4d, 0xeb, 0x15, 0x75, 0x0d, 0xe9, 0xa6, 0x69, 0x8d,
+    0xdf, 0x8f, 0x10, 0xd6, 0xb4, 0x0c, 0x4c, 0xde, 0x2e, 0xe0, 0xd7, 0xd7,
+    0xf8, 0xa7, 0x98, 0x4d, 0x9a, 0xd6, 0x70, 0xff, 0x5a, 0xff, 0x78, 0x9d,
+    0xfe, 0x7d, 0xef, 0x30, 0xb7, 0x9c, 0xf2, 0xec, 0x02, 0xed, 0x7f, 0xbb,
+    0x93, 0x02, 0x5f, 0xe7, 0x89, 0x5e, 0x39, 0x48, 0xf4, 0x65, 0x9e, 0xd2,
+    0xff, 0x39, 0x48, 0x5b, 0xf7, 0xd2, 0xb4, 0xec, 0xb0, 0xc6, 0x50, 0x9e,
+    0x4d, 0x53, 0xfa, 0x9d, 0xae, 0x8a, 0xd6, 0xbc, 0xbf, 0x03, 0x9c, 0x79,
+    0x8a, 0x88, 0xa5, 0x79, 0x45, 0xb5, 0xa9, 0x15, 0x17, 0x00, 0x5c, 0x12,
+    0xa8, 0xcf, 0x75, 0x35, 0x2b, 0x82, 0x43, 0xe9, 0x9c, 0x14, 0xd1, 0x0a,
+    0x45, 0x25, 0x0c, 0x28, 0xf5, 0xe6, 0x88, 0xca, 0xe1, 0xa1, 0x3a, 0x31,
+    0xad, 0x75, 0x15, 0x6e, 0xd4, 0xac, 0x4c, 0x26, 0x31, 0x8c, 0xdf, 0xe0,
+    0x0d, 0x39, 0xbb, 0x59, 0x1a, 0x91, 0xc5, 0x40, 0x81, 0xf1, 0x39, 0xc7,
+    0x7a, 0x27, 0x6f, 0x03, 0xd6, 0xdd, 0x68, 0x5e, 0xb1, 0xa8, 0xb2, 0xe3,
+    0xb2, 0x4e, 0xbb, 0xbb, 0xf4, 0x6d, 0x8c, 0x9e, 0xfa, 0xed, 0xf0, 0xc4,
+    0xd0, 0xc7, 0x9b, 0x59, 0x30, 0x02, 0x49, 0xcd, 0x79, 0x5e, 0x3b, 0x81,
+    0x20, 0x92, 0x64, 0xbf, 0x9e, 0x28, 0xfa, 0xc6, 0xc8, 0x8a, 0xd6, 0x7d,
+    0xaf, 0x5e, 0x91, 0x37, 0xb0, 0x6e, 0xd7, 0xeb, 0xfa, 0x37, 0x24, 0xac,
+    0x76, 0x49, 0x94, 0x9b, 0xbc, 0x5d, 0x30, 0xed, 0x4f, 0xe5, 0x69, 0xdf,
+    0xc0, 0xf8, 0x1c, 0x94, 0xa4, 0xf6, 0xa2, 0xa3, 0xb2, 0x1f, 0xd7, 0xc1,
+    0xf1, 0x26, 0x6f, 0x6b, 0xfb, 0x68, 0xfd, 0xe7, 0xb5, 0xf2, 0xca, 0xe5,
+    0x0c, 0xc2, 0x6a, 0x9d, 0xf6, 0xf1, 0x42, 0xd3, 0xb2, 0x4a, 0xb2, 0xfa,
+    0x37, 0x3e, 0x5a, 0x2e, 0xa6, 0x2a, 0x7f, 0x9b, 0x83, 0xab, 0x6d, 0x9c,
+    0x34, 0x06, 0x13, 0x0b, 0xda, 0xb7, 0xbb, 0x9c, 0x92, 0xec, 0xf7, 0x0f,
+    0xbc, 0x6a, 0xc2, 0x06, 0x7e, 0xbf, 0xd1, 0x91, 0xa9, 0xbc, 0xfc, 0xad,
+    0x05, 0xde, 0x61, 0xc7, 0x40, 0x52, 0xee, 0x9d, 0xbc, 0xd0, 0xab, 0xcd,
+    0x06, 0x3e, 0x91, 0xe8, 0x9a, 0x41, 0x45, 0xfd, 0xb4, 0xa1, 0x28, 0x7a,
+    0x95, 0x04, 0x0d, 0x7c, 0x32, 0x50, 0x2c, 0x23, 0xaa, 0xda, 0xc5, 0x4b,
+    0x7c, 0x55, 0x14, 0xfd, 0x71, 0x4d, 0x83, 0xed, 0x86, 0x81, 0x69, 0xe0,
+    0xee, 0x45, 0xf1, 0x02, 0x65, 0x31, 0xff, 0xb0, 0x18, 0x56, 0xd9, 0x04,
+    0xf7, 0x0d, 0x48, 0x03, 0x1b, 0x68, 0x44, 0xe9, 0x02, 0x99, 0xb5, 0x4d,
+    0xc7, 0x33, 0x41, 0xb2, 0x58, 0x53, 0x78, 0xa4, 0x81, 0x4f, 0x24, 0x7a,
+    0xaf, 0x00, 0x5a, 0x1c, 0xd2, 0xcb, 0x9e, 0x05, 0xfd, 0xec, 0x4f, 0x83,
+    0x59, 0x1b, 0xe8, 0x05, 0xeb, 0x53, 0x11, 0x80, 0xc9, 0xdb, 0x5a, 0x5c,
+    0x2f, 0x3c, 0x95, 0xb1, 0x9d, 0x83, 0x0f, 0xab, 0xd5, 0x4d, 0x12, 0x8d,
+    0xbf, 0x81, 0xdb, 0xc0, 0x5a, 0xf1, 0xff, 0x24, 0x6a, 0x91, 0xa2, 0x13,
+    0x91, 0xb6, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
+    0x42, 0x60, 0x82
 };
 
 
@@ -395,19 +388,19 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
 
     ConfigurationPanelLayout->addWidget( Menu, 0, 0 );
 
-    layout17 = new QVBoxLayout( 0, 0, 6, "layout17"); 
+    layout19 = new QVBoxLayout( 0, 0, 6, "layout19"); 
 
     TitleTab = new QLabel( this, "TitleTab" );
     QFont TitleTab_font(  TitleTab->font() );
     TitleTab_font.setBold( TRUE );
     TitleTab->setFont( TitleTab_font ); 
-    layout17->addWidget( TitleTab );
+    layout19->addWidget( TitleTab );
 
     line2 = new QFrame( this, "line2" );
     line2->setFrameShape( QFrame::HLine );
     line2->setFrameShadow( QFrame::Sunken );
     line2->setFrameShape( QFrame::HLine );
-    layout17->addWidget( line2 );
+    layout19->addWidget( line2 );
 
     Tab_Signalisations = new QTabWidget( this, "Tab_Signalisations" );
 
@@ -546,7 +539,7 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
 
     SettingsDTMFLayout->addLayout( layout11, 0, 0 );
     Tab_Signalisations->insertTab( DTMFPage, QString("") );
-    layout17->addWidget( Tab_Signalisations );
+    layout19->addWidget( Tab_Signalisations );
 
     Tab_Audio = new QTabWidget( this, "Tab_Audio" );
 
@@ -618,7 +611,13 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
 
     CodecsChoiceLayout->addLayout( layout11_2, 0, 0 );
     Tab_Audio->insertTab( CodecsPage, QString("") );
-    layout17->addWidget( Tab_Audio );
+
+    RingPage = new QWidget( Tab_Audio, "RingPage" );
+
+    ringsChoice = new QComboBox( FALSE, RingPage, "ringsChoice" );
+    ringsChoice->setGeometry( QRect( 20, 21, 150, 20 ) );
+    Tab_Audio->insertTab( RingPage, QString("") );
+    layout19->addWidget( Tab_Audio );
 
     Tab_Video = new QTabWidget( this, "Tab_Video" );
 
@@ -627,7 +626,7 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
 
     CodecsPage_2 = new QWidget( Tab_Video, "CodecsPage_2" );
     Tab_Video->insertTab( CodecsPage_2, QString("") );
-    layout17->addWidget( Tab_Video );
+    layout19->addWidget( Tab_Video );
 
     Tab_Network = new QTabWidget( this, "Tab_Network" );
 
@@ -636,7 +635,7 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
 
     CodecsPage_3 = new QWidget( Tab_Network, "CodecsPage_3" );
     Tab_Network->insertTab( CodecsPage_3, QString("") );
-    layout17->addWidget( Tab_Network );
+    layout19->addWidget( Tab_Network );
 
     Tab_Preferences = new QTabWidget( this, "Tab_Preferences" );
 
@@ -650,7 +649,7 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
 
     QWidget* privateLayoutWidget = new QWidget( TabPage, "layout17" );
     privateLayoutWidget->setGeometry( QRect( 10, 20, 220, 210 ) );
-    layout17_2 = new QVBoxLayout( privateLayoutWidget, 11, 6, "layout17_2"); 
+    layout17 = new QVBoxLayout( privateLayoutWidget, 11, 6, "layout17"); 
 
     layout16 = new QHBoxLayout( 0, 0, 6, "layout16"); 
 
@@ -661,18 +660,18 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
     layout16->addWidget( zoneToneChoice );
     spacer5 = new QSpacerItem( 31, 21, QSizePolicy::Expanding, QSizePolicy::Minimum );
     layout16->addItem( spacer5 );
-    layout17_2->addLayout( layout16 );
+    layout17->addLayout( layout16 );
 
     confirmationToQuit = new QCheckBox( privateLayoutWidget, "confirmationToQuit" );
     confirmationToQuit->setChecked( TRUE );
-    layout17_2->addWidget( confirmationToQuit );
+    layout17->addWidget( confirmationToQuit );
 
     checkedTray = new QCheckBox( privateLayoutWidget, "checkedTray" );
-    layout17_2->addWidget( checkedTray );
+    layout17->addWidget( checkedTray );
 
     autoregister = new QCheckBox( privateLayoutWidget, "autoregister" );
     autoregister->setChecked( TRUE );
-    layout17_2->addWidget( autoregister );
+    layout17->addWidget( autoregister );
 
     layout16_2 = new QHBoxLayout( 0, 0, 6, "layout16_2"); 
 
@@ -683,9 +682,9 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
     layout16_2->addWidget( voicemailNumber );
     spacer6_2 = new QSpacerItem( 61, 21, QSizePolicy::Expanding, QSizePolicy::Minimum );
     layout16_2->addItem( spacer6_2 );
-    layout17_2->addLayout( layout16_2 );
+    layout17->addLayout( layout16_2 );
     Tab_Preferences->insertTab( TabPage, QString("") );
-    layout17->addWidget( Tab_Preferences );
+    layout19->addWidget( Tab_Preferences );
 
     Tab_About = new QTabWidget( this, "Tab_About" );
 
@@ -705,9 +704,9 @@ ConfigurationPanel::ConfigurationPanel( QWidget* parent, const char* name, bool
     textLabel1 = new QLabel( CodecsPage_4, "textLabel1" );
     textLabel1->setGeometry( QRect( 85, 126, 291, 131 ) );
     Tab_About->insertTab( CodecsPage_4, QString("") );
-    layout17->addWidget( Tab_About );
+    layout19->addWidget( Tab_About );
 
-    ConfigurationPanelLayout->addLayout( layout17, 0, 1 );
+    ConfigurationPanelLayout->addLayout( layout19, 0, 1 );
     languageChange();
     resize( QSize(560, 515).expandedTo(minimumSizeHint()) );
     clearWState( WState_Polished );
@@ -827,6 +826,7 @@ void ConfigurationPanel::languageChange()
     textLabel1_4_4->setText( tr( "4" ) );
     textLabel1_4_5->setText( tr( "5" ) );
     Tab_Audio->changeTab( CodecsPage, tr( "Codecs" ) );
+    Tab_Audio->changeTab( RingPage, tr( "Rings" ) );
     Tab_Video->changeTab( DriversPage_2, tr( "Drivers" ) );
     Tab_Video->changeTab( CodecsPage_2, tr( "Codecs" ) );
     Tab_Network->changeTab( DriversPage_3, QString::null );
diff --git a/src/configurationpanelui.h b/src/configurationpanelui.h
index a00ba235ed..baaaf5503a 100644
--- a/src/configurationpanelui.h
+++ b/src/configurationpanelui.h
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form interface generated from reading ui file 'configurationpanel.ui'
 **
-** Created: Fri Jan 28 18:58:55 2005
+** Created: Mon Jan 31 18:13:29 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
@@ -94,6 +94,8 @@ public:
     QLabel* textLabel1_4_3;
     QLabel* textLabel1_4_4;
     QLabel* textLabel1_4_5;
+    QWidget* RingPage;
+    QComboBox* ringsChoice;
     QTabWidget* Tab_Video;
     QWidget* DriversPage_2;
     QWidget* CodecsPage_2;
@@ -128,7 +130,7 @@ protected:
     QVBoxLayout* layout8;
     QHBoxLayout* layout7;
     QSpacerItem* Horizontal_Spacing2;
-    QVBoxLayout* layout17;
+    QVBoxLayout* layout19;
     QGridLayout* groupBox1Layout;
     QVBoxLayout* stunButtonGroupLayout;
     QGridLayout* SettingsDTMFLayout;
@@ -144,7 +146,7 @@ protected:
     QHBoxLayout* layout11_2;
     QVBoxLayout* layout9;
     QVBoxLayout* layout10_2;
-    QVBoxLayout* layout17_2;
+    QVBoxLayout* layout17;
     QHBoxLayout* layout16;
     QSpacerItem* spacer5;
     QHBoxLayout* layout16_2;
diff --git a/src/global.h b/src/global.h
index a6496a1b07..d6082031a4 100644
--- a/src/global.h
+++ b/src/global.h
@@ -28,6 +28,7 @@
 #define PROGNAME				"SFLPhone"
 #define SKINDIR					"skins"
 #define PIXDIR					"pixmaps"
+#define RINGDIR					"rings"
 
 #define SFLPHONE_LOGO			"logo_ico.png"
 #define TRAY_ICON				"tray-icon.png"
@@ -44,5 +45,6 @@
 #define	FORMAT					2			// for 16 bits format
 #define OCTETS					SAMPLING_RATE * FORMAT	// Number of writen 
 														// bytes in buffer
-
+#define	YES						0
+#define NO						1
 #endif	// __GLOBAL_H__
diff --git a/src/manager.cpp b/src/manager.cpp
index 7a9c83518d..4a93b7ce75 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -85,8 +85,8 @@ Manager::Manager (QString *Dc = NULL) {
 		gui()->configuration();
 	} 
 
-	spkr_volume = 10;
-	mic_volume = 10;
+	spkr_volume = 100;
+	mic_volume = 100;
 }
 
 Manager::~Manager (void) {
@@ -185,7 +185,8 @@ Manager::ring (bool var) {
 	if (this->b_ringing != var) {
 		this->b_ringing = var;
 	}
-	// TODO: play file.wav
+	tonezone = ringing();
+	tone->playRing ((gui()->getRingFile()).ascii());
 }
 
 // When IP-phone user makes call
@@ -480,7 +481,7 @@ Manager::setChoose (bool b, bool b2) {
 
 bool
 Manager::useStun () {
-	if (Config::getb("Signalisations", "STUN.useStunYes")) {
+	if (Config::geti("Signalisations", "STUN.useStun") == YES) {
 		return true;
 	} else {
 		return false;
diff --git a/src/phonebookui.cpp b/src/phonebookui.cpp
index 08b250c97e..ef9626f46e 100644
--- a/src/phonebookui.cpp
+++ b/src/phonebookui.cpp
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form implementation generated from reading ui file 'phonebook.ui'
 **
-** Created: Fri Jan 28 18:58:54 2005
+** Created: Mon Jan 31 18:13:29 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/phonebookui.h b/src/phonebookui.h
index a504b9e923..bf561121e0 100644
--- a/src/phonebookui.h
+++ b/src/phonebookui.h
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form interface generated from reading ui file 'phonebook.ui'
 **
-** Created: Fri Jan 28 18:58:54 2005
+** Created: Mon Jan 31 18:13:29 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/qtGUImainwindow.cpp b/src/qtGUImainwindow.cpp
index c22ce245b3..c87165b1c2 100644
--- a/src/qtGUImainwindow.cpp
+++ b/src/qtGUImainwindow.cpp
@@ -121,9 +121,11 @@ QtGUIMainWindow::QtGUIMainWindow (QWidget *parent, const char *name, WFlags f,
 	this->pt = new Point(skinfilename.ascii());
 	
 	// Initialisations
+	this->initSpkrVolumePosition();
+	this->initMicVolumePosition();
 	this->initButtons();
 	this->initBlinkTimer();
-
+	
  	// Initialisation variables for ringing and message
 	msgVar = false;
 	b_dialtone = false;
@@ -276,18 +278,12 @@ QtGUIMainWindow::QtGUIMainWindow (QWidget *parent, const char *name, WFlags f,
 				NULL, mypop, parent, name);
 	trayicon->show();
 	connect(trayicon, SIGNAL(clickedLeft()), this, SLOT(clickHandle()));
-	connect(vol_spkr, SIGNAL(setVolumeValue(int)), this, SLOT(volumeSpkrChanged(int)));
-	connect(vol_mic, SIGNAL(setVolumeValue(int)), this, SLOT(volumeMicChanged(int)));
-}
-
-void
-QtGUIMainWindow::volumeSpkrChanged(int val) {
-	callmanager->spkrSoundVolume(val);
-}
-
-void
-QtGUIMainWindow::volumeMicChanged(int val) {
-	callmanager->micSoundVolume(val);
+	
+	// Connections for volume control
+	connect(vol_spkr, SIGNAL(setVolumeValue(int)), this, 
+			SLOT(volumeSpkrChanged(int)));
+	connect(vol_mic, SIGNAL(setVolumeValue(int)), this, 
+			SLOT(volumeMicChanged(int)));
 }
 
 /**
@@ -350,6 +346,46 @@ QtGUIMainWindow::setPathSkin (void) {
 					"Preferences", "Themes.skinChoice", "metal"));
 }
 
+QString
+QtGUIMainWindow::ringFile(void) {
+	return QString(Config::getchar(
+					"Audio", "Rings.ringChoice", "konga.ul"));
+}
+
+QString
+QtGUIMainWindow::getRingFile (void) {
+	QString ringFilename(Skin::getPathRing(QString(RINGDIR), ringFile()));
+	return ringFilename;
+}
+
+void
+QtGUIMainWindow::initSpkrVolumePosition (void) {
+	if (pt->getDirection(VOL_SPKR) == VERTICAL) {
+		vol_spkr_x = Config::get("Audio", "Volume.speakers_x", 
+				pt->getX(VOL_SPKR));
+		vol_spkr_y = Config::get("Audio", "Volume.speakers_y",
+				pt->getVariation(VOL_SPKR));
+	} else if (pt->getDirection(VOL_SPKR) == HORIZONTAL) {
+		vol_spkr_x = Config::get("Audio", "Volume.speakers_x",
+				pt->getX(VOL_SPKR) + pt->getVariation(VOL_SPKR));
+		vol_spkr_y = Config::get("Audio", "Volume.speakers_y", 
+				pt->getY(VOL_SPKR));
+	} 
+}
+
+void
+QtGUIMainWindow::initMicVolumePosition (void) {
+	if (pt->getDirection(VOL_MIC) == VERTICAL) {
+		vol_mic_x = Config::get("Audio", "Volume.micro_x", pt->getX(VOL_MIC));
+		vol_mic_y = Config::get("Audio", "Volume.micro_y",
+				pt->getVariation(VOL_MIC));
+	} else if (pt->getDirection(VOL_MIC) == HORIZONTAL) {
+		vol_mic_x = Config::get("Audio", "Volume.micro_x",
+				pt->getX(VOL_MIC) + pt->getVariation(VOL_MIC));
+		vol_mic_y = Config::get("Audio", "Volume.micro_y", pt->getY(VOL_MIC));
+	} 
+}
+
 /**
  * Inits all phonekey buttons.
  * Create new QPushButtons, set up tool tip, disable focus, set button geometry
@@ -413,8 +449,8 @@ QtGUIMainWindow::initButtons (void) {
 
 	vol_mic = new VolumeControl(this, NULL, VOLUME, micVolVector);
 	vol_spkr = new VolumeControl(this, NULL, VOLUME, spkrVolVector);
-	vol_mic->move(pt->getX(VOL_MIC), pt->getY(VOL_MIC));
-	vol_spkr->move(pt->getX(VOL_SPKR), pt->getY(VOL_SPKR));
+	vol_mic->move(vol_mic_x, vol_mic_y);
+	vol_spkr->move(vol_spkr_x, vol_spkr_y);
 }
 
 /**
@@ -750,6 +786,16 @@ QtGUIMainWindow::startCallTimer (int line) {
 ///////////////////////////////////////////////////////////////////////////////
 // Public slot implementations                                               //
 ///////////////////////////////////////////////////////////////////////////////
+void
+QtGUIMainWindow::volumeSpkrChanged(int val) {
+	callmanager->spkrSoundVolume(val);
+}
+
+void
+QtGUIMainWindow::volumeMicChanged(int val) {
+	callmanager->micSoundVolume(val);
+}
+
 /**
  * Slot to blink with free and busy pixmaps when line is hold.
  */
@@ -967,6 +1013,21 @@ QtGUIMainWindow::quitApplication (void) {
 	bool confirm;
 	// Show QMessageBox
 	confirm = Config::get("Preferences", "Options.confirmQuit", (int)true);
+
+	// Save volume positions
+	// TODO: save position if direction is horizontal
+	Config::set("Audio", "Volume.speakers_x",  pt->getX(VOL_SPKR));
+	if (vol_spkr->getValue() != micVolVector->Y() - micVolVector->Variation()){ 
+		Config::set("Audio", "Volume.speakers_y",  pt->getY(VOL_SPKR) - 
+			vol_spkr->getValue());
+	}
+	Config::set("Audio", "Volume.micro_x",  pt->getX(VOL_MIC)); 
+	if (vol_mic->getValue() != spkrVolVector->Y() - spkrVolVector->Variation()){
+		Config::set("Audio", "Volume.micro_y",  pt->getY(VOL_MIC) - 
+			vol_mic->getValue());
+	}
+	
+	save();
 		
 	if (confirm) {
 		if (QMessageBox::question(this, "Confirm quit",
@@ -1035,7 +1096,7 @@ QtGUIMainWindow::pressedKeySlot (int id) {
 	key->startTone(code);
 	key->generateDTMF(buf, SAMPLING_RATE);
 	callmanager->audiodriver->audio_buf.resize(SAMPLING_RATE);
-	callmanager->audiodriver->audio_buf.setData (buf, callmanager->getSpkrVolume()/10);
+	callmanager->audiodriver->audio_buf.setData (buf, callmanager->getSpkrVolume());
 	pulselen = Config::get("Signalisations", "DTMF.pulseLength", 250);
 	callmanager->audiodriver->audio_buf.resize(pulselen * (OCTETS/1000));
 //	a = callmanager->audiodriver->writeBuffer(buf, pulselen * (OCTETS/1000));
diff --git a/src/qtGUImainwindow.h b/src/qtGUImainwindow.h
index 754a8da072..822ca2dc38 100644
--- a/src/qtGUImainwindow.h
+++ b/src/qtGUImainwindow.h
@@ -130,6 +130,8 @@ public:
 	void 	 toggleLine 	 	(int);
 	void 	 stopTimerMessage 	(void);
 	static 	 QString  setPathSkin(void);
+	static 	 QString  ringFile	(void);
+	QString	 getRingFile		(void);
 	inline 
 	void 	 ring				(bool b) { this->ringVar = b; }
 	inline 
@@ -194,6 +196,8 @@ private:
 	Point				*pt;
 	Vector				*micVolVector;
 	Vector				*spkrVolVector;
+	int			vol_mic_x, vol_mic_y;
+	int			vol_spkr_x, vol_spkr_y;
 
 	// To construct ring rect pixmap
 	QImage 		 imageRing;
@@ -220,6 +224,8 @@ private:
 	
 	void 		 initButtons 	(void);
 	void 		 initBlinkTimer	(void);
+	void		 initSpkrVolumePosition (void);
+	void		 initMicVolumePosition (void);
 
 	int 		 numLineBusy	(void);
 
diff --git a/src/skin.cpp b/src/skin.cpp
index 450f40150c..20c5383306 100644
--- a/src/skin.cpp
+++ b/src/skin.cpp
@@ -71,4 +71,9 @@ Skin::getPathPixmap (const QString & pixdir, const QString & filename) {
 	return (QString(PROGSHAREDIR) + "/" + pixdir + "/" + filename);
 }
 
+QString 
+Skin::getPathRing (const QString & ringdir, const QString & filename) {
+	return (QString(PROGSHAREDIR) + "/" + ringdir + "/" + filename);
+}
+
 // EOF
diff --git a/src/skin.h b/src/skin.h
index 45bdcd30ae..bb175e2a1f 100644
--- a/src/skin.h
+++ b/src/skin.h
@@ -109,6 +109,7 @@ public:
 	static QString getPath(const QString &,const QString &, const QString &);
 	static QString getPath(const QString &);
 	static QString getPathPixmap (const QString &, const QString &);
+	static QString getPathRing	 (const QString &, const QString &);
 };
 
 #endif	// __SKIN_H__
diff --git a/src/tonegenerator.cpp b/src/tonegenerator.cpp
index a4483c21d4..0e3280d9c4 100644
--- a/src/tonegenerator.cpp
+++ b/src/tonegenerator.cpp
@@ -18,15 +18,20 @@
  */
 
 #include <math.h>
+#include <iostream>
+#include <fstream>
 
 #include <qapplication.h>
 #include <qstring.h>
 
+#include "audiocodec.h"
 #include "configuration.h"
 #include "global.h"
 #include "manager.h"
 #include "tonegenerator.h"
 
+using namespace std;
+
 
 ///////////////////////////////////////////////////////////////////////////////
 // ToneThread implementation
@@ -44,7 +49,7 @@ ToneThread::~ToneThread (void) {
 void
 ToneThread::run (void) {
 	while (mngr->tonezone) {
-		mngr->audiodriver->audio_buf.setData (buf, mngr->getSpkrVolume()/10);	
+		mngr->audiodriver->audio_buf.setData (buf, mngr->getSpkrVolume());	
 		mngr->audiodriver->writeBuffer();
 		//mngr->audiodriver->writeBuffer(buf, totalbytes);
 	}
@@ -232,12 +237,10 @@ ToneGenerator::toneHandle (int idr) {
 		if (tonethread == NULL) {
 			tonethread = new ToneThread (manager, buf, totalbytes);
 			manager->audiodriver->audio_buf.resize(totalbytes);	
-		//	manager->audiodriver->audio_buf.setData (buf);	
 			tonethread->start();
 		}
 
 		if (!manager->tonezone) {
-			//tonethread->join();	
 			if (tonethread != NULL) {	
 				delete tonethread;
 				tonethread = NULL;
@@ -247,3 +250,54 @@ ToneGenerator::toneHandle (int idr) {
 }
 
 
+int
+ToneGenerator::playRing (const char *fileName) {
+	short* dst = NULL;
+	char* src = NULL;
+	int expandedsize, length;
+
+	if (fileName == NULL) {
+		return 0;
+	}
+	fstream file;
+	file.open(fileName, fstream::in);
+	if (!file.is_open()) {
+		return 0;
+  	}
+
+	// get length of file:
+  	file.seekg (0, ios::end);
+  	length = file.tellg();
+  	file.seekg (0, ios::beg);
+
+  	// allocate memory:
+  	src = new char [length];
+	dst = new short[length];
+	
+  	// read data as a block:
+  	file.read (src,length);
+
+	expandedsize = AudioCodec::codecDecode (
+				PAYLOAD_CODEC_ULAW,
+				dst,
+				(unsigned char*)src,
+				length);
+
+	if (tonethread == NULL) {
+		tonethread = new ToneThread (manager, dst, expandedsize);
+		manager->audiodriver->audio_buf.resize(expandedsize);	
+		tonethread->start();
+	}
+	if (!manager->tonezone) {
+		if (tonethread != NULL) {	
+			delete tonethread;
+			tonethread = NULL;
+		}
+	}
+	
+	file.close();
+	delete[] dst;
+	delete[] src;
+	return 1;
+}
+
diff --git a/src/tonegenerator.h b/src/tonegenerator.h
index 00587b8078..778a0ed22c 100644
--- a/src/tonegenerator.h
+++ b/src/tonegenerator.h
@@ -73,6 +73,7 @@ public:
 	void generateSin	(int, int, int, int, short *);
 	void buildTone		(int, int, int, int, short*);
 	void toneHandle 	(int);
+	int  playRing		(const char*);
 	
 	short *sample;
 	int freq1, 
diff --git a/src/url_inputui.cpp b/src/url_inputui.cpp
index c76102581e..e3b2ba0925 100644
--- a/src/url_inputui.cpp
+++ b/src/url_inputui.cpp
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form implementation generated from reading ui file 'url_input.ui'
 **
-** Created: Fri Jan 28 18:58:54 2005
+** Created: Mon Jan 31 18:13:29 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/url_inputui.h b/src/url_inputui.h
index a5a6cf2f89..226b813979 100644
--- a/src/url_inputui.h
+++ b/src/url_inputui.h
@@ -1,7 +1,7 @@
 /****************************************************************************
 ** Form interface generated from reading ui file 'url_input.ui'
 **
-** Created: Fri Jan 28 18:58:54 2005
+** Created: Mon Jan 31 18:13:29 2005
 **      by: The User Interface Compiler ($Id$)
 **
 ** WARNING! All changes made in this file will be lost!
diff --git a/src/volumecontrol.cpp b/src/volumecontrol.cpp
index faeb855880..61ddb70ac0 100644
--- a/src/volumecontrol.cpp
+++ b/src/volumecontrol.cpp
@@ -69,6 +69,8 @@ VolumeControl::mouseMoveEvent (QMouseEvent *e) {
 		QPoint ptref(e->globalX() - offset(HORIZONTAL), e->globalY() - mouse_y);
 		if (ptref.x() >= vect->X() and ptref.x() <= vect->Variation()) {
 			volumeValue = vect->X() - ptref.x();
+			// Emit a signal
+			emit setVolumeValue (volumeValue);
 			move (QPoint(ptref.x(), vect->Y()));
 		}
 	}
@@ -80,4 +82,3 @@ VolumeControl::mousePressEvent (QMouseEvent *e) {
 	mouse_y = e->y();
 }
 
-
-- 
GitLab