diff --git a/core/COPYRIGHT.txt b/core/COPYRIGHT.txt
index 60b799e..4acb710 100644
--- a/core/COPYRIGHT.txt
+++ b/core/COPYRIGHT.txt
@@ -22,8 +22,6 @@ license, including:
 
 Javascript
 
-  Farbtastic - Copyright (c) 2010 Matt Farina
-
   HTML5 Shiv - Copyright (c) 2012  Alexander Farkas, Jonathan Neal, Paul Irish,
     and John-David Dalton
 
@@ -42,10 +40,10 @@ Javascript
   jQuery Mousewheel - Copyright (c) 2010 Brandon Aaron
     (http://brandonaaron.net)
 
-  jQuery Metadata - Copyright (c) 2006 John Resig, Yehuda Katz, Jrn Zaefferer,
+  jQuery Metadata - Copyright (c) 2006 John Resig, Yehuda Katz, J�rn Zaefferer,
     Paul McLanahan
 
-  jQuery Once - Copyright (c) 2009 Konstantin Kfer
+  jQuery Once - Copyright (c) 2009 Konstantin K�fer
 
   jQuery UI - Copyright (c) 2012 by the original authors
     (http://jqueryui.com/about)
diff --git a/core/assets/vendor/farbtastic/farbtastic.css b/core/assets/vendor/farbtastic/farbtastic.css
deleted file mode 100644
index 25a68eb..0000000
--- a/core/assets/vendor/farbtastic/farbtastic.css
+++ /dev/null
@@ -1,36 +0,0 @@
-
-.farbtastic {
-  position: relative;
-}
-.farbtastic * {
-  position: absolute;
-  cursor: crosshair;
-}
-.farbtastic,
-.farbtastic .wheel {
-  width: 195px;
-  height: 195px;
-}
-.farbtastic .color,
-.farbtastic .overlay {
-  top: 47px;
-  left: 47px;
-  width: 101px;
-  height: 101px;
-}
-.farbtastic .wheel {
-  background: url(wheel.png) no-repeat;
-  width: 195px;
-  height: 195px;
-}
-.farbtastic .overlay {
-  background: url(mask.png) no-repeat;
-}
-.farbtastic .marker {
-  width: 17px;
-  height: 17px;
-  margin: -8px 0 0 -8px;
-  overflow: hidden;
-  background: url(marker.png) no-repeat;
-}
-
diff --git a/core/assets/vendor/farbtastic/farbtastic.js b/core/assets/vendor/farbtastic/farbtastic.js
deleted file mode 100644
index 10c9e76..0000000
--- a/core/assets/vendor/farbtastic/farbtastic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-(function(e){e.fn.farbtastic=function(f){e.farbtastic(this,f);return this};e.farbtastic=function(f,l){f=e(f).get(0);return f.farbtastic||(f.farbtastic=new e._farbtastic(f,l))};e._farbtastic=function(f,l){var a=this;e(f).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>');var k=e(".farbtastic",f);a.wheel=e(".wheel",f).get(0);a.radius=84;a.square=100;a.width=194;navigator.appVersion.match(/MSIE [0-6]\./)&&
-e("*",k).each(function(){if(this.currentStyle.backgroundImage!="none"){var b=this.currentStyle.backgroundImage;b=this.currentStyle.backgroundImage.substring(5,b.length-2);e(this).css({backgroundImage:"none",filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+b+"')"})}});a.linkTo=function(b){typeof a.callback=="object"&&e(a.callback).unbind("keyup",a.updateValue);a.color=null;if(typeof b=="function")a.callback=b;else if(typeof b=="object"||typeof b=="string"){a.callback=
-e(b);a.callback.bind("keyup",a.updateValue);a.callback.get(0).value&&a.setColor(a.callback.get(0).value)}return this};a.updateValue=function(){this.value&&this.value!=a.color&&a.setColor(this.value)};a.setColor=function(b){var c=a.unpack(b);if(a.color!=b&&c){a.color=b;a.rgb=c;a.hsl=a.RGBToHSL(a.rgb);a.updateDisplay()}return this};a.setHSL=function(b){a.hsl=b;a.rgb=a.HSLToRGB(b);a.color=a.pack(a.rgb);a.updateDisplay();return this};a.widgetCoords=function(b){var c=e(a.wheel).offset();return{x:b.pageX-
-c.left-a.width/2,y:b.pageY-c.top-a.width/2}};a.mousedown=function(b){if(!document.dragging){e(document).bind("mousemove",a.mousemove).bind("mouseup",a.mouseup);document.dragging=true}var c=a.widgetCoords(b);a.circleDrag=Math.max(Math.abs(c.x),Math.abs(c.y))*2>a.square;a.mousemove(b);return false};a.mousemove=function(b){var c=a.widgetCoords(b);if(a.circleDrag){b=Math.atan2(c.x,-c.y)/6.28;if(b<0)b+=1;a.setHSL([b,a.hsl[1],a.hsl[2]])}else{b=Math.max(0,Math.min(1,-(c.x/a.square)+0.5));c=Math.max(0,Math.min(1,
--(c.y/a.square)+0.5));a.setHSL([a.hsl[0],b,c])}return false};a.mouseup=function(){e(document).unbind("mousemove",a.mousemove);e(document).unbind("mouseup",a.mouseup);document.dragging=false};a.updateDisplay=function(){var b=a.hsl[0]*6.28;e(".h-marker",k).css({left:Math.round(Math.sin(b)*a.radius+a.width/2)+"px",top:Math.round(-Math.cos(b)*a.radius+a.width/2)+"px"});e(".sl-marker",k).css({left:Math.round(a.square*(0.5-a.hsl[1])+a.width/2)+"px",top:Math.round(a.square*(0.5-a.hsl[2])+a.width/2)+"px"});
-e(".color",k).css("backgroundColor",a.pack(a.HSLToRGB([a.hsl[0],1,0.5])));if(typeof a.callback=="object"){e(a.callback).css({backgroundColor:a.color,color:a.hsl[2]>0.5?"#000":"#fff"});e(a.callback).each(function(){if(this.value&&this.value!=a.color)this.value=a.color})}else typeof a.callback=="function"&&a.callback.call(a,a.color)};a.pack=function(b){var c=Math.round(b[0]*255),d=Math.round(b[1]*255);b=Math.round(b[2]*255);return"#"+(c<16?"0":"")+c.toString(16)+(d<16?"0":"")+d.toString(16)+(b<16?"0":
-"")+b.toString(16)};a.unpack=function(b){if(b.length==7)return[parseInt("0x"+b.substring(1,3))/255,parseInt("0x"+b.substring(3,5))/255,parseInt("0x"+b.substring(5,7))/255];else if(b.length==4)return[parseInt("0x"+b.substring(1,2))/15,parseInt("0x"+b.substring(2,3))/15,parseInt("0x"+b.substring(3,4))/15]};a.HSLToRGB=function(b){var c,d=b[0];c=b[1];b=b[2];c=b<=0.5?b*(c+1):b+c-b*c;b=b*2-c;return[this.hueToRGB(b,c,d+0.33333),this.hueToRGB(b,c,d),this.hueToRGB(b,c,d-0.33333)]};a.hueToRGB=function(b,c,
-d){d=d<0?d+1:d>1?d-1:d;if(d*6<1)return b+(c-b)*d*6;if(d*2<1)return c;if(d*3<2)return b+(c-b)*(0.66666-d)*6;return b};a.RGBToHSL=function(b){var c,d,m,g,h=b[0],i=b[1],j=b[2];c=Math.min(h,Math.min(i,j));b=Math.max(h,Math.max(i,j));d=b-c;g=(c+b)/2;m=0;if(g>0&&g<1)m=d/(g<0.5?2*g:2-2*g);c=0;if(d>0){if(b==h&&b!=i)c+=(i-j)/d;if(b==i&&b!=j)c+=2+(j-h)/d;if(b==j&&b!=h)c+=4+(h-i)/d;c/=6}return[c,m,g]};e("*",k).mousedown(a.mousedown);a.setColor("#000000");l&&a.linkTo(l)}})(jQuery);
diff --git a/core/assets/vendor/farbtastic/marker.png b/core/assets/vendor/farbtastic/marker.png
deleted file mode 100644
index f9773d1..0000000
--- a/core/assets/vendor/farbtastic/marker.png
+++ /dev/null
@@ -1,5 +0,0 @@
-PNG
-
-   IHDR         dq   	pHYs  ."  ."ݒ   +tEXtCreation Time vr 14 jul 2006 13:31:23 +0100Cg  0IDAT(+q zzB$Vf$RppM. njR;-4r$nB]W&=OOp ]DIg~#L"QJLqyf568Fskئ>;mĲ|ahִdV4/L<tQ|US
-8<Dqv;JN!Iwz%*VV*Dpy/ԩ/1\{`s%V|&CypELͨGJ7ǖqH3J;bpǠ
-Eeg'pE'SFL8    IENDB`
\ No newline at end of file
diff --git a/core/assets/vendor/farbtastic/mask.png b/core/assets/vendor/farbtastic/mask.png
deleted file mode 100644
index 0fc9cbe..0000000
--- a/core/assets/vendor/farbtastic/mask.png
+++ /dev/null
@@ -1,16 +0,0 @@
-PNG
-
-   IHDR   e   e   T|-  IDATx]R:l	
-d8TQ7[7; }^c)qRj/4_Dw+\F]hztG;J:\F>vpcnd`±sVsɵǁD$h'=]as'BfOWd Leds(L׊GWHBרVFa]W6Ev&xM,8O1};Bc 
-JvY_#eTW	ʴd>*Q<ZL̛q)'5Y|=iWOYXѵ؋I0GQW5ذD8F֊c(X%KIFu]ڲxZ&[Qp&NxCꚲyI%&JH#YtŖ˪'@zU%zI	V%9 :'_2˂*%C',"#
-/a×gYVh˴d*,ߐ:YD}A8H#zr1*kwѰ%%~T )
-<f!V@bx,A}R}&8:SIR< dIDY	
-@2rf<#TM(SŔMURB/w]DJ@ M/|	fSFD1wTckINrȜk!
-N#?pT/Bp4I	Zq)O1b*_(|!|ؔ>C	cUҰJaq|# ~!{hi~gxLdt#+{| ~#:̣)-QUU8VVː&A#;U=Pz241:9N\*
-AB#Q1q'Ò'y!'Q0_5S{NvGgWyH!'c.'Sqs2MsclV + a0N&?)o	Z6`9Y٨9x*@ʎ	"0~aPO,)(ZƮ̔r1˛ՒC?& #坨l9QuꬬkRS*+p)7g&P;3GH	vVy
-htT(vme0w.xRp)V}iin
-S-1{'w<}m!`q|	U#SS VhxA}˺Ҝ&N d7Q碝+Rޓ!k		?=H¡URnDqq
-$cPAdbqP,(4"T?&;H@P(0{^^Gtg/O^1FR P%.c|B=0&7F! ^6viBҚT%);QX*']OA;V|MKB N)yS)/i &\ThBHơ i4En Jݣ\^DFA،'D wYjS!?sQJwM1}_K\~$bVr7zJjۊ3|zJb(2`J
-DW]ǀȮ#|]Dkg#h $X!lkgR"
-fWUUy?#z a!'Xi0}vegTkc>Q
-/2Rd^yJE<zJe+O<"|Tڲh ~LfA `w8*|])a@߱ڧn0;> K}9se5[    IENDB`
\ No newline at end of file
diff --git a/core/assets/vendor/farbtastic/wheel.png b/core/assets/vendor/farbtastic/wheel.png
deleted file mode 100644
index 4a905e9..0000000
--- a/core/assets/vendor/farbtastic/wheel.png
+++ /dev/null
@@ -1,49 +0,0 @@
-PNG
-
-   IHDR         ?  -IDATx^m]u}_!1+V@lQlu&bJPNN[A*`e E*%(D*DQVS׿i̜k~3Zg9'{?'{kI'~wޙz.mٚL[ܗdU*kT<Q
-VYWƐ"<:$їRE><M @#1z 'RO;mg	j]u2<Sd*xW7%oz$d@B]BsrFCnP)5鿎k!7b@!BIx|W4wں ",5ParĄIfJotmNުNN-F^H0/#'@%BS%@6`檜|ӾߴY9y[B}$OIx@W\ɑ6`.UdA"M!@F4xwFLXh/5,(x|LXb7]`+W9Vv2lAdW?<);
-]7)rӄ<O2<6_vW~/eЖ>[-[cfd[Ča9&b KADʢCX}ȲļLa3"[Fq/%Q[`p&~CW9Nx]٦/zN)JvVLNbh_ %e'_
-H iB̖,mydvˤ)Dvr>l{)CUE3e<ڔWx+2[壒G%0NK:t#-D"@q\F\	aVQDAmj몼2U'&ZeJ}Q6h
-RFe?zjݔq9#/nfHdQQ72bPMJYdk჆t\=kdxf|(~@:T'@*>7L5:T87sa]d|dg>tbҤ4@rn(`(hSp_a:zFd?>]GAJ Q>!&h5S6v慖sdٹ3xGH_ڃD0>C`]kjSXX~$e (Binjd.yQ7@@v6h_$@nύ)+R4yV^<@~q'O_hOˆ*jY9ytڤ&gVhnP>F<_*"N2K>>$@R7H2bj|q'`Ї2C;y7`7a>v6pKX\JS1O2}.A+ɼOd  X#bq=a#Tʓ /0dK?<ٶJi~F)Yf]>oD'CC[hH6hi-$j>*qqSz1r$/^%9/ܼĄ#I> ƛ]9?Fl S#iM-Z  h1~Zc9סK¡¾vTKsY}ʕG![1'%mxIׅ+W].ܕ9b/Q9LX(&A~BDd{gwfIG"ZZ%1}W(\t-%c01~(̅485z- Um:C:81J/|gK~]]j[?ldZ㙼#GjlS"N嶑/%%C9^D2=@=)jҽX{~8緞_13$'?)-v\yxeg5r)5QSH_b9<|kr#¾peM+Vbʐ-"N!Z]
-Rs["]A,shgYG]k;G%%!1 M,\osh[7˙:´߉dU !֟FK]׻Je*sBy(I^;a-&ZB!,C! #K	ǻ;ֺJ8IB4<ɞjÛ/!F*ckTЫu50|Ib֪pP0o9@83?ݱUboџYY#8D'@^C|tbx7 O"qޫrdP!~i{
-,g_(W ?Dv#u5ue.ԔI!T3#g̒!eg{&0#t5w3Ngb%*%I!l%|ƃ~7drbq -CronFw#VB8*3?9ras0(/GQ\wFwȋdgRef{2jRNƷv8rozSz~#qiF(P Vj=5.xTy]uwp\)YfYKI0G?gxh5r[U^--,έ$NibQ#BnM	ʽEt5]m*Jjڎ(90WaՔJy%EVS2KsZRNՔ%%̑DA,Us+*{lnH2dy'N!d-AIҰhrε6"" ^'fGH.U٭؈ń8SB:x+є@RX6՚X}b3ab8u.Ph HmMZmP*D>R?JnBL45DPj$iBIMkAx&"V<uIvZg{og'<Os'~NmMQ
-rӗշ@œߪ{U燂zi FJϵZ?_ay:9 \5@%>އO/
-t@\?%^%s*]3XH4^Vw9}Lr5·' 5p6(LVN]&emJJ$U49|Ixo/H
-i}nTAk(a&<b:l"ݩjߪA.a6U*m	q4$MA,,;N޺䜯b^gyD|.Vߜ 25?rIa DQ섥`,3Hs5^
-sR3o*Nslb谤A8W*T6Egtk jȏ)`c& P@7y'z-t+3}P쁐>1ˁ?]axIITB!L¹{+I:	Ji}S}p3a+:P*`½|TFQ] y~RN HۄQzɀ4X_'NBh奔S| L\ByƁZ4  5Pt4E"v=k2cP,폶_!lT`2W,[	|5%Q?/ab+0(ڙU@ Rd`v~yW R ZkY VS-sy\+t`}~nhS0. g *LC)^NRv6i+ Ec>*DamȁEϋ°
-[5J|锚[<I}Q)l# 0:4ϜBnTDxr¾cfnk/õXk:NR=aB~=|SХ=if]vА͂>A2 +MFaf
-`@ rѬuЏ!~ hiJ (p7;Io+__*n9=BՇGI_3<Jٝ#
-@#h@4U2A8zJyHaw\un6yX+P}{"n럏}"GX` (WH;'XEep \nY)/Kr_	?.^vpy[$)lVcv[
-Q`|$\	Xs7Ji늁Htp~46*D[46 Ղa \ytTPz0~VM Nyɧ[3ʯ"l4PXOX'FAQ9
-4^
-r/[ݿ`7z ~,*$ ӐiM6D[ҜK#p	,$c|h1ZZJχD`Jx^mm9#QC#0O
-eUws^2=J&IF
-b@Nl[e C % A*{VE12 wU{DBT>+X0lFX+< HlLwo y?X}8LȔDv|qkF X %"%6NizN_@U}SbEH  Lad?њ]/ R\\.Uk4RUo>8P):IsD@F)zh|Fڱpl 
-yH `Gɨ:[aW74k6+uR&Ȯs L3	oa, ʤm,y! w 뼼}2k0]2ʝgߪ_HkcK~V	hD;Ek[	ǔ_GNA, 1`xDxEApJ&w>08Y94SX(2@\P_}
-ۀٱ"갲27E"_2YѼktw~w![u0>'th1LJM1COE]j)7+VV^^	7mjo4ZZe@%	x6n|S4wzm?'WJCn|)s+.uʟ ƗÎ	<';A2)<Kh"<pX֗o] t`P>;Jq	*`{gGY%yA~|ĶPC(
-~ed7qWCIdU, 7AmR5Y`Coj[Ji}Mɜ3}%w~f&ik9;c|]XWZMcCm2@Ε^X4S	++`d)
-ոdiI`>A" W%U	$>A66.׀U:`p)ΈP`glJ㔡G%Yy()HU' 3z֥@_rKᥱI%(:7QI03 .DlPl62cv,GeSN^o`JCGHC{t7ƈ3TY@[Z C
-@GeFDIU&I=3/>l"k8G~3qcgkuIp"rVIGI*H?]ޗƿT`Ks T4AeC #S`'0%=E#^XeP*1	߹+2gC* L@j9`e뫿)2 #K#,$e /2>* tn7~zҔ1̌FS}{Glx'V[2d+!4Pwagӝgec_oehFoP|7;fjJ葄#F"CC(\^bLĘe(s3>^iU޵$r"P2Kb=6˰_3/? *лE:gє!iFd
- (ٕNB+Fd_!6<bl1]kxK[%Cm$xR9=Cl=+yŴ}etDmT!-ycTpeHD\ZaAh'ä]
-}@գ#z4I%CCF({4I
--C7 g$Q0zX(CslwC`_KUu#Z5T+1IAgjo1ڽeky2#*CO!BJ-4+ >>2@=-C4$fϰdJk5i3G"IZ3$%
-*`"m3BpsWyb4y-?ƎP-Y2-K#	lQ3.tϰ &8Il2`B`x**W8d2!NђaW3_̑,Bct ,	6q43D&3t!=Bpdd*XV@Vl
-?VXI./adIBbum{<iAA2ˀK.Z2Dp;"/E;ao|!&>{V3Ig#,3/HA ed*XRAm 18t<6x7}d pZz~tl5eS'm|8{I&pR˔^0D)`C]_3I&
-ƫL$1`Zx+Iցd2k#ĕ!mϻ_aKȗS>	'o2L&ye<`P"PYܗ0 `T2!h-<x{lXfvD0p7#|TpB bo	@oqe "JHdj`'C}RjxRg^hw3Y0_ 
-_76[0>@^c]t!5|"N`deL a/<:k!lg 2d2gj8> eB/&w	8+'CL<NKK2
-.)`'t("<dˠZZ-ȱq`#md2§4T$$:ΖA gʥ4+2d29V R2| 
-x6W; Nsq%d2DX_?~E:p2oAbsza=C26 }CDgQe BA)0d5Vd#j笅sh"B+jIIa[7`3[i Y|'qsPߟM&CWGXX'2'Cgf[Eid2>SC"E*1k5"fҡ*jbrL/ְ6b.6_	܉CK]5;)2	+<Bv16?O[K+"\y4L;.Wa_;3B_!Ό`bν^	>DG5Lz)*z %#Xu/w=2<OEh^u P2P^e`o-(z !pcu_u
-.*a=Ga)G
-Z~x0Qk	\r<GE_,(Q!D@"z7F~)-fk2\(LoC@RlҁGج$n|vK J
-J>\.'#K¼C$5F5RM¿cpn!FC6wi	J|9×\(BsV(W+,]B{j9|d).KP:+ަIU=j:2`$°F#0HjI SJ,v!Yʛ@Bd4o ^fI	o# )i̥{sY-G;XBHdM#+L"\aWIPNXƀ9QN'#`m( 6z[=O̓\Ka8	;gx=l&7J%: HR	 naD
-z TsӲ*cI@Lp+ke(oA9$=uӃބ`f9_ -DAeKsh] `بz쿋5l"QP3znރ*;wsBnB(M"*i*H*dJ[haB-3-"JaJR(*:r@$ !IL'9g'9MwuZy> @DddzK@쭼R&!Ȱ|yL@̖S)B Y~R}_&]z"/!D#h/I׈%CFHR;C\w}aؤG>%ByPT:vsR}[Ⱥ@ϫg󩖨Or	&طWC=)I0,D~ jbߺDMWAELrdT=7T8M2+_fiOMGKZ˦MXQ1V=N=ɄHOrw9%_Xm#KٴJk/lB*_og?	yl o=,\)IoM&Y 7e8\@
-LQä/2Qm?i%GTEfoc~Ԝ~Xa#/ʤ/&&ihz @xIQ3jFELQZ8$G[=IZ(h!q<a(&L?	ImarIjIz@tz.ZFf-Ib[Dg7ٲ/u-N}%ZgO-@,!n'0d):ޮ/uHˣcT(LWX8'45FGp&Oe.DfORIT&D{
-SϨ킼=.y7"Zg` IR\2KxbGahDS~F/*[RJf_3__FGlFqf)IO>;4~J}F_=jU4`7Nө}b*, 6 Jkx19e_764Dm%IH&Ig득Z=	S}
-aCoҜ/}vfGdsXIHW٢$IZW%.jELɶ2IrjH#9<@aGLWx$}Ru*T,$S$tZ}os꯹fH)꧟Ŀ%.ơ~2r咨˥X ~ٌO0YrBt6;TWRHP8Nc̭oز@R?!s炲2`Lǁ]QXbj}8,BGP=p
-ĭ'9ә-:݇ϛQL'gۙj'yYd('Ġ=uDqb4<HKUL|P'[ΩsV}[*.u LG(QNk:' bP3Vx278Fap#;mGDɡo>ڏ<%<XCZ98bwrA mV*-di	Z-:%ypۢrSb[/WYca.6Jiǅ$4
-X%S?3hБah:i2~+(IEqX: =F\-,Du+Buz@C&m}^R^ZZu#Pg}G`dc
-C{04h枴v#& ҙQ#JZfbiS5=}9<=#|Q2V. {I!LDLf@1)i"h&Q#4T7. s%BHP/qڤ'_iᐒ.Q@7}Q  :YU_^UCiM[$c;iIܯ$a*5hٕ+M}fT5~w%pcIx!BO[Uy7JP@ P5բ mZ"UR&q;CГ|'& .U}Ih*{4UAUf/gֹ[2Jd ]>%[vڼXm$[G.}H	iqq;Гa{MU;o?#qݭKϋГaKDxwf_hݚv4kcH
-4aqgz2HrUbDۘ(?v:e	TaW z2ӕqdDˑ-eDWk-q5b7D\pE͑|^8V6:W
-t:#^_FNHL#6n.r9BETV'ڶ>b툱t7s"
-z2})EA&9*ǝ'F2tGNcƻ_.=v)_EO	'JJQ!E=	)%(\(nf2QKwy*{*џ%*bV^F05:eW1SL*_\gyWۦ:	^%.ļY'C1𜜯tic6GtSy9
-Y5=z 7pnsG.Lp<q8թqbIXE<F<Jztۿ'Co9bk"8ka8`R$^#~Izsx,[}ГGD Z 䜬ijk	1	l+z"c`5?xXAm2ѣG=zg9    IENDB`
\ No newline at end of file
diff --git a/core/core.libraries.yml b/core/core.libraries.yml
index a56f674..30f588f 100644
--- a/core/core.libraries.yml
+++ b/core/core.libraries.yml
@@ -294,18 +294,6 @@ jquery.cookie:
   dependencies:
     - core/jquery
 
-jquery.farbtastic:
-  remote: https://github.com/mattfarina/farbtastic
-  # @todo Ping @robloach or @mattfarina to retroactively create this release.
-  version: 1.2
-  js:
-    assets/vendor/farbtastic/farbtastic.js: {}
-  css:
-    component:
-      assets/vendor/farbtastic/farbtastic.css: {}
-  dependencies:
-    - core/jquery
-
 jquery.form:
   remote: https://github.com/malsup/form
   version: 3.50
diff --git a/core/modules/color/color.js b/core/modules/color/color.js
index 62eab38..8ea0893 100644
--- a/core/modules/color/color.js
+++ b/core/modules/color/color.js
@@ -9,34 +9,19 @@
 
   Drupal.behaviors.color = {
     attach: function (context, settings) {
-      var i, j, colors;
       // This behavior attaches by ID, so is only valid once on a page.
-      var form = $(context).find('#system-theme-settings .color-form').once('color');
-      if (form.length === 0) {
+      var $form = $(context).find('#system-theme-settings .color-form').once('color');
+      if ($form.length === 0) {
         return;
       }
-      var inputs = [];
-      var hooks = [];
-      var locks = [];
-      var focused = null;
-
-      // Add Farbtastic.
-      $('<div id="placeholder"></div>').once('color').prependTo(form);
-      var farb = $.farbtastic('#placeholder');
-
-      // Decode reference colors to HSL.
-      var reference = settings.color.reference;
-      for (i in reference) {
-        if (reference.hasOwnProperty(i)) {
-          reference[i] = farb.RGBToHSL(farb.unpack(reference[i]));
-        }
-      }
 
       // Build a preview.
       var height = [];
       var width = [];
+      var $editScheme = $form.find('#edit-scheme');
+
       // Loop through all defined gradients.
-      for (i in settings.gradients) {
+      for (var i in settings.gradients) {
         if (settings.gradients.hasOwnProperty(i)) {
           // Add element to display the gradient.
           $('#preview').once('color').append('<div id="gradient-' + i + '"></div>');
@@ -48,209 +33,54 @@
           // Add rows (or columns for horizontal gradients).
           // Each gradient line should have a height (or width for horizontal
           // gradients) of 10px (because we divided the height/width by 10 above).
-          for (j = 0; j < (settings.gradients[i].direction === 'vertical' ? height[i] : width[i]); ++j) {
+          for (var j = 0; j < (settings.gradients[i].direction === 'vertical' ? height[i] : width[i]); ++j) {
             gradient.append('<div class="gradient-line"></div>');
           }
         }
       }
 
       // Set up colorScheme selector.
-      form.find('#edit-scheme').on('change', function () {
+      $editScheme.on('change', function () {
         var schemes = settings.color.schemes, colorScheme = this.options[this.selectedIndex].value;
         if (colorScheme !== '' && schemes[colorScheme]) {
           // Get colors of active scheme.
-          colors = schemes[colorScheme];
+          var colors = schemes[colorScheme];
           for (var fieldName in colors) {
             if (colors.hasOwnProperty(fieldName)) {
-              callback($('#edit-palette-' + fieldName), colors[fieldName], false, true);
+              setScheme($('#edit-palette-' + fieldName), colors[fieldName], true);
             }
           }
           preview();
         }
       });
 
-      /**
-       * Renders the preview.
-       */
-      function preview() {
-        Drupal.color.callback(context, settings, form, farb, height, width);
-      }
-
-      /**
-       * Shifts a given color, using a reference pair (ref in HSL).
-       *
-       * This algorithm ensures relative ordering on the saturation and luminance
-       * axes is preserved, and performs a simple hue shift.
-       *
-       * It is also symmetrical. If: shift_color(c, a, b) === d, then
-       * shift_color(d, b, a) === c.
-       */
-      function shift_color(given, ref1, ref2) {
-        var d;
-        // Convert to HSL.
-        given = farb.RGBToHSL(farb.unpack(given));
-
-        // Hue: apply delta.
-        given[0] += ref2[0] - ref1[0];
-
-        // Saturation: interpolate.
-        if (ref1[1] === 0 || ref2[1] === 0) {
-          given[1] = ref2[1];
-        }
-        else {
-          d = ref1[1] / ref2[1];
-          if (d > 1) {
-            given[1] /= d;
-          }
-          else {
-            given[1] = 1 - (1 - given[1]) * d;
-          }
-        }
-
-        // Luminance: interpolate.
-        if (ref1[2] === 0 || ref2[2] === 0) {
-          given[2] = ref2[2];
-        }
-        else {
-          d = ref1[2] / ref2[2];
-          if (d > 1) {
-            given[2] /= d;
-          }
-          else {
-            given[2] = 1 - (1 - given[2]) * d;
-          }
-        }
-
-        return farb.pack(farb.HSLToRGB(given));
-      }
+      // Trigger callback on input change
+      $form.on('change keyup', '[data-drupal-color]', function () {
+        // Reset the color scheme selector.
+        $editScheme.val('_none');
+        preview();
+      });
 
       /**
-       * Callback for Farbtastic when a new color is chosen.
+       * Callback when a new scheme is chosen.
        */
-      function callback(input, color, propagate, colorScheme) {
-        var matched;
-        // Set background/foreground colors.
-        $(input).css({
-          backgroundColor: color,
-          'color': farb.RGBToHSL(farb.unpack(color))[2] > 0.5 ? '#000' : '#fff'
-        });
-
+      function setScheme(input, color, colorScheme) {
         // Change input value.
         if ($(input).val() && $(input).val() !== color) {
           $(input).val(color);
 
-          // Update locked values.
-          if (propagate) {
-            i = input.i;
-            for (j = i + 1; ; ++j) {
-              if (!locks[j - 1] || $(locks[j - 1]).is('.unlocked')) {
-                break;
-              }
-              matched = shift_color(color, reference[input.key], reference[inputs[j].key]);
-              callback(inputs[j], matched, false);
-            }
-            for (j = i - 1; ; --j) {
-              if (!locks[j] || $(locks[j]).is('.unlocked')) {
-                break;
-              }
-              matched = shift_color(color, reference[input.key], reference[inputs[j].key]);
-              callback(inputs[j], matched, false);
-            }
-
-            // Update preview.
-            preview();
-          }
-
-          // Reset colorScheme selector.
-          if (!colorScheme) {
-            resetScheme();
-          }
+          // Update preview.
+          preview();
         }
       }
 
       /**
-       * Resets the color scheme selector.
-       */
-      function resetScheme() {
-        form.find('#edit-scheme').each(function () {
-          this.selectedIndex = this.options.length - 1;
-        });
-      }
-
-      /**
-       * Focuses Farbtastic on a particular field.
+       * Renders the preview.
        */
-      function focus(e) {
-        var input = e.target;
-        // Remove old bindings.
-        if (focused) {
-          $(focused).off('keyup', farb.updateValue)
-            .off('keyup', preview).off('keyup', resetScheme)
-            .parent().removeClass('item-selected');
-        }
-
-        // Add new bindings.
-        focused = input;
-        farb.linkTo(function (color) { callback(input, color, true, false); });
-        farb.setColor(input.value);
-        $(focused).on('keyup', farb.updateValue).on('keyup', preview).on('keyup', resetScheme)
-          .parent().addClass('item-selected');
+      function preview() {
+        Drupal.color.callback(context, settings, $form, height, width);
       }
 
-      // Initialize color fields.
-      form.find('#palette input.form-text')
-        .each(function () {
-          // Extract palette field name
-          this.key = this.id.substring(13);
-
-          // Link to color picker temporarily to initialize.
-          farb.linkTo(function () {}).setColor('#000').linkTo(this);
-
-          // Add lock.
-          var i = inputs.length;
-          if (inputs.length) {
-            var toggleClick = true;
-            var lock = $('<div class="lock"></div>').on('click', function () {
-              if (toggleClick) {
-                $(this).addClass('unlocked');
-                $(hooks[i - 1]).attr('class',
-                  locks[i - 2] && $(locks[i - 2]).is(':not(.unlocked)') ? 'hook up' : 'hook'
-                );
-                $(hooks[i]).attr('class',
-                  locks[i] && $(locks[i]).is(':not(.unlocked)') ? 'hook down' : 'hook'
-                );
-              }
-              else {
-                $(this).removeClass('unlocked');
-                $(hooks[i - 1]).attr('class',
-                  locks[i - 2] && $(locks[i - 2]).is(':not(.unlocked)') ? 'hook both' : 'hook down'
-                );
-                $(hooks[i]).attr('class',
-                  locks[i] && $(locks[i]).is(':not(.unlocked)') ? 'hook both' : 'hook up'
-                );
-              }
-              toggleClick = !toggleClick;
-            });
-            $(this).after(lock);
-            locks.push(lock);
-          }
-
-          // Add hook.
-          var hook = $('<div class="hook"></div>');
-          $(this).after(hook);
-          hooks.push(hook);
-
-          $(this).parent().find('.lock').trigger('click');
-          this.i = i;
-          inputs.push(this);
-        })
-        .on('focus', focus);
-
-      form.find('#palette label');
-
-      // Focus first color.
-      inputs[0].focus();
-
       // Render preview.
       preview();
     }
diff --git a/core/modules/color/color.libraries.yml b/core/modules/color/color.libraries.yml
index c6a2db9..ea56efd 100644
--- a/core/modules/color/color.libraries.yml
+++ b/core/modules/color/color.libraries.yml
@@ -6,7 +6,6 @@ drupal.color:
     - core/jquery
     - core/drupal
     - core/jquery.once
-    - core/jquery.farbtastic
     - color/drupal.color.preview
 
 drupal.color.preview:
diff --git a/core/modules/color/color.module b/core/modules/color/color.module
index 6ecf036..d973fa2 100644
--- a/core/modules/color/color.module
+++ b/core/modules/color/color.module
@@ -168,7 +168,7 @@ function color_scheme_form($complete_form, &$form_state, $theme) {
   $base = drupal_get_path('module', 'color');
   $info = color_get_info($theme);
 
-  $info['schemes'][''] = array('title' => t('Custom'), 'colors' => array());
+  $info['schemes']['_none'] = array('title' => t('Custom'), 'colors' => array());
   $color_sets = array();
   $schemes = array();
   foreach ($info['schemes'] as $key => $scheme) {
@@ -237,7 +237,7 @@ function color_scheme_form($complete_form, &$form_state, $theme) {
         '#value_callback' => 'color_palette_color_value',
         '#default_value' => $value,
         '#size' => 8,
-        '#attributes' => array('dir' => 'ltr'),
+        '#attributes' => array('dir' => 'ltr', 'data-drupal-color' => $name),
       );
     }
   }
@@ -354,7 +354,7 @@ function color_scheme_form_submit($form, &$form_state) {
 
   // Resolve palette.
   $palette = $form_state['values']['palette'];
-  if ($form_state['values']['scheme'] != '') {
+  if ($form_state['values']['scheme'] != '_none') {
     foreach ($palette as $key => $color) {
       if (isset($info['schemes'][$form_state['values']['scheme']]['colors'][$key])) {
         $palette[$key] = $info['schemes'][$form_state['values']['scheme']]['colors'][$key];
diff --git a/core/modules/color/css/color.admin.css b/core/modules/color/css/color.admin.css
index 5da8c35..0bf3bb5 100644
--- a/core/modules/color/css/color.admin.css
+++ b/core/modules/color/css/color.admin.css
@@ -5,9 +5,6 @@
 .color-form {
   max-width: 50em;
 }
-.farbtastic {
-  margin: 0 auto;
-}
 .color-form .form-item {
   overflow: hidden;
   margin: 0.5em 0;
@@ -20,9 +17,7 @@
 }
 .color-form .form-text {
   float: left; /* LTR */
-  width: 86%;
-  text-align: center;
-  cursor: pointer;
+  width: auto;
 }
 [dir="rtl"] .color-form .form-text {
   float: right;
@@ -80,10 +75,7 @@
     float: left;
   }
   .color-form .form-item {
-    margin: 0.5em 195px 0.5em 0; /* LTR */
-  }
-  [dir="rtl"] .color-form .form-item {
-    margin: 0.5em 0 0.5em 195px;
+    margin: 0.5em;
   }
   .color-form label {
     float: left; /* LTR */
@@ -94,7 +86,7 @@
     float: right;
     clear: right;
   }
-  .color-form .form-text,
+  .color-form .text,
   .color-form .form-select {
     float: left; /* LTR */
     width: auto;
diff --git a/core/modules/color/lib/Drupal/color/Tests/ColorConfigSchemaTest.php b/core/modules/color/lib/Drupal/color/Tests/ColorConfigSchemaTest.php
index ebaa303..58da6e6 100644
--- a/core/modules/color/lib/Drupal/color/Tests/ColorConfigSchemaTest.php
+++ b/core/modules/color/lib/Drupal/color/Tests/ColorConfigSchemaTest.php
@@ -53,7 +53,7 @@ function setUp() {
    */
   function testValidColorConfigSchema() {
     $settings_path = 'admin/appearance/settings/bartik';
-    $edit['scheme'] = '';
+    $edit['scheme'] = '_none';
     $edit['palette[bg]'] = '#123456';
     $this->drupalPostForm($settings_path, $edit, t('Save configuration'));
     $this->assertConfigSchema(\Drupal::service('config.typed'), 'color.theme.bartik', \Drupal::config('color.theme.bartik')->get());
diff --git a/core/modules/color/lib/Drupal/color/Tests/ColorTest.php b/core/modules/color/lib/Drupal/color/Tests/ColorTest.php
index 32bdd1a..54e9289 100644
--- a/core/modules/color/lib/Drupal/color/Tests/ColorTest.php
+++ b/core/modules/color/lib/Drupal/color/Tests/ColorTest.php
@@ -119,7 +119,7 @@ function _testColor($theme, $test_values) {
     $this->drupalGet($settings_path);
     $this->assertResponse(200);
     $this->assertUniqueText('Color set');
-    $edit['scheme'] = '';
+    $edit['scheme'] = '_none';
     $edit[$test_values['palette_input']] = '#123456';
     $this->drupalPostForm($settings_path, $edit, t('Save configuration'));
 
@@ -168,7 +168,7 @@ function testValidColor() {
     $settings_path = 'admin/appearance/settings/bartik';
 
     $this->drupalLogin($this->big_user);
-    $edit['scheme'] = '';
+    $edit['scheme'] = '_none';
 
     foreach ($this->colorTests as $color => $is_valid) {
       $edit['palette[bg]'] = $color;
diff --git a/core/modules/color/preview.js b/core/modules/color/preview.js
index 5e79855..dd4d356 100644
--- a/core/modules/color/preview.js
+++ b/core/modules/color/preview.js
@@ -8,7 +8,7 @@
   "use strict";
 
   Drupal.color = {
-    callback: function (context, settings, form, farb, height, width) {
+    callback: function (context, settings, form, height, width) {
       // Solid background.
       form.find('#preview').css('backgroundColor', form.find('#palette input[name="palette[base]"]').val());
 
@@ -22,15 +22,15 @@
             accum[k] += delta[k];
           }
         }
-        element.style.backgroundColor = farb.pack(accum);
+        element.style.backgroundColor = accum;
       }
 
       // Set up gradients if there are some.
       var color_start, color_end;
       for (var i in settings.gradients) {
         if (settings.gradients.hasOwnProperty(i)) {
-          color_start = farb.unpack(form.find('#palette input[name="palette[' + settings.gradients[i].colors[0] + ']"]').val());
-          color_end = farb.unpack(form.find('#palette input[name="palette[' + settings.gradients[i].colors[1] + ']"]').val());
+          color_start = form.find('#palette input[name="palette[' + settings.gradients[i].colors[0] + ']"]').val();
+          color_end = form.find('#palette input[name="palette[' + settings.gradients[i].colors[1] + ']"]').val();
           if (color_start && color_end) {
             var delta = [];
             for (var j in color_start) {
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php
index f6f3da8..dd16e11 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/JavaScriptTest.php
@@ -606,12 +606,12 @@ function testAlter() {
    */
   function testLibraryRender() {
     $attached = array();
-    $attached['#attached']['library'][] = 'core/jquery.farbtastic';
+    $attached['#attached']['library'][] = 'core/jquery.ui';
     drupal_render($attached);
     $scripts = drupal_get_js();
     $styles = drupal_get_css();
-    $this->assertTrue(strpos($scripts, 'core/assets/vendor/farbtastic/farbtastic.js'), 'JavaScript of library was added to the page.');
-    $this->assertTrue(strpos($styles, 'core/assets/vendor/farbtastic/farbtastic.css'), 'Stylesheet of library was added to the page.');
+    $this->assertTrue(strpos($scripts, 'core/assets/vendor/jquery.ui/ui/jquery.ui.core.js'), 'JavaScript of library was added to the page.');
+    $this->assertTrue(strpos($styles, 'core/assets/vendor/jquery.ui/themes/base/jquery.ui.core.css'), 'Stylesheet of library was added to the page.');
   }
 
   /**
@@ -620,14 +620,14 @@ function testLibraryRender() {
    * @see common_test_library_info_alter()
    */
   function testLibraryAlter() {
-    // Verify that common_test altered the title of Farbtastic.
+    // Verify that common_test altered the title of jQuery UI.
     /** @var \Drupal\Core\Asset\LibraryDiscoveryInterface $library_discovery */
     $library_discovery = \Drupal::service('library.discovery');
-    $library = $library_discovery->getLibraryByName('core', 'jquery.farbtastic');
+    $library = $library_discovery->getLibraryByName('core', 'jquery.ui');
     $this->assertEqual($library['version'], '0.0', 'Registered libraries were altered.');
 
     // common_test_library_info_alter() also added a dependency on jQuery Form.
-    $attached['#attached']['library'][] = 'core/jquery.farbtastic';
+    $attached['#attached']['library'][] = 'core/jquery.ui';
     drupal_render($attached);
     $scripts = drupal_get_js();
     $this->assertTrue(strpos($scripts, 'core/assets/vendor/jquery-form/jquery.form.js'), 'Altered library dependencies are added to the page.');
@@ -641,8 +641,8 @@ function testLibraryAlter() {
   function testLibraryNameConflicts() {
     /** @var \Drupal\Core\Asset\LibraryDiscoveryInterface $library_discovery */
     $library_discovery = \Drupal::service('library.discovery');
-    $farbtastic = $library_discovery->getLibraryByName('common_test', 'jquery.farbtastic');
-    $this->assertEqual($farbtastic['version'], '0.1', 'Alternative libraries can be added to the page.');
+    $jquery_ui = $library_discovery->getLibraryByName('common_test', 'jquery.ui');
+    $this->assertEqual($jquery_ui['version'], '0.1', 'Alternative libraries can be added to the page.');
   }
 
   /**
@@ -665,10 +665,10 @@ function testLibraryUnknown() {
    * Tests the addition of libraries through the #attached['library'] property.
    */
   function testAttachedLibrary() {
-    $element['#attached']['library'][] = 'core/jquery.farbtastic';
+    $element['#attached']['library'][] = 'core/jquery.ui';
     drupal_render($element);
     $scripts = drupal_get_js();
-    $this->assertTrue(strpos($scripts, 'core/assets/vendor/farbtastic/farbtastic.js'), 'The attached_library property adds the additional libraries.');
+    $this->assertTrue(strpos($scripts, 'core/assets/vendor/jquery.ui/ui/jquery.ui.core.js'), 'The attached_library property adds the additional libraries.');
   }
 
   /**
@@ -679,18 +679,18 @@ function testGetLibrary() {
     $library_discovery = \Drupal::service('library.discovery');
     // Retrieve all libraries registered by a module.
     $libraries = $library_discovery->getLibrariesByExtension('common_test');
-    $this->assertTrue(isset($libraries['jquery.farbtastic']), 'Retrieved all module libraries.');
+    $this->assertTrue(isset($libraries['jquery.ui']), 'Retrieved all module libraries.');
     // Retrieve all libraries for a module not declaring any libraries.
     // Note: This test installs language module.
     $libraries = $library_discovery->getLibrariesByExtension('dblog');
-    $this->assertEqual($libraries, array(), 'Retrieving libraries from a module not declaring any libraries returns an emtpy array.');
+    $this->assertEqual($libraries, array(), 'Retrieving libraries from a module not declaring any libraries returns an empty array.');
 
     // Retrieve a specific library by module and name.
-    $farbtastic = $library_discovery->getLibraryByName('common_test', 'jquery.farbtastic');
-    $this->assertEqual($farbtastic['version'], '0.1', 'Retrieved a single library.');
+    $jquery_ui = $library_discovery->getLibraryByName('common_test', 'jquery.ui');
+    $this->assertEqual($jquery_ui['version'], '0.1', 'Retrieved a single library.');
     // Retrieve a non-existing library by module and name.
-    $farbtastic = $library_discovery->getLibraryByName('common_test', 'foo');
-    $this->assertIdentical($farbtastic, FALSE, 'Retrieving a non-existing library returns FALSE.');
+    $jquery_ui = $library_discovery->getLibraryByName('common_test', 'foo');
+    $this->assertIdentical($jquery_ui, FALSE, 'Retrieving a non-existing library returns FALSE.');
   }
 
   /**
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index c69838a..0802d7d 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -251,24 +251,24 @@ function hook_js_alter(&$javascript) {
  *   The name of the module that registered the libraries.
  */
 function hook_library_info_alter(&$libraries, $module) {
-  // Update Farbtastic to version 2.0.
-  if ($module == 'core' && isset($libraries['jquery.farbtastic'])) {
+  // Update jQuery UI to version 2.0.
+  if ($module == 'core' && isset($libraries['jquery.ui'])) {
     // Verify existing version is older than the one we are updating to.
-    if (version_compare($libraries['jquery.farbtastic']['version'], '2.0', '<')) {
-      // Update the existing Farbtastic to version 2.0.
-      $libraries['jquery.farbtastic']['version'] = '2.0';
+    if (version_compare($libraries['jquery.ui']['version'], '2.0', '<')) {
+      // Update the existing jQuery UI to version 2.0.
+      $libraries['jquery.ui']['version'] = '2.0';
       // To accurately replace library files, the order of files and the options
       // of each file have to be retained; e.g., like this:
-      $old_path = 'assets/vendor/farbtastic';
+      $old_path = 'assets/vendor/jquery.ui';
       // Since the replaced library files are no longer located in a directory
       // relative to the original extension, specify an absolute path (relative
       // to DRUPAL_ROOT / base_path()) to the new location.
-      $new_path = '/' . drupal_get_path('module', 'farbtastic_update') . '/js';
+      $new_path = '/' . drupal_get_path('module', 'jquery.ui_update') . '/js';
       $new_js = array();
       $replacements = array(
-        $old_path . '/farbtastic.js' => $new_path . '/farbtastic-2.0.js',
+        $old_path . '/jquery.ui.js' => $new_path . '/jquery.ui-2.0.js',
       );
-      foreach ($libraries['jquery.farbtastic']['js'] as $source => $options) {
+      foreach ($libraries['jquery.ui']['js'] as $source => $options) {
         if (isset($replacements[$source])) {
           $new_js[$replacements[$source]] = $options;
         }
@@ -276,7 +276,7 @@ function hook_library_info_alter(&$libraries, $module) {
           $new_js[$source] = $options;
         }
       }
-      $libraries['jquery.farbtastic']['js'] = $new_js;
+      $libraries['jquery.ui']['js'] = $new_js;
     }
   }
 }
diff --git a/core/modules/system/tests/modules/common_test/common_test.libraries.yml b/core/modules/system/tests/modules/common_test/common_test.libraries.yml
index 47d2b37..9ed01d6 100644
--- a/core/modules/system/tests/modules/common_test/common_test.libraries.yml
+++ b/core/modules/system/tests/modules/common_test/common_test.libraries.yml
@@ -1,9 +1,9 @@
-jquery.farbtastic:
+jquery.ui:
   version: 0.1
   js:
-    assets/vendor/farbtastic/farbtastic.js: {}
+    assets/vendor/jquery.ui/ui/jquery.ui.core.js: {}
   css:
     component:
-      assets/vendor/farbtastic/farbtastic.css: {}
+      assets/vendor/jquery.ui/themes/base/jquery.ui.core.css: {}
   dependencies:
     - core/jquery
diff --git a/core/modules/system/tests/modules/common_test/common_test.module b/core/modules/system/tests/modules/common_test/common_test.module
index 2785be9..205c25b 100644
--- a/core/modules/system/tests/modules/common_test/common_test.module
+++ b/core/modules/system/tests/modules/common_test/common_test.module
@@ -141,11 +141,11 @@ function theme_common_test_empty($variables) {
  * Implements hook_library_info_alter().
  */
 function common_test_library_info_alter(&$libraries, $module) {
-  if ($module == 'core' && isset($libraries['jquery.farbtastic'])) {
-    // Change the version of Farbtastic to 0.0.
-    $libraries['jquery.farbtastic']['version'] = '0.0';
-    // Make Farbtastic depend on jQuery Form to test library dependencies.
-    $libraries['jquery.farbtastic']['dependencies'][] = 'core/jquery.form';
+  if ($module == 'core' && isset($libraries['jquery.ui'])) {
+    // Change the version of jQuery UI to 0.0.
+    $libraries['jquery.ui']['version'] = '0.0';
+    // Make jQuery UI depend on jQuery Form to test library dependencies.
+    $libraries['jquery.ui']['dependencies'][] = 'core/jquery.form';
   }
 }
 
diff --git a/core/themes/bartik/color/preview.js b/core/themes/bartik/color/preview.js
index cb57121..6637809 100644
--- a/core/themes/bartik/color/preview.js
+++ b/core/themes/bartik/color/preview.js
@@ -8,7 +8,7 @@
 
   Drupal.color = {
     logoChanged: false,
-    callback: function(context, settings, form, farb, height, width) {
+    callback: function(context, settings, form, height, width) {
       // Change the logo to be the real one.
       if (!this.logoChanged) {
         $('#preview #preview-logo img').attr('src', drupalSettings.color.logo);
