diff options
author | Yonaba <roland.yonaba@gmail.com> | 2018-08-16 12:32:45 +0300 |
---|---|---|
committer | Yonaba <roland.yonaba@gmail.com> | 2018-08-16 12:32:45 +0300 |
commit | 4b8ef4a336e405097881efe3937496677fd69d8f (patch) | |
tree | d44e2ccb54657c90dd2dfe1ef9ea58af575fb809 | |
parent | b44b453e01e834a5d6917a12f1fd6faa38b44b3a (diff) |
update minified version to reflect b44b453e01 changes
-rw-r--r-- | moses_min.lua | 756 |
1 files changed, 405 insertions, 351 deletions
diff --git a/moses_min.lua b/moses_min.lua index bb67dcc..901accd 100644 --- a/moses_min.lua +++ b/moses_min.lua @@ -1,364 +1,418 @@ -local _ba='1.6.1'local aba,bba,cba,dba=next,type,select,pcall;local _ca,aca=setmetatable,getmetatable -local bca,cca=table.insert,table.sort;local dca,_da=table.remove,table.concat -local ada,bda,cda=math.randomseed,math.random,math.huge;local dda,__b,a_b=math.floor,math.max,math.min;local b_b=rawget -local c_b=table.unpack or unpack;local d_b,_ab=pairs,ipairs;local aab=os.clock;local bab={} -local function cab(dcb,_db)return dcb>_db end;local function dab(dcb,_db)return dcb<_db end -local function _bb(dcb,_db,adb)return(dcb<_db)and _db or -(dcb>adb and adb or dcb)end;local function abb(dcb,_db)return _db and true end -local function bbb(dcb)return not dcb end -local function cbb(dcb)local _db=0;for adb,bdb in d_b(dcb)do _db=_db+1 end;return _db end -local function dbb(dcb,_db,adb,...)local bdb;local cdb=adb or bab.identity;for ddb,__c in d_b(dcb)do -if not bdb then bdb=cdb(__c,...)else -local a_c=cdb(__c,...)bdb=_db(bdb,a_c)and bdb or a_c end end;return bdb end -local function _cb(dcb,_db,adb,bdb)for i=0,#dcb,_db do local cdb=bab.slice(dcb,i+1,i+_db) -if#cdb>0 then while -(#cdb<_db and bdb)do cdb[#cdb+1]=bdb end;adb(cdb)end end end -local function acb(dcb,_db,adb,bdb) -for i=0,#dcb,_db-1 do local cdb=bab.slice(dcb,i+1,i+_db)if -#cdb>0 and i+1 <#dcb then while(#cdb<_db and bdb)do cdb[#cdb+1]=bdb end -adb(cdb)end end end -local function bcb(dcb,_db,adb)if _db==0 then adb(dcb)end -for i=1,_db do dcb[_db],dcb[i]=dcb[i],dcb[_db]bcb(dcb,_db- -1,adb)dcb[_db],dcb[i]=dcb[i],dcb[_db]end end;local ccb=-1 -function bab.clear(dcb)for _db in d_b(dcb)do dcb[_db]=nil end;return dcb end -function bab.each(dcb,_db,...)for adb,bdb in d_b(dcb)do _db(adb,bdb,...)end end -function bab.eachi(dcb,_db,...) -local adb=bab.sort(bab.select(bab.keys(dcb),function(bdb,cdb)return bab.isInteger(cdb)end))for bdb,cdb in _ab(adb)do _db(cdb,dcb[cdb],...)end end -function bab.at(dcb,...)local _db={}for adb,bdb in _ab({...})do -if bab.has(dcb,bdb)then _db[#_db+1]=dcb[bdb]end end;return _db end -function bab.count(dcb,_db)if bab.isNil(_db)then return bab.size(dcb)end;local adb=0 -bab.each(dcb,function(bdb,cdb)if -bab.isEqual(cdb,_db)then adb=adb+1 end end)return adb end -function bab.countf(dcb,_db,...)return bab.count(bab.map(dcb,_db,...),true)end -function bab.cycle(dcb,_db)_db=_db or 1;if _db<=0 then return bab.noop end;local adb,bdb;local cdb=0 +local slo60nGX='1.6.1'local XKD,SWFtRywD,e,v=next,type,select,pcall +local l6Sm5,oUA=setmetatable,getmetatable;local QFKEzBf,odpE=table.insert,table.sort;local p,lIpFkbLI=table.remove,table.concat +local JdUtcU,GQLN,toXyq=math.randomseed,math.random,math.huge;local S9TO,pS78Y,BCf7=math.floor,math.max,math.min;local RlMSrmdD=rawget +local VCD=table.unpack or unpack;local OV7,X83a=pairs,ipairs;local PizLA9mj=os.clock;local hUL={}local function l(VQT,Id)return VQT>Id end;local function kyWtqIf0(Ub,qJExeUn2)return +Ub<qJExeUn2 end +local function zupvsz(cmWo_v,RoXZEsn,BKLwtAVx)return + +(cmWo_v<RoXZEsn)and RoXZEsn or(cmWo_v>BKLwtAVx and BKLwtAVx or cmWo_v)end;local function Mw(hUL,BMZNmf0)return BMZNmf0 and true end +local function S1wg_DG(qL9C)return not qL9C end +local function sf0(Colg)local ex2xo17=0;for I,K66 in OV7(Colg)do ex2xo17=ex2xo17+1 end;return ex2xo17 end +local function qxZa6ozV(Tq,jmB,bjO,...)local QoYPziln;local bjO=bjO or hUL.identity +for Hj,KBlIVi in OV7(Tq)do if not QoYPziln then +QoYPziln=bjO(KBlIVi,...)else local KBlIVi=bjO(KBlIVi,...) +QoYPziln=jmB(QoYPziln,KBlIVi)and QoYPziln or KBlIVi end end;return QoYPziln end +local function hgW2H5(OR8it1,GAqAsa,Oc_,Qj) +for Ybp8=0,#OR8it1,GAqAsa do +local ZmzyNm=hUL.slice(OR8it1,Ybp8+1,Ybp8+GAqAsa) +if#ZmzyNm>0 then while(#ZmzyNm<GAqAsa and Qj)do +ZmzyNm[#ZmzyNm+1]=Qj end;Oc_(ZmzyNm)end end end +local function z5i2i(akG0mUnS,iy,gc7SaW,FnbJWd2) +for cpdLk=0,#akG0mUnS,iy-1 do +local FbQX=hUL.slice(akG0mUnS,cpdLk+1,cpdLk+iy)if#FbQX>0 and cpdLk+1 <#akG0mUnS then while +(#FbQX<iy and FnbJWd2)do FbQX[#FbQX+1]=FnbJWd2 end +gc7SaW(FbQX)end end end +local function MGSnnzOI(ejMVLYZd,eS0X,XDQS4ASf)if eS0X==0 then XDQS4ASf(ejMVLYZd)end +for IiNU=1,eS0X do +ejMVLYZd[eS0X],ejMVLYZd[IiNU]=ejMVLYZd[IiNU],ejMVLYZd[eS0X]MGSnnzOI(ejMVLYZd,eS0X-1,XDQS4ASf) +ejMVLYZd[eS0X],ejMVLYZd[IiNU]=ejMVLYZd[IiNU],ejMVLYZd[eS0X]end end;local B0o5xpg7=-1;function hUL.clear(gUfudNUg)for d3 in OV7(gUfudNUg)do gUfudNUg[d3]=nil end;return +gUfudNUg end +function hUL.each(gTOcAHv,vY_4HT1n,...)for DzPbzg,UMD in OV7(gTOcAHv)do +vY_4HT1n(DzPbzg,UMD,...)end end +function hUL.eachi(K3ZE7Ou,fBI,...) +local wMSY=hUL.sort(hUL.select(hUL.keys(K3ZE7Ou),function(_nD2rl,aVh8xSly)return hUL.isInteger(aVh8xSly)end)) +for i,P_NNVDyt in X83a(wMSY)do fBI(P_NNVDyt,K3ZE7Ou[P_NNVDyt],...)end end +function hUL.at(cVEyN,...)local uj2AiF={} +for W,lbHN2 in X83a({...})do if hUL.has(cVEyN,lbHN2)then +uj2AiF[#uj2AiF+1]=cVEyN[lbHN2]end end;return uj2AiF end +function hUL.count(PwgW3lfq,z)if hUL.isNil(z)then return hUL.size(PwgW3lfq)end +local sf0=0 +hUL.each(PwgW3lfq,function(K,xx)if hUL.isEqual(xx,z)then sf0=sf0+1 end end)return sf0 end +function hUL.countf(aYb,JM2,...)return hUL.count(hUL.map(aYb,JM2,...),true)end +function hUL.cycle(bmAjLT,eExYnwnh)eExYnwnh=eExYnwnh or 1;if eExYnwnh<=0 then return hUL.noop end +local XMBmJyiP,nowqEU6m;local iKD8V=0 while true do return -function()adb=adb and -aba(dcb,adb)or aba(dcb) -bdb=not bdb and adb or bdb;if _db then cdb=(adb==bdb)and cdb+1 or cdb -if cdb>_db then return end end;return adb,dcb[adb]end end end -function bab.map(dcb,_db,...)local adb={} -for bdb,cdb in d_b(dcb)do local ddb,__c,a_c=bdb,_db(bdb,cdb,...)adb[a_c and __c or ddb]= -a_c or __c end;return adb end;function bab.reduce(dcb,_db,adb) -for bdb,cdb in d_b(dcb)do if adb==nil then adb=cdb else adb=_db(adb,cdb)end end;return adb end;function bab.reduceby(dcb,_db,adb,bdb,...)return -bab.reduce(bab.select(dcb,bdb,...),_db,adb)end;function bab.reduceRight(dcb,_db,adb)return -bab.reduce(bab.reverse(dcb),_db,adb)end -function bab.mapReduce(dcb,_db,adb) -local bdb={}for cdb,ddb in d_b(dcb)do bdb[cdb]=not adb and ddb or _db(adb,ddb) -adb=bdb[cdb]end;return bdb end;function bab.mapReduceRight(dcb,_db,adb) -return bab.mapReduce(bab.reverse(dcb),_db,adb)end -function bab.include(dcb,_db)local adb= -bab.isFunction(_db)and _db or bab.isEqual;for bdb,cdb in d_b(dcb)do if adb(cdb,_db)then -return true end end;return false end -function bab.detect(dcb,_db) -local adb=bab.isFunction(_db)and _db or bab.isEqual;for bdb,cdb in d_b(dcb)do if adb(cdb,_db)then return bdb end end end -function bab.where(dcb,_db) -local adb=bab.select(dcb,function(bdb,cdb) -for ddb in d_b(_db)do if cdb[ddb]~=_db[ddb]then return false end end;return true end)return#adb>0 and adb or nil end -function bab.findWhere(dcb,_db) -local adb=bab.detect(dcb,function(bdb)for cdb in d_b(_db)do -if _db[cdb]~=bdb[cdb]then return false end end;return true end)return adb and dcb[adb]end -function bab.select(dcb,_db,...)local adb={}for bdb,cdb in d_b(dcb)do -if _db(bdb,cdb,...)then adb[#adb+1]=cdb end end;return adb end -function bab.reject(dcb,_db,...)local adb=bab.map(dcb,_db,...)local bdb={}for cdb,ddb in d_b(adb)do if not ddb then -bdb[#bdb+1]=dcb[cdb]end end;return bdb end -function bab.all(dcb,_db,...)return( (#bab.select(bab.map(dcb,_db,...),abb))== -cbb(dcb))end -function bab.invoke(dcb,_db,...)local adb={...} +function() +XMBmJyiP=XMBmJyiP and XKD(bmAjLT,XMBmJyiP)or XKD(bmAjLT) +nowqEU6m=not nowqEU6m and XMBmJyiP or nowqEU6m +if eExYnwnh then +iKD8V=(XMBmJyiP==nowqEU6m)and iKD8V+1 or iKD8V;if iKD8V>eExYnwnh then return end end;return XMBmJyiP,bmAjLT[XMBmJyiP]end end end +function hUL.map(YtRS,A,...)local mHJ={} +for Q57BJ,vM in OV7(YtRS)do local JeGCDX,AUFZlp,VsrKM=Q57BJ,A(Q57BJ,vM,...)mHJ[VsrKM and AUFZlp or +JeGCDX]=VsrKM or AUFZlp end;return mHJ end +function hUL.reduce(uhIq,EEOUzhy,hbrt)for D,Q in OV7(uhIq)do +if hbrt==nil then hbrt=Q else hbrt=EEOUzhy(hbrt,Q)end end;return hbrt end;function hUL.reduceby(mRqle,sBEZ8,WhHB0ygh,rYSD0,...) +return hUL.reduce(hUL.select(mRqle,rYSD0,...),sBEZ8,WhHB0ygh)end +function hUL.reduceRight(BIL5,GQLlkH,aN4J2zRQ)return +hUL.reduce(hUL.reverse(BIL5),GQLlkH,aN4J2zRQ)end +function hUL.mapReduce(eWca,AGUR2QK,FK)local _={}for YQZ729qQ,rZh2wG in OV7(eWca)do +_[YQZ729qQ]=not FK and rZh2wG or AGUR2QK(FK,rZh2wG)FK=_[YQZ729qQ]end;return _ end;function hUL.mapReduceRight(sef4eW6Q,Z,UacO6D) +return hUL.mapReduce(hUL.reverse(sef4eW6Q),Z,UacO6D)end +function hUL.include(FdnzjW,o)local lMAL= +hUL.isFunction(o)and o or hUL.isEqual;for CpQ,L in OV7(FdnzjW)do if +lMAL(L,o)then return true end end;return false end +function hUL.detect(HnQS_Z,rib) +local w=hUL.isFunction(rib)and rib or hUL.isEqual +for YT6wZ,VYv in OV7(HnQS_Z)do if w(VYv,rib)then return YT6wZ end end end +function hUL.where(gU,JzG8W4Ya) +local dZ54oc=hUL.select(gU,function(v_LoR,gRY)for z in OV7(JzG8W4Ya)do +if gRY[z]~=JzG8W4Ya[z]then return false end end;return true end)return#dZ54oc>0 and dZ54oc or nil end +function hUL.findWhere(ad,Ui0Qa) +local g=hUL.detect(ad,function(Itx)for JpoaGH in OV7(Ui0Qa)do +if Ui0Qa[JpoaGH]~=Itx[JpoaGH]then return false end end;return true end)return g and ad[g]end +function hUL.select(cyAcCT,RCA,...)local L46S={} +for GKTYT,hXSTz8FJ in OV7(cyAcCT)do if RCA(GKTYT,hXSTz8FJ,...)then +L46S[#L46S+1]=hXSTz8FJ end end;return L46S end +function hUL.reject(C24r7o4G,b_4Q38cU,...)local N=hUL.map(C24r7o4G,b_4Q38cU,...)local JbPw={} +for j,S in OV7(N)do if not S then JbPw[ +#JbPw+1]=C24r7o4G[j]end end;return JbPw end +function hUL.all(cg4FV7bl,flf9sWX,...)return +( +(#hUL.select(hUL.map(cg4FV7bl,flf9sWX,...),Mw))==sf0(cg4FV7bl))end +function hUL.invoke(uNoS,ZWoH9V08,...)local RWo={...} return -bab.map(dcb,function(bdb,cdb) -if bab.isTable(cdb)then -if bab.has(cdb,_db)then +hUL.map(uNoS,function(GWBQL,PCldTUn9) +if hUL.isTable(PCldTUn9)then +if hUL.has(PCldTUn9,ZWoH9V08)then if +hUL.isCallable(PCldTUn9[ZWoH9V08])then return PCldTUn9[ZWoH9V08](PCldTUn9,VCD(RWo))else return +PCldTUn9[ZWoH9V08]end else if -bab.isCallable(cdb[_db])then return cdb[_db](cdb,c_b(adb))else return cdb[_db]end else -if bab.isCallable(_db)then return _db(cdb,c_b(adb))end end elseif bab.isCallable(_db)then return _db(cdb,c_b(adb))end end)end -function bab.pluck(dcb,_db)return -bab.reject(bab.map(dcb,function(adb,bdb)return bdb[_db]end),bbb)end;function bab.max(dcb,_db,...)return dbb(dcb,cab,_db,...)end;function bab.min(dcb,_db,...)return -dbb(dcb,dab,_db,...)end -function bab.shuffle(dcb,_db)if _db then ada(_db)end -local adb={} -bab.each(dcb,function(bdb,cdb)local ddb=dda(bda()*bdb)+1;adb[bdb]=adb[ddb] -adb[ddb]=cdb end)return adb end -function bab.same(dcb,_db) +hUL.isCallable(ZWoH9V08)then return ZWoH9V08(PCldTUn9,VCD(RWo))end end elseif hUL.isCallable(ZWoH9V08)then return ZWoH9V08(PCldTUn9,VCD(RWo))end end)end +function hUL.pluck(sO_,ALbdmINL)return +hUL.reject(hUL.map(sO_,function(b,DUgF0E)return DUgF0E[ALbdmINL]end),S1wg_DG)end +function hUL.max(vGxJ6f,a4ga2I,...)return qxZa6ozV(vGxJ6f,l,a4ga2I,...)end +function hUL.min(syGyB_,VO,...)return qxZa6ozV(syGyB_,kyWtqIf0,VO,...)end +function hUL.shuffle(J1r,iBcU3_7D)if iBcU3_7D then JdUtcU(iBcU3_7D)end;local N={} +hUL.each(J1r,function(M4V,_feve)local OPz_7bk= +S9TO(GQLN()*M4V)+1;N[M4V]=N[OPz_7bk]N[OPz_7bk]=_feve end)return N end +function hUL.same(H64aD,ny7) return -bab.all(dcb,function(adb,bdb)return bab.include(_db,bdb)end)and -bab.all(_db,function(adb,bdb)return bab.include(dcb,bdb)end)end;function bab.sort(dcb,_db)cca(dcb,_db)return dcb end -function bab.sortBy(dcb,_db,adb) -local bdb=_db or bab.identity -if bab.isString(_db)then bdb=function(ddb)return ddb[_db]end end;adb=adb or dab;local cdb={} -bab.each(dcb,function(ddb,__c) -cdb[#cdb+1]={value=__c,transform=bdb(__c)}end) -cca(cdb,function(ddb,__c)return adb(ddb.transform,__c.transform)end)return bab.pluck(cdb,'value')end -function bab.groupBy(dcb,_db,...)local adb={...}local bdb={} -bab.each(dcb,function(cdb,ddb)local __c=_db(cdb,ddb,c_b(adb)) -if -bdb[__c]then bdb[__c][#bdb[__c]+1]=ddb else bdb[__c]={ddb}end end)return bdb end -function bab.countBy(dcb,_db,...)local adb={...}local bdb={} -bab.each(dcb,function(cdb,ddb)local __c=_db(cdb,ddb,c_b(adb))bdb[__c]=( -bdb[__c]or 0)+1 end)return bdb end -function bab.size(...)local dcb={...}local _db=dcb[1]if bab.isTable(_db)then return cbb(dcb[1])else -return cbb(dcb)end end;function bab.containsKeys(dcb,_db) -for adb in d_b(_db)do if not dcb[adb]then return false end end;return true end -function bab.sameKeys(dcb,_db)for adb in -d_b(dcb)do if not _db[adb]then return false end end;for adb in -d_b(_db)do if not dcb[adb]then return false end end -return true end -function bab.sample(dcb,_db,adb)_db=_db or 1;if _db<1 then return end;if _db==1 then if adb then ada(adb)end;return -dcb[bda(1,#dcb)]end;return -bab.slice(bab.shuffle(dcb,adb),1,_db)end -function bab.sampleProb(dcb,_db,adb)if adb then ada(adb)end;return -bab.select(dcb,function(bdb,cdb)return bda()<_db end)end;function bab.toArray(...)return{...}end -function bab.find(dcb,_db,adb)for i=adb or 1,#dcb do if -bab.isEqual(dcb[i],_db)then return i end end end -function bab.reverse(dcb)local _db={}for i=#dcb,1,-1 do _db[#_db+1]=dcb[i]end;return _db end;function bab.fill(dcb,_db,adb,bdb)bdb=bdb or bab.size(dcb) -for i=adb or 1,bdb do dcb[i]=_db end;return dcb end -function bab.selectWhile(dcb,_db,...) -local adb={} -for bdb,cdb in _ab(dcb)do if _db(bdb,cdb,...)then adb[bdb]=cdb else break end end;return adb end -function bab.dropWhile(dcb,_db,...)local adb -for bdb,cdb in _ab(dcb)do if not _db(bdb,cdb,...)then adb=bdb;break end end;if bab.isNil(adb)then return{}end;return bab.rest(dcb,adb)end -function bab.sortedIndex(dcb,_db,adb,bdb)local cdb=adb or dab;if bdb then bab.sort(dcb,cdb)end;for i=1,#dcb do if not -cdb(dcb[i],_db)then return i end end -return#dcb+1 end -function bab.indexOf(dcb,_db)for k=1,#dcb do if dcb[k]==_db then return k end end end -function bab.lastIndexOf(dcb,_db)local adb=bab.indexOf(bab.reverse(dcb),_db)if adb then return -#dcb-adb+1 end end;function bab.findIndex(dcb,_db,...) -for k=1,#dcb do if _db(k,dcb[k],...)then return k end end end -function bab.findLastIndex(dcb,_db,...) -local adb=bab.findIndex(bab.reverse(dcb),_db,...)if adb then return#dcb-adb+1 end end;function bab.addTop(dcb,...) -bab.each({...},function(_db,adb)bca(dcb,1,adb)end)return dcb end;function bab.push(dcb,...)bab.each({...},function(_db,adb) -dcb[#dcb+1]=adb end) -return dcb end -function bab.pop(dcb,_db) -_db=a_b(_db or 1,#dcb)local adb={} -for i=1,_db do local bdb=dcb[1]adb[#adb+1]=bdb;dca(dcb,1)end;return c_b(adb)end -function bab.unshift(dcb,_db)_db=a_b(_db or 1,#dcb)local adb={}for i=1,_db do local bdb=dcb[#dcb] -adb[#adb+1]=bdb;dca(dcb)end;return c_b(adb)end -function bab.pull(dcb,...) -for _db,adb in _ab({...})do for i=#dcb,1,-1 do -if bab.isEqual(dcb[i],adb)then dca(dcb,i)end end end;return dcb end -function bab.removeRange(dcb,_db,adb)local bdb=bab.clone(dcb)local cdb,ddb=(aba(bdb)),#bdb -if ddb<1 then return bdb end;_db=_bb(_db or cdb,cdb,ddb) -adb=_bb(adb or ddb,cdb,ddb)if adb<_db then return bdb end;local __c=adb-_db+1;local a_c=_db;while __c>0 do -dca(bdb,a_c)__c=__c-1 end;return bdb end -function bab.chunk(dcb,_db,...)if not bab.isArray(dcb)then return dcb end;local adb,bdb,cdb={},0 -local ddb=bab.map(dcb,_db,...) -bab.each(ddb,function(__c,a_c)cdb=(cdb==nil)and a_c or cdb;bdb=( -(a_c~=cdb)and(bdb+1)or bdb) -if not adb[bdb]then adb[bdb]={dcb[__c]}else adb[bdb][ -#adb[bdb]+1]=dcb[__c]end;cdb=a_c end)return adb end -function bab.slice(dcb,_db,adb)return -bab.select(dcb,function(bdb)return -(bdb>= (_db or aba(dcb))and bdb<= (adb or#dcb))end)end;function bab.first(dcb,_db)local adb=_db or 1 -return bab.slice(dcb,1,a_b(adb,#dcb))end -function bab.initial(dcb,_db) -if _db and _db<0 then return end;return -bab.slice(dcb,1,_db and#dcb- (a_b(_db,#dcb))or#dcb-1)end;function bab.last(dcb,_db)if _db and _db<=0 then return end -return bab.slice(dcb,_db and -#dcb-a_b(_db-1,#dcb-1)or 2,#dcb)end;function bab.rest(dcb,_db)if _db and -_db>#dcb then return{}end -return bab.slice(dcb, -_db and __b(1,a_b(_db,#dcb))or 1,#dcb)end;function bab.nth(dcb,_db) -return dcb[_db]end;function bab.compact(dcb)return -bab.reject(dcb,function(_db,adb)return not adb end)end -function bab.flatten(dcb,_db)local adb= -_db or false;local bdb;local cdb={} -for ddb,__c in d_b(dcb)do -if bab.isTable(__c)then bdb=adb and __c or -bab.flatten(__c) -bab.each(bdb,function(a_c,b_c)cdb[#cdb+1]=b_c end)else cdb[#cdb+1]=__c end end;return cdb end -function bab.difference(dcb,_db)if not _db then return bab.clone(dcb)end;return -bab.select(dcb,function(adb,bdb)return not -bab.include(_db,bdb)end)end -function bab.union(...)return bab.uniq(bab.flatten({...}))end -function bab.intersection(dcb,...)local _db={...}local adb={} -for bdb,cdb in _ab(dcb)do if -bab.all(_db,function(ddb,__c)return bab.include(__c,cdb)end)then bca(adb,cdb)end end;return adb end -function bab.symmetricDifference(dcb,_db)return -bab.difference(bab.union(dcb,_db),bab.intersection(dcb,_db))end -function bab.unique(dcb)local _db={}for i=1,#dcb do if not bab.find(_db,dcb[i])then -_db[#_db+1]=dcb[i]end end;return _db end -function bab.isunique(dcb)return bab.isEqual(dcb,bab.unique(dcb))end -function bab.zip(...)local dcb={...} -local _db=bab.max(bab.map(dcb,function(bdb,cdb)return#cdb end))local adb={}for i=1,_db do adb[i]=bab.pluck(dcb,i)end;return adb end -function bab.append(dcb,_db)local adb={}for bdb,cdb in _ab(dcb)do adb[bdb]=cdb end;for bdb,cdb in _ab(_db)do -adb[#adb+1]=cdb end;return adb end -function bab.interleave(...)return bab.flatten(bab.zip(...))end;function bab.interpose(dcb,_db)return -bab.flatten(bab.zip(_db,bab.rep(dcb,#_db-1)))end -function bab.range(...) -local dcb={...}local _db,adb,bdb -if#dcb==0 then return{}elseif#dcb==1 then adb,_db,bdb=dcb[1],0,1 elseif#dcb==2 then -_db,adb,bdb=dcb[1],dcb[2],1 elseif#dcb==3 then _db,adb,bdb=dcb[1],dcb[2],dcb[3]end;if(bdb and bdb==0)then return{}end;local cdb={} -local ddb=__b(dda((adb-_db)/bdb),0)for i=1,ddb do cdb[#cdb+1]=_db+bdb*i end;if#cdb>0 then -bca(cdb,1,_db)end;return cdb end -function bab.rep(dcb,_db)local adb={}for i=1,_db do adb[#adb+1]=dcb end;return adb end;function bab.partition(dcb,_db,adb)if _db<=0 then return end +hUL.all(H64aD,function(QDj6GAX,k6pXzd)return hUL.include(ny7,k6pXzd)end)and +hUL.all(ny7,function(hsLwu,R)return hUL.include(H64aD,R)end)end;function hUL.sort(JKZ,yHbsh)odpE(JKZ,yHbsh)return JKZ end +function hUL.sortBy(d4z,i,HyEk4lbh)local PhU=i or +hUL.identity;if hUL.isString(i)then +PhU=function(d4z)return d4z[i]end end;HyEk4lbh=HyEk4lbh or kyWtqIf0 +local rWwbNge={} +hUL.each(d4z,function(SKxD,o3uQKvJ) +rWwbNge[#rWwbNge+1]={value=o3uQKvJ,transform=PhU(o3uQKvJ)}end) +odpE(rWwbNge,function(vAZm,q)return HyEk4lbh(vAZm.transform,q.transform)end)return hUL.pluck(rWwbNge,'value')end +function hUL.groupBy(fFuE,KypMW,...)local JJT4nKO={...}local TFLF={} +hUL.each(fFuE,function(hEoAa,PGN) +local K2_kF5=KypMW(hEoAa,PGN,VCD(JJT4nKO))if TFLF[K2_kF5]then +TFLF[K2_kF5][#TFLF[K2_kF5]+1]=PGN else TFLF[K2_kF5]={PGN}end end)return TFLF end +function hUL.countBy(YpimJ,Gg7Ttui,...)local _={...}local EGeAf={} +hUL.each(YpimJ,function(ymP,z5pHKyoa) +local h=Gg7Ttui(ymP,z5pHKyoa,VCD(_))EGeAf[h]=(EGeAf[h]or 0)+1 end)return EGeAf end +function hUL.size(...)local xwT={...}local y33ux=xwT[1]if hUL.isTable(y33ux)then return sf0(xwT[1])else return +sf0(xwT)end end;function hUL.containsKeys(Ut,GOijBp) +for oUi in OV7(GOijBp)do if not Ut[oUi]then return false end end;return true end +function hUL.sameKeys(b2a3,xer) +for SQHAAR in +OV7(b2a3)do if not xer[SQHAAR]then return false end end +for qybRcP1 in OV7(xer)do if not b2a3[qybRcP1]then return false end end;return true end +function hUL.sample(z,N0NaR,FBfW)N0NaR=N0NaR or 1;if N0NaR<1 then return end;if N0NaR==1 then +if FBfW then JdUtcU(FBfW)end;return z[GQLN(1,#z)]end;return +hUL.slice(hUL.shuffle(z,FBfW),1,N0NaR)end +function hUL.sampleProb(lnM4,_oDmX_,t)if t then JdUtcU(t)end;return +hUL.select(lnM4,function(hUL,K)return GQLN()<_oDmX_ end)end;function hUL.toArray(...)return{...}end +function hUL.find(ppm021I,ASUXhD,KCm)for u=KCm or 1,#ppm021I do if +hUL.isEqual(ppm021I[u],ASUXhD)then return u end end end;function hUL.reverse(fDk)local gxYY={} +for sVMxk=#fDk,1,-1 do gxYY[#gxYY+1]=fDk[sVMxk]end;return gxYY end +function hUL.fill(SyD,v4,j7siW,Hl)Hl=Hl or +hUL.size(SyD)for j7siW=j7siW or 1,Hl do SyD[j7siW]=v4 end;return SyD end +function hUL.selectWhile(AP060rq,DIEKD10,...)local lLJ={}for EicsS,JubU in X83a(AP060rq)do +if DIEKD10(EicsS,JubU,...)then lLJ[EicsS]=JubU else break end end;return lLJ end +function hUL.dropWhile(L,JKci,...)local SsBe;for o,ZOmcmO in X83a(L)do +if not JKci(o,ZOmcmO,...)then SsBe=o;break end end +if hUL.isNil(SsBe)then return{}end;return hUL.rest(L,SsBe)end +function hUL.sortedIndex(_G19JrRB,m0r3_J,MLrs,hP5)local oqjhEZb0=MLrs or kyWtqIf0;if hP5 then +hUL.sort(_G19JrRB,oqjhEZb0)end +for Pha=1,#_G19JrRB do if +not oqjhEZb0(_G19JrRB[Pha],m0r3_J)then return Pha end end;return#_G19JrRB+1 end;function hUL.indexOf(G,MOrzq4) +for bEMp=1,#G do if G[bEMp]==MOrzq4 then return bEMp end end end +function hUL.lastIndexOf(dd,MOQN) +local O=hUL.indexOf(hUL.reverse(dd),MOQN)if O then return#dd-O+1 end end;function hUL.findIndex(FEpet,P,...) +for G=1,#FEpet do if P(G,FEpet[G],...)then return G end end end +function hUL.findLastIndex(EcLLM,wo,...) +local ur=hUL.findIndex(hUL.reverse(EcLLM),wo,...)if ur then return#EcLLM-ur+1 end end;function hUL.addTop(XTX,...) +hUL.each({...},function(wc8hjKp1,f)QFKEzBf(XTX,1,f)end)return XTX end;function hUL.push(Hjag,...) +hUL.each({...},function(Yg,uc)Hjag[ +#Hjag+1]=uc end)return Hjag end +function hUL.pop(bw,ad) +ad=BCf7(ad or 1,#bw)local EG344W={} +for MVlUhPEM=1,ad do local LT=bw[1]EG344W[#EG344W+1]=LT;p(bw,1)end;return VCD(EG344W)end +function hUL.unshift(pfiWYrg,smnX9H6)smnX9H6=BCf7(smnX9H6 or 1,#pfiWYrg)local FzRhHR={}for mMBxOoQa=1,smnX9H6 do local xYSLIT=pfiWYrg[ +#pfiWYrg]FzRhHR[#FzRhHR+1]=xYSLIT +p(pfiWYrg)end;return VCD(FzRhHR)end +function hUL.pull(Eae7ILmk,...)for Jy23ZRAA,V8IWw in X83a({...})do +for uyYdf=#Eae7ILmk,1,-1 do if hUL.isEqual(Eae7ILmk[uyYdf],V8IWw)then +p(Eae7ILmk,uyYdf)end end end +return Eae7ILmk end +function hUL.removeRange(K,ZX,tbdC)local K=hUL.clone(K)local VaY3,HK7Mbgze=(XKD(K)),#K +if HK7Mbgze<1 then return K end;ZX=zupvsz(ZX or VaY3,VaY3,HK7Mbgze) +tbdC=zupvsz(tbdC or HK7Mbgze,VaY3,HK7Mbgze)if tbdC<ZX then return K end;local sf0=tbdC-ZX+1;local VaY3=ZX;while sf0 >0 do p(K,VaY3) +sf0=sf0-1 end;return K end +function hUL.chunk(VXPfx,j3Qk,...)if not hUL.isArray(VXPfx)then return VXPfx end +local X1,GpruB,r={},0;local V7YqV=hUL.map(VXPfx,j3Qk,...) +hUL.each(V7YqV,function(JbvH7,Cqk9Luq) +r=(r==nil)and Cqk9Luq or r +GpruB=((Cqk9Luq~=r)and(GpruB+1)or GpruB)if not X1[GpruB]then X1[GpruB]={VXPfx[JbvH7]}else +X1[GpruB][#X1[GpruB]+1]=VXPfx[JbvH7]end;r=Cqk9Luq end)return X1 end +function hUL.slice(PeAP9X,vN5AF9,j)return +hUL.select(PeAP9X,function(EOgmP)return +(EOgmP>= (vN5AF9 or XKD(PeAP9X))and EOgmP<= (j or +#PeAP9X))end)end +function hUL.first(j,mJof)local mJof=mJof or 1;return hUL.slice(j,1,BCf7(mJof,#j))end +function hUL.initial(yz1Kuwby,KVE6TG)if KVE6TG and KVE6TG<0 then return end;return +hUL.slice(yz1Kuwby,1,KVE6TG and#yz1Kuwby- (BCf7(KVE6TG, +#yz1Kuwby))or# +yz1Kuwby-1)end;function hUL.last(YY,r9)if r9 and r9 <=0 then return end +return hUL.slice(YY,r9 and +#YY-BCf7(r9-1,#YY-1)or 2,#YY)end;function hUL.rest(mtUG,PFRuf)if PFRuf and +PFRuf>#mtUG then return{}end +return hUL.slice(mtUG,PFRuf and +pS78Y(1,BCf7(PFRuf,#mtUG))or 1,#mtUG)end;function hUL.nth(KhK1gRj9,Xgj)return +KhK1gRj9[Xgj]end;function hUL.compact(Ko)return +hUL.reject(Ko,function(hUL,A)return not A end)end +function hUL.flatten(IU6Om,sKIIqz)local sKIIqz= +sKIIqz or false;local wmhARqEa;local _RT3={} +for V,BTA in OV7(IU6Om)do +if hUL.isTable(BTA)then wmhARqEa= +sKIIqz and BTA or hUL.flatten(BTA) +hUL.each(wmhARqEa,function(hUL,QVEYENaX) +_RT3[#_RT3+1]=QVEYENaX end)else _RT3[#_RT3+1]=BTA end end;return _RT3 end +function hUL.difference(gxqa,q4)if not q4 then return hUL.clone(gxqa)end;return +hUL.select(gxqa,function(QyKi,_o3FE)return not +hUL.include(q4,_o3FE)end)end +function hUL.union(...)return hUL.uniq(hUL.flatten({...}))end +function hUL.intersection(n,...)local WM={...}local zb8b={} +for YBqeh,WRkIg in X83a(n)do if hUL.all(WM,function(YBqeh,RH_vLUg) +return hUL.include(RH_vLUg,WRkIg)end)then +QFKEzBf(zb8b,WRkIg)end end;return zb8b end +function hUL.symmetricDifference(aEH,g20N7)return +hUL.difference(hUL.union(aEH,g20N7),hUL.intersection(aEH,g20N7))end +function hUL.unique(puZN)local _Dy={}for MC=1,#puZN do if not hUL.find(_Dy,puZN[MC])then +_Dy[#_Dy+1]=puZN[MC]end end;return _Dy end;function hUL.isunique(WOBSVeqF) +return hUL.isEqual(WOBSVeqF,hUL.unique(WOBSVeqF))end +function hUL.zip(...)local A={...} +local vqW6=hUL.max(hUL.map(A,function(rBRXA,qfFSJN) +return#qfFSJN end))local R4oRlgh={} +for Va8fT08T=1,vqW6 do R4oRlgh[Va8fT08T]=hUL.pluck(A,Va8fT08T)end;return R4oRlgh end +function hUL.append(d778,aZT)local ni9je9bJ={} +for uwwNE,X40cF in X83a(d778)do ni9je9bJ[uwwNE]=X40cF end +for EW,asgq in X83a(aZT)do ni9je9bJ[#ni9je9bJ+1]=asgq end;return ni9je9bJ end +function hUL.interleave(...)return hUL.flatten(hUL.zip(...))end +function hUL.interpose(IQybL1,hYKT45)return +hUL.flatten(hUL.zip(hYKT45,hUL.rep(IQybL1,#hYKT45-1)))end +function hUL.range(...)local Rq7={...}local LQ_EIcl,uaL,gujcrFp +if#Rq7 ==0 then return{}elseif#Rq7 ==1 then +uaL,LQ_EIcl,gujcrFp=Rq7[1],0,1 elseif#Rq7 ==2 then LQ_EIcl,uaL,gujcrFp=Rq7[1],Rq7[2],1 elseif#Rq7 ==3 then +LQ_EIcl,uaL,gujcrFp=Rq7[1],Rq7[2],Rq7[3]end;if(gujcrFp and gujcrFp==0)then return{}end;local ph06vXj={} +local nH0LB4c=pS78Y(S9TO(( +uaL-LQ_EIcl)/gujcrFp),0)for ALwJ9=1,nH0LB4c do +ph06vXj[#ph06vXj+1]=LQ_EIcl+gujcrFp*ALwJ9 end;if#ph06vXj>0 then +QFKEzBf(ph06vXj,1,LQ_EIcl)end;return ph06vXj end +function hUL.rep(_X,ruXMob)local E={}for jcgjAE=1,ruXMob do E[#E+1]=_X end;return E end +function hUL.partition(BZmaGN,HSav,sDjMr)if HSav<=0 then return end return coroutine.wrap(function() -_cb(dcb,_db or 1,coroutine.yield,adb)end)end;function bab.sliding(dcb,_db,adb)if -_db<=1 then return end +hgW2H5(BZmaGN,HSav or 1,coroutine.yield,sDjMr)end)end +function hUL.sliding(biQX3Ut,BLEXN_,Ljc)if BLEXN_<=1 then return end return coroutine.wrap(function() -acb(dcb,_db or 2,coroutine.yield,adb)end)end -function bab.permutation(dcb)return -coroutine.wrap(function()bcb(dcb, -#dcb,coroutine.yield)end)end;function bab.invert(dcb)local _db={} -bab.each(dcb,function(adb,bdb)_db[bdb]=adb end)return _db end -function bab.concat(dcb,_db,adb,bdb) -local cdb=bab.map(dcb,function(ddb,__c)return -tostring(__c)end)return _da(cdb,_db,adb or 1,bdb or#dcb)end;function bab.noop()return end;function bab.identity(dcb)return dcb end;function bab.constant(dcb)return -function()return dcb end end -function bab.memoize(dcb,_db) -local adb=_ca({},{__mode='kv'})local bdb=_db or bab.identity;return -function(...)local cdb=bdb(...)local ddb=adb[cdb]if not ddb then -adb[cdb]=dcb(...)end;return adb[cdb]end end;function bab.once(dcb)local _db=0;local adb={} -return function(...)_db=_db+1;if _db<=1 then adb={...}end -return dcb(c_b(adb))end end -function bab.before(dcb,_db) -local adb=0;local bdb={}return -function(...)adb=adb+1;if adb<=_db then bdb={...}end;return dcb(c_b(bdb))end end -function bab.after(dcb,_db)local adb,bdb=_db,0;return -function(...)bdb=bdb+1;if bdb>=adb then return dcb(...)end end end -function bab.compose(...)local dcb=bab.reverse{...} -return function(...)local _db,adb=true -for bdb,cdb in _ab(dcb)do if _db then _db=false -adb=cdb(...)else adb=cdb(adb)end end;return adb end end -function bab.pipe(dcb,...)return bab.compose(...)(dcb)end -function bab.complement(dcb)return function(...)return not dcb(...)end end;function bab.juxtapose(dcb,...)local _db={} -bab.each({...},function(adb,bdb)_db[#_db+1]=bdb(dcb)end)return c_b(_db)end -function bab.wrap(dcb,_db)return function(...)return -_db(dcb,...)end end -function bab.times(dcb,_db,...)local adb={}for i=1,dcb do adb[i]=_db(i,...)end;return adb end -function bab.bind(dcb,_db)return function(...)return dcb(_db,...)end end;function bab.bind2(dcb,_db) -return function(adb,...)return dcb(adb,_db,...)end end;function bab.bindn(dcb,...)local _db={...} -return function(...)return -dcb(c_b(bab.append(_db,{...})))end end -function bab.bindAll(dcb,...)local _db={...} -for adb,bdb in -_ab(_db)do local cdb=dcb[bdb]if cdb then dcb[bdb]=bab.bind(cdb,dcb)end end;return dcb end -function bab.uniqueId(dcb,...)ccb=ccb+1 -if dcb then if bab.isString(dcb)then return dcb:format(ccb)elseif -bab.isFunction(dcb)then return dcb(ccb,...)end end;return ccb end -function bab.iterator(dcb,_db)return function()_db=dcb(_db)return _db end end -function bab.array(...)local dcb={}for _db in...do dcb[#dcb+1]=_db end;return dcb end;function bab.flip(dcb)return -function(...)return dcb(c_b(bab.reverse({...})))end end;function bab.over(...) -local dcb={...} -return function(...)local _db={}for adb,bdb in _ab(dcb)do _db[#_db+1]=bdb(...)end -return _db end end;function bab.overEvery(...) -local dcb=bab.over(...) +z5i2i(biQX3Ut,BLEXN_ or 2,coroutine.yield,Ljc)end)end;function hUL.permutation(fpN7T) +return coroutine.wrap(function() +MGSnnzOI(fpN7T,#fpN7T,coroutine.yield)end)end;function hUL.invert(FNSk_)local LmE={}hUL.each(FNSk_,function(pZTFVP,XL) +LmE[XL]=pZTFVP end) +return LmE end +function hUL.concat(L5vC0Jx,vpONJ,A,LN) +local dA14qP=hUL.map(L5vC0Jx,function(A,JcQc)return +tostring(JcQc)end)return lIpFkbLI(dA14qP,vpONJ,A or 1,LN or#L5vC0Jx)end;function hUL.noop()return end;function hUL.identity(hDih6_D)return hDih6_D end +function hUL.constant(QKbZ464i)return function()return +QKbZ464i end end +function hUL.memoize(F1TsZ,uF2)local T=l6Sm5({},{__mode='kv'}) +local pC_=uF2 or hUL.identity +return function(...)local ju=pC_(...)local deu1=T[ju]if not deu1 then T[ju]=F1TsZ(...)end;return +T[ju]end end +function hUL.once(IgZ6)local kVRiv3F=0;local kWMf={} +return function(...)kVRiv3F=kVRiv3F+1 +if kVRiv3F<=1 then kWMf={...}end;return IgZ6(VCD(kWMf))end end +function hUL.before(DawC,sf0)local cP=0;local w={}return function(...)cP=cP+1;if cP<=sf0 then w={...}end +return DawC(VCD(w))end end +function hUL.after(UZ,sf0)local tdH,ymt=sf0,0;return +function(...)ymt=ymt+1;if ymt>=tdH then return UZ(...)end end end +function hUL.compose(...)local WxGA=hUL.reverse{...} +return +function(...)local jBuHkH,E3=true +for CZi_zK,_6KCMph in X83a(WxGA)do if jBuHkH then jBuHkH=false +E3=_6KCMph(...)else E3=_6KCMph(E3)end end;return E3 end end +function hUL.pipe(PY3VqYZ8,...)return hUL.compose(...)(PY3VqYZ8)end +function hUL.complement(V)return function(...)return not V(...)end end;function hUL.juxtapose(y,...)local QF={} +hUL.each({...},function(hUL,hN)QF[#QF+1]=hN(y)end)return VCD(QF)end +function hUL.wrap(hVflx4kh,GP)return function(...)return +GP(hVflx4kh,...)end end;function hUL.times(oCZYv2dT,RLaqM3,...)local PoH={} +for xM709D=1,oCZYv2dT do PoH[xM709D]=RLaqM3(xM709D,...)end;return PoH end +function hUL.bind(z50,sAPD)return function(...)return +z50(sAPD,...)end end;function hUL.bind2(AVFi,GGKI) +return function(gWaGu,...)return AVFi(gWaGu,GGKI,...)end end;function hUL.bindn(SFKM,...)local j6jQmlbr={...} return function(...)return -bab.reduce(dcb(...),function(_db,adb)return _db and adb end)end end;function bab.overSome(...) -local dcb=bab.over(...) +SFKM(VCD(hUL.append(j6jQmlbr,{...})))end end +function hUL.bindAll(m403CY,...) +local dL={...} +for PrTsHeT,eNI3MT7 in X83a(dL)do local Rfoo=m403CY[eNI3MT7]if Rfoo then +m403CY[eNI3MT7]=hUL.bind(Rfoo,m403CY)end end;return m403CY end +function hUL.uniqueId(eUJhGD,...)B0o5xpg7=B0o5xpg7+1;if eUJhGD then +if hUL.isString(eUJhGD)then return +eUJhGD:format(B0o5xpg7)elseif hUL.isFunction(eUJhGD)then return eUJhGD(B0o5xpg7,...)end end +return B0o5xpg7 end;function hUL.iterator(wot8,j9vJ) +return function()j9vJ=wot8(j9vJ)return j9vJ end end +function hUL.array(...)local J6Qr27Mh={}for AwxW8Do in...do +J6Qr27Mh[#J6Qr27Mh+1]=AwxW8Do end;return J6Qr27Mh end;function hUL.flip(_u)return +function(...)return _u(VCD(hUL.reverse({...})))end end +function hUL.over(...) +local B={...} +return function(...)local cdxFVpZw={} +for Y,o9Uh in X83a(B)do cdxFVpZw[#cdxFVpZw+1]=o9Uh(...)end;return cdxFVpZw end end +function hUL.overEvery(...)local BuX1r=hUL.over(...) +return function(...) +return hUL.reduce(BuX1r(...),function(Wyf83f2,P0olj) +return Wyf83f2 and P0olj end)end end;function hUL.overSome(...)local z=hUL.over(...) return function(...)return -bab.reduce(dcb(...),function(_db,adb)return _db or adb end)end end -function bab.overArgs(dcb,...) -local _db={...}return -function(...)local adb={...}for i=1,#_db do local bdb=_db[i] -if adb[i]then adb[i]=bdb(adb[i])end end;return dcb(c_b(adb))end end -function bab.partial(dcb,...)local _db={...} +hUL.reduce(z(...),function(EHCCkt,x)return EHCCkt or x end)end end +function hUL.overArgs(xNWVmS,...) +local kGWnkgDu={...} return -function(...)local adb={...}local bdb={}for cdb,ddb in _ab(_db)do bdb[cdb]= -(ddb=='_')and bab.pop(adb)or ddb end;return -dcb(c_b(bab.append(bdb,adb)))end end -function bab.partialRight(dcb,...)local _db={...} +function(...)local Pkis6H28={...} +for tSE=1,#kGWnkgDu do local xNWVmS=kGWnkgDu[tSE]if Pkis6H28[tSE]then +Pkis6H28[tSE]=xNWVmS(Pkis6H28[tSE])end end;return xNWVmS(VCD(Pkis6H28))end end +function hUL.partial(abKH,...)local LDp={...} return -function(...)local adb={...}local bdb={} -for k=1,#_db do bdb[k]= -(_db[k]=='_')and bab.pop(adb)or _db[k]end;return dcb(c_b(bab.append(adb,bdb)))end end -function bab.curry(dcb,_db)_db=_db or 2;local adb={} -local function bdb(cdb)if _db==1 then return dcb(cdb)end;if cdb~=nil then -adb[#adb+1]=cdb end;if#adb<_db then return bdb else local ddb={dcb(c_b(adb))}adb={}return -c_b(ddb)end end;return bdb end -function bab.time(dcb,...)local _db=aab()local adb={dcb(...)}return aab()-_db,c_b(adb)end;function bab.keys(dcb)local _db={} -bab.each(dcb,function(adb)_db[#_db+1]=adb end)return _db end;function bab.values(dcb)local _db={} -bab.each(dcb,function(adb,bdb)_db[ -#_db+1]=bdb end)return _db end;function bab.kvpairs(dcb)local _db={} -bab.each(dcb,function(adb,bdb)_db[ -#_db+1]={adb,bdb}end)return _db end -function bab.toObj(dcb)local _db={}for adb,bdb in -_ab(dcb)do _db[bdb[1]]=bdb[2]end;return _db end -function bab.property(dcb)return function(_db)return _db[dcb]end end -function bab.propertyOf(dcb)return function(_db)return dcb[_db]end end;function bab.toBoolean(dcb)return not not dcb end -function bab.extend(dcb,...)local _db={...} -bab.each(_db,function(adb,bdb)if -bab.isTable(bdb)then -bab.each(bdb,function(cdb,ddb)dcb[cdb]=ddb end)end end)return dcb end -function bab.functions(dcb,_db)dcb=dcb or bab;local adb={} -bab.each(dcb,function(cdb,ddb)if bab.isFunction(ddb)then -adb[#adb+1]=cdb end end)if not _db then return bab.sort(adb)end;local bdb=aca(dcb) -if -bdb and bdb.__index then local cdb=bab.functions(bdb.__index)bab.each(cdb,function(ddb,__c) -adb[#adb+1]=__c end)end;return bab.sort(adb)end -function bab.clone(dcb,_db)if not bab.isTable(dcb)then return dcb end;local adb={} -bab.each(dcb,function(bdb,cdb)if -bab.isTable(cdb)then -if not _db then adb[bdb]=bab.clone(cdb,_db)else adb[bdb]=cdb end else adb[bdb]=cdb end end)return adb end;function bab.tap(dcb,_db,...)_db(dcb,...)return dcb end;function bab.has(dcb,_db)return -dcb[_db]~=nil end -function bab.pick(dcb,...)local _db=bab.flatten{...} -local adb={} -bab.each(_db,function(bdb,cdb) -if not bab.isNil(dcb[cdb])then adb[cdb]=dcb[cdb]end end)return adb end -function bab.omit(dcb,...)local _db=bab.flatten{...}local adb={} -bab.each(dcb,function(bdb,cdb)if -not bab.include(_db,bdb)then adb[bdb]=cdb end end)return adb end;function bab.template(dcb,_db) -bab.each(_db or{},function(adb,bdb)if not dcb[adb]then dcb[adb]=bdb end end)return dcb end -function bab.isEqual(dcb,_db,adb) -local bdb=bba(dcb)local cdb=bba(_db)if bdb~=cdb then return false end -if bdb~='table'then return(dcb==_db)end;local ddb=aca(dcb)local __c=aca(_db)if adb then -if -(ddb or __c)and(ddb.__eq or __c.__eq)then return -ddb.__eq(dcb,_db)or __c.__eq(_db,dcb)or(dcb==_db)end end;if bab.size(dcb)~= -bab.size(_db)then return false end;for a_c,b_c in d_b(dcb)do local c_c=_db[a_c] -if -bab.isNil(c_c)or not bab.isEqual(b_c,c_c,adb)then return false end end -for a_c,b_c in d_b(_db)do -local c_c=dcb[a_c]if bab.isNil(c_c)then return false end end;return true end -function bab.result(dcb,_db,...) -if dcb[_db]then if bab.isCallable(dcb[_db])then return dcb[_db](dcb,...)else return -dcb[_db]end end;if bab.isCallable(_db)then return _db(dcb,...)end end;function bab.isTable(dcb)return bba(dcb)=='table'end -function bab.isCallable(dcb)return +function(...)local GWouUlzZ={...}local MqJhIr={} +for Q9,c in X83a(LDp)do MqJhIr[Q9]=(c=='_')and +hUL.pop(GWouUlzZ)or c end +return abKH(VCD(hUL.append(MqJhIr,GWouUlzZ)))end end +function hUL.partialRight(qnZ81I,...)local N9uN={...} +return +function(...)local QGC={...}local K8iFU={}for gbU=1,#N9uN do +K8iFU[gbU]= +(N9uN[gbU]=='_')and hUL.pop(QGC)or N9uN[gbU]end;return +qnZ81I(VCD(hUL.append(QGC,K8iFU)))end end +function hUL.curry(h,hS7)hS7=hS7 or 2;local KQjMKhN={} +local function R6PYgHHE(ZwCXrLO)if hS7 ==1 then return h(ZwCXrLO)end;if +ZwCXrLO~=nil then KQjMKhN[#KQjMKhN+1]=ZwCXrLO end;if +#KQjMKhN<hS7 then return R6PYgHHE else local lI={h(VCD(KQjMKhN))}KQjMKhN={}return +VCD(lI)end end;return R6PYgHHE end +function hUL.time(iMSMP5Lp,...)local WoARZdZ3=PizLA9mj()local n={iMSMP5Lp(...)}return +PizLA9mj()-WoARZdZ3,VCD(n)end;function hUL.keys(Uj)local HpN_N={} +hUL.each(Uj,function(yP3QEJ)HpN_N[#HpN_N+1]=yP3QEJ end)return HpN_N end;function hUL.values(pwi)local QP={} +hUL.each(pwi,function(hUL,Iy)QP[ +#QP+1]=Iy end)return QP end +function hUL.kvpairs(O9P0mj)local eFGwPxi={} +hUL.each(O9P0mj,function(m4x8ZsD4,_witc0Pe)eFGwPxi[ +#eFGwPxi+1]={m4x8ZsD4,_witc0Pe}end)return eFGwPxi end;function hUL.toObj(Y8E)local h={} +for EnMMG,HzO7UpZ in X83a(Y8E)do h[HzO7UpZ[1]]=HzO7UpZ[2]end;return h end;function hUL.property(B)return function(RNTu) +return RNTu[B]end end +function hUL.propertyOf(Q_)return function(S8GB)return +Q_[S8GB]end end;function hUL.toBoolean(W7yjGm)return not not W7yjGm end +function hUL.extend(X,...) +local Y={...} +hUL.each(Y,function(qqvEf3,Wriu)if hUL.isTable(Wriu)then +hUL.each(Wriu,function(I0Pxr5F,ukGf_)X[I0Pxr5F]=ukGf_ end)end end)return X end +function hUL.functions(uZpt01P,hJk0n8bR)uZpt01P=uZpt01P or hUL;local o9DTTJig={} +hUL.each(uZpt01P,function(Uaq2_Xzk,S0DM) +if hUL.isFunction(S0DM)then o9DTTJig[ +#o9DTTJig+1]=Uaq2_Xzk end end)if not hJk0n8bR then return hUL.sort(o9DTTJig)end +local v4=oUA(uZpt01P)if v4 and v4.__index then local GHasi5=hUL.functions(v4.__index) +hUL.each(GHasi5,function(QeX_U9tm,Dp9m)o9DTTJig[# +o9DTTJig+1]=Dp9m end)end;return +hUL.sort(o9DTTJig)end +function hUL.clone(sJjNM,GnSs)if not hUL.isTable(sJjNM)then return sJjNM end;local XP={} +hUL.each(sJjNM,function(Sj,yKj1)if +hUL.isTable(yKj1)then +if not GnSs then XP[Sj]=hUL.clone(yKj1,GnSs)else XP[Sj]=yKj1 end else XP[Sj]=yKj1 end end)return XP end;function hUL.tap(F9WZ,A5,...)A5(F9WZ,...)return F9WZ end;function hUL.has(nY_O,QAJAyj5)return nY_O[QAJAyj5]~= +nil end +function hUL.pick(EZ,...) +local n=hUL.flatten{...}local M={} +hUL.each(n,function(AADiL1,Arw) +if not hUL.isNil(EZ[Arw])then M[Arw]=EZ[Arw]end end)return M end +function hUL.omit(b,...)local _ZM1Yj3=hUL.flatten{...}local rmSU={} +hUL.each(b,function(L2RHrI,XW7Y5Rz)if not +hUL.include(_ZM1Yj3,L2RHrI)then rmSU[L2RHrI]=XW7Y5Rz end end)return rmSU end;function hUL.template(C,NhwEkTd) +hUL.each(NhwEkTd or{},function(XGz,Tf4P2eIf)if not C[XGz]then C[XGz]=Tf4P2eIf end end)return C end +function hUL.isEqual(TF3Htu,K5yUw1t,Mi) +local WWyrqnSL=SWFtRywD(TF3Htu)local gVTyP=SWFtRywD(K5yUw1t)if WWyrqnSL~=gVTyP then return false end;if +WWyrqnSL~='table'then return(TF3Htu==K5yUw1t)end +local Ck=oUA(TF3Htu)local CRG=oUA(K5yUw1t) +if Mi then if +(Ck or CRG)and(Ck.__eq or CRG.__eq)then +return Ck.__eq(TF3Htu,K5yUw1t)or CRG.__eq(K5yUw1t,TF3Htu)or(TF3Htu== +K5yUw1t)end end +if hUL.size(TF3Htu)~=hUL.size(K5yUw1t)then return false end;for dkz,zrCq in OV7(TF3Htu)do local azXMvVdM=K5yUw1t[dkz] +if hUL.isNil(azXMvVdM)or not +hUL.isEqual(zrCq,azXMvVdM,Mi)then return false end end +for CBgxHfbq,WO in +OV7(K5yUw1t)do local H=TF3Htu[CBgxHfbq]if hUL.isNil(H)then return false end end;return true end +function hUL.result(C28NuJ3,sz,...)if C28NuJ3[sz]then +if hUL.isCallable(C28NuJ3[sz])then return +C28NuJ3[sz](C28NuJ3,...)else return C28NuJ3[sz]end end;if +hUL.isCallable(sz)then return sz(C28NuJ3,...)end end;function hUL.isTable(qH)return SWFtRywD(qH)=='table'end +function hUL.isCallable(u)return ( -bab.isFunction(dcb)or -(bab.isTable(dcb)and aca(dcb)and aca(dcb).__call~=nil)or false)end -function bab.isArray(dcb)if not bab.isTable(dcb)then return false end;local _db=0 -for adb in -d_b(dcb)do _db=_db+1;if bab.isNil(dcb[_db])then return false end end;return true end -function bab.isIterable(dcb)return bab.toBoolean((dba(d_b,dcb)))end -function bab.isEmpty(dcb)if bab.isNil(dcb)then return true end;if bab.isString(dcb)then -return#dcb==0 end -if bab.isTable(dcb)then return aba(dcb)==nil end;return true end;function bab.isString(dcb)return bba(dcb)=='string'end;function bab.isFunction(dcb)return -bba(dcb)=='function'end;function bab.isNil(dcb) -return dcb==nil end -function bab.isNumber(dcb)return bba(dcb)=='number'end -function bab.isNaN(dcb)return bab.isNumber(dcb)and dcb~=dcb end -function bab.isFinite(dcb)if not bab.isNumber(dcb)then return false end;return -dcb>-cda and dcb<cda end;function bab.isBoolean(dcb)return bba(dcb)=='boolean'end -function bab.isInteger(dcb)return -bab.isNumber(dcb)and dda(dcb)==dcb end -do bab.forEach=bab.each;bab.forEachi=bab.eachi;bab.loop=bab.cycle -bab.collect=bab.map;bab.inject=bab.reduce;bab.foldl=bab.reduce -bab.injectr=bab.reduceRight;bab.foldr=bab.reduceRight;bab.mapr=bab.mapReduce -bab.maprr=bab.mapReduceRight;bab.any=bab.include;bab.some=bab.include;bab.contains=bab.include -bab.filter=bab.select;bab.discard=bab.reject;bab.every=bab.all -bab.takeWhile=bab.selectWhile;bab.rejectWhile=bab.dropWhile;bab.shift=bab.pop;bab.remove=bab.pull -bab.rmRange=bab.removeRange;bab.chop=bab.removeRange;bab.sub=bab.slice;bab.head=bab.first -bab.take=bab.first;bab.tail=bab.rest;bab.skip=bab.last;bab.without=bab.difference -bab.diff=bab.difference;bab.symdiff=bab.symmetricDifference;bab.xor=bab.symmetricDifference -bab.uniq=bab.unique;bab.isuniq=bab.isunique;bab.transpose=bab.zip;bab.part=bab.partition -bab.perm=bab.permutation;bab.mirror=bab.invert;bab.join=bab.concat;bab.cache=bab.memoize -bab.juxt=bab.juxtapose;bab.uid=bab.uniqueId;bab.iter=bab.iterator;bab.methods=bab.functions -bab.choose=bab.pick;bab.drop=bab.omit;bab.defaults=bab.template;bab.compare=bab.isEqual end -do local dcb={}local _db={}_db.__index=dcb;local function adb(bdb)local cdb={_value=bdb,_wrapped=true} -return _ca(cdb,_db)end -_ca(_db,{__call=function(bdb,cdb)return adb(cdb)end,__index=function(bdb,cdb,...)return -dcb[cdb]end})function _db.chain(bdb)return adb(bdb)end -function _db:value()return self._value end;dcb.chain,dcb.value=_db.chain,_db.value -for bdb,cdb in d_b(bab)do -dcb[bdb]=function(ddb,...)local __c=bab.isTable(ddb)and -ddb._wrapped or false -if __c then -local a_c=ddb._value;local b_c=cdb(a_c,...)return adb(b_c)else return cdb(ddb,...)end end end -dcb.import=function(bdb,cdb)bdb=bdb or _ENV or _G;local ddb=bab.functions() -bab.each(ddb,function(__c,a_c) +hUL.isFunction(u)or +(hUL.isTable(u)and oUA(u)and oUA(u).__call~=nil)or false)end +function hUL.isArray(u)if not hUL.isTable(u)then return false end;local J1Vn4uYP=0 +for Z in OV7(u)do J1Vn4uYP= +J1Vn4uYP+1;if hUL.isNil(u[J1Vn4uYP])then return false end end;return true end +function hUL.isIterable(pJ)return hUL.toBoolean((v(OV7,pJ)))end +function hUL.isEmpty(NAjg)if hUL.isNil(NAjg)then return true end;if hUL.isString(NAjg)then return +#NAjg==0 end +if hUL.isTable(NAjg)then return XKD(NAjg)==nil end;return true end +function hUL.isString(con)return SWFtRywD(con)=='string'end +function hUL.isFunction(I)return SWFtRywD(I)=='function'end;function hUL.isNil(TxmZR6UE)return TxmZR6UE==nil end;function hUL.isNumber(I1b4o)return +SWFtRywD(I1b4o)=='number'end;function hUL.isNaN(nAt)return +hUL.isNumber(nAt)and nAt~=nAt end +function hUL.isFinite(pNJ)if +not hUL.isNumber(pNJ)then return false end;return pNJ>-toXyq and pNJ< +toXyq end +function hUL.isBoolean(RQ)return SWFtRywD(RQ)=='boolean'end;function hUL.isInteger(wnZcHKf)return +hUL.isNumber(wnZcHKf)and S9TO(wnZcHKf)==wnZcHKf end +do +hUL.forEach=hUL.each;hUL.forEachi=hUL.eachi;hUL.loop=hUL.cycle;hUL.collect=hUL.map +hUL.inject=hUL.reduce;hUL.foldl=hUL.reduce;hUL.injectr=hUL.reduceRight +hUL.foldr=hUL.reduceRight;hUL.mapr=hUL.mapReduce;hUL.maprr=hUL.mapReduceRight +hUL.any=hUL.include;hUL.some=hUL.include;hUL.contains=hUL.include;hUL.filter=hUL.select +hUL.discard=hUL.reject;hUL.every=hUL.all;hUL.takeWhile=hUL.selectWhile +hUL.rejectWhile=hUL.dropWhile;hUL.shift=hUL.pop;hUL.remove=hUL.pull;hUL.rmRange=hUL.removeRange +hUL.chop=hUL.removeRange;hUL.sub=hUL.slice;hUL.head=hUL.first;hUL.take=hUL.first +hUL.tail=hUL.rest;hUL.skip=hUL.last;hUL.without=hUL.difference;hUL.diff=hUL.difference +hUL.symdiff=hUL.symmetricDifference;hUL.xor=hUL.symmetricDifference;hUL.uniq=hUL.unique +hUL.isuniq=hUL.isunique;hUL.transpose=hUL.zip;hUL.part=hUL.partition;hUL.perm=hUL.permutation +hUL.mirror=hUL.invert;hUL.join=hUL.concat;hUL.cache=hUL.memoize;hUL.juxt=hUL.juxtapose +hUL.uid=hUL.uniqueId;hUL.iter=hUL.iterator;hUL.methods=hUL.functions;hUL.choose=hUL.pick +hUL.drop=hUL.omit;hUL.defaults=hUL.template;hUL.compare=hUL.isEqual end +do local Lv_8={}local UQ={}UQ.__index=Lv_8;local function FG(vLzqjJw)local v2dsC21={_value=vLzqjJw,_wrapped=true}return +l6Sm5(v2dsC21,UQ)end +l6Sm5(UQ,{__call=function(O,wx) +return FG(wx)end,__index=function(u,V_84V,...)return Lv_8[V_84V]end})function UQ.chain(qF)return FG(qF)end +function UQ:value()return self._value end;Lv_8.chain,Lv_8.value=UQ.chain,UQ.value +for IZbOX7TW,Dd6ZLpU in OV7(hUL)do +Lv_8[IZbOX7TW]=function(MP,...) +local w4c= +hUL.isTable(MP)and RlMSrmdD(MP,'_wrapped')or false;if w4c then local C58=MP._value;local Jk6Nh=Dd6ZLpU(C58,...)return FG(Jk6Nh)else +return Dd6ZLpU(MP,...)end end end +Lv_8.import=function(s1Ws,desLYv)s1Ws=s1Ws or _ENV or _G;local COq2NY9I=hUL.functions() +hUL.each(COq2NY9I,function(aoBEg65S,x6) if -b_b(bdb,a_c)then if not cdb then bdb[a_c]=bab[a_c]end else bdb[a_c]=bab[a_c]end end)return bdb end;_db._VERSION='Moses v'.._ba -_db._URL='http://github.com/Yonaba/Moses' -_db._LICENSE='MIT <http://raw.githubusercontent.com/Yonaba/Moses/master/LICENSE>'_db._DESCRIPTION='utility-belt library for functional programming in Lua'return -_db end
\ No newline at end of file +RlMSrmdD(s1Ws,x6)then if not desLYv then s1Ws[x6]=hUL[x6]end else s1Ws[x6]=hUL[x6]end end)return s1Ws end;UQ._VERSION='Moses v'..slo60nGX +UQ._URL='http://github.com/Yonaba/Moses' +UQ._LICENSE='MIT <http://raw.githubusercontent.com/Yonaba/Moses/master/LICENSE>'UQ._DESCRIPTION='utility-belt library for functional programming in Lua' +return UQ end
\ No newline at end of file |