From 7c777f64b67e310b1bbc0c7c10a65583e92012ef Mon Sep 17 00:00:00 2001 From: Kevin Lynx Date: Fri, 5 Jul 2013 21:07:35 +0800 Subject: [PATCH] add torrent downloader --- HISTORY.md | 5 +++++ ebin/config.beam | Bin 0 -> 3072 bytes ebin/db_hash_reader.beam | Bin 8468 -> 9432 bytes ebin/db_hash_reader_sup.beam | Bin 4200 -> 4304 bytes ebin/db_loc_torrent.beam | Bin 3292 -> 3324 bytes ebin/dhtcrawler.app | 10 +++++----- ebin/loc_torrent.beam | Bin 3936 -> 3980 bytes ebin/loc_torrent_cache.beam | Bin 0 -> 2500 bytes ebin/loc_torrent_sup.beam | Bin 3780 -> 3928 bytes ebin/transfer.beam | Bin 0 -> 3004 bytes win_start_torcache.bat | 1 + 11 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 HISTORY.md create mode 100644 ebin/config.beam create mode 100644 ebin/loc_torrent_cache.beam create mode 100644 ebin/transfer.beam create mode 100644 win_start_torcache.bat diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 0000000..dd3eb80 --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,5 @@ +## 07.05.2013 + +* add torrent downloader which will download torrents and store them in database or local file system +* hash_reader now use local torrents first, if not it will download, and depends on the config it may save the file too + diff --git a/ebin/config.beam b/ebin/config.beam new file mode 100644 index 0000000000000000000000000000000000000000..2ea1044cdf65cc9039abb6f9e353387625c31b6b GIT binary patch literal 3072 zcmZuz3se)w8s5z&WET=x5(uxLD+xkNfyhJU)h>y=9~Zj=l^FW z|0ebISyK?i<*c)r=tMR0KhSob*kt}Q6C(!B?Bynhz*;6^IL^um zSgVuK%9(Wz!ohH6)}nJTE_$nhDbSbbEX9lq=nW8==KggaQ>UlhcAoIvL|BoJL4g!)pYx zSqMr?fFByD)3f9}jZ-9oX7O198Aqap^t*B=>OIuP7lJv3R!b;~mJ4ajgSSEdG?}WA zYdNilR><3MilWdazFHvLh@cy2874>D`6hv^gG3Ka@4^x>xhkql$Dk z7=K7i(Xmz|h;I2AqUkds&Nt&1Iw<#Yw*XH4Mew z`HKRXvy4J<8L6RCDGcby!Lppc4S2Z*#XU%k<|(fNyeE&7V8H_zC_<#3*esH!QZ<-% zme$#G%+QO+-GPDvSbE1ul^`!ArWwyGG6|!SL!?SMC(&flDv$$4C&SaEFaJ$PI$rV3HqZ~O|Jm0C=zhPi1# zkjn9po&B{iW`E!t<~o7LJwRv^KDwp9_wre zmjeWnZni<~3IKlt?f}rn3&8uivETTZ0&)@n)DHkq zJvUa5kKykp=x<{|O4a|w7C62RB?N5H*8~8#|3m-<089_Y;Q;`7$jJd94>=hC!UsW@c#E_TyMzAHoD?83tuF%RDHTm-^9F#V-W+y@YiPSDPj$Bp_ZIuMXfW z!>WgVl>pCjg8NMZa0YO?MG{_C`*#G?CdJ9~5=A4i*;nf>8w%=LL5nwu_*ycXAigix+c(}nZB}T# z>q}v-xnZs$@eR@WN@G3IzjDsGHs9R(eV@|ISC8i^&L@p#@Axe15C13nR$GoJrf*U2 z2Zjpm-j?m6p?PVI$B%Y4DSw%;JY@OZ(Y*N1rt%yv&a*mGy0@igfXdrF)Em0CU6rwR z?fSHofM30r#swCwtlciV*y413O-x_fD}6_!-)i}0p?+^n_EK5P;(!`L74FBUEcxWB zdvns>t|X=L#Fn9#->aJMo3bRJyX`^jwtZEHnKP9X#S+{)W)S^IF2*AF<&A zW$Ig(d~El(QVCtV4!&5lW8K58hBpm-YQEcr*#iv=Pk1(-+{|TPiPR6Q`^we0EMkOI z-+0|SFv|7tK*`4L4|W$U91&;MX5HAIuu1Yw)1@D5y(_93AI-Sduyo^wkh{Muo>y6n zE6~rokK~4q$}%r(ZR{#IwEFbT2JYePwvH*9VQ+7fgmT;Wd5^^4eU|<5>ZY#W651d7 zZ2dzL@?~=EC%S}J4!7Dj+*!GK@P$m->XuLIqH~5{sF5b`ebQOyzcuLbxo<|}`}gmR z4R8KFcKD-5H_R=)GZr1Kd9-H7;?LTwSa_T64Zfk3HEVC|+T==9k?^-l^aCYH0q?SG(1TQ`UPQmCv=U z`60aj{k7*_jjRffnNrN3Ojg3_sgF7zet9Hzb$@JbzwdX~-p&tq+Wt|c z?cmVmx1-nl-im)`{=GSGZyT+>yv2Muw>sY4?WW?+^uf)Rv~<&fEeD=lvc^#v_>;J> zybNyUcaIKGgYPYfh`-m>M(0|xts_xkVb`a<^;P>9EvH8KCI5`iR^6!?kvvxX>4G1c z@16nv+JYiG7vNcg^&Wn=P#Ga7JO~BhMfea(!k?fB6`>{qi5H0=BAkdIqKWB53=u~p O5h+9};`x6o;eP@1NV2s6 literal 0 HcmV?d00001 diff --git a/ebin/db_hash_reader.beam b/ebin/db_hash_reader.beam index 8444775c945ffd5bc3db2987e653425aad34fbd8..cf79be646cf7e88d531a66e5a92aba885ed166ec 100644 GIT binary patch literal 9432 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 T@k{tA{4{=yWcdHTKOy}Oimfgy delta 6931 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 p-PQ(!aBbJ3f6P;+ z6K zI|##!`;6`6%m*HPbo*$=-KFPq!nD8SNT7n5=by9Whf3}Gf=I+HXBPk*h0PyhfIgLs^cSYJ=uNDw!1 z68^LYgd(6<31~$ULS2ov=6{3x%8{{PAcVtZ%aLP2v5~0+INIJq3w?#LjxpAi$Mq7%`coL|Q>&9<-0|?1)3FKD!7v@=v{QoVJO$G!Qkl|8YGQ0) zjDHQ~aifH>@f5~Jk%~8t`9s1KOzV!M?u5J$*7iM#$qR7!396aLz{4chylJISv zvhBv-qm@4jyg+E(Q> zmPTz$qUHH-NzdS*@#VTk)4YZ~qfYnL`3l~y-}#aAop~l`tX`_+FDvL3>utIIWq-~e z`Z-TkljH~>T8x>?yn9A|F4gFj3@pcfMXk=w%$+(AvXeMG5(W4DvQ>jm{ZeD>R_@*< z&|N*7T|JxKq6M%Z%OwkAS#h?9r(;irw+9YAuKjM`@ED3H95nDYv^TY0(edT}V|4i# z?dRv?zRPD}3Zh3eyn8a7J)?OwjepU+x=w4}JyiUCoXEZkd>?8jE&_o!)`Tl8OlC22 zs27(u*8Qo~4EXI3xqqz|zb>7T$nFgezr~t&G>HaVlgsJH1NqTzl|2KY%a_kwTfJO5@D4W>TCQ?$_ zGCe$Cy{Yv=3>d2EiSVLZOMgCk`Smr+rsr!|H4OF)2746@_A1gqD2lVbFKJ)O# z!<_UD+Juo?X=K+KNm(UzeN0_{YOO)BUE)sI$=pK`b>G*V)o{}XZtQ>cP)u(6m60MG zx#1lu%R?>x{8~{kcc>pwhvorwSnMM*ghQ+|2D#d(^^`K}^=eg7(tjeo!_uLAWIVh| z$MKPV93Sb~9+}x5X~*$`VsoI_96Z71K=(f|{SVAtc~DB}SWl^0O6gdKJk}wPO~~T{ z5(%FFkxp2A9dnl@NuH~X=ITV+oDK&)??BZ;Cjt{E6gHBuAwF-1 zYV8o(KU!n_QNJ1-iMQyk-|3g%S*N}$WN z%G(J4RN_nPR=@!W17ht`65nU6`MxHv`J|B#$f?Ze6w^|zHzrrpX+0qO@wC*B?@*u> z-yGhRF3`VJW?;HKqs7OSlFKvWZFMHYKC4Vw(;F#ky6TkA%6|iJE?1okj}dcGozIOE z15BR5Tfl)^xC8&S4m~Fe`fu3c8-L<6>_S3aKysfaUO;0O3OX7*60*i%fKBuq=CA4t z)nXSaFk$UN1ybg?!mmCb7sgZ-!q%6NvTs$d>5H-%#znKF2hkGm#Y7X?3HwWiBiXqi z3m9U)6C>*18-FAAK6|TG8e~r1qv{m`$#MCKcWDqt8l~R6)B!H5NW7FJs?nIocV&E^ zyHdGafvXJF@u>cyzLNe-PqwyvRi8RdS9yQA!VoHtVlb}Iw)CO)*7Cu)wR}*w7A#w& z-(d&w+!E;@QQj4s!AG5ok0!U0%8`N_K^=>46hct4L_V#mFEd+pBp#^&NmCa7e16VuHH~;_ulk5*V6)FiW Z2`>pS2{H*a2{#Ek2|Ecs2|trN5G|&D8BzcM delta 2052 zcmV+f2>bWYA?P3oMo&^P000nRu?V{ce<}a~0ugweg^^88!!Qtqr%h@36H<$ikh&lz zAY$7smtbev8Pgw@ zQXfcN_Ug{)twC`t{MZ#1;jg_E&NN;g3$I;G;{svEy?#NM=k8#GLAbViQI|PWfAWBk zcwZx2lv)N)*4PNbVkB1-@I?7*6q~fQo7SdIa+EI3&0YtR+DN)2%d9rrjMnR(Izd<# z+!t)HGaq>HF-;BSVot0NI#ML#g4!aJ3#=}+ik_*0`mq3tjALjTFI^jsLobngM*h{s|DZDok^0!h_#2}odnW_Ud_w1^ zZ{Ob~*y-!E_6v2*p8)^>lMo1U5DLUxpl!@gl#8!oQGwwO6_b((y9WYc3}GE%B$HGL zPk(5GPyhfHM|hl#Sj}$RMi8d;XU9oxOEGMx0cPNPdK13JY)Y0cUqsZ}1`8G~-Izy);TE`MUqT)wBJhnVWK?qlHz6CI zVfjq6tO?8QI3ZDD`))8JRUz2P1eAp~3B#CJLb#U+;cq~R&jXg(7R3Nrr`Fc}B7bla zmj`60#9JWt3PBHEfme4nK3HzGFY5cTe~3UZS0IoTBkoH9+aMJTmH zl1wwlplU!V-C#m?XVwnj#{F^3gFYL(fu}I`FvgzpxL3f~dkSN3W;IicIS(eBj!l>* zhG{CN%>qpGDVS!S%8X7E6QhMOT7Sx8tANpZ3Zs>$;*KN!5Hkf+pOeIyl9$4|x+D>K z2@ZdTYGyI;AkK6dh)|L^xLT)dIMLTI;p^1f;bQE&jy+>v*O^q~*k7lsy8%nq2PRr! zopN(kL($vS!1X~5mKEP2`-<#+O!mH7zfY~_(BKd`5v{K&>gfzf!cz)CTz>@$y-W%| zw+b9h6REVbl&JT9*HT^b8IvpYGOZYIm?_tkZpV|7Mc0gKU;- zsA~?T^&!YUDOZBcL&XzlcYQZb?1bBHkgy5tp&Da{t3Yr|9!c$yaGu5@ogXRZN8fUO zw8{jH)ho69RSCUfeO0c1m4ESvK3Az~k_-Vvn-O!EyJY11LXBR_z%uOD)N0-@oS6+F z+p*0TM&>F!+sJ=U{1*0VXzTL25vT+%SM6lW)RI!;u0C*aWK+IQog zM^HrJpn|udlbQ9Jj)$j@;qWm$&CbVDhcAKzM2~2APh>bJM)PVKqknmIoz}c3sQ9Ni zky91;Db!9}1bla_3Ab4gFCu1BH!5tbr!%YO^GP4M|3NMOp>RebyEizDH)_!vYQ0E! zWK;eS_?%E(lewGtd`x^iEoU`sSZBH{uZ`#$J4OZFxW8| z?36IrDMWdO)OqzEqv)k>ls1Ff#{Js8snZk#Pd~{mtKBvLqpKVG4@q3ef_1Y z%eBf^5q@9dOY6GN0SE(P?N%HuQ`S6BldpM}XVcM_8GrRLE#-P+HZ`5r1F|3cg?_w3 zftI|RuL_sIA4@YZ-CooD2ZDmjYvX-zEyKPpOKJ|6>Ps&ZldQ$X35vKQf?XohjoEa^ei#hWMAMAex6CBu>I z49EtCSnb4!`uE0&y-(j8r3R^!_o#ZgKyqAsrra8YkxHRAZ*_p%G7@hkiE1=f@ePgN zn1(8sA-GCWZI|k=!lCqMda7#6cl4>#bfwpqA%BKYdE|pJMBCDbwYQQF(9+d^HOu@~ zf@PcZE9@YyQy~2#%DZGU_^5O7(d1TAIZ|*VsAK-l7J`B$YE^xi*{UP)(DF%=u;BkY zX}H|hUS^~9@63_-xl7+HAJJ|Mfz0040S i0Fz!2Fcm2YED0_NF9|UTGzm5dISD!mJqbROqYy2;-`|S> diff --git a/ebin/db_loc_torrent.beam b/ebin/db_loc_torrent.beam index 3bc9a187fa7c5fe48a7e7a6a68fb7d44adb3b29f..38a9a43d067059ca7b0d9c2bbca024e46ef592c9 100644 GIT binary patch delta 166 zcmca3`A3q&%|FPHfr01CMvi8-`diI83=9k`8B8e*?D+*HnfZCeAOTj809$@(NlIo> zHUmp)Qf6KX16N9FQfYd8W?ou88izkEF*7GVKQF#Ku_!MyFCC6Fo~kLy*|y*KGXktcg5{yosWd8QI-8yR%Pa1pt!RF`EDY delta 110 zcmew(c}J4N%|FPHfr01BMvi7S_ub7o3=9k`8B8e*?D+*HnfZCeAOYqS2CkIUq|)^G z%)GRGkSt?nHUoQRUUE)pN-BuYmS0+ul3A3^z>=DjnK$_(n+7{`B446HqS9mqcK6L0 H>{D0)@lhZH diff --git a/ebin/dhtcrawler.app b/ebin/dhtcrawler.app index a2096a3..7d8a6ec 100644 --- a/ebin/dhtcrawler.app +++ b/ebin/dhtcrawler.app @@ -1,15 +1,15 @@ {application,dhtcrawler, [{description,"A DHT crawler to index magnet hash to torrent"}, - {vsn,"0dcf085"}, + {vsn,"5b344c4"}, {registered,[dht_crawler_sup]}, {applications,[kernel,stdlib,crypto,public_key,ssl,inets,bson, mongodb]}, {mod,{crawler_app,[]}}, - {modules,[bt_conn,bt_message,crawler_app,crawler_http, + {modules,[bt_conn,bt_message,config,crawler_app,crawler_http, crawler_stats,crawler_sup,db_frontend,db_hash, db_hash_reader,db_hash_reader_sup,db_loc_torrent, db_store_mongo,db_system,dht_monitor, hash_reader_stats,http_cache,http_handler,loc_torrent, - loc_torrent_sup,string_split,time_util,tor_download, - tor_download_stats,torrent_file,transfer,urldecode, - vlog]}]}. + loc_torrent_cache,loc_torrent_sup,string_split, + time_util,tor_download,tor_download_stats, + torrent_file,transfer,urldecode,vlog]}]}. diff --git a/ebin/loc_torrent.beam b/ebin/loc_torrent.beam index b3ffed3516b6e576a71fce6c774cb2284765d11b..5a49b81023fbfd9acc1b8ce72a4fbea71af774a2 100644 GIT binary patch delta 2049 zcmZ9Ndo>}HYTynQD3b`f1Tt{-ZRU+*xMhKf*!?M+n+VW*)l=ThCwTnyQ zTQ04+loC?kgo-rMS6`PD@)KXb_51ZZzjJ=?a~|jYJkRIrb46aWB*Jk`5sg_8;4X#rGQ8jv?YnE~!PU=O&Chcp_c2!iShpgK}$ zI0gVg4V>VricYqmmm;tLs_Uym1wnBFsGcOn@_l8rcVc`|jUcFz0E*oY20?cU07-(A z?Co+wg9U&uN(6!$|HtHCl3|BwNsiZ+0FnTapesR2f}#YypITq?8%X#u^TRj%KP^R| zQ%Mq!AptG{_cJ&7q4_M?oATJ7&W}wD-v)w5!TjAA2pi=5gi!dt8SmZ8KL=@t$b@YR zlMma@-w*X-2K>Vx095qpS8{{C`>ETaChXIeX$~bM64t3MIN%IjgX<>q`hX937Od2A zFyMV<5kKW|^>3lgV@`{XLdU5`wByf4+bbOvxDJ-@`Wcq1F9tFOwawd8j>P8o+$y=Z zmkG(6+88!TAJp(F7)_8@984@F&aHtKXPEo^AhZnTF7|6Jppgy+aj zX^rk@8KKJQpi`hQ5u9YPKS;}KqfycG$(rWVU_NeUAGn2Z`W`V_! zH#9L*HgkpXBOn zcelyEd5-!bD^_##Ufa$c!_2T(LN8MqQZxyj&Ea3WoKfc7-uv-Sk|OQ88%x##9&4$; zhjrM}D&HbTsiLuPBT#I%x^m9f58oCqPu>|}^6gL|G*Z6Ik|KJDtD_?KdP~a0h8H_x z5kUWAns{3?8yroSrZ_t*%$jBiSywYx(%mclNaMFu%Z60nN0iTI9Af3zhzPkU<`~gK zp758&G9pk78@M$;qWYdc@(~F!hr)vdvx*B879~N|hUGDRTv8-z`INj&-g?HaX zXB$>js}dTo5iJOcE3j9umZnyZhUFb>s!4tul#+3v73fVeJys;VV2JDg!zexS<)3PG z&n@esf%N!6JGmE0MVq|qAEgUg`lOg^UBKE|DFzQl9o7&liw<@#f4WC5TpB(Zv|B#r zzFXUYKt#p8XIA86k!M3K7j@+3b_~qyc%pslzyeKUg@XmJw<)ad^GCA2{546g5|(n3 zyE|anEqd;4<#Sxkc-2<4LH#wi++R8Z7R=~Ybok?Q>|33(<5~*kL+}&pC&kQ(iJto< zckGghb`w?&eLPJ5OpHTEVJ5HJL}^AjuG1t?H)x=ADTEW^*KU#v^0hDahV7kxfKESk z@_H@rX6b2qTX3tP#Sk!xvB=c?{hFTNqv-B?_ND>-4TvWGw2yL=iJ7$ zR&2~gD1@K4b}-I4s~BWP%wdXX#mkMTua#MSzvrYi+372^@92%+>6dEcmrA5J)uetC zDLcvUfvh&49=);@Z2GoCx9;!Kdf|&Vy?Z|ht(z8Ynb%Yh+X_=J@#n>?aq2$5Ra|2u zYnrb8G05YP^UAFuL~TBzw(^t{0dw>1IH;%@QM*Ia-)E6^qbYE66Tz%S-${j#JRzhy zL~XF<=RT+Ja9>#PzX z*|0$+C6v>l(N#9mP$Y1b@=3>Q>}g&>;juWaZLE7@#i6(*XBSJ)jpJ3v(a5DLkIiyv zEwvV#1Ff=LDxAaI+H19$03Ci8K^7*+HzW`{gaaLncLL9_ycK_X6s6@Hgy8eN9!3%g zi`g>}`{kpr&Wu!d-7pO8MlN2CY{+ho5A@26MJ>GCK4|{nFS_waO>$Hy_SL;rDxZJD)7Er#!MS)yqtl{U%s{h?YLJZiPy%j zM2s8ZrhV1a<8xR*gE6e!k1vDqnWym}`a9ztsO-Ai@3}eN z{F}w~2O<1*jijlgcKExvm9)M}tr5lF6JwLlc%?B1zdTxJ*N1%mw8o|PX?%5Drh5J} z>IE`5U)xAVjawpT@4CC1I_(nP-neCyRKCSyQ_>lIB(j)9j>)-{Ka#0*jIhviqd=wp z-jYk3+g9^jZX}YsZ?0@&OOAUfUeZI}(eaWJ23QjQ`^+Tb-&KW%@mCS{azxl6*kRZa MSO_ebZ->PE3(=i$%K!iX delta 2000 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 delta 1778 zcmVg68Mo&^P000iWu?W)v0XwtY0R{m90+Zwd-T`ov!vkyqfRiu;=m7w; z7zHi?e*oA300A_3oMn$qivlqWhU2O$DhLX~-Yj@g4~kc>{t0hoI_c^-wJB`}@zTru zapT9Z3tp1&=1JZJ0QvwhsY@84c44Ce*^O3(Wp&Ex_^DpV9tl;`_`^#)#ZSCYo~}VR zjeTu6_7FN*uv>)h+}~Uzgn_G+DRNor8$vq-TZ7Ootd4=v#~}#4xAU17ta<;+P%a{Q zuWb~Ira-z{Lm6tn6d`6lRxUk^=R7e(wG+whlKY2=oGPA6FYKp2wGoD7wfrS7IcF^e z@O5ZjWmEa~lF8ixP8nUZlUxUK5WkgWv7p$_cV0kgg0!ao5|iEsy9Wbd4Phl=0h6Ez zPk)tzPyhfDe0ZFVSKm+EMiBP>gg^uwK|mS_oFEXnQxZ4?QBHlS`ov3%)R(?lYwyC@ z=kvO2A0&O?@9m$_S^K;@yY|t(BzR`_`(|cmX6L4D>TC=0wIBQ5H5@57i)+cW1h6Tz352Y)2?axMf*a`{#L?PZJfGZQgsSrC2d^yi!| zVg{7f0n2m^zI-+%k0DTG}o6OUoWg=M%7nCyGXMJ}CgO(B|Yn1nfLMV93&!?G(a zH?o|F+>66xMmkckRSGCeJ(8vwainmk6vDp=B{5G}X3@Md59j3-~1A10CJ*ufk-8gZw_vGWqg&deDU9CMyLaO&GM157i}po1FC z;3b+t70QfGbDLuqbL?uw-5SU4OMe`@RVbk^_*2F-O>a)}U`pOd>&_z)}=hl_XM0vgC4=vLA>aY0g)vH`0Y4hk-X^KUSG^vMgSu>xBu+S34$4VU==id55yL zJ4qOW8Z6s!K=yR9_i(cJ^!YvNY(jy9=R}siq39Jopb}oB5X2owVN^;1bASDTB}|YC z6&vC2BJWXTHQIh-H`ZEhU$K?(?<-^gXy4wg&~)!$W~|cv5&q3o#`eoz?xLzWP}T<^ zyVX!Kn+G~i2XZ8aSq?MN3zM8ZzyLKecCd5=m*k<+9!l`S7X^N(!4Lln{BRiwYOA;U z_}hl`%JUs{{%x5*^tlYxkbjg6AX*bFVBsSpKh^H&opP+?en*|b{UVro;Ifx_Je3z7 zMRlt-pGCF8IBJ~UHPRz9njY;J>JQ4Fl9&_9#7DOXX^}oBs`8G}&AHeMSF^g77k}<*FWi}PO#O-b zoKBuoMC}HA0lqv-YSj>~N{nl@k)g5L$kZ8aOG^0SEm-ANoL@*N{T5 ziow*Ba1Sx}NsPcwwAG2RC6wJ=Ieuc+$%$PjCw5>bwE{i0mXKO$o|>h3YEqusl&3~% zwsc5mI;67~LOL_?&wp(EGdrZST1e++NZndU=O*R3NqKHlo>!De@cQ?B%EX=E0n4&7 z)()DBAC>J#@a&HB_%|{~ivUR9;Qf>OUJ6D!TSHt;Lw#@v8)flK7Aq?jFGH3v=8X+4 z57w3gm<&lze)ph}V<1sISe?R28CJs|73m23IMU9H%yrq68-Lf{LHr}dudI8;hK~uc zc0Ci1UIIZyks)td?8}ZHsc=R(C(ZhIEm@zCD%dsx5v35*a2ZF&a=miqj z?2NJ1PnEEDn^5+>X`vj~%`h+OBGZYUT$wUM)XCUi${m%RF==6nwR)-$X5EDA2glopFQlbr4lo+@NXn6{a=J!8u8m$m+(vLOpl>F)aH}T+Em-WNY*X z%#JXqW&9fox?vK0GZXR6POQq~MAJ>+6003u3Tl?9PR(O>oq}lXJ|=n2lK&6V4>=^- zH)Sif!yyU$9LHnw84dY~ih81&t-6~@RMf8gWc;4|9Q_MpOi_rF-3~n!B?%}ADhVqI UEeS9QG6^*aHVHWiI+HICDXYFzH2?qr diff --git a/ebin/transfer.beam b/ebin/transfer.beam new file mode 100644 index 0000000000000000000000000000000000000000..e33948c283aea46b0e05b9c959b156af5476ca52 GIT binary patch literal 3004 zcmZ8i3s@A@9-rBnWgoCG>?|OPFuDt(xa^{YNj_$wg;2v)F-@*5%kJ#5u&-tY0ZBzI z6D&mxYt8U+EA@t-Sz;FOiCBh(gm~jBB9An+Lc)7*np$+vS>%4|`M%$t|M{Qa|9Q@y zNn5x$0YUtarRa6f>v*>lLC|spL8gj%*5u->3@hY#6U$3j#$+*i+-`@&>2}%NMy}8! z_3ikS(jwN*Gd@w^E(o+SE~CX%VgxR13@733PR3Zs+Z{nJcad*{W6W-sg%djL9M54K z^Rhpr11)DX@qP^J0EXxkRE@?-N5a9#n2q7Zyqjei7ti@QO&rg#IA^jlLLWz9ar-$K zmyOR8*xi0sH|sR<{!X{0(7_n(E~`5Tm>VBmt9|)vrm3xkE_H$$&ogm(es&kfuzb*C zds;Q7vhkS8!As4c4?JT5S>jf^%Mvh>ow<6ym*aP?J%oe(rOaaT6GYJ zWajN|m(lDn6>^M_VOcjzJ`DCKQ^0*nKYqJ)67y{uu$kzhGK|n_(Uq%fctQSwvVU? zv=0MgbSWnN$-h4)*qeoe2~wmdlVbDvegAODCq2=~7TQ ztY4~12kAk+Ttu~d#iW?%Lr^j4Edyq;z)bP9ECdUnC>^F$fKJg$P%7>%!zl(d9vs+6 zFE$ed)Pb|32tAHra)Ly~A&Ih3&{}aQRAK^<*JR&0524~PuL1av0|}3LS~eEbVWe`V zESyXRpkxHCO(Bu#DI}3fD{*})Xv}mFYof1SgGdXC#4#bbRlq!)R$_iYM8#thWntiq zm+)*BxTi>l(*x&rfM5U|KnQ>VNC2b&aQFj&i;M^W0s(>^k>TAR)k7apmIIIgC_os% z7y#%O+J*x_{a66_Um3L>|4RJF~ zKY$2;Q7)9>7_A4|i2-B)P=fjKh6}n)r5}^z*;o%Hxg+qXyOoH`C0>D_X zFK|Yoeu15bwt4_V@osZYPL4Gvhp@Nh%ro`1o?V#PdbULqpOKqm2y2S3xr8g;&TF$0 z8E3znzx27Oiw?#aV%uux2|Ef)kd8LR5OA`Jzf0FUPQ|GacO z&qCft2lz$v1QrBa#kqV77lAnAx9p4^IAdNvd0o!j=IcfI`KcK$D`1}S@o~r(xjpcy zx-^+OL^~y&OT`tFiqYc<-0EbQ$?>@KedG2x&@xgCQcIWGp zIxoH%UGmnZUHM%fzSqs=cbGL!+v;mgDpges8dCPd`>#jb|MpWVI!D)1^V8u2_?FKe z^yKbAlAY0~mREkgxqE)}bG7@oxwlZ_`}Rqaw(`Xj>w729%dFb_X`6J{@yHGHC;zYq zZN0XuV$Z?Ymhx?b)w3>zBud%>Tm1YsFEqd8nlAhK!ouwMtY<6sqXnslRxkNBIb*`% zxRBrqyaZc4tU6YGV5Q-co}r_rmues+;ich8BzKV4{C~UiX)TopgoFN z_^C@L>-t^@-m!h@oKNm4XYW^+SY$foKy29I(t`yr$NaM5*0yJ}CP%g0m|Jt{*Hgns zrk>wv|1{v$YjqlA&GCH!S*I6mT~u$r;98pd#$`FfDgTYsNvgcsuS z9(wio$#vHC@*vTs2lW$r6FYxxcjp|kEMviri{yO-R!)O2ln>KtrH6lk-au)R}i{pcKj{Q9bt!>|79 zK*h%K8J+(u|L?qsOaFW!BJb{vHy7C|{By7S`;hgTvW$4)AfoNPxMpk$BQlo&XC5P2~FGE zjLxh{JJL0NaIkIXiTN9Jw|1SF6Vz}aIBUh#EJe}vYixGZ)>0F(rLmy(x8iqN;{J1f zS!3Uk_UaYW*JjT>`1FmsZ->Xaw#I(u&b*Snxzyj;*uLj)#jVx*ZhX^T#N@3lAM<1V zv{yQ-_f1+`{*}gg`vXm6O5+7)cQN2Gdk$c9z<1R54U-=|b^dn0L@psE3Q4FWOcE{` XD;Xz=kf