From 3f98f324440639f1e2cdf382d6d8e4cec1a9199a Mon Sep 17 00:00:00 2001 From: yitter Date: Sat, 27 Mar 2021 22:07:52 +0800 Subject: [PATCH] auto commit --- C#.NET/source/Yitter.IdGenTest/Program.cs | 4 +- ZeOthers/Vlang/source/contract/IIdGenerator.v | 5 + ZeOthers/Vlang/source/contract/ISnowWorker.v | 5 + .../source/contract/IdGeneratorOptions.v | 13 ++ ZeOthers/Vlang/source/core/SnowWorkerM1.v | 198 ++++++++++++++++++ ZeOthers/Vlang/source/core/SnowWorkerM2.v | 38 ++++ .../Vlang/source/gen/DefaultIdGenerator.v | 67 ++++++ ZeOthers/Vlang/source/gen/YitIdHelper.v | 12 ++ ZeOthers/Vlang/source/test | Bin 0 -> 68456 bytes ZeOthers/Vlang/source/test.v | 31 +++ 10 files changed, 371 insertions(+), 2 deletions(-) create mode 100644 ZeOthers/Vlang/source/contract/IIdGenerator.v create mode 100644 ZeOthers/Vlang/source/contract/ISnowWorker.v create mode 100644 ZeOthers/Vlang/source/contract/IdGeneratorOptions.v create mode 100644 ZeOthers/Vlang/source/core/SnowWorkerM1.v create mode 100644 ZeOthers/Vlang/source/core/SnowWorkerM2.v create mode 100644 ZeOthers/Vlang/source/gen/DefaultIdGenerator.v create mode 100644 ZeOthers/Vlang/source/gen/YitIdHelper.v create mode 100644 ZeOthers/Vlang/source/test create mode 100644 ZeOthers/Vlang/source/test.v diff --git a/C#.NET/source/Yitter.IdGenTest/Program.cs b/C#.NET/source/Yitter.IdGenTest/Program.cs index 4c614ae..0946be0 100644 --- a/C#.NET/source/Yitter.IdGenTest/Program.cs +++ b/C#.NET/source/Yitter.IdGenTest/Program.cs @@ -54,9 +54,9 @@ namespace Yitter.OrgSystem.TestA while (true) { - //RunSingle(); + RunSingle(); // Go(options); - CallDll(); + //CallDll(); Thread.Sleep(1000); // 每隔1秒执行一次Go } } diff --git a/ZeOthers/Vlang/source/contract/IIdGenerator.v b/ZeOthers/Vlang/source/contract/IIdGenerator.v new file mode 100644 index 0000000..c85a917 --- /dev/null +++ b/ZeOthers/Vlang/source/contract/IIdGenerator.v @@ -0,0 +1,5 @@ +module contract + +pub interface IIdGenerator { + new_long() u64 +} \ No newline at end of file diff --git a/ZeOthers/Vlang/source/contract/ISnowWorker.v b/ZeOthers/Vlang/source/contract/ISnowWorker.v new file mode 100644 index 0000000..0494115 --- /dev/null +++ b/ZeOthers/Vlang/source/contract/ISnowWorker.v @@ -0,0 +1,5 @@ +module contract + +pub interface ISnowWorker { + next_id() u64 +} \ No newline at end of file diff --git a/ZeOthers/Vlang/source/contract/IdGeneratorOptions.v b/ZeOthers/Vlang/source/contract/IdGeneratorOptions.v new file mode 100644 index 0000000..f31e5ee --- /dev/null +++ b/ZeOthers/Vlang/source/contract/IdGeneratorOptions.v @@ -0,0 +1,13 @@ +module contract + +pub struct IdGeneratorOptions { +pub mut: + method u16 =1// 雪花计算方法,(1-漂移算法|2-传统算法),默认1 + base_time i64// 基础时间,不能超过当前系统时间 + worker_id u16 =1// 机器码,与 workerid_bitlength 有关系 + workerid_bitlength byte=6// 机器码位长,范围:1-21(要求:序列数位长+机器码位长不超过22) + seq_bitlength byte=6// 序列数位长,范围:2-21(要求:序列数位长+机器码位长不超过22) + max_seqnumber u32// 最大序列数(含),(由seq_bitlength计算的最大值) + min_seqnumber u32// 最小序列数(含),默认5,不小于1,不大于max_seqnumber + top_over_cost_count u32 =2000// 最大漂移次数(含),默认2000,推荐范围500-10000(与计算能力有关) +} \ No newline at end of file diff --git a/ZeOthers/Vlang/source/core/SnowWorkerM1.v b/ZeOthers/Vlang/source/core/SnowWorkerM1.v new file mode 100644 index 0000000..af38d65 --- /dev/null +++ b/ZeOthers/Vlang/source/core/SnowWorkerM1.v @@ -0,0 +1,198 @@ +module core + +import contract +import time +import sync + +pub struct SnowWorkerM1{ +mut: + method u16 // 雪花计算方法,(1-漂移算法|2-传统算法),默认1 + base_time i64 // 基础时间,不能超过当前系统时间 + worker_id u16 // 机器码,与 workerid_bitlength 有关系 + workerid_bitlength byte// 机器码位长,范围:1-21(要求:序列数位长+机器码位长不超过22) + seq_bitlength byte// 序列数位长,范围:2-21(要求:序列数位长+机器码位长不超过22) + max_seqnumber u32 // 最大序列数(含),(由seq_bitlength计算的最大值) + min_seqnumber u32 // 最小序列数(含),默认5,不小于1,不大于max_seqnumber + top_over_cost_count u32 // 最大漂移次数(含),默认2000,推荐范围500-10000(与计算能力有关) + + timestamp_shift byte + current_seqnumber u32 + last_time_tick i64 + turn_back_timetick i64 + turnback_index byte + is_over_cost bool + overcostcount_inoneterm u32 + gencount_inoneterm u32 + term_index u32 + mu sync.Mutex +} + +pub fn make_sf_m1(options &contract.IdGeneratorOptions) &contract.ISnowWorker{ + worker_id := options.worker_id + + mut workerid_bitlength:=byte(6) + if options.workerid_bitlength != 0 { + workerid_bitlength = options.workerid_bitlength + } + mut seq_bitlength:=byte(6) + if options.seq_bitlength != 0 { + seq_bitlength = options.seq_bitlength + } + mut max_seqnumber:=u32(0) + if options.max_seqnumber > 0 { + max_seqnumber = options.max_seqnumber + } else { + max_seqnumber = (1< 10000 { + m1.term_index = 0 + } +} + +// fn (m1 &SnowWorkerM1) begin_turn_back_action(use_time_tick i64) { + +// } + +// fn (m1 &SnowWorkerM1) end_turn_back_action(use_time_tick i64) { + +// } + +fn (mut m1 SnowWorkerM1) next_over_cost_id() u64 { + current_time_tick := m1.get_current_time_tick() + if current_time_tick > m1.last_time_tick { + m1.end_over_cost_action() + m1.last_time_tick = current_time_tick + m1.current_seqnumber = m1.min_seqnumber + m1.is_over_cost = false + m1.overcostcount_inoneterm = 0 + m1.gencount_inoneterm = 0 + return m1.calc_id() + } + if m1.overcostcount_inoneterm >= m1.top_over_cost_count { + m1.end_over_cost_action() + m1.last_time_tick = m1.get_next_time_tick() + m1.current_seqnumber = m1.min_seqnumber + m1.is_over_cost = false + m1.overcostcount_inoneterm = 0 + m1.gencount_inoneterm = 0 + return m1.calc_id() + } + if m1.current_seqnumber > m1.max_seqnumber { + m1.last_time_tick++ + m1.current_seqnumber = m1.min_seqnumber + m1.is_over_cost = true + m1.overcostcount_inoneterm++ + m1.gencount_inoneterm++ + + return m1.calc_id() + } + m1.gencount_inoneterm++ + return m1.calc_id() +} + +fn (mut m1 SnowWorkerM1) next_normal_id() u64 { + current_time_tick := m1.get_current_time_tick() + if current_time_tick < m1.last_time_tick { + if m1.turn_back_timetick < 1 { + m1.turn_back_timetick = m1.last_time_tick - 1 + m1.turnback_index++ + // 每毫秒序列数的前5位是预留位,0用于手工新值,1-4是时间回拨次序 + // 最多4次回拨(防止回拨重叠) + if m1.turnback_index > 4 { + m1.turnback_index = 1 + } + // m1.begin_turn_back_action(m1.turn_back_timetick) + } + return m1.calc_turn_back_id() + } + // 时间追平时,turn_back_timetick清零 + if m1.turn_back_timetick > 0 { + // m1.end_turn_back_action(m1.turn_back_timetick) + m1.turn_back_timetick = 0 + } + if current_time_tick > m1.last_time_tick { + m1.last_time_tick = current_time_tick + m1.current_seqnumber = m1.min_seqnumber + return m1.calc_id() + } + if m1.current_seqnumber > m1.max_seqnumber { + // m1.begin_over_cost_action(current_time_tick) + m1.term_index++ + m1.last_time_tick++ + m1.current_seqnumber = m1.min_seqnumber + m1.is_over_cost = true + m1.overcostcount_inoneterm = 1 + m1.gencount_inoneterm = 1 + + return m1.calc_id() + } + return m1.calc_id() +} + +fn (mut m1 SnowWorkerM1) calc_id() u64 { + result := u64(m1.last_time_tick< time.now().unix_time_milli() { + panic("base_time error.") + } + + if options.seq_bitlength+options.workerid_bitlength > 22 { + panic("error:workerid_bitlength + seq_bitlength <= 22") + } + + max_workerid_number := 1< max_workerid_number { + panic("WorkerId error. (range:[1, " + max_workerid_number.str() + "]") + } + + if options.seq_bitlength < 2 || options.seq_bitlength > 21 { + panic("seq_bitlength error. (range:[2, 21])") + } + + max_seqnumber := 1< max_seqnumber { + panic("MaxSeqNumber error. (range:[1, " + max_seqnumber.str() + "]") + } + + if options.min_seqnumber > max_seqnumber { + panic("MinSeqNumber error. (range:[1, " + max_seqnumber.str() + "]") + } + + match options.method { + 1 { + return &DefaultIdGenerator{ + options: options, + snow_worker: core.make_sf_m1(options), + } + } + 2 { + return &DefaultIdGenerator{ + options: options, + snow_worker: core.make_sf_m2(options), + } + } + else { + return &DefaultIdGenerator{ + options: options, + snow_worker: core.make_sf_m1(options), + } + } + } + + +} + +pub fn (mut dig DefaultIdGenerator) new_long() u64 { + return dig.snow_worker.next_id() +} \ No newline at end of file diff --git a/ZeOthers/Vlang/source/gen/YitIdHelper.v b/ZeOthers/Vlang/source/gen/YitIdHelper.v new file mode 100644 index 0000000..9bbcc69 --- /dev/null +++ b/ZeOthers/Vlang/source/gen/YitIdHelper.v @@ -0,0 +1,12 @@ +module gen + +import contract + +pub struct YitIdHelper { +mut: + id_gen contract.IIdGenerator +} + +pub fn (yih &YitIdHelper) next_id() u64 { + return yih.id_gen.new_long() +} \ No newline at end of file diff --git a/ZeOthers/Vlang/source/test b/ZeOthers/Vlang/source/test new file mode 100644 index 0000000000000000000000000000000000000000..24b2f2c0198605a8bf90c022fd08c16be578d92b GIT binary patch literal 68456 zcmeFa33yEB`}jSHgdm(jLhOSlei9NRDz3+2B6C?QkzrX+Wf8XnU->d0W=X~yG-|lBU&&>1H z^tZROlUV;MN%}~T%neAQWCoKey|bf~^pMn$C?zsUQ%PkocYyz`_9{Nl+k+weS)WdX zl1lJIcW(Idk!K?kORP_8==el;pZZhOAQS6TA|*z5j`+&B;a=H=m~lewhA zv&5g|)~BsI%p21^GB>?>|EXo^*0ZP89cCB0Gc$K)=Fa*oW*K39TJsb01pn{B{Hyqs zff@eE#D67{ita`-cNL#%X5ae6Fz|2Kt@yD2o$$2Go%SsGQ}OA{(r0~I!}|=}VZQvg zf7W6i%EJ3pIVf4Wtxp!bq+?X%gl=6rMuoMHii}Q3Y@gVpTl;QZI>g0v=p;q~Ia62cJL3~vnC@l zzBh;e(GI15z9>f-{+$dzK9$}+{%<=F*Zzo6H}LRdaslMBkJ!HjvRWUJt3mcLe>^`S z&;NwH+b86&J|W-w3HiQH$VYra?)Zs(81M->s>P3`_v$C)SdTwuzu_n3>p?C9zbgLi z1i{Drnf(d*#!tvmt$fU%m7kEKy8D=Yk59y3`w9DXK4JgDC+uT||5&&?KrRC}75^rI z;A8fmfc#_iwmQhIZRkC}pxuXJGw&t|3JOgO35tk}4vC7K6%L3-L2>aRvGGAuLn5Ok z5wYRn5?w-koFp_VCUi>B#PIm|$f@BHfRHGB3yPKCW8zeB4DP^6=%gt@5h0OL5?%bH z*zl0Bps5M*;fX=$yn-kpS`>n%D0l%6rpHC=Vk4vDBhVAcR1(L<$3}%mOQwcT4b{z* zOn@NbV?#p2-@OIJ&73+RCMr&%i_w9_2#8~xBrZNICLvxD5fPOTHwh^`HdZntHZne3 z5}p_tFVR7I;=(163Je-NpBghAGl0E`5eN#hiA_)t_z)d~=?ICBjER;+heXH3MTLj! zBm*>l{d|Htb@1#`{@S_2yZ3i*p54nWbn4Jm666=)9|RE#pBNbzA08Xv?-Lah9Uc%e zAqrzMacWF7D~cep`caFhOHqU3zxZDz_HuVkHge7? zgy(r1c^wHgYzk6-|{k z@|rgGc^f&_N9&)~MsBMIN7~43^=7b*9LF!#zezT7SE~@7IvaUi8+oFQyq=9*ZzFfJ zk*C?n>)XiFZRBi9BATwWk+UWt$}?=_jcokcXd`cIBhR#vH?fgt*~n!!@_%3d&4K?v z<-ilJ$tynjo)d3yJn~Q?;ZsfV_GJZp@(Gb-lCh4af974qZ4 zY2}QH_;F!KIimu8T=-czqvCyBs48bvxQ`1x%NZ5z zdtCUa)S6yYu#o<8M#T#0FK1M!kp6PU4iVB{&Zt-+{pE}b71CeMs7N9G<%|jx(qGP~ zI3fMzj0zLdU(To~A^lc{(tCR!OAjV%SYE*QVIE-1w<_@E3VgN#|5bqxRp5OU`1cCD zr2?<7z~5EiGK#2#Zj$FH625%99TCU}@ zv>98*>%fEu9LZ;afusOh6rZn_2ir+1S4R0Hi;n_ChLKKw!a+W(EdT1GrC^Wu%AKp? zjZtzPFFdr!pj{bK0>eJIs3(%xH)n)a8xd z-@!1H-;eDEqiFdWBCq0h2FUBczZ!XMW0z_|L2_wbZV3;%;Q-o6F0@k#C92bA759fm zE>(FQ<`yZzFxg_?yAHQ-4ZNxhYPpMXVA<(AsU|LMEl9lbxkam(i5m(>G2v$@IIFXTgpST=x0f>+RvT#7&1 zJ`@K22?e~6&1c`02?6rnys_(VFd0`1Ii4ml0lc7*D>TNgCq=1R-osMxwyX?GM`8II zG#G@l2XoGH1b}6$CUUP$j=tWb&6P+rp%&1)5O0eNVv$^Am+++A>Ed@zc^jutvQC(X zt6se3jg1e^g1}a4JW6=Ge2vG$cxOu$h&{yFi5GGYpzgCge^XZGCz!cuS zl02oeWEU#WER4v0a3$ea`3c!-+U}^`DYbF39Upp%+v!qImFD8) z7kZXn1DwkE4`IfGvAabJtbsC@LOgjPhfApiQS~%I6>_ee<_v+D?D*u8+6fQ#JA;>= zCbdT?nn}_$_O;Q_D{tPz{W!=|?ZYVt4_N?VmSTXRd48d9g?PEFU!H@#7#laswbxKw z2C#!+xtY_Pxr2MVhpMb*;J>d&3BcYg8N91K zO8i4h_>~}71lF9unwO-%v7N-%=x^tndW2gX37w{2Xg1aw2qa$(DRxr>NGa_B5E-=r zP|YI41As-y1s4{ZE_TYaE@CdIyiD^RLTsHpO@4NN7db;FR8plmSFy&_KlG5wIL<*# zYw9I#@qMT)eCTU2L$D;AEVo`!R>QaeG62%LfOiqF37U}-AH2AXe~(FO!Y?}iXdem~A0u(9yMNytu1uL zrbk4m2@euLdIzNFLGMV zE_;IgBclDT=$`i|<%MEC`$1nmyQC5iYV2fbybE}cz&vm&Ge?NyE~|TtpWZtaj3o(e z1Nmg{q4>%Rx8j{a2}b}}yq-g@g+Uba9LE9MjRUvk;iLP)8DPlbgUlNSI6;+tWCo8y zd1%5tc!SH)vg=$^r6lz^x40_gU!Y2OnKMBJN>1%{Bxw{MTFC8m=$K-fd2_cCqAFIUjY=+M9n`6a^n$y|d3GrU z2`}s(f%SQ9R7R~`a;benYi?(JN4spZQ`KS^9kkc~332mQfD<+6lLI#A{G=94W5(qs zmsa9Zaqf-w?X%6&s>S5;Ho7!sY6F{;@$*YhfJ<({6pXGhQ_qVs(ba+xB-71ljP|hQ za0`4$7Cb--y-_L0E$GA?&K4au6+Jr%R?#zG(V;8MNw@{Ln}D);jnK0)*fil5{LEwn z8j7-fN02QiS@39AQ6~B~pV=EC$~r!;IBfviw~f1nCL&O?JU&YIDfYf9d zRwdzeswu&KOfGNeYuWpxtSsNh8Lf=T&4t>3U>fL@b0DR9tr~&)o5rht!W+*ranOpI z=)FPfN)UkJfsv&Ybv<-)4=me6Pac|Z0A_@)77fII6!@mZ@v0V+U>OM(vHNp_4j}+K z!QCfb47;)Z+k-OTv2umlFh}l=}!aU%hd3XoPTi_de3&)u>^A-W92$Q zEq4ZqlFxos1%}dk@SPV*YvF3|lcaFm^fMj+Q3w?#qGsg1FAFkFDVNudFo z!&A(GXpP(%{)HYiLd8Yj;aB40fv*6`RKY(k5!{47;r~M_VJyZzD%%fYAX9O*9OOI< z0Wnv?_|6XE*gnCPpMMZDP9vDdj8lzOjZ=+R1?5_fK8BDwSj!9ByEr%CjWPT%C@Rdo z%g%#&3HXc2g+P0w75~ti{AshMs#ztR zNzSnohCu=kTFVQH$CCI6>n{{bd0BI*;t(wPV2|>`&ZYLm8{!lY`OqFbYVI|Vi!h`; zgR$WL@R6Q2W5AkFGxj>k4D#>U7*b)!SAAtI7FH%&QA_r-!*YY9CgqQwAm)Ixy@5=Ran3$uHJTP$2PCAZK8 z++ulF%s;Gk=W$^DzbxPK8rRFmeV)>qf9QVY|IEFYk9*SLPn4Ur%!HFrYLFhks()gR zLLwlUkcWjDQFkgOYC|Xt$05ta4A8(>qH2j~{~*{cYz4Mhc^PBNRLKV+r{WYU{Tqkr zHS>IW*oi};!v0`Oofg`o&4mNOp0mB8*L!e+Cu-TwQTGUA#rx+b-^P$DrB~AIr=feX717U0<^T<=% zmD-&XI`f7k7-2lO+<5>6D)>qab^Jnm%Y}0urE0Izxd-|DY^ViL)X)8eNB)9E%muzu zlEktB92n}TAms)Jxp2}WTkZ97?lQGqiAq3C2nwmZX(ZGJHHbN3s{`}yTl3qxHUfQ( z*wd7V@ehD?56HNYIGG8?ESv;c=#5zj8MjET2TPpCGL~_xS;qayGH$b&ah%5vd4Xte zuiOmJ_cF2v%<=UggdCINa}TH!1aZfN-v=PUlv~z7JV7jzf&g>X4YMCdJ>sMeGhGSB za%-k5BGPf5fA}8G#t#X3siwJYVZK!r+ObgJl{dEuA9@(ZQ!0IL=avcgVTufIE-e#! zK_?G$+v~g$r;Ek_xr?u00gtd3g(CM4eP&q>Ds_l4tczXpYdbDw7{p)?{4Xg=2SXoj zr@Bj-kez((s{Z9jZdp$61SPjDuj*qT{hThPQCtd6O;S#AshAx`?RWZDcHDx4@ZLLy zOMwX+EY43~Eyg>ycRIdR>b;mbc>I-n1{Hi0jus3t!WaGp`EtK-jEI2iG;;ZK2q%W;C*t4{L z2ICmvB~Fc{42B5WjB2XGas5Q2m0rlAv`oa10zTvl3I`r=%(NAs`g;V<4I9M66reUYu#Lq$~| z2PJOLbLw-#G08DL`C=uH9NsWi4t;#*M&eL`OYI5y2JHlEzfC)VdV`t#HY$E{%Bch? zmECkFD7RD|;#;2f)!^*?v};(}#eB3@B}jWUN_&6Mz=fN!n}*cFSgRilgrGkwJOaL^ zoQj{oe4f$mzw=c}z81qOK;iHYd@VX$A(S9!S}ZMJ_l}8Q%Ie=jJvfDs<=$H%Ju`Y@ z*ihrBH06&usl5gohzq3x8i%z=HNsJG@@>&!_~)Ql-w&_oAXQ|jBwt}h6(r|CB~epF z))+u{TAQ6sM%9EGB18Wcpnpd1ojBDLEAG2h&~(@rKxOAt_!tw7bxrik(*%`SthKl^ zgEiN37N*K0M;CgDk<(z7t7u`U@HbHena>-wPzq2Sg_9tEaC{7+&zR@{*s{PjP8l>I zU!hQJDIR$$k4J^4&}6#Bs!vm&Cp3b|Zx4*_Zb+@TfROucyr~LQ8>8*8r$T)zJi!=3 zL!8?k*3T?k!5dyUgfr#7n$RLx6@cN6Mz|~b-!D(y9z0Dx=pM1S_r|Yofmlgw03`p(uJmFi+7#Q5ZMCe@uE{uluWF1#{r-Z$iPeUQD;vSe58pSUUm%s!m!_dcup#O&Q?Q z((^XVPD|{##ak*vcQEoTlsDMQ0wd_kv|>*OFC&2^!WD6o0beb-w;<85)`(3A)}4*M zZ#2fuVh^k_#^*X|jA3%E#^}8`6pB{)uD;=TISZWf0<$bU5VJei31(g^!7o_nLiL4z zmaW5Jz~uELz7ua~%ctH?$a%NrfD41z4SSYZBGEf=mQJoDMVp`=LNg2oy}Vcs>BdMa z&=4D^g3mTPU~?a7NOaN|WCoqHFh}l;bz=*xT^UD|c^(1x*eAPlsX5Rc!A#Q`8bJ7bEHVI{+;6=MnR zFrE->EC!o>18ib;dY7HTG_zG7f-#xdhTEwLC|EMa2c97ub)0*3G5-j9s)b zkW(4^muWm;@$gj>Zh?RUl#-e>*nwv5Y0AFqz-M1~u&%$UxEN;#u9n6T8b5SDUIhvF z)IxExxmfi)kK? z%REiHWRP}H455!zJ)FC9DP~kZCcEU4%3O*Uyu(xk+JCL_(8hK;*MxGK2lM|&R&5a; zgpJ=a9!4D2y@vbaFwMBf0tVr*tB4KG;OO%gzQLMX4~yOmS!8e=g%ZGNh`6!S)d>Wl zr$JZI4#CQ+6*d_J@Y?b@NWpbO=DIVuw$y}S6YVuDBfrn$x-O3&$16@V$i$up?8ge_G)8-9rj%7pz-mcuOK;6%Oda)R61=b9^z8o zLM}lWFP;Z2!q4c-83W6BkMppN3%YhExJ!Nox)w(o!d)9xtAukbF)o#0;S`#Gxt(|MY>l3W{;;@xI?qUU!p{-WOE`(d73<)x6Hm9r3=XI*8Qoi=08^`M#(I zh+z2u6=``oy$;Q-&aVV53Y)`_k1%dk;TXNAIBSJh&|H?Nf1reOq03EO0gBNdo1+G@ zOO;&e$fYLY+x#R+-@ZK+T*_pJa_Y;a6oG3PN9jN)QSAp1hgFI2gqIY#9$(-O!%DP7 zT*8^jbL`@0!#Xu=HuEs_IaL-9>+snYs97g*FIPfrmT81ns$IBo2!bAb)oeHekaeUC z{t%7c1I9qabHNgxT;B-lT5k&XfQrE(7!JS=fVz7(04tn@VYEb-qXpV?5jx_?RV0p?Ox>>Xl#-+|;BG|zf zMUhhUmmZQ@K zBpviQs^o*5C2#=bxYtu|(Lu;c165xfhk8S!m|}XawkuW}gY7^mJNtsRU2KAw!&ZZ3 z%>}B=Xtf)Zm0^)w4+YFapPZO_WS&f{)lk0Up?p1YQK^PAn9|G*hv;fUxCA!nJnzF6 z9W0>w3b$0k!J;9l_h+`ZcDAS&!H1_Ka6pV>*}He4%8(Zw!3*qVq_9QLhvp{d+ToZ< z3MX``Bp-rl=QGZT-|?ut?k8*pa~3;DuwC+@ns_#&r_sj_atGdIMjxyT@aAsx!72c6 zVMZT^u($~<=u5cJMYn(5^_JY@AZjl-?yl^%Yf=Zv{(349wyoQd{ z*gh=~k|B;XG{SS7MHOa(fwduz1ydS2jQbm$pL>BrCpZqKb}fZ7aM8ZsU7qjmtQrSg>-GX!7Q5(+^7(k>y@(^OajZmi=^DvoN9z``g}TJEB2 zSbrd;whmqYjU@+1`zRO%1Y;dBo(9{{0NRO5NMfy+h7Qb7R#1VgwziP1%I|CqLR&wI zYP9j^F#q2Tb%|94&-;a`;2ew3>V7J@&x2(e)<&QfN(!Apaa*RHh4a0t0A6^+!-@*z zup|)jpd0uJrz9-ffvGR~5{iNKCC9;u#?bO7koXyT%PsqXp&N?_eJX2wyb#W-@ z_|qU2-FyLVEa6ZPG*B%9wAR}n!6Mb$^!yL(($g9t?M&M{t$2 z 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 CBn