From aa03206793c50d3417d479587b3824eb0b62a9eb Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Fri, 14 Sep 2018 16:00:07 -0700
Subject: [PATCH] replaced immutable.js with immer; updated packages

---
 package-lock.json                   | Bin 416436 -> 412027 bytes
 package.json                        |  21 ++++++++++---------
 src/mol-app/controller/misc/jobs.ts |  30 ++++++++++++++++------------
 src/mol-app/controller/misc/log.ts  |  10 ++++++----
 src/mol-app/ui/misc/jobs.tsx        |   8 ++++----
 tsconfig.json                       |   2 --
 6 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 827a99ea20dff3ef1aae28cd7b173933e62aa801..eef7df4dae9988c64bf224ddff9ae23168532855 100644
GIT binary patch
delta 17310
zcmdUWchuw7b>|^Se$)GmrfEh~H6uYYAi%CV1W15j0SSU22-=bb0<0hjkN|5OOR^*P
zA{nus<06gLEr}Cb^2GjfQmm4=#g;9_iRC6)vK=?MNXHvHiEViw`Azxc?Cv?c=VZ^>
z`D6G1@FVWK_r6<x_ujww_}*W=eeYc#bUyG~{O)fa19$!*azxD4DPmabDtfOxh=i+J
zM${#v5$?&uPAeN_+rgx$Ds8KzW+{^&sF|)kDO5{zk?nU?K^JOrfuza8#3JaH*r!wR
zjMl1Eooxrg&i7s0-A8T-J5PLepYuJ}HS@PRN#w}NYehOs1u8X~3Pg(Ls2!#vVk0xM
zbwwN+Bfg9VC!92}SR>0s3}S|s>2y1-aM4z&D?|cXeq7>wJ}EHHcl#sRsL=id6SL|d
zmU4%j%iT1%)8)m%ZxZf};LeY^_JD^t<XYg_?7j^2?{uGV9@ym(3tCF7chrPm6=&&I
zw$C>#YUm5m`C(Ml*i_C}t;yAVGsy+?kYYAccB`%$lwFKg)k)5jN!yGQI+YCx)mbAz
zDML%b@@eqMCq38hI@1^^X0zWp)itzXr)FU_)0lu4c0)oQ_<_d*&b|vF4*pNSG{sIW
zzB~o4cO%D~Tc7X>avv|$i{(T@Darz&rm13{qqIS2NVWZ`#voDP+hW%2`Kkh$B_buF
zr}iensT$9qW5UE5J-J24gPD3#NO3(rIE-N7sI%?V9_K87#qR$^L&s<|Y6I{<+p`lp
za>kyTka(?DGrP4xqju!lLq~|y_-WsfYt|n+|L@4fr{FB<-U)0K*@hhP1I6Ro_n-MN
z|9NNI{=JvjaK-<E1jvU4Eg<$Y?@nNT$hB=Dv__Mt*;*{1CzIuLE6Hb@{b4m)E0N7X
zWKeH~^R*CG%uKLoyxR@4dVlJpN7MMIfzJfX&Ih$ZgJ}mR-S7-g<RjyWFp-iCVxcu#
zyGFOxvsd;=5T^-n?JWr5oL#r(+#k5VxYje@C)nzEF9&DefP~(@e$CE{JBPGhSc5aC
zmaY;pA7x|xU;`BzN{p(YG2gT!`+Z@&mms+?AMX{V7G*1>zdj)XqG`nVa-9fHxl+f-
z$tAI6h1*j*i_^G7g(GMpH!kaZ%6VZ2>gZe7oqO5FPk5aE+5_jXZ3i|uFZ>zd+`50Q
z^V-XIII$;=7MW(GHBcIaR;>`}&?w(Sg$SDA24ZH&_-7rek!qL3!D!eL)8Vl)j%rbg
z)`=KqSLi9zRI_n$nhV>rUUh<36szBfG3}(IJhspm=jo+2=ePq&k1GtGy~*Ww&M;e?
zuOHqBFO?6u4lN`U>FE_A5J{A*tSI_MAsWw6Y;GJV$Wo?Dn4PR$ZPLXy*Qk}dR*}mL
zMgOE&uzQ`h9VKa=L|gf4reIWcZa_(OTk3ICcntV2BO&MB>$cqUq<6nNd^+Sjn>^xd
zzJAAIeTV;`^K@$SVtqABI+Npjo&Cr6t|oGFJhGa|5}B)vl-!gQ^n68Q?O=(_HvFT!
zG%<$5EbiCxWkzCgm2CPAI>V`SDq=<DSXhX50^K|tM)_#a$M<vHe%lu^l!(8{NhIJ^
zcx3N7ahdbZ<VNt?v}dOqKfQ`k&m39f{Nt5ZtfoVtW=)lslI8lKo)yw+J2Fc)a7@oc
z^{QV{f<-Q1c2q1;NaU<w*)V--D_GS^WX!DU#I#;&MU)JhnFe^%^kc<BOk{iQ0qB3;
zJ*OkMngR2dZ#_BZ$wf)wSVIbO3S%X56(3P=_n-lfV7Wx1EaJmbbwmuiK9i5irHr3V
z3i?zJO>$#HpH2Jy9Nv#tcrn)LRM8UDH=F9@rJh|a^?_@nYlR7qB{w;*y8VB`gU6EV
z9S^#DH7Tey%%*a>(2Js@#0Z|(sWcs=jNm9`NkY6_>84_B+YtMKnGmS;lhZQWHFbNG
z%vHu^6EE}aTri2s{MaHJ{UV=GeJLzB1CKoFStyN@W0st?H_X-a?B(t~&ciouapwFu
zaLwhv%c4KHX2*HDz~kFp-XbN0(wu+Xn24<=LrP(Zo+T*Eh$N;X-KPaZLuEF!dXuu<
zjOTm0)XI)fooPiUWow)v)KOio*V4ghD~pF`L^?>8I^(H%iAA40wb`khTCJ#1zjrxb
zIJJK@b7~PR#8l;QuARxEp`68q>x4d_h`wCn6k*^aeMT+Nk+g0<Xk}0|qRH_%UZkt=
zKP{$7*+Nm~1{mKD8>6x`YbivcDzsNTWrz(qxB5=KlnXnZfAQ_Rz=dbHC2w&i(^NHF
zXtxC|mg}^qql{GQYas<*Db<vOMy7=#%1O=gu#We*ij+iK4Z1>!>8Kv2CSl4Vt24G<
zZl~1nFc_Lu8gx4f&Dn7$f8{QRxqb^+TXkKwnus&k?{Iv?OSIL`2q7Y3n(@3a9IJAN
z536yC83ZJv7gYnz%xu&vq-(<&+F`7e&{eTmyky8`7q=~9)FE-3N$PEz&-PmAbQtL-
zjcg~~ag-wo$49QaXi~PGTyk#oFI~L8WMZy@^j*}Ro9XqA5qt^BH`8mJ$Ag>B^KD@Y
zO97QNeS_h2j5d|Am>lz&UdSN2bYdK^gFagi`h7;)lFNKEF-sTF3CF}I7ADa2a9YfT
z%YJT_7zTz`%s&pcXUz^#kf*bSDcp2sVh>fURjbv)!2sY%_YUXBuh_KE>`#T}Cg!4f
zJ{jJAo+j{c-|H>5wGI=J%&b2e=#a)Z&{K;{%3w>CfD*I0oRn<VW7#nDkmjJPm(+9`
zCG>PqPDROXJA~;qyJ+Wn;V~m5DLZSUnOVOfFKF7lLQ}`+HRev#dBxlJFX$;m53HhR
z%h0Yzpu?PhoSK`*xj9;)jMY#(GvU!#El&9ZiA+J}gnp`^2rB6-QXNqYrTMx^Mh09l
zWYjuxXBJT=R=!yeP4mS@I8UaqN>EbET~Tf&6H=pEO{P}P+O5~(mq^&|eD&I0=UFlr
zQ_(DP?M%*Z1n?17nng==rh~G6IRkABC76arOX0A|8Oeas=mpsj(-0=*WZ51`@#08M
z(e~8W7HZ{+lu2}}ioh1cc&7$jw|Q4w=DpYLxu{M5EA5&)Gv@m3i|^gxzv}$wA<%u&
zyP}$R_zyYH$Ctp_C%r4WId^#myU}xG&cgF*>07<W`}|(#`kOYN-zT{BA3WY7KcZ8m
zVb|^!(h0GgHJamIq$dpQb}H2g8RaqUrwyA5+MycJ?4+~Jh{Y<B&o8Jtk&VyB(MjHD
zRN`S<%Lny#zEe#`6Y2%ed}))Hj?8}NW_r{4&FpvHKySRT-Y}Q`TuD|@ztj1TGpo$;
zcIW2U1yj6`Qo{%Y(otVsV6FJL(6E!uG9D<|RV|*^(u7sv?Mh!%vxQO7Xlur-9kes7
zuT)CKW*MqJ3*uZ(r^~fjzE&#6WV%17ga)kRIuvp4yKeV_uDK9a3uu)fF7h6-^E|V6
z&hI&IjjuA^+nt{-E-yM*8!v{6^)V+$f@VC1C8c~UqLa}{EMS>YrQInsf>Jn<Zt4BO
zv{#(c28#9LGu9kwdQQ(V?T!%A0=<Ax4n~FikX5Dyf{-tGwMz_tXL8HM4g6m+e>;qy
zHh|CX^{g^!=&Ca!;#oy1CI*~u)`AX5>}0gjSU@=e=cOTw>5Y^UV`AB4IfB-+DY}tM
z#k(9fv6w&;i{Xr2$Lv|KG%fRLOX(*oeUs?>M)j9&<qrS;dE~b4yk4A-@m6o{vE<hC
z8%2-67;tqK@>1IqI1SSj=W4cb=|t>uzQOLfa2m|3pi@g~Ng<8fxtcwSs~wyz;W;f{
zW4Ic|#p67ho((I>tlck`^7teN!()t1b7nh8DvXZjWLmT065p@-@jN@$64QLo&Pj!r
zo`&;r>4E<(t#dp1JLde^zeBRSUt-~*!MtGWANdIk?qFV6EJu3jMqg#dmg=jeguZMC
zJL7yHo($5RWUo7vB(g9KmwlY7Fa=-59!_fsp^+UI<x;|)bS;jN(SFMg@NyB$vT`w3
z%-0qn?9$4s!CA_^A3U(v8`^e>yNk4}*8r}4-jgC-(R7ZC_sK#s%@bJ|R#13&(#zAi
zW@S=K5i%px2Lzd}`>kP{2}Jptze=J5h8pvAR*8kBWRIyay3lHu1N4xDN$pI+7SZdu
zL+Nd6oco)*&#{H)Tn+}YihR=L0SEUW>%qNSm#%Sc`o=o&<CJHU^Xji}2WQT@b~_*X
z`f>1u1IXTce(u`f{F$)*99?WKo%^?!1=hF-hv)pxt?CIE0bWp%qhdv!Br=^u2esmq
zOg0i(jVq^OR>dxqx{<LSNV2hDq?)z*a$UpYLM+86>`K&6`<O~Y=3>m$&rcPDtX1r4
z)ra|T6lEf*h48`jMZ~wYu0l7s$d_+{>GEkDJoxvJLQ^{do<9S(fo<}v2XFlja?*KB
zJLd9%2iLog?Zt@@)=qc06cNyCZ6$;!%#4<{n+$lo50jtw)vf?1KH}O8K6<@t)48W=
zf93YH?CB}z!F7AUnTjj4LmAAkdr(5>SEq32?#~?CN7S@IqMSu3T2ZM)ZCIOir_F{n
zwte7{gRZ0J-qF%`-oq~ufC#t_f<rI5cY#*GrGVf6ynD~Nr(ZSR0IvQ3a@0ZJvl;9o
zkv$G}&lcy$cV6Q>^u{HJeeVfy=zh4h*Sz<*^LwueIs4vq6ueDDyx{9U^=trt^(xmk
z@C@bkIyZ_-VC$PaYn(&(ZUL8%JZr(bC}gL@+`Gwn!+-1p|4boAoZIhR{4j{dk?qds
z?%e?%zTdmodEs6KJoZV?-g{7FBluYfxyHG@=>c!!yz9Z1AG^HZOItlBK}kYRfFE++
z?aocF*$p=5yvM<FL*(?i>KlUyc<K+_|Hb70w1k}cKOyV=Z?3tVZSTC+q29U+9C;UV
z7?=f*SLml1CX|uO@(_*lP0Z>H_z27`cs-#vhYhW4i6OxbGu>uM2(vIPB#78x+%I#f
zLEXnIIkH_Leg2TIU&)Tk{kY60%L+J?a)-~YecNYT&i(i9b)Iw9gBO2;tUdRuyS{?V
z@0@$i`Nt)Io^t&cbLhWH!2j^B9mxN`<U2ol&k;b7$S&u4>*V}Efhmcc0%tcMyTC&v
zqJZpgJt+9~^PY8YzxU7*u>jt{TPgUJGuJ^&0GYbo`I2`d_$7s02GZYjpPZkaYn&UG
zc7a#L5yg4xBYV&3_ia1m;Ga8u?%s!9v$R-HpN6sF{rB!Z_tww<@n+|NyC5F9b7?)e
z&2pW*U{<eiwzhYGS8iWA?ri+MJ?Fmr^~*fYr(eAV+_3E4c<$C`{$?YHKJVEGUcSY3
zmBasJ2l#`7uEUFzr=F(SbXk#G8N4=OyW^BE)+}J5_Jqz0X`a*xWm*byEzTGWMT<ZO
z6N=Eeu`j`(cqOV08<m1a4NTM0`AD22)Ttt7@#H*+KYq^r(_7d44z+*uubaVlcP?!Q
zkN+4lVC$}>Tfu>ELymo3fcM%T_HG8BU+cXLd`X1cJNp*T<#V=eIrq1}Y_9`_+gu^=
zklS^{!C!N95n%H5m}qP0h}L2@&8t*|qNcKq*JWuU^kc0wp$hTPEKWu^ziL_uGBzqq
z%;+q~G(rp}B$FvQR*Xb2WrnfCI1|fQT&a4`uMrB|fVj51{Gk6wu4~?Lk8A7l(Czxe
z_2B9)uJ5fitlFviu%`l7)wSO_`&$oq-(G|`t{PqQ!Xvw7%x(Jb-a6&KXCHEGU(c@K
zk>ZRl@W~=oqV(n{+OLIj1BM1l)N>i|O}vM<Ed0VetXepu0C;wtYwz-wt*+ghL6&w0
z0F#3z^nMyz$vG}wqle*gt1+5r6+BU_R~vcKXf~!iRzXq9S4%XD#=zGvjLC6y*c+o6
z9~LS>pD7HP#!M?V^_CFq2&QJ*IX)kc#PonqLBp^f5CUKKKw;E9uHDPuJLvlCI`H6q
z?mghv6E5%a7f!l9=vsAs*VQg|-SWLBmT=c{G~#M4-E%oqx968!SAi#QbnS9pojET0
zLxC8Jcd%@*D64cb;!pK*Nz4@b4TbBayK*Bv==!vlR>?AHsm+ripEm7|r71p0!%Blc
zh1cs^KRPM3h$)jvY63(zIAal#g7@6yqCxDNZUXE)GY2LdeCdeDL6k5)%@tX;6u^1~
z+8P^F+O+UOkc#7Q+tW6gh+=k=Q@9G7$s|Ut(l|Pm_%R+tb0}qUZ9Yw6!;z*=XgW6#
z>JSo^7plGdnKQ0mxWM)gcy@!cH@ZSz4GLUy?jK*dPZNju2rY@CW}2ov6mdG5mBxh@
zE-&Oe2l2Potl+8IWPx1Y0%HvyP%zh?<-Z|ar(NJs6>8prxN9#sakKjh@cea)z*o&y
zX6ewdniYFiw##=JUrf#L`B8OL4TK9mG)z$yo{}4?7RiYc6U8YeY-K}?QEs$nsFdjh
zVgq`Xw8`ug;z|M?sIBnr<J;W(!0+#bDph=w2M6Ci1r5>P2(GO#?v6R0>%euVm*xou
z9`#-=`om1EB(N#J-osOk^t9cQxvr4O<I`EytP;_-)*X{VLyt$B0Uy?!4hmSVRX0mw
zPiwdQc6ZD);*q{N4!8KBzaUhp0cl#!Bkw0+tg!}MccXh9*nvSaa2Q)U2+n>KMhb^i
z*Rgk8gKPnhf7HEeIZnHV9%L1!?*Y%;=YnQXbzQaNLd9b)hx2Q|Kj}UW9#23BWx!8j
zxYey@DuhZ_%T-0rRkOI3iV#YQNCv|(oWjz2r{2UW9A0fC0}R#+rlqFF)pKbam!gqI
zzfzyd?XVQ64^pYZI7Tdh3b34V;R_W22h*+y`1!|N+vk>eU&J43mWzQR7VY}DXclF9
z5{?FI$zlfFy#={!t_I*A($FQ`deXhwdAzm>gg)ZlyzI)j-n;`mQGzG#1FvxXcE4w?
zD4_3l?OB>D%IN?&yxv9ZJ+DA;v*%Z*R-T3ydQSw(lfo!f=IC)EYo@CHUQTZnQt5&*
zG`nrNo6DCvY$(W22?!-j#<?PiHbS|0n@s2IaUxlj2TiG9PotAbPRei^)hQAhgdczF
z32(4Mr&@Mxpx6cktv%jdS0AatTh_E&H9B*9^(sHCHsP!DydG5aQ+7+$!Nc!!?_WFr
z`urEbGp~oa$}=B^vGs2lFR}l^{rN91wzcX-zK^@F+-F8ZtS&MQ$rQ#-k&jz8)qvTz
z90`N|n_R(|w#Y(Pzxj7h*=c|9rH@w=e#=S$Y~97}0Oc((bl!@2fQh?_-52k7&QrIt
zXYd3LX&a5>qhhpA44XC+&eVu>wU`W-)Y2@upzZkombO<dM281}>rQ9{-v4_p*G?E|
z2Ef<e=Gw6cH5WEsYY0Xz+34CmOo=mv5-q76ewvS`I|RiS`o3nDO&DTq$XggO=n<Sc
zq9j$Ij8Qj4W@<wc3nwbW3^OG7dar=?3wAJ<4J;sK@X?K4FEF+)tpk60m+KgGvR}Fj
zs$mGc<vHX!kb4@rY`J^4tF+fM&yc_iS3-laj3A-Si-ZX>V<mF}ugJPj>`UaDnh_YG
zCN`<)z9iKd1~hG283uK5_-^R%AOE0h^YY*Qsf)TBo|*^$$qV15B5O9mU%60!g?u=>
z+kK_f5UGGHTS`kv6>(@!^a0~fp`yTa#?2X5EDO~Do2zu%y{OU%7Tah+H_8LaMAOZ%
zG)?$zoTKVWHK@<1;e=#Ixoo14Est+-@_%_4{Oo#UE3iK2+70fjz!c@k4ahN=W<K(2
z#6KrzEqL_}2nug(d(nMNoJQ&iekRvYZZc8>g+R^bN98~^Pj@>aT51eiY%ABdQ;b>+
zjE2R6LgYf3bc9b+{xH|ltE@l~7(4a*1A%~FY~ZoDFVYkidFN&Ssg63YIZqdrT<7E7
z?Vxuf@(pNGUU<3Z0BGEV9Dsg-c{y@$Yu9XbYJ<7DL(Q3&J>lIG?)l=Wn~*~gZ^1ut
z2HA*!w><1R;fgrV-WdkH4X(ZLryjf?VgMmZ&MRmtPt@&tK_vQmJdKLQQjM1lE7!mX
zrmD7CHJwk^TfJ#6lP@vlA!dxYNT`qxL<_ZGPfMk7&ZiGsEe!(SHB${#=2i6L;Q4uo
z`OO<(uDI)~uyTF|L3Z5pNzVyj{+?$Eypcx!3ViBi-Z|EtyUi5^`8|jSY~BVXu=8H`
zQLun`)H>wo#Aswnfp~`@ldPB<vp%*uNJStRrv|cOI5``&m>SnKFfkRcw?bsl^jpcA
z#PYs0!-~F?IcWte$w{rt*E6~v8_!(~c*|3+??4~p*$lQAP{a>?&a)LfJn(FHp1<=X
zkPYO}@~0Vubwjnk8$+UCrnz^(^@3p;bOI~V(X4LB*>V+c$GS5X>qv5J63bHg5lafv
zaNx^Vg1uZlSQ{$MLZ;MDVi=v4qFu=(I(lDh$gOg|q0j1Bk!}TMr8sbTy!)L8UcC#v
z`7^Ffi#&Z^ruNMBE)CC}kwJDt6y%PpPKe2YKFBNi=!h9g)l3>Eak}1!>D4~hW{1;2
zE!kmZSP2a4O1Co2WClzJRxC_);;WKf&P?}7Tef3$rfO($O=BCHCZs3=JorO534WA<
z=u9q)cwHgq?mLfx4L5l<fwLcWuU&p?7OAcSZ-Up$FG|Rlk(V5hO)o>R3kSppE3B<C
zKaR=+obGl@t>jSG{7K(5TAY?xpOEt94Wf_I@uo7Z4&xDyWQ9755hP>i{s4|q{D9?a
zv-C*IPc=N|FPErv7Y3g<I6vIB>7JJ(y@h7?UyfV>-+1@Sky~Fv$*G%>IYhKLs`ZL$
zDXJEa+N3_Q?6MZp%F~8K%3PxigWsZ=s0)f<Qfwz$Nm*n+mYYNikq~tE)vQsdDs(kG
zXm|3HtXA*Q>0vPz%4UlzCem{YLY}a#Q?S8de(vTi75>$}WZddmw$YnE^Ml(Tf&kHm
zpSwtK`xQ$kmk%M{lP>Ut&$DOwt{a#7Zs+zt-mtXt2cUnS`yjYIf^2jiK6(w<9$4B5
z27l-|zOeYT#n%%FG$OMQ0;(kBW-_h^RW@Vb$($<b%y?w9w9FvhfEd4T5U5(U0p3Zl
zIn^LEE;=*gDLfmAH0$w3Wi+V;XMqW)j)Cjf2noItSlYJ$eKu$<SRyej=$|bo_Pt%;
zwlEC4zW*i&E1mswuXhXFZ`~Ml=lg=0NEGzn;n@Ll!KMA+OHaWszI7YCd{uC18+cQ2
z=@^KS?%m*f*TSIY?CU*V@I-LwsPpbSSE9GMsoe^GatpEpyzLfb-%ErD)oJbg(G3?Q
zIkRRF!dJ|6S-z6b44UC+0pr*~IL22kmKo!bS|t-2vpprJrO^~6pw)gx&JDFeZ7l0G
zaa_>~9j>ScsYJe=oW!_Tu#rx$#A}^f;JY4w1=OZ6;I}}Ny0G}@t&k)bNK{?NMA;mh
zO1@nXVd<9;IDanRX`52DRFGoLY;0N=s!C7{g!@c3Cs_GRi)hHTl-+AE=Cs@HMtgcN
zT%e_d+3t^<0aSxI03FM(6mS3h&kt-I)GVVjf=T4S=z`l_&;>rdA6WxL8XBbEKM8rX
zXncCO>RkgqLVI>y>V7h-SXS<qEjy-9tpYuXm@STlMN*pMSvuw)=?Op64<v>$T%$vc
zq=})UMx}32OiD3FQ<wwuXut^5<57Q@PpQ317}h3X(D7?zKe)YuoLD}lAbY&vJ3A2q
z^y<g~=aKIo6${O7v8Lxyx{^W5TyreoQXQ=pixpGL7{kWc4w`BshTFqgC<P5p-ArQP
znXj*f@j|*+Ns`orEs)7Nnd`NTK%>;k*Sg$nky-w#j;x0#I|$Y`kQ=~H2j0upx2=Vq
z!3Yu@I^{ZjKAAk-Lrxxq9Z35ZneV1n7dAG*cwzAg&eAK;x(KU^xJ3(WBv|B4ZcN6K
zfo>oYr0IO#&ZxdYYC4dHnTeoB!%_$%h2E&*>*|&=4w?R7dfeo=bh#3iibO+%6?VEM
zF=(Q(Ouq#oc7XgAR{;FkStuH94|2R{h3vYe@Cx7Zr#Q7mCPP-U)KA1mO=f8O1hG8u
z<4Plv*CHfYEtNVdQ<s`%zMIGy*-#-BEYi*D)Ew1=(`jLhmC6#%wwxDUxyQ->3#=dB
zk8A?}h`RSWp${Bbe&BvYyJ97+J^lB{I*@w=I)yNBecf}kh{a5@mo3#2dB&g6g_$}g
zg5!8Cz=cBN$+(B6)4dSP4M)?O9w}G-92rv^fk}PHSA{UyS1ZF}IWV5o<H1fzX=sf`
z!QYr(lngldD6$QRk0RGO6=4&2@1u(od-tQrUSND0Quy?v2*l{Y;>K?uMYgztE9-l|
zg6y2T&_^L0hCL2_i^D<-agX9X2)HjoMN2*F+5pb|9m3A*0tA4YB0zl)g!l6^wpbhX
zVvQ+NwPn0jEwN&&6beTZG}TPDjVxDaRTHdH9d!p(L17!?%!C`NIic0HIZ13LT2;)*
zg?X81b>rb+s??xT5^PvF2LAlBkluBlLauO5?_a!e6KH%2IRLi5=sqf9sct_k<E2`%
zS4r^xVg~n>lGAE16zKLsr2$_~s?8i1P1UhjLhbVY3fr2-ak4bya_M5Fjxqj50@Yhg
zIwW*WIy&|DnS5r&We}f+Jb3MWuFcM=&u?0x0<!K(N9diW;-{a6{CWD*$RY5)-H;ST
zN>1vNcz*<Q(9Wa)l}AbBOM(>7i#ihz`Acnv@A=#6IMSxfu$4??)9RoNC7SACF><D5
z6Ui3OO-B%i?stPm1Qqy3*t!38*E`KOZgjT3-UA-}4Dy!?asK3wJey!E7=FX)|1WC<
zb7r1)HZ;!jao^{V!%nSnR1___UdS4)5TC;|L$sPQ*H_c2eyK~>qT?XWRAv!U@Jpnx
zBTrx>6ff%?T_MK#D5^1)T2fXdR#VI3B$8sZYF{zRh4O4gnEU?@D$#B5Of2}9{UUPt
zvhN>|hY;}Xo8U2kYP<=YehfiD^+T>J7S6k9S1mcnu*n9jNo8Awu|Fu2Nye<;@e-ZL
z;nC4#QftMtvQo>@Iciq#$)(At6EbrmTPXxIJKu~krjQ+)k=&Gy46ByXPb?rC=lRoX
zowKKRIEUW;Qj*>U$iMeo>loB#Q2m~Fr?d6gE-@a$GfJG#^ZFzejEPyITNP4;YF_6o
ztk~7MxmqUH!kdk_ZpQ0uy=Du8c2{bu>ewC@YL+n0R%29qg29r8Q6FWaR030Arv!{4
zoSUv*0*|JUtAO!+*TH*OBm$l$-H(EwJPhp=Jo<+&;>{=L{8<Oy{5U*x7g1+ats51e
zSe{AkW=xwI7M0KYV_al3s?{UqxGvenIz$E0aK<keO-^QuJxWRFYRw1=33(a{1WI~R
zSFk)zk927?V6ed;wUE`a`~-5{yjBwcXTA*+j4%8nvf)z2rYOx+4NVHIer-6JHlda8
zRWvKq%K2q~CDF?c>Xkm0D>5S*qtHsAp3hQRQz|k-td%2j({6N7O_b|nO-nYLp>}^z
zr2Xjm1OK`&BLobi;i&?D@@4qWf4$qY$3yt%RdJYsL0Y^Z{ZGjD3t2_8QH$fVf@tCi
zd}g(#xpF(v3uI=6jHIQ=5{3=+Sd!^XLRPR_r?^zH+N>tqjY%&qmSd5+m6kXx*{5kb
zR1TI^YD{75NM4|6x83OlS8Z@#?%XPR!Mg7t`&PiT@BI>5?=z~$yL|gUBd>9RJ46_Z
zJ^vL*)<>R#wYZ0#gytyoB+Pv-J;3gE9hpDKuex{QtH|b6m)WmEc<$0)eD*o$CNEvS
z=c`EI(&h3GzKW#W7ewO)`Ztk1E28n8g&<v|6rM%NTD+`OakRu4;fR#=#catW3*}U%
zrx(%Aw1^6w38q%_L93GTp<H~JQM+U!*eu74v`-Pu@Q6jTxk&+qhbSVPFYo{Ao^9Ys
z#J$CN@pVf;ehS$Lh49fILEU}ZQ^=pe_4Q99N%+zIE`ov2{&wNQp873ZZ&>f%1@Axc
zEL2_eTL=t8R<z0sUi~d(=Ou84nMFIn+z2iEl}s?>53@xy(ljX1GU_;0lF2H;C-mIV
zOosyHX`$e6qQinIv)yPo9k%3%)}klIxDYW}CZSF1*>tfrG5jm1{c`ta@XUXQ_NA(L
z_km}A0L69tGf3b9RqVeZ8<wAX2Bu>dXxn><tVy^O%3>017K3eI8KY%cxx#RiVQVpC
zY7lZilQXEe4od~8Ksi?y`Z;?#8bs(S+v~(6AsjZ^q*WOx^{O$GjC84>*%O-j9kMR5
z=peZKNo2>e{vG58t7QD<?;{6SWV`@kr(82T?Sx=6d{QYhNi$NS!)iK|HmML3okcUP
zEN59ZI!LjVNGCj&Var{lKW@Y5snJwtM!P~_m8PB0SfyI=<@iEMV3-9(%atD>*Is0T
z7d-Yu<noK0D4I1wwi_1Sn^IPU9a)J~p;aj6VR57+Ymp45l~au9i!iXKVO$AVauVxw
z>A055_$%E}ssQnvekq!zhvSYFYhejVr^PC`KkW`X-+28l@R1)Oc_@(I{s@U54!yM3
zzFo8IQ#D0xE<)S6H2~Uk$VvEZh_0pK2h_RK;J#;&i+XnLkC77>Wa$O(`Z03l#chan
zEHaDv0t2gqbF((?OS031RUXNmteMTLQy;JMtxl;Dr*lev-VHnm<K^IxK;hU1pJJvZ
zY%(g9ZCEPskNIenZSa%2y&_Ox{^Sw~<M|;jeFt_!LxL~S;{NGsS_XzSrILJ|RE<u6
zvsAs<^Wmyi>&&E#7^V7QMQJtS^+;(vHrc{RN?_4hrcoxUIS!@ugcOQmK5-~p9kE6b
zLQYH6iQY;v2Tp^W*ZHR)9=V!1%jusXw|Fj5^zENR<2J9xI}b#>#i>!4aCR;%GbSJJ
z+C0^*w1-_h+iA!9B4t#=<xVBko<<v1cGyU29MO~mXiS|&`B8gDbOkHd%L~b{rIX#b
zOeM>uN?(To6hy1u1Cz18`0vQOFTMHo{|XJ;q7UG%55PV>orfwRwVCv|U>BzBxG-iz
z13MpsT}Dzzq=>9JOTyzP_hzYDQk_ygJgG+7VXlWy#L_?rQXwgbR-ol57i-->JYZ%j
z+9DY5`~o_&^A_k+zd#OMqTt{!&l}H0yrGYM=&&8eecDV&rNz*+F=$1CIF+l~R6MG3
z5rxwmk+zho2Wn$_novUexZ6r%11yUt)F7LIB|%#8je9XYG)5aU5w;kvBx=xY<lIoJ
z;Q$B{1l@l_wn2Js`#0q1`b(+~d_P9^EgiXKq2CMGc<vTfv>RH{ufb^G;B~IG%e{X`
zKJJ3Z-yQ$zxd|Nmisz6!cslAl`zKe5jY6m}4rE7SN1jGtTfc8KF-qJl8?qx=vE1i|
z1#3ul$s`{i;&d}q_TfQ#kkJ}OJgst?K4yl{NcDaB0O#ZVVR1^A26$ox<D!0zyy+6#
z*8JwY%7CpJ;w`GZOp(hM31);A3(a0kj`2RyFAS!Ma<f@z<9aOAB=bV8qHw&P3NzJ;
zHOawwt8pVFcSjPVmHi~?&&z2#6X&TIbmd%bCD&i=bDYg@I}ZN#N6?EzUqn6t`SPt7
zA>@1sVGqLf$Dc!vUf|dzAM_aLopdv>&b%2s{{`<g;Abb{KoqwbqQmnh9$;-g-!}su
z{srRw_}{oat4!d(yWE#dplD~q7-<gb_OKVCMr|TCZelH62+vA>vovlOWC#UwvJk{e
zl_Z>j$&yyE6ELt)G}ekIoBW_1L^ClW(+`x`Q93-6b*yTQ=cYH}oO;jJxqF=}>LufL
z9T>aaa~-(pi^$dBLAU!_xPJJZu;}w2f8@db%MuUpx#!?3x*u?_1vh!%{=a?J9R{y>
zzh@gvQSr0ToGjYo`(|uXA0(O`L6jP`h&E=;fL-bFL@>_g?55dLk{oL{t#*Ru<DtZ;
zFQ&zKHk^s%h=I`5X;qaCywpw=e5xVUIh`6-3zrbx|HI~@h3uAZ^|~`Fe)E~N?!%XC
zevVEnraY;IiRmn?GzRgQ)QXG<DHCDXda18g(*-J1Eilo1Y+}#oXcZR{ajj@hZ7$B?
z#Eht?raglkn^`!sM-==~v%?Z|+wwbR_W5;gpDVO{c)k1hhDEQ1^Rv7c{P64EO&9tt
z#3D8u&E!J8S~A*sNomHdM6fnWY00YJNEv*cu3Ce1HareOAQnZ710oo<TZ*6TX7iD<
zTxy%R5G_>7a0D#eP>g7Z?DQ+S1>4^K)D_F|%iMpx4&0n|5u5Z*Z8!&c7N6jOtm~v0
z4wva@tJvwpid`n!5jyM$;!He2@>nx!`>Lr<C)ufvEZ#R0rMeiFTRtI@38u=ke5Ik+
z>TFACXS!r66(FrF%=*=O*qF=#g5_@=a^K)u_8xV=_Yk-$0SggN|ID><(d!3pPe6F~
zW9y+f=G|VU>2Q)~2AEWD4m!0iL1i#e?TIQrQ~T){+a=?(p)QBzAdOA=7PLx62(1?~
zwNYn`CmY$RFb>y4I4-hsz!!lHodv;2`}viU6r6k9;W_lmR~`Z{d;=zzSJLj=;@(B&
z6ky9xjh`>L1G_GkQXy+Dt`|)QQ=?kIjD|s*7RgdnF0VEzAxH!`3Ox8_&(Y=gztO$v
z5crNC_D6i@Pu)9R(M6rO*O6#}D$2Z?)Ui-3O4Gf1Gp*tQ)vwUay2g>^h7sW#ttek4
zhgiSim&T~rnnlOiSy{u2FkYJERf1=eWQe!xM428;=><=n54#^c0`RZ8_blK1MfZ1C
z0-E73&g(TeGjw~4^(a@uIiVBJ#M@J~H|~a-CLJqMOb1Kj9otvH7)_6*iCi$lVS{nX
zAkl0y>TfWq_RtQ<)ox9#)*EoHg%OI>z?T@0M%9&U9Tqfqfp5MELQU<hOPiPNU%EfE
zVNT5MWxw0=h0DR)F;4*a4|%qM_pkLFl@ci7M+a3iZ>1VSIf4@zULOxlk)nImQX&#S
zGm+s07IC;>R`kWyfg)u)rFv8?jM7xvW`@4<NKmJRo)oU2Q7t^}>g}mNwj$SW9r6sp
z>+f@IT%bVR!>~xUc>AXhd-krpy%Wep8M_>=%^JNp%ML;@g&Q$sHbA!0uy@`HV5LY^
zvxd=fXwo0p$pP9nL&~t|gXy5jg<(s-R2ap{idvKSsFd<|7>XU8*Q%Gk{gz{%waZ(N
zdVaJPVDp0KHP?8q1dXq{R}c$S@Xv~)k{z8Edo~SQGrHj-4<RpmW>SM*3|Fuz3I}hK
zF*RB#gcP>T_#`d^^Q?9_%9|<OmeEp8!iv02cX+%yvuaH?vIxyTamsUK-YNyn{~XnR
zMbdK^{L>w<^!9jemso)*aL*i~W=0=yM1`~xiB>%q4@qdW!r2--M0MFevQQk)kB1dP
zn(C8kOpf+*s1OypiY3Ggoz8^Qgl?2=a*?DMm@sgrcRok<U49?Pu%5u4m$qh|2bq1R
z{Q!LtIqt}B*s^hT_W_9cU6+B!qOkh@g>Bv~;EH#<*MKjvo`c{cKXcC~(w<^Hs*`==
zTCnea=zTx=9`~{3yS6UnUCXC_<o<+f3HE{6ss--&m<tX^ICuX^6x{w3_zSb|yEni;
zj=j!(b+O)6L^<dW`}A5yEKX3WH!e(UrZuFCDo18`vOmC$gkP#)wIM5anV8|r#TvP0
zDdi`p@m{H$EBNzi)K`j@YSmf2U0_8O^uOVSDgOsg%v1i25V7uG;oSj#{Zm-bdv4&}
z1|FEflFX_5+&f^*6#(0Gqy`@UTR3d}kr}MbZawC`8u;Gl*#{n514n|-VBWppuAr+1
za%0aHSfyMCZu~3n{*^YIVcPT8?qxjZaa_wk<~=jm9h64)EZ_D9&m%j)ZFj>~BKy6t
zk8N%?=b@?8l-pfHNo0+7E2~S?Bn=0lYiLGRD@1fiMA4YimE`VhTqH`lTy$&&#gvJS
zxu#VT^DPk;deMYds8_n-Uc5#IeD!*<o^75#ULO(MYnD&n>&fi|cQ3;N+dUui=!XG!
zIn-{roAuy^fASmwe;k4psYRFcmqISZIdI@=u<4&+uXC7mZ&^O^&z{4lFIMMX>js;D
z<5{!((<SfDHS_M2&^+Qg`Sv?@0_-YSYPjaEtHB$ta_<H2e%iAI+_uH*UH-&o?~Cgl
z!Xm);_IeLFwzYDc1i4yn$e}>Khz4M5Az`SjKRM1T0X|S9(_NoBj+JV#-v)~rs;?oK
zT%nyRN5(!ghG(+ria$ekwFsP9@5fA7;K{ITR98lel;AJ+c~NlF*C0Nhsld+f$`S-%
zKKKsLA@E9J=`i@_^9byeN_d%dE98q3a_you^n()A^=t0h0M5|f&C8jb_w!pk^LnQ9
z?9Kb<<ZoLkZ$j6yvN%P6=kcX0#S*JW(dH}>@rmtbN)=+9Wk)hhfi&w}(@#vJnm<#D
zXYE8^O;quTuSte+Hs@1vRZh*Mf+aH@w9_>@I%EUpIH4MFI!TAq!Eo?)dDknvFKk`j
z)c5}6)Ix_q?q%+`F5iEj7Yo58;cjdx0K8xE&b`$mxnp8X_jj|59gEPoG6+=ip%Rs8
zu@uMVjaH{q$T6~I_YxYMZ)1Z+eFV!;MOafPX4M$oo=jmY$z&Lf(9!S|PAS8VzJi#|
z$K;h*ef7i_obX&V&;rM}z)eqj*Dt16es`v8`A?tpo<W?ye0U4^_pf<B{{K8`nzs)u
zU)^#)>stQefAj8GTK<m@d!N|h{C;^G*!%&QZr%P%?~xtgn_q*C_gB8twa>ZhHyeTZ
z6_?jJ``=E02X;e@_`AP>T@bKmUt~LdyPGK~l^D@is*##0ma8SH(DN%K-s)E4*_7QT
z{k>rTPN($qx+-I-WVB*aq?Cqz851iaj9O89YDC6_Mj9<&xL>J~&fUK{KA-LQgyAl^
z=4Eeix#iuyyldmqlZU{~Pe4m?=+x3NhpZnLgR+prds!_A8#86UG>h>ie|}cUMEsIp
zu1yR0REp-+BoUHoP25IHvu2bGmGyWttdzSEf0C>OdO~)jw?`b2B&LGIjz~E30w<f7
zVNc`FJ<E^ymwxEJc+Owv1`qj{mX`C^EuFY@x3B{a>0buEad>IV^4h}EO$hi&dTG=0
efzp!K1r9s_LAcjeV6A)n$FL>p<>jR^@;?Bx=)AW8

delta 15653
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

diff --git a/package.json b/package.json
index 7157fd480..bf83b6ed9 100644
--- a/package.json
+++ b/package.json
@@ -78,7 +78,7 @@
     "@types/jest": "^23.3.2",
     "@types/node": "^10.9.4",
     "@types/node-fetch": "^2.1.2",
-    "@types/react": "^16.4.13",
+    "@types/react": "^16.4.14",
     "@types/react-dom": "^16.0.7",
     "benchmark": "^2.1.4",
     "cpx": "^1.5.0",
@@ -87,15 +87,14 @@
     "file-loader": "^2.0.0",
     "glslify-import": "^3.1.0",
     "glslify-loader": "^1.0.2",
-    "graphql-code-generator": "^0.11.0",
-    "graphql-codegen-typescript-template": "^0.11.0",
-    "graphql-tag": "^2.9.2",
-    "jest": "^23.5.0",
+    "graphql-code-generator": "^0.12.2",
+    "graphql-codegen-typescript-template": "^0.12.2",
+    "jest": "^23.6.0",
     "jest-raw-loader": "^1.0.1",
     "mini-css-extract-plugin": "^0.4.2",
     "node-sass": "^4.9.3",
     "raw-loader": "^0.5.1",
-    "resolve-url-loader": "^2.3.1",
+    "resolve-url-loader": "^3.0.0",
     "sass-loader": "^7.1.0",
     "style-loader": "^0.23.0",
     "ts-jest": "^23.1.4",
@@ -103,19 +102,19 @@
     "typescript": "^3.0.3",
     "uglify-js": "^3.4.9",
     "util.promisify": "^1.0.0",
-    "webpack": "^4.17.2",
+    "webpack": "^4.19.0",
     "webpack-cli": "^3.1.0"
   },
   "dependencies": {
     "argparse": "^1.0.10",
     "compression": "^1.7.3",
     "express": "^4.16.3",
-    "graphql": "^0.13.2",
+    "graphql": "^14.0.2",
     "graphql-request": "^1.8.2",
-    "immutable": "^4.0.0-rc.9",
+    "immer": "^1.6.0",
     "node-fetch": "^2.2.0",
-    "react": "^16.5.0",
-    "react-dom": "^16.5.0",
+    "react": "^16.5.1",
+    "react-dom": "^16.5.1",
     "rxjs": "^6.3.2"
   }
 }
diff --git a/src/mol-app/controller/misc/jobs.ts b/src/mol-app/controller/misc/jobs.ts
index 075c32e0f..754edef44 100644
--- a/src/mol-app/controller/misc/jobs.ts
+++ b/src/mol-app/controller/misc/jobs.ts
@@ -5,7 +5,7 @@
  * Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info.
  */
 
-import { Map } from 'immutable'
+import produce from 'immer'
 import { filter } from 'rxjs/operators';
 
 import { Controller } from '../controller'
@@ -21,7 +21,7 @@ export interface JobInfo {
 }
 
 export interface JobsState {
-    jobs: Map<number, JobInfo>
+    jobs: { [k: number]: JobInfo }
 }
 
 export class JobsController extends Controller<JobsState> {
@@ -30,38 +30,42 @@ export class JobsController extends Controller<JobsState> {
         let jobs = this.latestState.jobs!;
 
         if (!isWatched) {
-            if (jobs.has(state.jobId)) {
-                jobs = jobs.delete(state.jobId);
+            if (jobs[state.jobId] !== undefined) {
+                jobs = produce(jobs, _jobs => { delete _jobs[state.jobId] });
                 this.setState({ jobs });
             }
             return;
         }
 
-        jobs = jobs.set(state.jobId, {
-            name: state.name,
-            message: state.message,
-            abort: state.abort
-        });
+        jobs = produce(jobs, _jobs => {
+            _jobs[state.jobId] = {
+                name: state.name,
+                message: state.message,
+                abort: state.abort
+            };
+        })
         this.setState({ jobs });
     }
 
     private started(job: Job.Info) {
         this.setState({
-            jobs: this.latestState.jobs!.set(job.id, { name: job.name, message: 'Running...' })
+            jobs: produce(this.latestState.jobs!, _jobs => {
+                _jobs[job.id] = { name: job.name, message: 'Running...' }
+            })
         });
     }
 
     private completed(taskId: number) {
-        if (!this.latestState.jobs!.has(taskId)) return;
+        if (!this.latestState.jobs![taskId]) return;
 
         this.setState({
-            jobs: this.latestState.jobs!.delete(taskId)
+            jobs: produce(this.latestState.jobs!, _jobs => { delete _jobs[taskId] })
         });
     }
 
     constructor(context: Context, private type: Job.Type) {
         super(context, {
-            jobs: Map<number, JobInfo>()
+            jobs: {}
         });
 
         JobEvents.StateUpdated.getStream(this.context)
diff --git a/src/mol-app/controller/misc/log.ts b/src/mol-app/controller/misc/log.ts
index c694612ec..d703375a8 100644
--- a/src/mol-app/controller/misc/log.ts
+++ b/src/mol-app/controller/misc/log.ts
@@ -5,18 +5,20 @@
  * Copyright (c) 2016 - now David Sehnal, licensed under Apache 2.0, See LICENSE file for more info.
  */
 
-import { List } from 'immutable'
+import produce from 'immer'
 
 import { Controller } from '../controller'
 import { Context } from '../../context/context';
 import { LogEvent } from '../../event/basic';
 import { Logger } from '../../service/logger';
 
-export class LogController extends Controller<{ entries: List<Logger.Entry> }> {
+export class LogController extends Controller<{ entries: Logger.Entry[] }> {
     constructor(context: Context) {
-        super(context, { entries: List<Logger.Entry>() });
+        super(context, { entries: [] });
 
         LogEvent.getStream(this.context)
-            .subscribe(e => this.setState({ entries: this.latestState.entries.push(e.data) }))
+            .subscribe(e => this.setState({
+                entries: produce(this.latestState.entries, _entries => { _entries.push(e.data) })
+            }))
     }
 }
\ No newline at end of file
diff --git a/src/mol-app/ui/misc/jobs.tsx b/src/mol-app/ui/misc/jobs.tsx
index c8a5fe557..6090da945 100644
--- a/src/mol-app/ui/misc/jobs.tsx
+++ b/src/mol-app/ui/misc/jobs.tsx
@@ -30,10 +30,10 @@ export class Overlay extends View<JobsController, {}, {}> {
     render() {
         const state = this.controller.latestState;
 
-        if (!state.jobs!.count()) return <div className='molstar-empty-control' />
+        if (!Object.keys(state.jobs).length) return <div className='molstar-empty-control' />
 
         const jobs: any[] = [];
-        state.jobs!.forEach((t, k) => jobs.push(<JobState key={k} info={t!} />));
+        Object.keys(state.jobs).forEach(k => jobs.push(<JobState key={k} info={state.jobs[parseInt(k)]} />));
 
         return <div className='molstar-overlay'>
             <div className='molstar-overlay-background' />
@@ -52,10 +52,10 @@ export class BackgroundJobs extends View<JobsController, {}, {}> {
     render() {
         const state = this.controller.latestState;
 
-        if (!state.jobs!.count()) return <div className='molstar-empty-control' />
+        if (!Object.keys(state.jobs).length) return <div className='molstar-empty-control' />
 
         const jobs: any[] = [];
-        state.jobs!.forEach((t, k) => jobs.push(<JobState key={k} info={t!} isSmall={true} />));
+        Object.keys(state.jobs).forEach(k => jobs.push(<JobState key={k} info={state.jobs[parseInt(k)]} isSmall={true} />));
 
         return <div className='molstar-background-jobs'>
             {jobs}
diff --git a/tsconfig.json b/tsconfig.json
index bc8a5e193..d68886f26 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -8,8 +8,6 @@
         "noUnusedLocals": true,
         "strictNullChecks": true,
         "strictFunctionTypes": true,
-        //"keyofStringsOnly": true,
-        // temp fix for immutable package: has(key: string): key is keyof TProps; => has(key: string | number | Symbol): key is keyof TProps;
         //"downlevelIteration": true,
         "jsx": "react",
         "lib": [ "es6", "dom", "esnext.asynciterable", "es2016" ],
-- 
GitLab