From 7326d0eeb0d6ffafcc2127e598fb2c9c18cb9fdc Mon Sep 17 00:00:00 2001 From: yeongpin Date: Sat, 8 Feb 2025 21:52:16 +0800 Subject: [PATCH] newest reset machine --- .env | 4 +- README.md | 19 ++- browser.py | 50 ++++++- cursor_register.py | 113 ++++++++++------ images/pass_2025-02-08_21-48-36.png | Bin 0 -> 139888 bytes locales/en.json | 18 ++- locales/zh_cn.json | 16 ++- locales/zh_tw.json | 20 ++- reset_machine_manual.py | 202 +++++++++++++++++++++++++--- 9 files changed, 371 insertions(+), 71 deletions(-) create mode 100644 images/pass_2025-02-08_21-48-36.png diff --git a/.env b/.env index 3375ca4..295daff 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ -version=1.0.8 -VERSION=1.0.8 +version=1.0.9 +VERSION=1.0.9 diff --git a/README.md b/README.md index b24f51e..26c0175 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [![Stars](https://img.shields.io/github/stars/yeongpin/cursor-free-vip?style=flat-square&logo=github)](https://github.com/yeongpin/cursor-free-vip/stargazers)

-

Support Latest 0.45 Version | 支持最新0.45版本

+

Support Latest 0.45.11 Version | 支持最新0.45.11版本

This is a tool to automatically register (except for Google verification code), support Windows and macOS systems, complete Auth verification, and reset Cursor's configuration. @@ -38,6 +38,21 @@ This is a tool to automatically register (except for Google verification code), ## 🔄 更新日志
+v1.0.9 + +

+ free
+

+ +1. Fixed New 0.45.x Version Reset Machine | 修復新0.45版本重置機器 +2. Fix Locale Language | 修復多語言 +3. Add Support Crypto Machine Regedit | 增加支持加密機器註冊 +4. Add Remake main.js | 重做main.js +
+
+ +Other Version Change Log +
v1.0.8 1. Fix New 0.45 Version Reset Machine | 修復新0.45版本重置機器 @@ -45,8 +60,6 @@ This is a tool to automatically register (except for Google verification code), 3. Add Support Crypto Machine Regedit | 增加支持加密機器註冊
-Other Version Change Log -
v1.0.7 - HotFix 1. Fix Reset Machine | 修復重置機器 diff --git a/browser.py b/browser.py index a2cb5f0..b613563 100644 --- a/browser.py +++ b/browser.py @@ -2,6 +2,7 @@ from DrissionPage import ChromiumOptions, ChromiumPage import sys import os import logging +import random class BrowserManager: @@ -36,17 +37,58 @@ class BrowserManager: except FileNotFoundError as e: logging.warning(f"警告: {e}") + # 设置更真实的用户代理 co.set_user_agent( - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.92 Safari/537.36" + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" ) + + # 基本设置 co.set_pref("credentials_enable_service", False) + co.set_pref("profile.password_manager_enabled", False) + + # 禁用自动化标志 + co.set_pref("useAutomationExtension", False) + co.set_pref("excludeSwitches", ["enable-automation"]) + + # WebGL 和 GPU 设置 + co.set_pref("webgl.disabled", False) + co.set_pref("webgl.enable_webgl2", True) + + # 设置语言和地区 + co.set_pref("intl.accept_languages", "en-US,en") + + # 基本命令行参数 + co.set_argument("--disable-blink-features=AutomationControlled") co.set_argument("--hide-crash-restore-bubble") + co.set_argument("--no-first-run") + co.set_argument("--no-default-browser-check") + co.set_argument("--disable-popup-blocking") + + # 性能和稳定性参数 + co.set_argument("--disable-dev-shm-usage") + co.set_argument("--disable-gpu") + co.set_argument("--no-sandbox") + co.set_argument("--ignore-certificate-errors") + + # WebGL 相关参数 + co.set_argument("--use-gl=swiftshader") + co.set_argument("--enable-webgl") + + # 随机端口 co.auto_port() - # Mac 系统特殊处理 - if sys.platform == "darwin": - co.set_argument("--no-sandbox") + # 系统特定设置 + if sys.platform == "darwin": # macOS co.set_argument("--disable-gpu") + co.set_argument("--no-sandbox") + elif sys.platform == "win32": # Windows + co.set_argument("--disable-software-rasterizer") + + + # 设置窗口大小 + window_width = random.randint(1024, 1920) + window_height = random.randint(768, 1080) + co.set_argument(f"--window-size={window_width},{window_height}") return co diff --git a/cursor_register.py b/cursor_register.py index e7bfb9c..a039cc2 100644 --- a/cursor_register.py +++ b/cursor_register.py @@ -246,56 +246,87 @@ class CursorRegistration: def _handle_turnstile(self): """处理 Turnstile 验证""" - print(f"{Fore.YELLOW}{EMOJI['VERIFY']} {self.translator.get('register.handle_turnstile')}...{Style.RESET_ALL}") - - # 设置最大等待时间(秒) - max_wait_time = 10 # 增加等待时间 - start_time = time.time() - - while True: - try: - # 检查是否超时 - if time.time() - start_time > max_wait_time: - print(f"{Fore.YELLOW}{EMOJI['WAIT']} {self.translator.get('register.no_turnstile')}...{Style.RESET_ALL}") - time.sleep(2) - break - + try: + print(f"{Fore.YELLOW}{EMOJI['VERIFY']} {self.translator.get('register.handle_turnstile')}...{Style.RESET_ALL}") + + max_retries = 2 + retry_interval = (1, 2) + retry_count = 0 + + while retry_count < max_retries: + retry_count += 1 + print(f"{Fore.CYAN}{EMOJI['INFO']} {self.translator.get('register.turnstile_attempt', attempt=retry_count)}...{Style.RESET_ALL}") + try: - challengeCheck = ( - self.signup_tab.ele("@id=cf-turnstile", timeout=1) + # 尝试重置 turnstile + self.signup_tab.run_js("try { turnstile.reset() } catch(e) { }") + time.sleep(2) + + # 定位验证框元素 + challenge_check = ( + self.signup_tab.ele("@id=cf-turnstile", timeout=2) .child() .shadow_root.ele("tag:iframe") .ele("tag:body") .sr("tag:input") ) - if challengeCheck: - challengeCheck.click() - time.sleep(3) - print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {self.translator.get('register.turnstile_passed')}{Style.RESET_ALL}") + if challenge_check: + print(f"{Fore.CYAN}{EMOJI['INFO']} {self.translator.get('register.turnstile_detected')}...{Style.RESET_ALL}") + + # 随机延时后点击验证 + time.sleep(random.uniform(1, 3)) + challenge_check.click() time.sleep(2) - break - except: - pass - - try: - if (self.signup_tab.ele("@name=password", timeout=0.5) or - self.signup_tab.ele("@name=email", timeout=0.5) or - self.signup_tab.ele("@data-index=0", timeout=0.5)): - print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {self.translator.get('register.turnstile_passed')}{Style.RESET_ALL}") - time.sleep(2) - break - except: - pass - - time.sleep(1) - - except Exception as e: - print(f"{Fore.RED}{EMOJI['ERROR']} {self.translator.get('register.error', error=str(e))}{Style.RESET_ALL}") - time.sleep(2) - break - time.sleep(2) + # 检查验证结果 + if self._check_verification_success(): + print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {self.translator.get('register.turnstile_passed')}{Style.RESET_ALL}") + return True + + except Exception as e: + print(f"{Fore.YELLOW}{EMOJI['INFO']} {self.translator.get('register.turnstile_attempt_failed', error=str(e))}{Style.RESET_ALL}") + + # 检查是否已经验证成功 + if self._check_verification_success(): + print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {self.translator.get('register.turnstile_passed')}{Style.RESET_ALL}") + return True + + # 随机延时后继续下一次尝试 + time.sleep(random.uniform(*retry_interval)) + + # 超出最大重试次数 + print(f"{Fore.RED}{EMOJI['ERROR']} {self.translator.get('register.turnstile_max_retries', max=max_retries)}{Style.RESET_ALL}") + return False + + except Exception as e: + print(f"{Fore.RED}{EMOJI['ERROR']} {self.translator.get('register.turnstile_error', error=str(e))}{Style.RESET_ALL}") + return False + + def _check_verification_success(self): + """检查验证是否成功""" + try: + # 检查是否存在后续表单元素,这表示验证已通过 + if (self.signup_tab.ele("@name=password", timeout=0.5) or + self.signup_tab.ele("@name=email", timeout=0.5) or + self.signup_tab.ele("@data-index=0", timeout=0.5) or + self.signup_tab.ele("Account Settings", timeout=0.5)): + return True + + # 检查是否出现错误消息 + error_messages = [ + 'xpath://div[contains(text(), "Can\'t verify the user is human")]', + 'xpath://div[contains(text(), "Error: 600010")]', + 'xpath://div[contains(text(), "Please try again")]' + ] + + for error_xpath in error_messages: + if self.signup_tab.ele(error_xpath): + return False + + return False + except: + return False def _get_account_info(self): """获取账户信息和 Token""" diff --git a/images/pass_2025-02-08_21-48-36.png b/images/pass_2025-02-08_21-48-36.png new file mode 100644 index 0000000000000000000000000000000000000000..fd3ed4d8fb3f9bd434af9eaaf1b7f94a766902cb GIT binary patch literal 139888 zcmeFad0fru`#*l4)22-$W1CQj###yuqQ;hJWX8T0vP(vWOzIr_7)uB-DBH+7rJ*pY z6GjM8h7y%Y(kMzv>p8#cy6)HOv>o1`&-?rNKE9vt_xJf@8lBELuY0-fYk6MJ>$*3M z9_4Io@Pz?m%-Ci4knb4N?#Y;RY$IKG#V9*wI{Z&(j_1(9-&qD_vz*g2_c3YvPA)^f z9_uT~xjyTB$GK1B&ns7+UQnExd*17Ml%1W6?yb})uk@%UTV|%uNq6u+bNAGbq27N5 z{{CosOuv2ej?az#knlrKpO>yb>`R>b(l+?go!LEnYW;K4RU;##tcI`STO!vqMXbZC|0UaALQZaSxJ z7v?Z2F|PD8rs`}Wo2Ntnbo&!VaXq80^1gv7Q{Bd2u9;7kIGxRL_xow1<9Vq(rn~CN z;Cy2m?)40&+>L*+(mM1A-)qSltkb?kWn53TFL%|ZF?(zXAd=31f7EyiwZZ6 zXS5vK@twY9gS#^NNNPF^Hr`SmGob2lGgqmvEzYBp!~uR|_~W7U#C!Ox4Si{QTG1W+ zIT8&!nWi$(+CD#Y)UPtFj^kKJx8>9SOjQ`!j$v81Cc|S-=-?2}S+mM_@SPFX3>UFd zYLf>eWm)jU!&HH5rwGFB+d(57j-$XiTH?r~t z(O1=4{hsaib{f(avQhgXtJFh&FIc9$U4fEet47}T(IW)tAM7xx<0nf%{=JqE( zH(NrB0%8ekJe)m58RB9)93_I~d%+mnOA0;lH!iaLc+$ZPqCu;Fm~yGJ(I-K3XE>Wq zl8g0p6s&7$oPs&D{c1yLa7^f#M!)_M7k_#4V#&6{MV~Rgvn-@L4mOB&!b3wNvBbyV zH?p=#Ad#SW~dvR=Ty4(u5Fp@=6R>vH28&_>@ z$Najwm-ejCJM?_0%%gl`j~Pn6xFLRKtjZoO8`lf2DEoK}NY!xhr{!oQpPPabSIgc^ z#$5)*!&M_1Nf0mmOd8i2(}~I_xmxx9sA0PXOw;vnA8S6NEO|u)8sxIUNwW$bXT-nxLv`;>_*svFUjtcT zCW=RUk{hyZf+|(d6qSM$_Kg-oc$F`PY%_{5jINQ~DjODo`v~y9uW1S%?nCzMn6D>K z=n%QZwLfU79kV^3NHpn;xwqM_%4kX9*!Zc*UaT;j_NJ{I=bfNc=&Kf7{n|pne52HR zMjDOFwkXbwjv8owZ>~l{w&2&%T=#TkP4(yh1W(RiRz4GsGx8Klbt9~C1sL}@PUB!5$;`#SbR*DeKC4=%p24B2v{qut4;Wd@H_FU^?-BLwa@JN6&P ze2)uSj*NxdV>+O5s9-^@aoK3Y$VNBP_^g@Cw0+_$<^93k{2mAIRYqE$vo6kfZ()bN z)9>W3ZesZ+_~m|nq;$Aib6}fLl47_+q&5R6Fq64MUp7JGtkW#Dw#zRaOJ6*ra%0j= zbdzJx#H}L3ePzjA%?oOu4bLh6 zjPPczMn@ZRy`sS=?mKOy81q-*5l5Ti`?HzDIGi_05}854+*)Y~vIGJJrjG%ao%s?8xDu&k5Y2g?*NoFNcmR7${sa=kt9gDLJ@r|!OQY}tZahaJfgNM4iM zL(8JwyH#@n3fjTn^?Ge)+xds54f-%vv*Oq<@$L7;^b$RccB;bBHq`fSNqI055&WUg z?e$D|ayLR6DM*o%t}gVlXR(UQ@p%P*Mpd^_=#Dq{p5O4IZ*Q#+Gp%rq@` z`qju5cMqxjx}t&deQ_=H@X~y9(#bX_ZEe$>T^z4y@> zxB7}f8ij(jJzU0v9|uOBfobh2pn1F=%WWaUbr*h+D_^REbI1bOMTb-E9rK7oQn=`| zl>@hKKD4wrAvI>OWcV%^&XhOf*^m&o+;b@>pH}r;{&qAQtGf4S^WxP*!;ku%V%txg zxvbwjbl7-pO~*+2%t(>p`H$@{CjJ8}lUKd6jRYUr3>S=Bx`$HVNc;_aak7}Gt+I-^ z0q5_q6f7S&(rAhx;=t);a9I`tC7k45?ZQPPqmy(z+`oEZ`9Loli;&$JV$2W?Ylp#0QhE6vFfs zC{ZVL$joy!3U0oy1MZ)n7FXPbi$+)X_gkEyyLljl`y{D{#vh-h8?pP{D7IJI?1Yii zz|GcK(5@BDVn&MrLa;nryl_>B1A1roLA$3cy6 z4e@9nY0e`H7Yb>EV7p0iaO0G znJ)Mn6kLjkgd%S9KOORwPYj~MHVA&IP{fk{jz}rK$b@8efZpBhsuqR9z6=*r6|0=*vQGsSCPEL(wNQEQfZI+b7-IL|!FpcwKxh*>|bYTbsFUUEDH zdc)$~s(yh7N6r3g+^(^b?I+DW;unURC@l9?NRFHLKY07DP@Q&F>x$G?)9&4=5On4uPp-b4fEa$zxp!NQ*hZGSa8$?>1VeFjRoV~7GT&R^X##+)RkD5D znhU`LrA~uZtXlg+;6WPEvDt5b?6`aL_{h>^XExkO^`p*f?+v9Z29Pd^ToJSL_Ry}A z{PI9DN0vvre>;DFW2f%q2xk@j)U88GV;1P_*=pZ%O=s>VtC9)s3`J?&nE}s(f(P6b zz^J0p83_Zsj5d}B#X>*<@Zy;2{!<2mBMS!l`je67l0$ni49An|b!m#^#JI~PE76B= zeF9PWcF<$^=I$%HGX1~ee$N5Zh5^He#yS><|0|s0o-D{icWYALjV}j>CdDN`9C&bq zN>@|{6tpvLD%gVB_#Ou?1Y^e$z-$TWUI+?ZP$jyx;QA#7Vs4zOi>A=^(sgEuX6{myLFYa@kaEtj@zLe$iX6(de*QsC$ThueMRi+YS~ zsX;6W&+Q100BH#8k$p>=8p`!FA+Fl;h4dRagAyJRF%Bt!okTEJTa%kyxmohrq+uTx zTF*$Epi-0s`){(ERgtI!i#qMBMhmOE8=h+(j3b6!p6ex$bgw7;r5uPnrbO`G~p@AoAT|VQbC73j@3_)- zFWVSaXHL0=3p>-yedf!r+*n+Q1>|2n zl%|rHCTMLJd{Nrp)G3$!d$7u@?W`Us`rK%{>T|hE{*yuL^Lm|`YM=;ew^7OCHd^{l zvqK?KgSI5&{fK0zYn$5=@&d?_c#KN44#d`U&>Pzr+(`CDOg#z2nKh-nlh z^KB@6Bs&7oiz=RA8^)0tZAt<0a2j+3?UpcqQ%#yq)mb;o5hENpcyI{8^!ekG?A69t zuBU$1$uFl>H~`}O_N2{0(Hx^YnRRP8#1L7ILjnIyFc*9clp>$vJ`Y5X7I%xUEe(vq27;SJ zv_hjMg~2I#AiNAG%^aoxbok-%_z3^r#{&KB?zZ1m86~y5=_--Cxb7SL#fg#u1`62| zVf!)hmJuJ(MR4)C_E0Yn{tBuG^&@w?Q2E0;NEC$Eh(7m6_Sr**M-C?~q@CLE_-4;i zRUc+rbKZ{Kxt%@S$MEO}rjQvdI%La?N8Xcggik!g+)1V3;19lUxIXlav_=pYkeSlB zMonRj5T1cFj#@Bqwb7z*D+Rx>s;;*0wYvG@F}4Jswq#b=m`mkhMyHSTkNrAx!Ep0R zI*{-lS4UK2vfHq3Nu8E2J|^wet*@SZ@~J?Z$OU*N5pNKTbZxDJOCc@^q75u-UHQgYMZLgO;M?}Zm6n4iTD;I4A=;Vc=#j_P`J)DSZzc8A{-490^+f+ws}XqITu7ydOm+z__3uAMm(Bc(THt&?jG(@`A^>YxYu9P zXkuRPUQ*n3BD%*97x+F{%MG*g!pK)4U6`k+E+M!5Bwao<6tm$l>>h^^lt6Da4q{mf zy9W$`*8`k>Z^V8b8JYm-&4a=tdZZ4{S6xWb<8B0Z^~q@`(Zh3y=35aYB#r50(kpa= zVBOG8g7Ix%8^9L*_J(+Si&k=!$kN$m$+=*n={Q{Q=#ke)$oEqQ4pI%|-SX(3qCl3F zc4$T1T0Fdy5sO)13{gbjs<$7;rVfK7Bt;f`kM)m@e*!@Y3<q4JIMmnWrJQgz_f zb@-W>k|vsgWR1+FUZE9i~C>jfS}d?7~} zbp<^IwmKAJUI|b8XrBL=8Lau0_dy2|LVXkUtqR`-#~rZB&ark3X_~RrEXA>`V@L<7 z!VXV0z$hp$)*S zkID(ZxL1BgE}!zT+UG;(Te+W9E$ZNUYPQmSE_>;^|LVO0vq?t{6dBEXe9lU5Jb8V| zD|gwPZVW;uI-&T3=a;#$mvX0vv@ibP?n#XqSOXz3*adK2kvSs~i5+^iW12QUe&~;% z1sps4kc_d?+7Zu1r{e)~9WdKyxbyVa)!<&E*FoFBF5mp;P5UcbIc4gAykSdJy>6Xd%yv>QLrMyC%4Vh%T1Va z3|BeA0;2Hq;7*M2Fy#yMAkvzmyNGWh^Gl(w6ty+u9th7cyAt;aoK*7rDCXsPlr?0R zc*+JN`%+g-6ukD%7*>&LpVCd*z%{~zo116B`?wr8Sw;8Yv){si(WZ)?j>d4s*B0L* z$~FuZGPgqdko$*VVWl3mXbiwZ*(n6f-7s4d@^ikAHQC{`Kc>5UF;B4Bcw}njYX%76 zwA=1FG0pIsnCjU$(5dvkId1v6s=?+K{lQZz11L}R#AIG`iACLziE=IID%L&r zkx+ndc4}NLNpvicM5=Q}?I=SNnG~}w$Ni6WZ%#@HZd8Zwla{_RA+MyDSCjgozkc5m zJ^0>^7)Exw_0S|DOMu5AU$EBx+vhF6Fp<=Y(fEA0KVst|92A|TX}S~xsY5w6K#5KY zIWIOYIC3~RLFA7)jH^Aa`kFxn1fLyt?$u2Pmc_fhi&`&L$dHT!F%mfpoW-ZDNI`KF zSZF+i;aX0g-qwI|;ittRATsaDlz%&<3+aaI=GSDAs*ti|ZOaSiwwzMZiY8_`&#zvK_q<`-!OLMKj{6lL*@hu=Yo^8FRz z%OCIroQdpJ8>7?G?S~3>-vI-gb!0c5O(BO0+^k*JmCa_khRw+Nj&rJD6 zkfJhgDOU|c(Yin&2zpF-e#HE-8&c!|Wdps$seFvwc#)1soJ`WhTtPvSyXNDKYC&F# zAQ3wzFD1kaGU@%4ExXvOcFh=v>BEry(eX!u;E-myH<>i-aZ$o(ih!htDpr&}y<*(_ z;1F=uH=Q$!b7>{di})vOOa9a0It;MOkG$3GPf+)108^vK*yWCeoen(Y)q>&H1Gk=O z#0V(b@~rF|KxeDEier&&dDj1PdCaD6M_-rCI`On>%!Y9iFwQ^s2MNrBM zo}BV`UPMJdcu#5z48_<_|Jl#^+S(?qY-9ZNYH7GE2wXq(h?C>AEF!o3mK}I_X|Y?Y z@j6Zd-qLT=956A>cFbPZMrI^pS#>GCkt%P13-+UwaWjr~vBm=ca4sEBuV{J*3Ri=1 zgs1bQzks5kYR`(3-0ApC7gK8}6~|U4jMB@xwWa~A;JU_Z>~e|Ik>n3w0%#8r48*L+ zDsI>5ZvW-|m|L@_S6>Za+wZr@^eEUEl7No-&E9cg$)zLunMhdUzMFIx&nRijd~NqG z{leI5be`Yma{q?lg=-f_-=@uotLSliey{UhM^(SbSfTG;+l{>#!$cbbAfVQI&d)fP zBH23@x1Mx|Vpqz%dFjJcy;VTgy?x$o<6n<^o&mQ>!%&-#8FloqaTotUX+8fWU)4dY zFmnMdOCFImeJ|q_xuK?Do>4ke4X8g1oi&cul&CL;Dnxi2$MK8 z|5i_cH9KEB#T?Ra^q5TWEzo>Q8iVw~q8{?@O+WzR875D!-yFq!9ZK$48jr1Lt7Fl# z-lLGL?2cN{gMAIlCR;!9qYeGx}E3=%tC^R^J_bOfS}kR@EN^* z&x7;6{btz*;L!>UgC(>n^ecU;rGAQ)?YmR}f-QfU-RhgoVRp;2?J>*md1Bz8OXeKe z%Qse!W7#>M4$Ul{o%>wA?q>1)soM49G^L{rQyG#xgq%@(btnMjHK|`A;u|BhpU7D? zuBC&XUx|C|*J!Od7PARu=&Z0$j_lUyYB{L^8}nJ361z&s7$vQ37K_gV{}2SECY z6iC2zI2{##B*~_Dv?Qx20tPQEGTNNh*UpCrY}gx&3Z@wc$qYfnkHwyKl+R0xAHW{;NG*{qBMd8?xs?_0wFfLv@~!2a5OT>2@(? zy&~KHd6-RkjBXC-s3Dlf7dcP~zk@O$^CaLV{M-`3 z6jvF;3xNv7R0M7Wu~I!y^Y8uQ!XkNSF1o6tA@|8$hab1&Zo1HN)i|8t%GITPV9Mw( z!heKFAz21pasj%ZnM}@#)#+t<#S>-4eSnB$QRCIQey16sazl1BfXyCe)sL&R&^%!l zxYG9B{t5S!y6*e%m)@k(zmgP?HHNQboy0Jp?lWCZ$>t{AO`rEwDFA3_R}PIA^9h1q zF)1H17?$YQA<^jhP~v;^oKJ|KCAWONT33#^h`6NGrZeV@aHgeyIo{9ErE~x!DtNrd z5S8{9l1QKqHqCagHgza7VWt|LTlp!|?*)j&6EX+?ZrIf|9$M4HDO$PQF}8GKSY+VG`~mjUBxnU8~MM4TaY#1lc} z;*zDr%>l>P0sqfaSR5f0=)c4*KA}UrtKr~Bi0B$-&a?88$=Ho2CIQ6DZ#^b9lMl%w zq;EWMFx^#c)W4$hRN{a{Dq10Qxy}-qwB*eS_&gfSpFwLc1Z@J@cG${9U^wS2*0K0j zNXWxT08=}(M|cye9SA6YME(7WIBGF#!Oc=O(_K8%(~9MP^S;S)nU@Z#YZFz)TlVlf z|8>vYr=ZvQ^~}U)BWRT2s>X_Ab&)`ICI?v!nCqtG1GyM&l~3#ekQ$A$jpzWNX7B}0 zXKRPo>OUg7zyZk`;y_p2f!uR`8>KcU>wd?~vd73Q=n9`gI8y&F=hW&86s226Jw1zO zj3!afP$5F{Xu8bozz3Jus;Jz;1Gx?xt+M+jtu%A5xTe?l?`@7nM|&G^)CW8sN<#}t zJE;HyULZ*j@N^DVi{x2?{<3ayGVW+Y&K81#i~P9N5W-@TRaVhSBb&8yzvO;z$G@9- zmp4rhYjgL3v-#bi?@Jz}q${Edlq-F&)hOjV^i@@t!1a2AGNvappR1;zwJfI19 z!P}$#%LAV-x#m{(!piYhP|+EwNgoKHFHy~!Ps{Z0@z-EDTOg)KBQ}xp-91>ETV^)64ZE;p&5(Gv~ zQKBF{3d;t}0t#kOKnNm6-63SXFoBBl!g&~qI4rp2u`Ul*kqMOc`=+SudA~?`kO)Jn zqt-KLh{x##_y||~RK!J7Tu6?+N9{`Fy6Qhi-%5#g$i3ByteXH&i(F-+H0F@K*jpNIv%Ujt@z?12TeBBeG2C zrC<=U;QIr{G0N4hfj<&aYN!Y<3LK6c^9q)RBu2_XQm%26h=p=LFb4TJD7TPR<~X?v zgf4?Hh?zIpcI`Pmd$#?}L<99e0c?T8;NdNn_`sk9`Y<1q$&QIi%4O99MLPkYQ8}2n zyEg?Yy(z(1*rb~{@e1b_q$}m1J=))=b+6#fuW((k7|kRvqi;t$x@_PLbmjgQ7bxB*Sb~AF9oU$ZC$c0c zyA~JFXncs4!V&<kFm4 z6k^QM-!{n@vc8q)ao`TMnr58$XV{Kr5~mmCy?U%cRMVvy6q@AU@cvHMqu-f|&K-zK zWeTY_B0C@x6~Id%B3bNMdGGbStmaX&Y6!F?qrq_xR<@D5CIGG69GF?UTf^?G8#m!w zUDgSzQ;4*O)CUNqpABpwAM&zq_|erhJq!IF(f56;erMR4 z)tSF5?Ntl_$SuEZSXMceL7e_Wm54)~P#zp$@4a@Y)q`$QMH~CTLY$e_4^g z3^1X+BQF~#Cn#4_cwW5iU}J@4>af`@m?fflHu^7jE?!%54vJ7gBPU;(6{ZFCg9JxF z9U25OuU29NyaibLUA)4N6@SLEwglTGiW(t*keRR)Z z(tqHUDXA-)&CB-T55J?Ji`a!k`FXgLica=NcAug#!%ju%F0 zeq))pZGCvMKB)Z`K<(24kS4IfD0c+7MF^&MJNesL(5QqG^?9xEJ}dOj=_QV5J1 zbP?4tLlT-#Bnc+r|EbUpSnY1(1jm5Nc6|G#UfN+mySM;K!*8B~OorVZhp}L>fw$-R zSD%R`t%$VTrVgE~tqH0kTAP$Vq2lL8PglsL&70`o2EYaNVK|4bN!CdObLFLd!L6SM zB^RzJ^22^BAJA;uj3*24L9#Y-%bQ$C*SS_M zL%)7eey0ou#OepC)zRR6uPf-k+H27?LvX!uv9QXOvzS1cU@rsic5r$SKSWgUi2e!2 z5<7&(6;)Qqe{q$jn)8x?klSFK@$axf=J&fvoxp85r+n$v>&h!4s&P*4@J}+*Gy{qu zX8YqIaNT~L^su85(oC=UM23uCQuW`nP;$t_bbD|*MWR$ zYz2XgZK{ELbT^$53}a+#2v~ zv^;iVk*}D&1b^f@z;XI*tMr)Lcu~yqPs!Y~P+XiOfG8x*E!5V0G(*6qVj{S)aw3`ij`8rALE(s*22W zY{#($@vV=4BjL?-uH(*vUZDRGzO>tKh-)za(mdC)Mha!GV5XOhdsLQpu>6~>Vk`WPaAQP?m zZ9$@2#}~zth68H^$PlhM`bio9&ISpEIl3MN@1x^ahQ3Jj_G_H9@}7^cZAkHf=%Qa8 zS8ea`rmU&sTtG!pW$FwZ5vSUR-HSdosh!Qs>20?|ddICO6mhy%|0%S*dPH41%I!#TM!nQVI9}eXNbxAtrcUW+NiO?s2 z5V{E>$U*rG)i-LgU;Q;bv**7jU>7O-H91ZKR5`J3GK0uE^?~TLF|*-B_{6U2;8=dk zm`I#5D%#==mH>LQ7JU|C<>4=o2}C0d0Ri8A@^^SKDc>Rr-Kg;xS*T4XOm6{*=A-GVDaw+t%%y2xK)neT-qpmy7(GF= z1n$2Gr6$xjS_(KH&jW{a;dDTVMWY%uP*01z0Z%u;Dei-e6hxGb-?b&$me^ z3BG&mEduaV&JM`%-g^mX0Eer2dB{FBZO?^ia^>4eDm8B}F#a|W?ydtj!n^1jV$>lA zaiL$wl+fRS-XT;x12M7dD|06IcL6HX%L^*(LBQF20OFNE#|}bSKSoHj8i|5L7MSQX z7U%qX*LPoi(lQ{lJ&JoinKWYkb}U4-RkLVdcDy&CNZPFFoj}k(!YV=sJ~B@5L#UF> zy43}1+rasts+y!eB8!X)iFg3PgVw_EkCNEr*HgD<9y3xboA`druut>dWDm@YaRX~;}> z$2v>)YBwOZ`JUpi)H+J{bN3s=?A=ill27ITJ}lp@`l5w|gNYEV)v(aq)ReWb&4@PVZ3Ac?8t`PdZQdtGZ5>PeywM{+#XHM`u&Xu^ zObtMV^mub=TTeiRCO8hhCV*;UT8rFdHyy0UJfGAKY%)>H0BY^E^zPe}ON>&c`!vSA zUFP_q97;s$Ls>N}Ur_!x;QO^2_FM7$A7to1g$xCWO%S?O{$oDRTMPN?V70`Wi6EpQ zY2e0*JBl4o<{wW{{zfI1L{8t{vixq>SGmZ`UkhJ~+0_lYgpXtMNr8`E=iMVfunn;fAb1e304f$k9_wfmfC9_S{QJ>YsNdPD7XH< z91R@!i&gfkqhaT&-MpW7H~*tG3m(vn0^S}zL&aihUYhYcmf_YntI!?B-iGN<^J(Q+ z@yfaU6@WBB?~f)viWt_6DmYZP#pqXn5H%q@>ot5WAtlgsyx|lGjR3kAumwDyUtRAo ziKz-Gg5({&)jfiEcUU3W&pVOx+IG%>r}__#t!8@owbym>Z0BA1&ivBz4WWg%+yZu5 zWkczwzI{fSb8J;>Nmd$S>P5>Wybrn1w2+8nB#4yip@g5b%#D)`h??0zN-)6AKWW1Z zGb&u}WxHL;S=SWkT<-URirxjAC+T}%+L~uxWs0ECK1?e^V2yhds3-DB~pWy&;9>y*%RMPAI^+P}6|ZV5#JM!daB^8ZPWhAmN=q zaQr;`3V0>4<@ga`9y02*1rayrjSF?Vy1w({ z6fCzrVuh&&hSSv2%zOV+J2?V{T%Ei6&(}^qG_g?)O=wVr$+=tVE~pft1%0aCQ)3xs z{rbfom;>ZpoJ3MBr;e!G!%srhE^;YJA=YlY#ZNK4Ozn;lrLL!Y1fAqIUZAE$VB
Du6zSL0E>c_8wn_Cd8;4dRQ;CWl8!o5&|Mi&1p936!l|g$Csv;4Jx{pKY zkr`IQWfdve2XQ9VQW5)Yp8nbX2tzQRy>8STPfsCjtF$){Vk~YRRrT4TA`fz zX_cww0QQBT5mtu~)(O0>fBDK>Lu^Vy6cneFonrB+ZzS)i#QArMW!Sbrtg&fuu?i+R zlv6}X3@4xyq73vPv0hKgskod$Cs205E^{h`So4cX2B}=7TZ1~(l;bT^lUkI|#+o1g zaAOJrhlx-Tx6F`gp0V-_qXh0i98bXpwpe{uyL67XE~-_%*C1V}1g`1-6EKE0lFqRC zMXl;%H7-%O2ui;GRgoKn0{{OdvgD6cXK>O0%Bgrcfwb@NEmbd@l@yP7>Hq%gJ^t_Q zmOL1NCHi4C^)l1KE$<4)1sxZHd#@%$s9VKgq-Afyx6ym0(=3vr#4T*Ei0TbB$X4@2MYjEx4Q{lsfF?f8@LTf zWejOG8*KTWg0;i-iW1@So%Bp2`ETV-!hI7%QwJ8z+cvObUdWcCfgv|a9b?ud{?hGHV2>%+zTg)p zRCgub44^w=ft_l;nn_b1OL-YNS-0T>M50E+$skmYSDEd#jNHE7u*Ex1NmVr6M^@){ zGDueLfcP2O@L)1ZWKvL~lFkGqq0zz89J6m~$#$&2QjjQnvB50hDl~+03EAQn@XqR~ zZ?<{)J0ER<)s>>dAqN4)sduXio;+yiNEvi#RuQ2Fn(&Uuu&b<_?`x~RfsRFcnvTlK zv6l69yOHP~;9zwnr_XU&;YbH(cp}1eA|6ygCLUJ1WF- z5zh(l(0oDUeE3bl{>^o3z!YP!Xo%20;VJcK9i0fZgAP>n%D{w%O~h{%dq7Xb@29dc ztS_Kb>Mu5)$BpK1CYlR&D8VD{baqF=V(P@vtNXtA)U{@8ICKnB6JA!j1}uH{yUq2J$9k%1mkkovMIo2zprhZswwG!cYQ!`xf>B1{aMy^a)JX;fC#lsY9y);lusQp(;c}rAro5VIun9igEyS-7b zpr%IXK@7nR!{{4bm`}BxvKk3ZyvnWnZKzLgq2A0NX=>c*K`A<}=(Hlz@+kAl)(tKE zL+3QXHW_H{5Tc;Z{`7cfG_Fc|)L-=`2G(ByN> zc2C1*U_u9|2Hc&7Pp-}EfiFM)r&xUC=^0Yo5AOdca91G-2SJ8kWqKdQqCES}VNB(b zbk}a4!|YCHF8^!`jy(he3$6X34LL8xD80liHFmSI*@T5;ui;L|pVjYlXl7Iu@;zQ7~Sy#H!p%~ z$5DHfAV^wdg@h(MifzED#y0CDR)cxq7T9c>HsyrP!DS}QvLOw}RCMB9QlQ@;WHqTN z4;IO>jaT-S_Q59DtO4H#zP-T{Jxm+C?NIXuZL|m+Tw=6!BV*XN%8U1ivFe&Ku+4b) z1ZWfOx3)pEuKcrAS>GIMan~b1-WfXeEOk5v>%ScfcIX%(fw9xEZM~P`6Ze!n-Wu(XETz4Tidi*uSV|%C>7@hXEAyX5E73 zZ^zp}OMF4?V;cu52=0^zovcfFn~g)`c}pZHw&cu1>LR%ArmbxO-l16UQ4MVG+5gh2 zx6oq^Q8|ZJ)CnD~!tyX3VCTa7pvSeZO+o^Udw$U}q3k*S7~S-u<~IHQHIMD#x(Mh! z&)XQ*H1isxsS6h_{;tZ^yl6B-O^9*}{x7JZL#yD9&hw{Rt#h1Kxb6@&1WF8rI&(2F z0wqGNUBt%s@~|#qrz3Rl9L69!4)6J}*;Lbs3*Z@OsP=p)lzwY7Xx5lLRP0_@7_NXC zL#N8taLF0gJAs!apUk_=*R8qRA#&?^hbSrC8U?Xbol?9IePT@=F6s+(yye938`Dz* zDGDlNYO4EEr@(b5CEjqQt|GSKU|c#pu7dh=n}XiCY&+fr;{&DivYqvNi(v_H$=@kA ze}+4n=B#>e2krLihn;X!)PHp=E@g_yI&-Ogost5{DH=L-Vej5W?*2w8Ld9F1&jbN3 z9V4qijwDr;fuKBiphEA<7)%&1`NTUdpb;i-MT$|NhE7<-DXeK+QDi1bu?AXAyubRXp4%3M3_iN-$L_`b?5rOuWoNePi7YVR@=k9N9BXWzRI$| zrTeDQGRO%68!J}->I{*?i z-F1c6q5^&a+<)x<68D`zm*@RR#anI;J;LT)9^RVD_(aN5r?c2-9n0&1j6iz7^rMAt zHCL2Tv5HL|QWv0j6x;IE>)z!7rw;Fr!=QjD4eIN*9!{nU59%?fc$--2@#V1Nf4$9? zf*3{E^ecmkzv4=bN1VbY_N8>M7jG|5&$Z#KE3kC#2=Ts&(=E4HM`2^%b zQ!@1|5v-&4X?&Z06Kg6HUKv-9F>6 zjWV$H?Krd(QmxQ+dR+C>gey62i$a(8ayIwx<#ywNv)io7(2T271}^W*pfe9{I-45h zhz`V?BU5U%Pi?e|`G*d?o@j})hF$?M34h56dPh(f z?`T&k{M#0i91Y~aK&voxX2ya>qt?KR!l#C8`K)zkW_icZ=w$HVs@}iCv);G)d0Lla znO&eKY^nDi`2Odaz{-T3YR;EfTx{4{@ljCkBaT#Ru|s*dodgzfhN%;N#@|JC9{_0B z1?&hy|ATpAlNXo~N*(OOV0@#hk0>lBbQ&fwDpgmRL$mgS3R?}XI14RrJGS>789zO2 z$dqRCb=CVjUYREOtjU!i1--(?b*$(RF}83nbnV&-Qf$fSM~E@3o+&ONP~&&NH2k!1 z$-wN4S^3AW&0(~HB+&3_Tr`^*?kr>z3>;1Yyv2ooLA_`R4y4i%kk~yxWyvPn6nL0R z26z(GK^D%sU(hyNH@bW`=XVi-8*XGa0*l#xjcR`U`L)$YO*4LjJBm+@Sk)$CEDR_s=`*&#r3Fj%0-xE- zKr!ZU^c2|hv6+XjSF_QH%Ddme!d3K+kXIjtf6d-GPR9v^e|qER{dd9g{VZNtb+!n{r)^9 zJ#^~&W64OJ4pLl1e*B;-BA0gd5L5^B!2-#J_Awyn-`0#r3wp+j^R$%9K%t3>s1*JU zss^4H1bipljw{bJBpfSMx0&mA7&T#Siudw@DP1`5>)G)#^HOo!@^mDoG|Z^E8_M}qxB$kfd!_wI-!}If$A{_E9%P>r zT^`Ks_WY>FDAO&Co*1$@{g~^_%go7|RfVNFc7X?%&KZY_ii|RzzuK0nxhVBC=O|=xw;&xRycHUndst0$Y7Ff{mwwjLB36qjgU*}ZF#sMej6ytE{e&gM{f6f-cp};2jD6Oo*A{k4~`pd$r+fW^20Vu9>cfdwyoO z=jQE{ztBl+YJ2UoE7+{g&M3phBYe!6E|>o@bu@Ts86Vn?-85Re!Zh{u=ci#la5&|Y zB<#Z2W|cM(V;gOQ3uRz4J4)zDxT9oHgpq{&3{yli0ev-vwTF4;8>2zYfT})t4OAUW z3HJha2G<;w3kWS8M*Ih^gv6$^pt^-G#%KNtnRekz(f;ClKcdXr`u)-I2{c6?19KW+ z2@lx2tKzdl=Z;nTrQ0JMqt*qk`2bGD;KBb4R{Suc%wFfvo|TuttQ_9sIGEX3+rS5g zS34CxS^euE80tEBaX1LyV?~cvuu7w3(07>+7{e)vYAFrq@0;MB>+ zK!+7r3%Ds-c&7_=33|8OkTlzN+)Lc@YpBH=PB2pCw&m1JbKNKH%Fcgw<*!1|a&xKH zb(x-gZqxM73-sQ)vd@~VNou(TjB1Asiw@MF#H1L$G!`QME!NV$@t&ML1Mn z2OPO_H#`!WcA$*_Zw-tMoGml6W+sLl=A@w3MZN)g*p51nH12yBajq zah*GyEVz_!Tu0@ZnZX9Icik}_y4N<7>a&g(SlbUY4cPvP^ad_Zj5QNKulmK7Q@-#qUYmK?VlU~a#}QE-FejeDnCn(h61jsesc z5<90RL%@7b;n(tHQcZHHRyQer=@-AE6THK}gtFVzbZQQwrbYmN1bRx*^+EOX@fd@p zrOW_PMF=?q5NfQ=utOTE`r2G7Fy_}0Vr>P);Sxm(^38|^K#UUNr*aA!b)Hc#2Q3b9 zKD8CGcmp}kqvrlV>M)5_S&Cy~UUQ<%4)0)W?y#a&!$V8OHnz;|*i)I|?$uLTKGUgp zcPtf5@J1Cx0fMetC@=Yjifrs_K}i>Sh1Qx#5jCYE1n}?+8EKM;1~rn;9V|4JIz~5* zYKm=NBEQFB$Gf$TzrMW@YKxcG_rb^3@Wg4_dc@h`y$GS~L)|%pmjTyYaVXq6%kM!! znZ};5+KS%~Lo#J7+-@*f(?x)A&YM9Jz1P8addFj4jl{d6>Rx8dZ`5N+$Ke~rJ2?3j zIy6~&1pF&LR=A=m=LVi}m{<5&+ z9TOCaw`o2mA6?gcZyF2NZnQDDCp2dG!4DrX-1uoz%MjOI!lkv6LRW0~d%XLTVXDwr zZ20LSCJU+LxsrGC#@i#H-AaUYoj+<&pVczZ5dW!rR#7;(I-5qCtA>2$8!6Ic=&or< z=1imeAE>RL$9I~pioo6|kOXTR$TM2LL-y>Lucyg8DdT#w9HkdWT&Iv*T1=3lN*GK$UqWGO($Ih$UYAJT1TTp6xU68OAXBED4VdkM@22R~Yv=P{Q z*a`77gM4kj2)=V{X?E9%s{OKtW$h#+ zrEzzFAexYwR{eTKM9$;4S+}0}f9L=`Ml~L1zzOI4I~bs*js91D2=ulri*j6=z14nc zc5tW`>~3H8*d1nZRjt|7PSEYYx@Z{o?t+-Kd2B%-P(HUlEz5x`fZ{x!rz>x6wa>V@ z)ja^(C)~y!Q}zMneOZ;gFIF4guy)jgdWEF&cl;AskzupMj~v4?L|@w%ecfN)F!T0I zrmwhA_t$!dtJK~n+dT8epe9f&4A)We!DcL9oY@HOZH+ASsw%o+cBv@Pd)8sNkt}yr z`7pS&bQspJddQvt>k{s|ZEv_T-5kb+55$Ws9i~ASer-iF;ls#eg$hvn?YXP=g&xpr zaV1B4o1@a#)I7#j;%i$H8Mw5nD8c8dzW4Jr2Z8YslYbOw=tT#XT%B^!!>YcLs`Q3? zD9`kE{IPF>xy->@_23IOHGbF8ufCT+k z>5aRy@5Zi!EtbT$8MC(!^p`K5cig@3haRc=Oy$0*+l#ZI4uPHfTW56-FY5`+)ZtT0 zA5h*0A@Y7vUbDA0y!&?MUfZpGnId}!ER>n|l^rg$>!5jVrYn6r$X2Bf5+%iQaaDHu z#4q7e67VN4!3OOsiSNJ;J-QlQy`$!nmUwBvrJ_XWobAn9#nFf4aO)_Fo9pGG8`j0N z3a`Cm)^^x7u&LZGFyx-sV{dJb3Lwu~ijRYL(wC6P!6z;8-r6f(huP?bg5VAR`-Wre z*7a~Zd|g?CJ2T!zIcD56&y3o>-n+7ceTHv`O=haHKFxmys5hi|HVRXxXDImFJ>oaD z?yd8tEG3ZccojZL5*(zSiAB4la$EeCAUZs$`^CvrWHo`X6c*k~c7>m^PHJ(c%XbsZ z%Cpm(gG|a$QZ2t1guc@)pV&Ki+K!pD1vsGYlr7E)Z-22N^gzPrSwER%DB!&?TeG-3 zK10}WVD0h`)45(y=eyi?i(?ZPTJw|+J)#p%D+Bj^cu)C~J^YalIt_EH?1h)1j@;$l z0c#&nCboHW{wLS`%7?PoQoS%&iV~5^Z8aFn&jqz&lc&}`A>BzBge|mjX&$@P5gv~B zjMOs*`Dt^osnqjCd*u#n<7Jv2^_z~9b>)|M_N)#RHb-f%w9UB^S{O86_IFt}Tp`jl z_FkJY_p*b$r!l8NxWQ#v%X+}U!!vCe8=wc5#(`RV7gQWo^d4B~>d!c@+D>a|>KYo4 zy6En{K00(vP>VcY>%1i4u^YbI>U*K_X^26OxZVA?ef3Ljw^e4=`vc4#hx1h`b{Uui z$KUO58Vh`{W2{#@XrYo@m}BPsVr>eXNvi`2R1o@BtJ;ooXexJUUG#Op(uZDHIseu3 zb>ThEi7wg*htyPuhlhCh}W!Zh}ycN}(*}z8bj?YQG zjr!{O>!;se*Q4_%@0+ss>ZmAh;MWhTw|ss<^trDN8fGk&;<|1M&y)a|IOblZzGL5i z`rs8UqzmQ6Ww(OwY4ZcHYDqt}9(9k?0-`GjqE)#AeL>SvW&Kvbl$2#r>)Dxd$~nVe zySIpFdNKPo*MKm7Qb#C8*Yuvhu33?T{kN4_kmjMYyuoBt?wV*?FSoy6uV9KX?Xb(_ zKws?@tE#yoPcT<~+hYs>i>50ZyT=v{8~9bV6o)OS@!aRv?Ih6Ff1`D#ZwK=O0TS=N z>Ln^(^7lTjGd7r9eeCwt>g+(crdk+3o$%o|uSOSbG-(^(#@&(rdc7z?wkr`d>c{>- z8v*L`x?Ui|snk+AaCvrVg6!|c$Co_ZWXSd|dwDu(*6n+SWd%7JMgPFcUd}e_kB*wk z?#y`dIb5oex>7>@M^8+@adw4b*L)wilJn*i_vPCCt;-y+S8Dz@FZy1oxYGG)(fh#f zAb?nR)D-Ui$5H<aL4!T*70ptRX1~-1J>l! z!mhVu&l7A(uxN6>3s4n|4&3R>c;3KxZW&nkr>hG%B0~-o|$($b1 z6i@U|HG^9jaDEs-`86waS@XOt&Sjmo&TjN3>oqsHqo-X93|Q8RfphXYahpf3P8@bi zhUJTHk-x6PwwHa|Gn=_zj7hy!x)q8+z?Of$JQBQ_{BMNwiO2A1(GTRQB*axYL!LRy zap-&7#W7mPTmR7Ba47q1Wn*V^$%?AH1fGM&3^Ok$!drFj=6m+DYp&Sm?3TO6@D1&l zLz_kEx1n^Y^v0T|eHR!kO1})bzUOz2_FZ#uQD!3+lzQ>tLDv~iT2K7r2Q$}wH(G;1 zbndynbL$`ema+xkmwR9G$o>3Y{spO>NvAs^t8Cl&2(hRqY9~Z5Bl-D#vgrUD%VtxeEK#R_*pdvm7wLwX>SlU#19stJRrJ&dAA{WL7rLUGQka?l zE_1r#UgzARf9xdSwS|v6GN|6lSj5nx1wGu9^o$ zp0y_2ojD)8DaG6Na1YsEy{lg3h#qXc*^B@#M6kJPDN6B)_qaTIffv_?hc2nn_4?#f zGSxS4$|^`_KJ3Sp^TO!GTE}g?8biC|BDyI)z5|Fi*VKY8{z0&cVUGl@=o@w7x985* zs6>4YTjU?Ox)OSm;5B0CRzNwt;l7>}#SWU|swbD_Yzq%XOXzl1xI^&Jg`jgj}@a&iDV+U52;K7fE9jpggM9TEE6bC@| z(_wpqzkl7vc?rC~aM8?y@lleLx!ssWyLYX(4U{s|MNjXIqN%&iyw~ga620i@jn6#0 z-G|+K@hT5|^PI;%X3pRLEtT_wGxl-eQS5YMg+_YR^D7fV^%cJlebKkIzqTMr8Dk$u z{9v}^`U7-~s`dLs`tz~o8wO|IZlh@844(+<7`eSwiX`h+gW-e-Tjb^$za>x62b`cs zi)WkJ_(OLZbdO$j5C?uSdpsJ#Jo(l|nflJH{X4PBt541@(mI|r5xgN95OZjQni_9g zYnpMDr1x|ZaKnZ)x1H4w^n0yw#+>|Z#_K*=KOJ4Utr0Mr)!(TCO&d`14*ielCGqz< zANT-Led5=8TNhK|%0hZ@*-GjIGFs-g0w!AA8r9bKda{b5$@N3w>Ob~+xjw&Q5~7!G zFU3Y=+sd-^`mUiH1(J0CO1${K@!q8mH+B2`>lb}jFOWvYcuP4LxYG3&Ur^Q}KS0#ftg;7TI06kDkQ)TI3(brOQ>L7{F-aa}M*2gMP?H`0ahUv%oyG7IOY-*<)UMeD}~nSV0HsKtK-bY~00An3@@IW!TQ!8Q5smgQFOC-5PL1v4yHjt~l8dNp7-@*PRzOexbu)Q11 z&{ROfEEC)6HPMCd%+E?-C8k8j@9MlH{ry78L@;>y2W;1O?jQYo6E;x*SZwp)>u#19 zW?ZF^f38-_+z9!FsxjZclDo!nZ4}HMU z=la+;>7!Qo$Ra_jOWT2^dkj-oieKrQ9gK=-VL-`Jd>H5k^h6Lw0C2$K`|<=(X9p78 z7Sot4AUL2Qh5RgvMG&m%TGzO&?pLau7qa0WUzeR&L#_^=a5hV>Sv{{v#1{VMML%PN ziP0ju_^>Xfzs0qdUq^ohgej=QKwq#*B0Mm>+p2VP!bg@}GdB0E(D8nr<2YH%X{H)4 zgXObGvGz42Bq`*~1xKYri+qPQCK*e#P>i=-F6e#*d=wtF5}0?**zx(5&YK|xaF2&YKkGuh?H3*hho`0cq+g0tU71f*-=3d(rBy6hqKWK1V2Bc+ZENHYI?& zaVzgk`d0Yd@@bdnoLWO{oi&C>X!TV7Op))-&28v0@e2Vba(AAATF9BskLljEyE1!x zhB#5UBxJqsBNEQ@Fw}ulN2{COI^+qzHRjVBei%peI2-Nl4#ki1ni`%vA9}w&X){EW zCBCz+T6)NTeLk)IZuxJ}y+n+L)vAe`M ztE4bT@s!aWeGN*)On#1)hcW%J@sXD2FN|ZG?qs-<2`Gl}+xRB@Jcj%VpRy^v5Sqk4 zB7Ji0Guq9b{-4(L`RvudJN;&#N#$9MQqrJDIm!$eU2z@A4hA#o%9E3O164~=#T%8A9dCOdb>hAZE6m1>N|f&YLAetk8-w`Xrpzv_X@wzQDE zzXGs?s`Z3%iFPB9lVJz_Z1@0p7b|VdMj12U7{84!s{uAm!WR)N?>|QPCK(*ienxO-f{W74 z(+%SL1e69p8^K%zW|DGOmL6i*?~LHZ0uy{b8s*J`Xod%eI)yqrMm9t|kM}ANu>t{k zvmu-zqjPQ%ddrHySq;oSdHWhjw6(N~@5r#?5AhlLW(APg7oP_14nxI^GZF|OO90Fm zK4+tuvV`!xwJ!JrJH;^W(F95Za|faB2-n8ru+z}(hO0td>C)b#lv&_dQ4nIoQ);9*N zM@4jJ0^K)8KpoBaAEBTyohn)ZfDh1%-d{ZeSds4>qx>&$v12EKAGTTKv|?xk4{p|(2a$_U`7Vozi(A1!*C?{W=7c{yO0sUed5Uj+i*_7f2{|o6`)Z< zfdQ3@dq=l#Ncr>BKcj_)jb(1Bb?77=B?#rGzFt=G4N3y-6P$9LH|pnG>$cDxF@8_X zC*L8#*(|kc$01rN-$H=p0!Pq_QtvKbj^2&2E*Xbv9?ggvm^+GTG9uRag+3S~mMAQu z3|7{t-A1YMdo8jRP&XMmsC$gLghIJ-`2kj}d=g7qbX~B)c+FC_t&AFNf~Ug!oq)c) z8wl*qrWz~we9AAi+bt`+{>3m5>fuXqB+Ku|-I?O?8No~#JA4>wSn}S)g$Xm6n2f&y zEhs}gX_1%*;KCsU@bS#VkYs}DPa$(hg9#i#S7vBB;q@kMNhVnQt{zr4`W}P@?JMx{ z9q31^ZMD;S5eD)o-a>mp^lyl66?~e|i}u>XgcSv18}=4ofYC~Et7Q9ROk|elG>e0# zNRIQWV;^w$2=J~n9^)<3!1_wL7t68<*B-Lbxvd10Dr5X655C{I0U(%os0@U})X>_b ziLjPOf{q#*3BcF1YykzsO*1^0CXoS_X6pI5>Scq5<(}eo8=3q@TsuQAw7oo&^z#^z z=}tC)4FMrC(GWr%831Yr?&9AFvnnRS_W;dr7@BS5t_)oiF9yO<0@p{=XJPj1qg09N z!%MF(wtlqKZDmBY^n{Uum&(Lpk$)^3(U_YqN><(9n*^9@6*@zj=On}A|CXU@RqnOP z;INiu9GF}fxF&}2WPMH$GB9!v69^*#D7#8<9+-oI0D{S&afM%G3?r)I{GL>PrP2`| z_D*97oDAs&j$op504j2GXs3kqToR^jP3oG3fy|L55O0t|CkR?eTd70w0_K%&iP&e< z0bG8??&>=Aj|#4+l3hwtclp;yN$zYUWEu}vZRA>30B%79wnJ+cuu%i;xm{AFOHyy9 zPjH*kFAVEy$UILt1UnH@ilKrgXej~2qNyncLY7|zgPANa&KjUW=VXm>Zlf*fVwUFm z1`^Bv0J=#>qO9HKQtf?oHD+%Fpyk@vK=}+5{dQgol z+=EUnFu+*jn`M3-BmV=*lok&mIxIsi1<94#zB1kS4I;X#fbwJvTt_=0I!6#TBZnaU zqL8PVqT+=1D}&Jv`?DCT^VEkgS=Wdp`_q70Rz#U)7G zq`3C|55B5V(-Jc5*VBRD<9^pCkh!$R)Y7Hp=3-^<2>SB4_MQH=Y*#2&YuSfFL_4vl zGsz=ecFNfvBFiG-h<~xw6t8^=j?lVCv?!tUm(-`XKUvTNJ4=WlG==Qs%)O3#HJM^O`%Dg9ZlM#e&T-?h+h7z*)0a0JE(wa}cDhZ4N5v&&5!m+bMeN%?2gQc2}&}cn5KFp5p z>R%9lO*zGwL0WSz8rJ7woE_s`iHT5mg9J^Fef2f4jh)bbt;<==^uH6Kb);F!3=~J4 z{H~&^odhPhhlj52{jFrk`;ul#6Jl1W`BSrETf$60yK1V}nuIozKAt83fNZxUWt%b) zAvku84~C(EckB3dYd=K<%0qkO2+qt zid7c@FM7Y(56eDp{ZP7mWRlH9hglL6?f!2NzAJb}w(V*gb@0uVX}w<#ML=qtD8}as zMnNma%QN;FM8&c?l#uF(s~NDR7bAVOo%=wB?&U98+CFU=GOm8{4rU@8yl^C6P_}Z- zc$rW|AuDAPwF_SJ+urg?Sx=i&VfNY#FMd! z1_M}4kI&Zfo3q|g*q6AQ|6qj8tg`O)6Tqp5{&6Eq8=WMx=I+jyf5o%$rzXTj?*d>>uqnM~TS;RSfQz zn5vYI1N}VO99J9sezL&f;2%U(xo+hwRWRm)X$^>MF1L>&iWU0Dsrd09Uzx)A;(sPs zbNp?t)5Mhnb}anU_R-YzsCCR%0Tl*^1_FvREs)3r1(Oa*nVrwFKPYF%FHCf*?MW&Mx;kH4=}zY%650 z{^1rB-NKJ98&a9KhZuG$IFhA5G}0J0$cK#(#b8S)jvd)5((7O=C9*^tn6ApK>(X|G z_A9LJ!XDes449I;V?n3=)iroLw&8pCk9BD@e<=m<3UH}Nz3 zv&K`7e_%#cvQ-wky#RP$z56(^sN3hmRLoDs!eg%&2voPe+R;)fv<;gT_ujoWoyY$& zY=cTeBGW95?IIYkle55YxbV`GsXEZ@m3{?WGD$OUE`#JVae^@+nem;vy}>$oG8cWM zflQSBdyj_XYdfhG;Wtx;GZXDXCcih0*b3r~F&3E^NZh%Kv>&L&ukB3BnHfB&-?!fCH7rwbKdf;En=M|5YjNUM@p=oyo6wezO z?sSS^H>@?N+p?Xd2McVfN*pG|&UvHe%z>ckuehUkV@EGF?r7mtvZvGALbpZiII@i3 z|GjY%4@ooc%wRyWUQ45|F-$IhIuFb5TekF{f4&&xb*G+98i~AvyL3~X&Y zscK7L%{olWp>V{ze_TA0JaebvOEn<3EZrx?wVOZl>yz_tMlXBn+=CvPq?{u99J181 zMtBUn$KaqFMdKj9K2rA31v#}h>sLsD4V#`ia7%3fmKLdxKl%8aD}C#fskGiv&fjbfw}3_=fmfcpwr{{f-I&W%VG&37s-|624n(l zafmThwzw%*mC(ctJ(0bz{zS{Q;}*RE2GY11LY9%V0ZEcw906CS`P^?RWglHu{i^>< zN$Y~SdeGqgXDW?h7fng|_m(eMTGFm6a<$62`*37_ND&>mO5;i!H!Hi@<;}gsE%=uM zsS?9wr*E;>Zf3M46ezL(3U)JKhUjS`4tUIdQ=`~3mE zMhmfcgIJ1E5_*lj6DHc!`0e!B0WyK)_vCg85_q`>DT#MkT>qAtQ%8GmlN;+ir;)&i z#XAEVvzns*+5fEu|H6aU1gn#a(O(YSlfR?uyVKni8r95in-o>y14482>jhl!Q zCVZ=`r)0E&vOp3uW-F?avZzwr8d71tq4;oU(lMotFD4#8T@Z*0Z#M~9+$VlKdLcCd zrP9^tZI?*h1iWUuDv+o7%M|GE9q{XL!uoq`zj5c}6@G2{XBVf?$zyonEM1!}Gak01 zs5};yF15>TiPg2ocL;_9(4!rZZ+mD$e%i?_kQBGp^1U(!3Dc;n}lfvws` zo_(<;@0YC05*n#NeMqO42&RIRxPb)@3cfLY(UiBPHChlar`OE>V4)j`5BQunMspCI zmNyu@@9E^Z(&7QF^fBUo`b+T`DdST7=VslPA<&53zUao8N6vz95mE}4HNPE~0Ut!A zAF9v|$B-(+u8;^3u@je5V))-314!%x_F`;JLrL{914jsScd&lYE)HBsr8C ze0*x_F@Fu0M4x9CSqCAPELhr4-%}MX2*VSXc$Kp3OKd)-MoLWI)1&9J)ydi&S#;72 zn!!xYJLWxpQI+~FU@#OG(qD$TV_DG`On7xY!WU6S;L?JwlR`J#_9>0~fCC#I)}u#i z3Po(RE{aFcUQp6SVU``e3mwqtBMX*KxG}=u8`dQ8QD>e|*+Yq21s<@8LQI=yS};f( zxjoy3U2p5(d0W8(7J5I;T!W|2hKzg9hbWVsCqZMw60?d6NPAi*tqSnMNiAkKZ$-OS zS8G+kX>@vRS05W56kM>HFqtfl$A<&Yq=`%*bThM(kVe z3^hLl>7_SW8Uxf{BoqxRD+t)W!SvI2>^Vy6Oncr26(C(DfSJ=28BAMpJ;oSaA>$8x zim{Q*^$^5w{LO_6uCjdQXu*7WRCXdLZ^qrxb*~6@O}ea6j>DftF?0Ku>t4uzct+wG z$c~Ud$E!)4mnXJe9Ky|vTEaKIPCxdz)lR0yCFnq~+chk2at+td22DJ__-{b(EhCLJj&pkS{8%caGSPCJb{u zPX2Z90G*>cej_B2|M?FU9K}YO=S#X|915E7U~YWii?6dDo}1bu-||ACZpze=rETXw z8;F`AEj~9(;fiz0m#vU74ag5j#M8|WZoEIaVWsSwA*V5`vW7n!G4y8Oj!(|{dpBO) z@1w!T^XhXT6zVSgh?+cB<|>sN&&#f}W#_z-6q-QIunVrVH&ODoFBQ>4g?R!AgO}yn z%TDSkFAwHqYzj(W;x^;u@6kwV$|p!cdS7|z9>q8F#;8>K`R_>N{99(89q{2#F^ZIj zy)TSovk5^$#9qT86KHPKxL*bk7D5%sEGVSMJBWpP2qGE&lG|n z1Lvv9!L3wv5v&{3VA(0_mE+TrFDQ?3^I-RAw~0@$57(c4Ijd#qj%QcfS!mNKvo*+` zX$oM~c2C5ui0osKF~7sD%{*)r5dwcAZ&WC5$^O1!0Vp=gF85-0q;P~neaa~)Lw`Q% zNyo@EtQE}_h9@@oBAp=WgdxF55%oQ9CAKEzQ>>X#-mn|6XLQ>CBB zrqY7eJKC@*h!Sp&i#QyW5T)b?ko70(5L_X9x_uLlX!|sXD^U&?c}T?uXsHy*lBt&WFhbEclt0lz&bnvmhG7E$DuJSY~R1%N1g>b8|i1KeyU1x9Y)WU zKGpA0oV#>Q@z)%c6;weQgIqTfzo8Gp zhJ*w7Dy*{pyGs^N^C)useF$nR!5c-A7RUH zTylcZ1hu*l8sL#W#@bluA3MfKjeeNgn(9>&7uM>041yb)an$3cG#ZoNn5(180m|Gf z8ii~H3xst8tzM2jla0(vT#>5V&5#L`+$0t~nb(8PnfLClb5MVN2=P$H+|8=BwHNm2 zjOTUrraG%g$pky7YYdOG)Ve^eec{TG38l+NJg<;i6;fQVW6OiyLlp>EsB9n4gQX*A zHG4n5ljZqq!3POGQ`$&&|8NW5qd4B)(Kufn!nyRQr{7j?BN8At;bZB)3AFiMEES~DYUaWDiM1~TmbZx@KBAC2HNfredL7)66@=E3jg-@q6G!N zrPOS&tv99iKR}Q!=^YAw^Ir1PkdIF8`}R#s79M zh*Z5u_S~b?ONwb!*!@X*83e$M@6-;-&^{YQTnzZ4_ebK?G|Lr$+Vyh4bjtY z`T=mm%K0qs`X<(b_&TBam^1k05`$(i15irI|ih2LLSKaHQ z^fluW&*)zddpK(hF2DFS8g;ZLj1L{`fy;&X$B(<$)qjsc3R9*^Qo*k>IhHxfn~Hom zRXx4p1>l@oS~gQV{JfVU9Zv_X-kA4d%{Gqfyz8>N%;{CmH;4jbnUkVnilUgJBF%)= z`_mUT;Q}B{6sK2Q!FYWjr?~q@m|R-aI2Txg+O21C(@x$WJd2MA{O0M#3v!BMUVeHc z$x8;Whd98K9wm)`!bI@Nl5{Y_u33pK&|?3{0U!9jOmL;>V7W4Qq%WxmkcB{cf8(w# zvV29e37mtN@JE+}+v5eleeSpMi&qX$Dtjh+i_KLcu;jbdohy5@@V|i~%weYuG`$wj7zdc7L9l zGh|eLV*=qAV`m{{dF^MXoZzSB5h%{WjU2a9w3u3x>B^oq*)a5q$=j&H#D^(IsFZZ+ zaU_y9BaUoQl~MS^;m`&DtWcdZVLxqA%5n4i%)U*#OQu(s#WAB~016^U`aYNP#K79@ zImv=pzET$RbyrE z6Eir=S<1!+%%J4yOG4Wwu9}v~_(Y-}G`}4BfY%03M`jcgR;i@zmW^lDvBXf-orYn= z&9w1FjqB5#;`$p4Vy2Fr;~4nB;6PCa7KKrc%dCXoER7{Jm|SxYea9U5 z4>L2iApMere0lNF&560+s)LI%(@w{9ES*fnu@0217Er51x|DD(dC#~p(t%u^atU%x zCKvzndYhfFDAif-hy9McX!|Q<%4Vb&c*m_eO7)YRAENRFcEMC+lH(z9WD=bgd9SzG zs}LoV+?v|SYz@s4lyB+xFC)s(ePR`X^f9b1bVHWI1_`UU`EvJRAcm)Jyr&|wiZ%#C z2cyeQIJ?jjvahcgQPxX?r6_oZfH`}W(14v}qXsZ1y{n$g1QQa^B;6~0+wk`&e6DV zGgc%Yp!6-#2lEI35gU?TU>qtiS zL<6<1Q;tB0g2uIjL$)w?9#y*PKmaxpSzON)ejGaEw9`Q4BJiGSAn}8 zZ}9Pa+9zm7*gnAaI2DA=aGo4QWQih)6meskpDHwAYFO(RX7Naj<|v0{(s{=D=KoFt zQDW$B z96Dcxt`$btHU8nzHaHjvoQ{o~XW#BKCyLC;ho3|xQ5<=DJeORkCzwJ};AKaG_JcUe z#3O86L7?yPdV+%ehjA<&vT{Q&0eRrt|GZ6y)4;Kw)ipep~ATls-Exu;qpc{ zC36ENTyNkWK=4YtDv%O}p8N;E5QE)+g!-tImF1S1&XQpo$2AJdfTWpMjFtkefn`up zo~CfYkcxG96TnN^7&`Mr1VLer3@mT>T42M$*=N6+7IN!-!`lWT414Un#MxXTo*KL z^qd-saYz&!box3S^1I-!k>Ny8j>^7&MW0<~*lS z16$$*sFLV|%Rz&%5||!GKG0m0g&3sd^(f~DVTRXNz$;Oe#wh91(FBxKj=lU^0E+GT zg-$0*o&dFFBtPc(uBu~M90cw{BZaBKjpFsn!dKrvAduLbK?NO)Y{g@s(&wptBN8dL z@vg5}@m;8q)_9Bx83{OXk?FNsV24SWT%_mWD%0|?(4}wtzbr8;xo(Jc+1|XR5m6$J zBbFAV(m%OEBMW}4(Ui2*j8=5ycd;Tu)%VBfm)AHi;d~BS@oV{`-mO+2sPJsXM8BFa0;QTPw`dHyAw552N)168o6Bpx1 zuX4H1I3$W_xDKTVa#5Ke?hFuFW_&6T_MLaQZFMFhY71Z%7nk>lciZ{uvV-TnCBW_e zeUK{5A}ES$rwK1F*de`0s^}>AF*&xx`2t5-HjwjH;11%Pg1J`3ga3PpTQ$bIn=VO& zJQTNsP@DUo#OhMIOaia7!^!D6uou5J0Q&f!+2M6bLPfr}RCblp0d$Jf|E03J#vkQ0 zr-)klMPf%sTTj)^fnapSzYK*sgfS2eEulV?Pp-7t^JE8^Vw5xx6O)_Iw@N>xaoPyF z7RD2g^BZB7RS($Xxj`KzKz$$xiGnHW0DIAt%hk@_6laPk{BpgK%ZH*gAu3HG%Ji=Q)}TO@Jc72w zMvfHHgVZPQaRXFc$VvYMgX)E@78D4u=1~vuvDuvxzaJU%Z)r$^>mDpCG&|)?{PgTZ z{YYu1VVE9o4&k1$v%w?h8RQ_04?~)4G2+g&%hpyQmL*DgOl<{9`QBG&^yqbp^6h^U z2#GKWh9cyFAp1!dkz3l7+N#p#L{S~vD3g{0UhoWlW;mKCGmu`pU(WL(;HWJ5)K`^a+Aea6bu^tjOU3l)1z2K-HK=Lk?jUy<$; za`YtKF6uipg;A7GHJoRkf}V)^W*4qI3-AGbo6HGM6D4tlMS*$oHsJ?|$dVqvV8Vy~ zX?gUhr0)5tR&|)i7KB3kb6U6i4gq0THdAfS`@{bSjT?+{78Ps2+{rdWw~7K{(VL_^ zQ#y_0DtD|EPleGp-@iqX1IZccOqB9Wt^;R|AY(ztTjuL#9Gm21cZC9fLxke za+46GSs@UyAmw!ZvxJKJ#%13TppNUzCCOxBIVK3@nGjg`Q;bK(F=wd@>Wmd&^x-A7@8 zLYVn8Lw=Y$x@~SNHJR%Xn*G(}@=mv?kLsWg@$U@sMWO6XLgPS>NI-mEPJTn~tD=hX zIKrH<(7gC+vN^uotjt!O5!JLP`RtTcUqp?CrPyOC>_(|vZh)aM!YUu+YI8GDlZOY( zEw|91!vZje?zvGHr-HHQvxRfcXcx*BSj=_suRSu}CQz{NtEA{FKC^4E7%*J&H-@Kj zK}NUttb!A5Zwf=DoPKcepA%yXevu)fzhtdVdsSb^!?veI!;gvn;T2?Pqx_A3H9Z5X z2`vCHMbH^pE)7HTB!{Fz-$0meV;c@13;dA+YTj;cb^`9bUQJ<=8Bx~%Veg;ny%n4- zQMl*BmmaAIQy*KHtN<8Wp;-f#tMYsU*=<_oaW%|&fM7sDzlq(NQpe8m#f!dl2=5X2 z{)?}jgMYI1>2>PQAkN6`DEB<i6=L16~7{67zk(}D$U5u@KX``J-cNM3h^6I zf+nxISys)4JxB`g_`g=I!9=k&G=bSXh7q|1X$pe51Y)5!n$gU5L9&tN&OOlgo+Gh1 zgJp}*rv}zeUKsN}| zaM=gW$9(e=d=wTMH=^NSX+ptK0}ls`Q?kscw#@h{dgDRiB;IKr5g2x&hSu;Uje*!i zz>Kj)$ni0+4aDeZ5?QKGyy{Q0L}WLhBhu}ae=xIxAQp7Xl;r69TxQ)MLLo(|Q2sPM zx2mx&G6zry)428Pt@mjkJ3r9@icqq)B#(?JJeYlp2t^du6@C0B!Gyz{LGpL4mH1(x zpPhI>%p5bvb3t}#hJ&aukT^q#b;n+N71T#}&IwW`DXbqfFNqw6buTdo5Ws|DuS}Hn z8crNUdTr1Pg4=P~Z97gYARWbW^Xr zk+QEEX-3NulAtdVq*2iyg#KWm|9BsB=I{*|+^}{?D$tSX#+ZFZBAG>bE0`a1O>^>; zL?8op7h0u;r@ZGIE7zqjK;MVB3wp_nr}H3b$`Vy}Ll6=b`q8!pzf)EMKEW#jpU1~s zq%t4eG;1DOU=IT(B3N^#tB75PmOHqoh`z|22?xKs=Zb*f5tyH*xRwGvEUc`L38Bz{} zvUCu3npmf-D^0U!_TrB_?fW9U(bVO-t3CC@PsQ96FgkTWwqi@A?^_5gS9<&s^ft6KBy9v4YH;L5BE7QrEgQYODL(r6+ig zy7Q@aaEo^bOS9L3gX||#2-Y8rZP*CkOZ;#pT{?nSgXE7Z(7<76psksN&BRP|LZeyM z=>{Pf`1wei7oi_52;wI*VF<9y=n`Uqr2-A&GAZ{ZGREd_&a4?3?H!k_oSYKAp5 zID9#2jwV-^gxdNq2Nzp|vJOLtfheinUjuUoXI$_M-4=}cflJq)bzhT90R`^tZ+h~C zwzTqjiy6|ywNAbVsqSxjCN@2};7tf{A9G51h&E9nI13iFVpVX^1^=Fx_u?vh(|R3x zs_X77InLSD;_o@ta_G|Z$9~IbzTHU3eq61*>!jr!r5_|QJ0d$5Y>j3Y374%1-eei=KD@s4*TB0G+wG;^ zR?mheUT=dx3~QZMYot45zRT)Aw$Sum}+W}jnee^qR6pQZ7`_Pg)&y2aVA=3_wxc_!Ch<)2+fjBr5h(7!ssf&I*{b>ZhJHSB1IgpXGC-# z_G6D4?dn4+w`q&er%=y!+2w?%#;evJAjwDJ+QFBLeTN+i)6TQ-J(=5F-|K z*kSbX)n_t2n#$?e)REtaov^-|vo%FK-Bh~tD4{4HGQ7So3O_=S->hS`k z_yVnVq?L@flH*Y|{bz7)tVz8=lF*v@#z6*d#>#^1J;e`$;m>*c7ia93G-@}p#5|D& z3H!3UYX{>rNKBvR6I&mXf2h9-OAxa1$@PRTF^`KaXW;wfA{ciE*!f)8lY=lg5hMzB zLNP>TLzq2jJ*DCam{mhHY(CzvL2>|J`Xsuxpi_zBIXik$bp4;H=>KCpLHBo7er`-K&;`<)Z<>6RLM& zo;emG7%QzMa@pBZl9K#nM~)n*m5E)Y0D4h`CW5@u+=($>VxHGvRku6mb~v9rh|@sh zhPk}roUzq~yu^B2t+0JCe^nPOvKnKL`7|;mu|&a-AJC04M~0a>p{On5R?t5Pbyqcx z0_bXIxwdwl3+qk}8UGR1I#_n)bPa7brl8e7Lj(*$Gwcu0*<(`(!#tY9Zv8wMOZX-n z@=Kv7=u>6_zJmBk(xlHb42x^0j16^-1C%)BB#n z^Cvn}im(t32jKyshOW4`pc>ux`cSZJgjv@J!ibLUE>+wB7?am?HL47)<<+ zOg8>}&4Tg@$lhSn6R|T~3!V_tdlyHN;B<{4Q)TLnf@5Z$ErLE{6&>MJ(auu<23RXA3AOoy{!cB(
wOupInQO4O9M}*0I;?J;3RKg)clhC2 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 Tuple[str, str]: + """根据不同操作系统获取 Cursor 相关路径""" + system = platform.system() + + paths_map = { + "Darwin": { + "base": "/Applications/Cursor.app/Contents/Resources/app", + "package": "package.json", + "main": "out/main.js", + }, + "Windows": { + "base": os.path.join( + os.getenv("LOCALAPPDATA", ""), "Programs", "Cursor", "resources", "app" + ), + "package": "package.json", + "main": "out/main.js", + }, + "Linux": { + "bases": ["/opt/Cursor/resources/app", "/usr/share/cursor/resources/app"], + "package": "package.json", + "main": "out/main.js", + }, + } + + if system not in paths_map: + raise OSError(translator.get('reset.unsupported_os', system=system) if translator else f"不支持的操作系统: {system}") + + if system == "Linux": + for base in paths_map["Linux"]["bases"]: + pkg_path = os.path.join(base, paths_map["Linux"]["package"]) + if os.path.exists(pkg_path): + return (pkg_path, os.path.join(base, paths_map["Linux"]["main"])) + raise OSError(translator.get('reset.linux_path_not_found') if translator else "在 Linux 系统上未找到 Cursor 安装路径") + + base_path = paths_map[system]["base"] + return ( + os.path.join(base_path, paths_map[system]["package"]), + os.path.join(base_path, paths_map[system]["main"]), + ) + +def version_check(version: str, min_version: str = "", max_version: str = "", translator=None) -> bool: + """版本号检查""" + version_pattern = r"^\d+\.\d+\.\d+$" + try: + if not re.match(version_pattern, version): + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.invalid_version_format', version=version)}{Style.RESET_ALL}") + return False + + def parse_version(ver: str) -> Tuple[int, ...]: + return tuple(map(int, ver.split("."))) + + current = parse_version(version) + + if min_version and current < parse_version(min_version): + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.version_too_low', version=version, min_version=min_version)}{Style.RESET_ALL}") + return False + + if max_version and current > parse_version(max_version): + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.version_too_high', version=version, max_version=max_version)}{Style.RESET_ALL}") + return False + + return True + + except Exception as e: + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.version_check_error', error=str(e))}{Style.RESET_ALL}") + return False + +def check_cursor_version(translator) -> bool: + """检查 Cursor 版本""" + try: + pkg_path, _ = get_cursor_paths(translator) + with open(pkg_path, "r", encoding="utf-8") as f: + version = json.load(f)["version"] + return version_check(version, min_version="0.45.0", translator=translator) + except Exception as e: + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.check_version_failed', error=str(e))}{Style.RESET_ALL}") + return False + +def modify_main_js(main_path: str, translator) -> bool: + """修改 main.js 文件""" + try: + original_stat = os.stat(main_path) + original_mode = original_stat.st_mode + original_uid = original_stat.st_uid + original_gid = original_stat.st_gid + + with tempfile.NamedTemporaryFile(mode="w", delete=False) as tmp_file: + with open(main_path, "r", encoding="utf-8") as main_file: + content = main_file.read() + + patterns = { + r"async getMachineId\(\)\{return [^??]+\?\?([^}]+)\}": r"async getMachineId(){return \1}", + r"async getMacMachineId\(\)\{return [^??]+\?\?([^}]+)\}": r"async getMacMachineId(){return \1}", + } + + for pattern, replacement in patterns.items(): + content = re.sub(pattern, replacement, content) + + tmp_file.write(content) + tmp_path = tmp_file.name + + shutil.copy2(main_path, main_path + ".old") + shutil.move(tmp_path, main_path) + + os.chmod(main_path, original_mode) + if os.name != "nt": + os.chown(main_path, original_uid, original_gid) + + print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {translator.get('reset.file_modified')}{Style.RESET_ALL}") + return True + + except Exception as e: + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.modify_file_failed', error=str(e))}{Style.RESET_ALL}") + if "tmp_path" in locals(): + os.unlink(tmp_path) + return False + +def patch_cursor_get_machine_id(translator) -> bool: + """修补 Cursor getMachineId 函数""" + try: + print(f"{Fore.CYAN}{EMOJI['INFO']} {translator.get('reset.start_patching')}...{Style.RESET_ALL}") + + # 获取路径 + pkg_path, main_path = get_cursor_paths(translator) + + # 检查文件权限 + for file_path in [pkg_path, main_path]: + if not os.path.isfile(file_path): + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.file_not_found', path=file_path)}{Style.RESET_ALL}") + return False + if not os.access(file_path, os.W_OK): + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.no_write_permission', path=file_path)}{Style.RESET_ALL}") + return False + + # 获取版本号 + try: + with open(pkg_path, "r", encoding="utf-8") as f: + version = json.load(f)["version"] + print(f"{Fore.CYAN}{EMOJI['INFO']} {translator.get('reset.current_version', version=version)}{Style.RESET_ALL}") + except Exception as e: + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.read_version_failed', error=str(e))}{Style.RESET_ALL}") + return False + + # 检查版本 + if not version_check(version, min_version="0.45.0", translator=translator): + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.version_not_supported')}{Style.RESET_ALL}") + return False + + print(f"{Fore.CYAN}{EMOJI['INFO']} {translator.get('reset.version_check_passed')}{Style.RESET_ALL}") + + # 备份文件 + backup_path = main_path + ".bak" + if not os.path.exists(backup_path): + shutil.copy2(main_path, backup_path) + print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {translator.get('reset.backup_created', path=backup_path)}{Style.RESET_ALL}") + + # 修改文件 + if not modify_main_js(main_path, translator): + return False + + print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {translator.get('reset.patch_completed')}{Style.RESET_ALL}") + return True + + except Exception as e: + print(f"{Fore.RED}{EMOJI['ERROR']} {translator.get('reset.patch_failed', error=str(e))}{Style.RESET_ALL}") + return False + class MachineIDResetter: def __init__(self, translator=None): self.translator = translator @@ -135,7 +294,6 @@ class MachineIDResetter: return True except Exception as e: print(f"{Fore.RED}{EMOJI['ERROR']} {self.translator.get('reset.system_ids_update_failed', error=str(e))}{Style.RESET_ALL}") - logger.error(f"System IDs update failed: {e}") return False def _update_windows_machine_guid(self): @@ -151,12 +309,12 @@ class MachineIDResetter: new_guid = str(uuid.uuid4()) winreg.SetValueEx(key, "MachineGuid", 0, winreg.REG_SZ, new_guid) winreg.CloseKey(key) - logger.info("Windows MachineGuid updated successfully") + print("Windows MachineGuid updated successfully") except PermissionError: - logger.error("Permission denied: Run as administrator to update Windows MachineGuid") + print("Permission denied: Run as administrator to update Windows MachineGuid") raise except Exception as e: - logger.error(f"Failed to update Windows MachineGuid: {e}") + print(f"Failed to update Windows MachineGuid: {e}") raise def _update_macos_platform_uuid(self, new_ids): @@ -168,11 +326,11 @@ class MachineIDResetter: cmd = f'sudo plutil -replace "UUID" -string "{new_ids["telemetry.macMachineId"]}" "{uuid_file}"' result = os.system(cmd) if result == 0: - logger.info("macOS Platform UUID updated successfully") + print("macOS Platform UUID updated successfully") else: raise Exception("Failed to execute plutil command") except Exception as e: - logger.error(f"Failed to update macOS Platform UUID: {e}") + print(f"Failed to update macOS Platform UUID: {e}") raise def reset_machine_ids(self): @@ -215,6 +373,14 @@ class MachineIDResetter: # 更新系统ID self.update_system_ids(new_ids) + # 检查 Cursor 版本并执行相应的操作 + greater_than_0_45 = check_cursor_version(self.translator) + if greater_than_0_45: + print(f"{Fore.CYAN}{EMOJI['INFO']} 检测到 Cursor 版本 >= 0.45.0,正在修补 getMachineId...{Style.RESET_ALL}") + patch_cursor_get_machine_id(self.translator) + else: + print(f"{Fore.YELLOW}{EMOJI['INFO']} Cursor 版本 < 0.45.0,跳过 getMachineId 修补{Style.RESET_ALL}") + print(f"{Fore.GREEN}{EMOJI['SUCCESS']} {self.translator.get('reset.success')}{Style.RESET_ALL}") print(f"\n{Fore.CYAN}{self.translator.get('reset.new_id')}:{Style.RESET_ALL}") for key, value in new_ids.items():