˱p1N90.U6hplGNRuaTGJ!~? -,aODLJJQx208^)bL1SbS+Nr)OUHt 1`5/'Ȼ{8s&bh3UbhfPrBg_E%ƶ"% _RLi*v82>m"*ܰ;cI*H>E2 #gWn]LW}+Ti+ѿ+i?f(|-'Pw  WU"X14AW~ͽ&U,WʳPέ-܈OLo1|ō.4Gu4aAȃ_o& ٣x"N2Y.ŭWU7C[oqx~&]ւ- 7rTu0pOXzo>ZojH_ b2 k䤈y, >G{hK@ձ3r{7g}Re],Wy]_L9kgE|73ak%˦,'q~mXP=21x~be0GetnBc[m S*s ۈOʹC9Z&SiXR{7M/>=oZ ze#kĔk;]vZq  }q5Ɣ|p;΅Ֆ5lZ]@Cē ̟VJ'ޛ0B D'3Bhn77ړdDT`JXGs&JPƥ8K९_Kc [_/bD/0zs+l%#LM)>F viʊSg4u"xcl J 䇱ˬOt= ~Ԗ Lgu"AsvA1 V]1!y-NSv4s_6_rʍa6Ś*V]7|}"-û׫G. n!i#yE5L}WG&D*Wv(uxK9p^>{ [y1Ҙ<Z٪3VUI 6)Ds_T%O1dײ[{<$R&_ lYm 5aD9-xg %sﴢwsAWEo]OEj9AϰaIksdXnqRH8€f/DQ#f_! 8cٖXS m|rY߲ʆ;lb C뉒cA:S0i^}:5w/V-\q%yUoWSp#:c PP#.]usRc%hלf&Z6y'ɾ)Nz{%I?JcD}Z܉ ~om,|FZ_ &yjG =Z?1Ե.MIR]䥩܉^UN@wl+6eބL$1rmi:u3~ꙇ KܕgK.`$ٞS&(Z%Q0ՋQJnN>Vnhܵ!,ԟ=2OhJIygr|gIV'65:v8@fj@:f [dhɈ5j^8yFB#S h&ېh ;T3 {y614^wutiO Ej8oN᎞VӀ 1o(8+ `YeJeO.ٴ3aˣ'Ú1j6f̨QU$.XM[u^*9)VEnifHc+΂aU!pqT򆧟 Zg^br.6Enܴ(WU,Q-UkIq+@\u}_GG14n 6GԚV)^S@g}YVP?k(Yr_XRIu_#ԩ)etmlcG"k1"__/^S|D\Dk-%7;5eč&ϓg^ϐfl++R4DFmYbT#7zGشBU@̚b֍$sι5d}:-HtŁeNPp#-PLE-8vzYi75WS; ]oh+)k)I͒t ]1|\LJBxNe|>wNu}zKDlN|2"x#޹`O욝"57 &OT.~Gөs~d-+\BaӃIg`o“® C|w=;"&نLkPur֋d"',0]!g ְ2C c Y cHM7Dx 5UuIVH̎Ž&AңyD]H½5)>̔Y ߐ[&OKƺ ۂq# v2AdS_mh Ɠ{BM1Z@#7N ?mg֊ƲYaNjkzL&$E^gs<3"B[#fS$$"0\hniJؤ̒]$tņhpHӗrce|OPKxyLPg']=Z GdD{,WMx'XOhMvS4: 뎹FRSmoh'qxkMX? !B|0|^+ Meo^L{6YRO6@Q76|^Â' AM"n@,z4Zu4FΪhNJ2o@4~̿guܠN~%n/HUBF2$9 uߍljڮ&by(PHR9"hٕ&1jZ=Gb4ѐ\[B!9迻I;X^BW !*+da-0F ^mQT7""Y감zu`{`! Rܠ+ˏkZ /uuPB$`@wp0dI_直GJw h 6@/6dħVTL&v|BHmNP6ӴYȨy\*i4C jN\^_7Wo9Kqh;:5%g+OѬn{;nV=}R3SpKlʸL3ֈ]PRY.BfY['K!DeGքʊf"RK,ѱfnk: K{Q۹.T-%'eBlfB `qBS2S3Vt5BO;it3I SwF0P/?pX؜SLx2Kj , >3z nIZ]'FnM wcDAB@k$p?ȅ#FBIK ?%7Dj+wv2-xsjwRnJb/Ѓ[G ]ig™]T>tO˾'NЈERwMӤȬ︞3p;Zͣ+)rT$N}_t-1Ar*d W"ytjJۧX`相CSU~NwT0J|_txԎA\k6{8 IL5_o˒{Yt:]Za^8wA؜IUp8Zy1 hG*R|o 6KjbYlChdcE!]⤜ާk[;{Mir * /ң-G/xH|WkƬaK#5la~),پۻ=~["tSXHSZD \HS^+LqP,eBzBN9]5"5a#ԕOnO9Q;ⳇGB3bA7ӟ(GVCHq77"Pr7 !To& <΢,ajviI -jq Y J~#8 |y§./{;*Lyu(K\Rشx BG*!%f`03УV$R&ЏaSދ+du 3"*bJGkyRs8Η#W)  T9}mTJz?his->calls( array($sourceRoot, $destRoot), function ($db, $values, $destRoot) { // $sourceRoot = self::getKey($sourceRoot); // $destRoot = self::getKey($destRoot); $db->delete(); $db->setRoot($destRoot); $db->sets($values); }, $this, $values, $destRoot ); } public function moveToList($sourceRoot, $destRoot) { $this->setRoot($sourceRoot); $values = $this->all(); if (empty($values)) return; $this->calls( array($sourceRoot, $destRoot), function ($db, $values, $destRoot) { // $sourceRoot = self::getKey($sourceRoot); // $destRoot = self::getKey($destRoot); $db->delete(); $db->setRoot($destRoot); $db->addToList($values); }, $this, $values, $destRoot ); } public function find($key, $start, $count) { $start = empty($start) ? 0 : $start; $count = empty($count) ? 20 : $count; self::REDIS()->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); $result = array(); while ($arr_keys = self::REDIS()->hScan($this->realRoot, $start, $key, $count)) { foreach ($arr_keys as $str_field => $str_value) { $result[$str_field] = self::decodeValue($str_value); } } return $result; } public function keyExists($key){ return self::REDIS()->exists($key); } } 0j.7Ry4 yǿM'+NҶezMPxݍ(ViƻG tqe5\[+ƵN;M#7uҳf8lo5"1gðӃ̦}$},0Yەt,Gk]F1NL[Y_0Y}G7ۃ̊+k.#CgG:_~s.FrP҉Pk w}!hd D_rL |يğf6'xw!5s7ag,0 d1T+lUPGr(4[te}LW$ }/)tr#\Qȱ{o"o`C3un isKKp6_'>6> |g1{\DL1w2kk}* I?٥Z/'gP/ЂgD Er37_b@:+>0jRVZ:r,Q( BHGO @ZvtxlQ4 Izr mLeViNˠɓ-,+Ķ.Ѽ- ^)B]\1q9RtPv)j5`0!c=al2Q`p-O͞tbm~|<<5$2#Yv뢝 F<&΄6z\ysOnny> {W>X%0{~O7T JuQw-w-s}ݢm4VHKwD!H2I߃r,Zz Bjjå ABI#=6A]됹U/La:ۏߞH$7G`|1+ ZQ u~O+'袄v-3M0\bA "n^a>i2mE o|J wFy{M~b?z36VB/HiA\QRH6@@*. )JKAç?dy8ؔQ*rA B`TznF ny{y&D6`Ѫ-/;d@*ZF2G ApM ,$&Od"g̅4D)gt¬eYu_UD,/!X 3S2٢a:tJ_cFɝwʻF2dn\w/y-w~qR_(ÿCbô35o^6`[ Kd~*{/204)tEcY yh1H셸k4 RۄVfa*k_3\tT \t8ɗ[yo %}DS'rJN:BAb11@D>d=֨pymnAZ( <'Z)c$ilPFvD@bZ(