From e8915e7e2c1daef12cf968949c7641afa11c0758 Mon Sep 17 00:00:00 2001 From: gsingh58 <gurmail-singh@wisc.edu> Date: Tue, 20 Feb 2024 07:33:57 -0600 Subject: [PATCH] lec9 updated --- .../09-Graph-Search-1/09-Graph-Search-1.pdf | Bin 0 -> 196408 bytes .../09-Graph-Search-1/09-Graph-Search-1.pptx | Bin 0 -> 95124 bytes lecture_material/09-Graph-Search-1/print.key | Bin 0 -> 301849 bytes lecture_material/09-Graph-Search-1/print.pdf | Bin 0 -> 32962 bytes .../09-Graph-Search-1/reading1.html | 15011 +++++++++++++++ .../09-Graph-Search-1/reading1.ipynb | 901 + .../09-Graph-Search-1/reading2.html | 15426 ++++++++++++++++ .../09-Graph-Search-1/reading2.ipynb | 1235 ++ .../09-Graph-Search-1/solution.ipynb | 1332 ++ .../09-Graph-Search-1/template_lec_001.ipynb | 671 + .../09-Graph-Search-1/template_lec_002.ipynb | 671 + 11 files changed, 35247 insertions(+) create mode 100644 lecture_material/09-Graph-Search-1/09-Graph-Search-1.pdf create mode 100644 lecture_material/09-Graph-Search-1/09-Graph-Search-1.pptx create mode 100644 lecture_material/09-Graph-Search-1/print.key create mode 100644 lecture_material/09-Graph-Search-1/print.pdf create mode 100644 lecture_material/09-Graph-Search-1/reading1.html create mode 100644 lecture_material/09-Graph-Search-1/reading1.ipynb create mode 100644 lecture_material/09-Graph-Search-1/reading2.html create mode 100644 lecture_material/09-Graph-Search-1/reading2.ipynb create mode 100644 lecture_material/09-Graph-Search-1/solution.ipynb create mode 100644 lecture_material/09-Graph-Search-1/template_lec_001.ipynb create mode 100644 lecture_material/09-Graph-Search-1/template_lec_002.ipynb diff --git a/lecture_material/09-Graph-Search-1/09-Graph-Search-1.pdf b/lecture_material/09-Graph-Search-1/09-Graph-Search-1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ff023434ebe74a16dbf44e6b63f1800e0f7c5369 GIT binary patch literal 196408 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ĠS|;BvZ{z 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 EUw5@c;{X5v literal 0 HcmV?d00001 diff --git a/lecture_material/09-Graph-Search-1/09-Graph-Search-1.pptx b/lecture_material/09-Graph-Search-1/09-Graph-Search-1.pptx new file mode 100644 index 0000000000000000000000000000000000000000..d91b523234d4e638800af597eb788cde0fa42416 GIT binary patch literal 95124 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�!l><B3_jT`*3eu^>K+_1ZxEN+^YgWlgLmtpb&eQP{>rVH6I+i}elLwc zBr2fgI^<Q2aw>;A6X;zG1ws~D#0I?r;Bt%y%Z~#K<kDPc{EKiX;FL(=qD|QWz5&b_ z<E4t=)tqzO07Ccz;Bi0&79fI85l{S$LPT&?B6yZ31b?BBHt4T8@NfLlKY-x?`cFag z?L^KFL(Ku%;|YV+nqDEX=}Yg!{0Tvcw%acV<79G(*bIC_s%~@V=pmxf0P=77%<iSW zhJBAX;5fJwwn72%IA8-+roPMoLaTuD<{1BFc69g0?5Tj=z!qva4vRig?(XZ$Tiy}C zvFPz2Hl1+8oL-1};eojvv%s>V#cjVhD+^4Z+!O)p3x<~brjOIUiGC568(xDu$(I?Q zBQ|(e_Wy5I^0(O#7Jd7)S$9zD_XJa4{m25kR}V&Y9mXVVhs@$BJ{sb>NmYLQe*A}G zhz}e(gb~Ygy+R<tiPYxpu2FNufQL!@P1yMOGS@kEyiRV5&z}(x3SC%skhG|;+~H>y zE=&=q?eO(sE3}wm4q+h^#)Og`x;Jz$sgda;K)11^3GQ7z;q}@^+#yBAzA6U~z;ZZ! zeb(GgQ+<X|NNDObe1LL}Na2g7q_ZmwPA3VQ;~Mk%p>btXc-fMjZRgCcaw2h=3(7nE zrG%!g+`}zpX#8qjup50hX_ECNBU4ncU<W=lLNt@uCs}n4;WA-*FL!Tize;d}4;Nd7 zgHdtZK6T@q$Kj796Ud+vMjF|4=V$145-gH8{eDY5V)DA&=-Jt>5D`?}<E63P-8P5~ z?Wg4oIzdiQ4HAGDRgUXZ)wk;+&_Ak@2#S=-h{a8>;mU8Bl$TxE_0fwbn5IXaHW|c; zYudG}t7xTfIQPDk$B&oD8dH|8IZUo-$2La~8}eUp;PAo3ekIv}yPaxr&(7i2h6!ue ztxtOe+R!=nPJ8hSHaj(1^!GiGnasO=g9UO0z^TTLS-f^9LX5);>~P}h5&DJ*FV(*} zC1ja3vdbl%C}rNWCK4^VXTY*bW{P8Me}pRslL)-uPNu46vDI-OhkGm^%RV10%3tHe zX>r<=LxD50XpDqd<CKRQsB^V%slCz#(<zo9RD)C;W>>SDLvSV!OF4?YX8=|ngqf1; z+(1{{fWs<6<^-?Px0XYVW<7oIK2i#CZH{<zC_YgE9#%{rX9%HWTog1uzFs;y>^QF_ z*smE@wU}LTuYZ{kYZ)%f8?o&*Ro3J*Q#g)p|A&Q;D|u0szK>^=nK0tRIBB6P1^d0g zt)({M%fCKL(V)CO|4<aQbH~&wIjOL}Hg`hq9vveH=52>~f9$0lyM`aMPV$ha89nJx z3gJ?~6<F5hRys5_pC7Vcsl$&TXz-JeQOOW`l*%#h5uIZ8YEq*KdAu&fK2z-H3J3C= zmu5=~t*k218EZ^yd6s|xH<)aDMRY^bw08w@e45@C4CyZK(-pnD+Q^|QCLnA5R8EPr zVf3iwqqUo9i@FTcp2)SEd2ILP!t){8Te$7$e0KW~t_-Y%3c1u^@LV$3=G;W(vhlMe zhQv@R##X(TZC!4mN$O>>4`P<D<msITPU266TkMbkNCW(8ZdnWkO8f!i4b==?d-~}i z`<;1;He`*|v*WcSIL3?npp24a2x`oDtaz-|8rCWc`~eqK!Q)vFf&NC03_cFaE{Ze{ z>Eab!<9p*#<qCq>2aO7SRO}U7ct3w%9KJm1d~6;aY9y4Ln@`8wd=@kD&Fc6Snmd)# zj3o6Ih%?X;E^x58sV)ud5FkIQHH75&w?o@sZykl}aj~^gp#KQTp}~+e`ym(UjI_Om zhL&Qgo}QIS;FXR~qvvPl`_(!s%qpfU`B_%%!iMOW0&!gNF#c*jM3RQ|{ny~}+iGgk zl%JtSSWh_Lh=9M^?qfov^YY=odfdVONXF;;%c?%26bFpLj}Y;ZE8F_e{x+leY>bfK z-~Y085*r+)yPgacnb4<%MIORz$h$S3dk<Zhgmz)wFT!6QX~ja&MB{>uB#^k=Ft;bA zkHJ4v$v=XeF?RHtz!^hmO4eMJhsocP1@f7lc^4O1_MG~rQ$+e(PxD@&5AEGK_G08} zXl$x{$|mG{u6{J7YK;<bSJ>goDX>{=0QMlCAD>^BYRto&Q?7s#@ZI^eR@{yp;hhDN z_x)fBLkFNc$;#g_DeLE53i9Gyc(&6z$Z_UXNsU98jtmsG>ju+N4WjS&*jU|9Yk5wJ zVd0Pk<_GzrIwM9dkoXy3nq#9}wu2LK;FIS(Vxlq9r+^e^Mw4wVa35q72hkc9VDSPF z*CKZH`IU?G?{XV&>d(vYFW^LJ{b%50{TFcBueKl$b-NT__UwnqFkowb1NSX#lNhwy zaWq|%ZgVcl(f`Wk+@>blA9LoID>)9h7Y~OL*QOe2`ffEoA#Oqy`V9}D|8hzY=jv*x zx!K%6Thti&@b|FDP_&h>dTPwBB}d(-otyLCs*3Wh<#+;Dgvf)o(r=s1w`*8lls*b{ z&3s1{=;z_=1t)r}?`5_qMI9WI5oCz3ByMRp8lKc80d^xcLY3wWJ<)xj<S~rx<hne? zo;+#&`gc6Ahvtb3ZSf2euGAVj6Fd19KPYh&HRVN;N=1@%%x5uY>aPgU$EM0!s0zf2 z>rP{g?c_aa7A|tCc~exlP<D+q(Pal}mIF*g6QsQ+s+0|CR6JKmp0Au0if<JEsBQ*V zmwTIjYbfiBDy6K!5tZ9#bHN?kXMMqI0S{oHlDrfiMVKz#oT;;4vfKC=?c$OfQw+uF zLQdD@?F+4wb(BL^Lwrk_uFK!DTl<>|Oqivda^~T7%IK*5j9sgIj9@}DHrBKHc*RQ< zT({bg69V(|olKHigZpkQ2$G^`%wM|OBIp-!KEwPFA-1iNJQ|(8(wA4cA0m^bPDA@` zjI>w=_4d+H=CsHXVG(aFMxXeOy*ZMpx}%6~&LdU!lHVmskklm;i-ndg1)>pF=7=Tj z4WCh_E6Q>$Y^cmb55dR`j))WP_k>0o=G0q1$`Mmi-*yb=Lnf-momkK&>0*lB0If7q z{LaxiUoG$<Ka}rX&me8dENIEiZuC<lX@MEZ;%bFoad)}5CV*~SjFXr*`MHA*7~>ke zFS5)$0Ik^4YXfd-X!%Dmw8L7D2a!)19ux|Qusbi3`s!swwSx`?1BdU${R^N33#8;+ zWh2dnBq*-Qb6TnbM!<L*`tPb3qI7&zNILj>ElR=ce#10*FY*%A5^;0wTOlUd_a7@Y z@zNio9y$|_JdKhr#8IcENVn9;z};FLBTAyAh<{0MtG$iZ62E^*z}6?dB`OnUa3IK* z>wGBC__S(##81r4amgP7X9v}5WlsNUQ+l7cNpQ=O-7)F8lckXiIteu>V|SLs@Uts` zUll!<dS7L-IBmN*Wa5-y83|j1zlNqDa0y(nzHSMfebUY@1+FW@m3GOud`nAtL*-U) zhU}$5;tC*><2Q2nm-e=Wxd)inqdfHeiz;6rh4c`>X>Gawf=_z58~-IVxaE6pH^0Bt zxBPZRQ=rfu(sSv5>2J$;a5VSufOr6*Jiyx+-~92WTmZoVc8q~%I0$j}L$5jbVD>`s zqffi}L?bP+*$ns)wy?s|#Q$c_u3Np?znSxq5A9#f$q7gDH*>zg1ZEcg1)l(+DBuZy zW8s%dSNI1D`!6TpcU^q3hT;3bg=weZcb#N`{Qe@^S02&yJMk}ibv@#QCBgnfukNsc z@_*B77qI^9-}L%Fe<3?um-yeK8~<a}G&)t=%yH^h=Fo2(J+%ZPnvWIGu^)oJ>8E~7 zp%0e`ML$!J1-kaHBmJeog;_4bd?|1g1{=Y<6n!Kj>v8+~XvWOS&nCBG?jG|Ggt&-> zp6vPH)u^k$;aZ*SX(bU8p{+tzDTsydVXt#v%;~9i%k~@_wW{Z5JYH{(NGs>i6j9-& zrU7b3{4WKr#G03@iO(-?7Z?dZST^s-(>cG2I!`gj)AUP$6J`)9<}!`#DdA^))Zij3 z80N=-72rNQlB@8*R85Bu+<)H^RpV)%Ju_crq}`2suU4E1M~nd#JqyeyBuM4qV7I%P zd96o0?8i4P0d#w`k#`w|N0&$_4Xr;eBBLEVqS{u(-ghx--u9mJ3IL19s&7KL)_g1z z->n%h_f)_Qaa)<67NJLB#xo@juC=__EfaHVLHLfIS4<!*;NdA0vMS3Q2#Xo5o_%i4 zQnebcjBhnif8MmC;JONON-M#TgEOik_dJ~1*p7FJ6&K>a_6X#Qg$Fj=jlY-WaL=de z(@zY8EOMtJ_$9&hPJ;+OVq&yql`r7oSo6^*_~p9n@B_g1>=y0Lu<O7Y5g-K0)kK4( zhUyXchdpJah4LRtWhc578;t@S(A;<u7`|E;WP&7a4~l#n{Sx6kG4~-QfiqorZh*BR z8DiRO$-$efd9BuSJ(RBbnrI4AeJi0%`Prbn88w%j+MrhExW>Lo+GVRxIln0e0#n=z z@}1%1dZ=}_*c~rK!we>}oDPB)@%;Lc8gdKLN4?_7hTTlg^FwjlYLSjo!N5XlUjv9) z&5an-fpHN!EoyZW?pdX-+(nk<<?2X4OlF`Y#o(#7=+1PGncN{+Ym)>`-e=&976h5_ zRU*a`zdvt;GGUZX4%T0@o`zVYJ98{$!24x3T0UJ@H04W$qs6IQe0I`AVgL24jMWw4 ztvwl2<6fwpY=<?P-gKl5Xzq-ER()ZyQr~c5*lNulCyd$_n4GXcKEpd_igJD3RXl|< zHqgV~rFo`U#3fGPH?Pc<6)vl&+8KSx@XR6g^V>IioAviFpm1zdnJ3#{A&4Kqq;F0_ z&{}}B0`T)(Zw8~oE@|zq{Iu6!+=&}1eV%V;cku}5#`nQDTz=~2a(n;A+KAB9#pbz0 z+2_(p<$3t-|E>d9CDiLX>UdiAL8HrJEn!>};i)fu)GSNqC~FKy64=;`z-RJT(<vS& zQ>MdXTpz8PGR{n~^D<4F$CS_xX`o;1FB)%K(>nkc1}X>L1Km3i9-AoRK%34Qh;KFY zlS_=!UGMVVa8T?jZD{33(IX*bt&)JgSDO}xcG#=)Hx-|7=3NT;I?WQ{T}tP&st)ju z{bXGLjDG+knkdzD60f4lma31-D*atM(%wdcQqsycXu$J^wQd<3;o+hBZFgfsc|>jX z-El@uVAa>aQ6@$6hfx+Ts@wGmc-q`|sZ!v4z^`^~C2SaE4cxV2t-XW)9XbyTFckEw z4PFk-+U}oE^@#@`>LIIq0FJmGc)`Vf|7ww&G7N3TIZ(F)ZrLW_W5i|!^N6(IT+`pb zS|qBy)lMp0l(1CeE(PtWYW3%1&L<BoMdcxWWO|Sxp!FtKeHD6?$C4op@C3kwD|&kE zjitDaQo(jjJvq}~VEX9A=%rh%DdfSp+eo}j-l`?4tKJb=K`~;pfpNoM?~9LIEGCv6 z6E=19644b{v~So=U&tlY3jr;26u_BR+2RF`pfw}Q@T=)02vGhc`QbxP%#+SxufB3( z!oUu_nTAJA40b@nqn|4w=GyPU_W?`FBeV*;!Ibv=xz~5l5y~UVJo5CpbOvpz56A5L zR~vV!q+c)FP&MVv^3mvof6pudOI1ogFjqx*x_Frb78`~&v?T_Sxb37l^y0Y0kO!W2 zk+cwwG6l_3jlnymL>s*VJxWX61mOOXOL;+F>O}>rd1%JS6h^*~i?S-=#-`)RvGN4* zmJiRqjAi6!#f;7<0R?psKSH?}u`>Q1L6jpJ(O+umKf~)VwH(#*7uHVwhlK`zPK^H) z8dSvbOZL;j1zq}o;*YNvYV!-RtVe)DWjnqD3Nl#rHKoOlgug!y22B6L;d0Gnwds1) zdkCp^Q^-jqwr!X`0YwrX;_2`GHFUgx0iTEzi9;G~q>t|>=;BfDQve~!9ZydrpM)^* zOHIO^L1aygG5kQN*4llNF`46_m&nl+Yxpevpm&cMxD8qnyEDl1j#I9Lct&@5?Xh=; zv3*RcRx6Ay4r=5TiA$N{z%Lx6QuStK_GA>yp;P5Gr*V(;0vWX{QMx**i@x!(dtv+l zdY$zjk-k+A=l!p{@>ha1-q-b?%P;=q@ceyOV%sggYRrUR`9AoiY|NK};rtt|1$wq9 z*l_8@>NVmPfTOTFd~k!9bZp}Y_B$rI$3JYL>!0#}@d!hAp7F^sjl3K&d1h|1OyRW{ zG_aM3VW1eWeUE{CbxE&nBFy$QnIVf~mTEjeEn1dBiZvcZS~Zd)*0VCUqbPV5617-$ zk}X?f&{Lxyn6V%eZ3nT_VR#S98l1s&mp(usTjYcv4M|@2Rl`z-Rw(0J+_mXWVds#0 zWPbUa-}<e|u^mt2MC>r9OMTDzo56d2{^Y#xpYO_lt|;YCe%*h;qLlxf_kWV({|kB# z2@>Td__Z3szyJVn0l)$OS`mL&BK@Dmgnyj>D!v8$s?`7bf&bpGj-(lj06L`LOE3?x zk@v`zMeBl<4Em!1J<E0ALic$(X@PjB+jG<ve2r0k)ZVc-5+9x}Tig2g<CQJ&6<cx! zgb;WLKBT(6{K?^=kLQc*Z-Wf-bt;g<Vz9xMx2qWwm<{7?g2mgT->QUDBbgS<L?xtW z_=cp&kij2|;@b=tshy;eDS6bPnZoiDPwc=(NV9sY#zQxfE<U`fw|Lj<%3J|u>z+>d zmMK-`=57$Q@aLG9BQukIjyW8y0(C+{QF+LzI2*34Ul&`k)I{(_c96f##OcAErr{~v zNh4I->`X?J$&5Lm8N%tH!y%Fhonh|;p+mg@?PJL}=c*k`S*w&{R@+Bob?G)L6|`a# zL>e$BgcFw$+=%Bfr9vSK2Fg>JD%AGi;dlywoA+wTjFV-ap^*g3c;`O<^XXo~0hev> z*PLSenp${Y*ME-8f6n;+aTO|p<Eu?7KnBa;yZH)otP(U4IZBjn@?cmU#a?%L`&6-i zP9(T07@&3pYpCE2XXs_&GObnd=7_>&&S+-(lR`t$XRgL*JLEw)u<y(WqX=JD=#R5! zCmJx$Mp6k9>5_PfF&-!s^9wV%V2PcVpXAQ2_&OVgPg;m&Rq|`4h+Qt{U1sH7>ftax zzkL<Pji|p25Odk<(?cgRi?v?ZB%jc#Gw?M=t-P&veL45<TGM~d{XdG+e?|9`X<b@O zzw&LXzH+<q|JT31l)jsdlcU4mHIjdS__Gf+DD~QZRW^4r_VJqa|86vF54)Z}{whmV zSoscto4X>h)0-Srh*t8Q@tyi9(;K3_E-MkCnA;aNxnad?<xyp&{<fG(Y$9orGH$vz zOcVmuJZaw`Yg%>;iZovclY~J<$)D75h?yI=+uMo6P}@k=Qq>9?@Oz$N@^lnEgR^#) zwd=^8IB~0Qr*e^miQdme>*8hA9vY~n$BsPBI<09Molc@Ijmn$EsWL}RdwmVK0VoqZ zpU#n@i<v#i>B1chJ<GdG^0cgPO~rYJdg(Obk>D!+#%US;h#^w=k(BM_`wDi^jPkk^ zt+5Wq0ad511a6>Zvoxt~>mr9HDfvx^kK#{lIdv`SKM_Q?WYPl#!knL6W(F|@XBSg( zDvl2hLT%dIeEL_<VQq1-!z)(yJ_-?CxpPz^iT7$ugD?7-63X~DT+5PGm0#2m<pDXF znv6I%bpWyUi&L=eIJ=$aWMF<`FBosda6M7&_B_fGUWSPP(_#giHSPuU+|In$expj3 z$dJ@Y`bG+&%*C7xQeNF)uI+)Ep_~yB8E4-lIHig9C0=To)zh{6uLkw!Osq!2{=(0# ztr?zmZv|uW=wVz~-mDUiGtJbp8PjY@{cOOwngv9`=+zeJwoLn#0UH8b`01JSQJ+ug znqJ!1Y{r%qm|%MlS$qj}Scw`e!-OG|Nd`$$vMtPn6=kyd8d51w37EO!&b9XGdTaZ6 zEBBqRkyX^lp?G=dA?Txs!`Vy|;H0HT4h`zwZzN;I0^l5sDMKS6@L@^Z+ZIr6AaJr4 z9-i7ycBEcr)hh@4^B;4+^FN9ED!<BCDWL!Fv-A%`_N!`Jf8~LD(@t~3oz$x?#!&xO zGp&_L9{{p8n77_E4{HikAd;Nb@Q46nm%g0FAtgPI%_s2KmChot(&>k1=iM9^h5p%m z>5MGQ99OnyxdUSJf<r*H>o&rIcv-UVM0+1Qo4TKBFG8}BO?J6H(7f4!Y$$w-zHwVA zvK8=?KHD{D(ctWrf>JDK0h0zippiKRdGU&Z)tly;^h#Tv_v|smJ4o_?-NP-KTeo^F zQtR4M6TTReG+wR(u$w|6Ps3&h%SHeJ#Jb|1o~RQwwsOM_HP*Z-m))SnKh3R|S(N*Z zF|KW#uJKfYiWpzS;2w+|#ek;rw={Q3>3CjMHshmb^Va+sWqIY6kA9cAFxN(<v9ZW7 z&N&HAYy+$8=6GC|h&p4MQ@y&KhX5;O7jNEqGvHf5E=f7)+OA`M!^ELs5bGZPPn0SI z#_acexZT+3k*<*o{sQsek@>bsD8>hVHhd^eCsEPJ9Ac!W@WFj#;-D;Z`fx?^j#}w> zk*~daTlO-2`tf%eWLcE>NgsT!L6LOVL?aER2X@?wZSq#iRHdNdXs7FmhaLs3{_v1O zybR3OBK%lUdYHdcTw}jo5x}adgixj$gM_?q1{%G+tK2#r|6=i;08)0(drVy33!I4E zcc8kCnE<Uz@D3UI^#(>EN}V*Opy;10S5L?jXJ=wzmiG>2(s=!9DIpqQJ8koDK?igk zF~Jj>zbvI8P#~XP7&Yj_Zzefe<~JR$x1SCQ<0G@!1Ei1xSQBuHONRE`GaYYwekZKz zT2NGJZFp_Tvg<uoOwZ4#fEaF#-rD`TYb?%ObZuGJZCyJr)E4vjym<jQV}~$!ogg*D z5BCWxwMx51G*|k|-lW}h#GZ}4BJ>z^a#BiCb;43&Q6~LIkcCvc$ZBO(Q^eF*7IeeP zM$fjzK!6nzaZGa@a-S-QK|UwmOgRw!40i03vR~>E%<$G<7ulxt-74Gs^#)jn=!JQ& zsgm)OoG0{yZPf{=7P_qM9_+msY^~c$u0EcRGB5R<@XvAQSKDgMX$I0G6V1w8<Sw(4 zAWfDQ?u8##b~zV~v<v7lEBY?4YJH8%^V`jiuIy1I*UGf5p1AiS?`#)EBepA&b7mZ& z)ru{)+V2}WWl2Ag12QobE-pXbE<P@*qrYFdKP(KwOzf}D+v!W`7v6wTS^v-kZg~-$ zpgB+U)rD2Pkpan+7*{g)28u<9l@+#ET@CTcjQHnb*^fxJR)Mc5p!%QKk^VeI_bW|U z&(pzm5njV2vzMr^)MSWEsGQN98=I>dxdAL)TN5CxE^ovl;omoI*}V`&o)>PHgyO`u zxSm~)v)+0wKAm+`QqI#AN%ktf-I)2q?<(yPZ<aj0KM;h{&jw#*D*4wVxk&BaKHr*} zGR!D<kz}!<eM8eCB^n5#XMhlthEhTFA|l$gZAL630gbl6JqY&%I%|WBAx$t>ONig) z(d8!AJ#!{DrsRiZ-W?1eQ-KG5Kg~~c=Sz^~PY5^nwfoK6Y{UU!DIIaxlW3wG&Gxgm zo?3c9&bLXRjgq=KoW6Z`q9{IXjV#4(!4iqWAr|Q|jqQx~h0bL!YBjLC@G|7<pKfH8 zRf6o4O4E19nl4ShsQrMum*H?Xw|f_(qTb*_z=i?&g&VG+($%_oEOgy7L|GezgOmE( z)@UWjjM_$1d8{!PmuUxRS-pgGbqEGhjWUAYA!2ptS+W^j^R`W_Xo47#xh?~VQY5Ne zEWME>`#0PUoM*O_rH7j-p-m6Ry|{vTLRyu<1>X6NMe4KIED#3R4^Dge?a%|rH{sU* zkG;2yj-yG^g~iOWSQaxgGc%*b%*-r{87-D9w3wM?F*7qWGh4UqnYlBw`+jHl{@wjr zr&QIMm6cs_A~PZbo}3kIDW`G@sYJMkSN>4r#+39A4)2h?9t2f{fDv%;=lOLRaiJel zj*z{3?1)U8r^=w!$p<Y*uK201?wBZSH?hC$i0J!-X&HSlm}MCnq}(swi_6Z==B`&Z zK8T!F$*t!Qikk`fS$y3=EdENh!Lh=Cia9N!Dx4zVH`JWvnHG{a<&HfgD1WLR7YjeQ z0@AAz%?+#9E5eB`fJphz8ey*Dh1L^*0a4-pYhm-Z&^NVhIRJRpFMf+leUF)6NuRJ+ zDv3p@;eI*$n?C}PIi#D%>@M3T+ot!;o_%f{+?I50G=kBB6%|USI+yo$xZv}9%yMcC z>}}OA&QsbajlH^%!yz8oWg32_>A^1|uiz7tLj8`U=7_xwuKHyEbkqM8lOj24I4{!* zz=rS=LCh8X1W+oO(*ea<N(u;@GfL<py=9r;;Us!MZTj81ZR_wb2~KN$qp~}rEaOI= z+5@)%j^_d-CL*AIN&7+`EH%*SaVo%3(Vg;=^kBwiRy;v6yU@}|<ltvAPU94wvM|@^ z(FakA73GmA%915D?k-gQBH9u-9%?!g-^dAQZISG!yv^6nsH@76-;nuk$*|^1XvSbb za=3aFih?~LOk)?Y`)!$ZF9w#MVKzCux_Y>;Ai>-aST#8v{fg=~@1HqD3x962G4IAW z^HNzQHgT$kJ7D=Kg{8!0Ejtghb?O4wMT}Y5+2im(PGd`3%3%;D@%=FQ8ii~iX=Ec$ zGOuBglIB(eMJERb*I{hHQ>EW<k_fEqnTHYerOmKy91B{OKFfp-y9rDg1$1~elaYl` zJJ*44v>ZeM;U-nQ9Pd^ka>pP=Uy{06cwxyc0qMXX?R2|VVL)0-4}-9rNf()VhIsz+ z`6L60r4Y^JD04RB6o1kSTE>O}*MjlaW^mCuxYdOXs+~Og*aX}4gK;-pQ+N|O?7=U# zYgc3ZBbUe3nF!xQ{Hc7Ps$;sco+7;w_@2jw5HkjJYoIAjNPDG;eTeJrm8bSEF27J; zeKsFop+`|8CJy@1k|tMA3^KtqQrWu1o^CTG;31nQ?E2p!vo<?5(v(v_q7XJ;*7FrP zU}Cj8^4+o)GF&kmUpg*|=P%vFUbiK?R!=|sJ<jGceQ_8XM%zDlIV{UK)f+VgDt!-j zcN8RPaYo%rKUwOJP8AyrhYn5}Mij|ZR|8FT5Ue9^Bh??UCDCgIDh~RfVxOf`0=c0y zpE3919z*o|%VD$A7CM&(sA2nW44Xg8sXjHGnAP7pS{yeL)l?Bzg30@GG<%p^n;;Om z)!YSeGfD@#R6LC&wQD4ZSNaAa=frms;fUI^zDSO4Y!60C$Aec>zJy(mYe!{871R=` zi2>aYk1fI;N8N8{wrB4x%@-zkO4xNE$`eCNt0?;&?d}h=u#8IesXMfKfRQ5;eYK=z zK`Yi-b%Rz??KuH%P~Egw+k?%w4?xFw!>gt~2^EZcLZeGNeA}n|<=sN#<k)}fBARL| zK$5E={AQ^NGoKf(JQYL&qhJ1LAmK?(pw)3rM=<Lx2is>4P93SFd_$dHPD%PDSI?f* zSGW#saqSCLO<YhaR+*kOBL=et@WwoI_z1|S2i&;BHh42reoY(lUuG9>=bvKPq&3r! zodq&#AO{;*yE-+AaiVWb886jt=f{y(z3*R<t-46B9wlVeWbO3|6Z>rV?5MoOT_qc~ zsTlX4^<Wqgj#JMv&Ro%DM@&Ca7qw70AyyOCR<qh!pB2C!7vm|$ks4sG%Jgzb?~riL znPLX_vbb`R6Ka6LOGA<t%v3>F#id2@N;;mWxoFEL*~)04;;5iTU>=VLVQ3k7z!F1= zY%+jHy_+)x!J6>rah&&tu5GrgZ+6q@Ik-c^lkQe6q|-}_uWqHom)>dHQP#9TXAn@E zYV7c*!y03}(~;pEsK+o_#LjFu)B_D8OrT;_M|1XF@@U%Fclj2`|LB@Okj|wE?L10g z@n7jl59<_fsaKt7&Y>)U7G;kDEHpmqLDJiEa6dqQz|a2hBHjEY5#oReDa#7AYY+#X zJs<1N5C&p2)e+x&VqeHydz=0ct%8<3Tf^?ZXbD2832fqdcE2W+ug6Cy&7L7hTgeC> zYmZ@NrVvNk4oj_lRD18H62p3?kx0X)W@f~y65}#e^AN}&Jt=9`jB8Ub&Mome%xM9i zk{|tOKI>~tzujUEug<*Lrt=EEbya~!3347=vd8Lzc%J&Y!^_{z>pkZKPTLC&6gUV} z`TXVk7C!HZ-ooHhR}GY@4Ke`gh2UttwUzY7;uPOG6KGZCXV;>JC4qfK58{WGrck80 z^Ao!?9r-j#>&cIlDu@mPB+(8US+Wiq9GRUXF6o)Oldi^Y6)|cEPS(&H`;YCz(AU^? z1E7;(zYACM75V(#wdNj)eJvVW%QE2l?wsWxIw(^i+{4_cKuM`3Gc0`)&_hK;!LzQ5 zmwMiRx%QHr?4n)-)TBZG*W!@#PhgJPIzSv^b^u_6!rD(0>LqWL<B4EE2^ovk+<_9C zW$XJMtedRZWp^5W%fg3cxfPIke~VQ#_J;TOXYRwkhDXF?mwlSBIMRH|lM9a_LKY(r zNi)jUPOjs=p?H{CT=l4gPZePzkiAWI56=Q>&z!n7Esi-5NuZf|LX>>=I%#MH1CFr{ zLfz~pc>^%Xh6e{AeqUEy_8)lYovpN$=Jp~F_v()8$A%b34_I?Y(2)yzU|v#0hfTDi z`HQeIM1-&seY!{+cKp?7r;*}J6RF%ND!ZBJQVrz>ud}Rdy%Y4Hh3=y0<iNA9Y8WUn zB5UkNa5+R}sT^^{QB9Mb4ahD6?=-pl1NT+tJi+!Rm_!Mtq&`|##F9sb%NbWS>UJE( zt<~B$k<S}(nzb@4RT^6c?G3y7oz!-*Gy^SHlio5-08z_WKc|mqTU~;J%f)qBXl|JT zW6!K2_$F%<L<p9kR?Zq)*t%ud-p@(M;fxSPSgK!j>8EeKM1pns!vdC2klcN7SHf7~ z-G2tF6a~%4d@qoQlOePjjC3loHpekcudTTH`XxrAb0(gh0YqyaD~VF7^=tOeM`LtB z{*xXdYcJbI-c(cYz(D<`f;0QdrF!ee2A78X1j{@%G{&W7V2N8s^r!sy^r-3eJL45^ zp~bDP;}x%#N&?fVBkaNOM}-AnT(N;Fllw$l_B-pqs@jK-=yEm5kA5jvPv1`@UGcT6 zvOBs{cJ)yS91nW2=J_T|mYgLcnH(6mFA#F`jRi4uMVc(*?_ZnkON5uR1|KXcK9cD| z>IT8&w$T@Oyd!(_6&YY+xTmLcHznH%j`|ciPJT8qoj{UbnIV1lv%9n}Y02}KOi}1< zTgAV;u=P99{dNph%BS_2dFfU6mSehvL2U>0AO*G;xShqnj@W4DYQ}<MGe|)3YYEML zMsGas)f|akvkrerNY`JQ4a-67UBv;?&IvFoi2e(^86(5*VKD|k*P3Pc)G5C6x!gXy zwZJ0Tb$-QSeThV+u{Igf{<B-Sy|qzWE|$;=w>>N(NNgSX_LAg+%_p{c==jK|rNhBP z??dUc^$yhu1;L~VFnss(il4&YP~(l?ytg_sJ~w#c%|P6OF?S#Tq%L`Q2${@2AL%q5 z#!NA^K<e9SjfK>;j5>SmB%>U!*+5BfoT3dHsrg#M^@tkGFLajqY=G3~8^e4t|LcVC zmtoBi6z?bFG-caTf(RyS0>3O%CHCn(;XFxE)*y$CCS|4{L6+kqI6^;+M^O445UA}^ zdK8+9_hl3<Np*3lIg?QLt>q)ag)~9*JsV;V7b8~2WIeXQK4M-yh<AQj<~ni<4V$xG z<uL#7d3BAhgd>_K(yU6ja}K1H)U&C6$bf&t$yg~Z-See2E1I2ia(Uiwkl>`B?)(Oa zR50ukzJQoEFHued<myE`7|^~L21_wZr>45t2>;3Tn+5!<HVNs}h2fTuhM`IE4FM<= zCfh_(DC$BuAQJDhE2ujzo&$Mf-6~XLAVrMlLXQxtja%=?4mSQ;id2RXm7{U+*CGnW zN+#{7h7uVZ)D)GZh%+tBgqbfZ0YDgIl2rZ&No~om(!?>fTp}h$Xfhcklvpl~-7Dxb zxMej~`U9x?<*1C@p?1lbs-eWht;IjWr;C4Dub(!!c4q31sUZYD-+=L1l9M?*K&)zv z^$z95vsScD<R;kdk)4m4Scl+n7>q|dm1_S0EduV}c1GOIW8LkX@W+D6M|^k{rc`x4 zJ-J!s&(nFLSP?bAz01qupQc0Tm7DtcK3D&m-Lg=l?c~+VpW4Pp!|+wNeas^=4V&3p zT+rd&Y}W0Qh&qhU0XxeemXUcxi<ok{8FBa8<%k{1Gi;2VDWNCNY!gnQyk@e3bM4rn zKo_|QJMJQqD{<Fl(WA1%v`bO<qAc!DSPnf}gly02ZVGJC(29$0-=YRo5yi5_Xz>c& zD(01#7*B^LucsEytcLywVOd$P&aURxw;Edr5tqB|VK8cMwXCMD;~1P$(DfaThDrve zdx+859s?jZsGny)X(gL`=i;hl35r3IO&-|3)(3gsoEX=4XN=BVk^ki|`~oi476=ed zn*d|Me>n{QfcurJoZGH2e0u-0SnIL?0fQ>erE;#IszHyw0FE+}_${4!^=At@7all# z5_DFf@o|)<>-lSZe0;noS|&Q$SH6LNVgBLNjk?wj#b}rr!E!hX=I7aJ(}!sx>@Ee< ztr^fHvs<>k%AVqw6X`6}XlR0@Z_i5rJrNZjNHE1>L^_Qj#Dw4ln=56gUy>|XIs`CZ zN9Le~tmlw$4$gbHOnB4)@IKd}071&^cp^0cm|InK+9%ku-vi0eW`TC)@Rgagpe@HC z5Cti-&?t8bf`(X7#hP=H<s%rmcTc%V%^XX$FM2&o6}|_gHFE_9TINeRNq4#?ZpH47 zdP+fL1XG<uB}|ibE2LGtL$D37K`7!Eyi$zg$?wgay@#LWbP{kh&z0Wn$qhkkHRQY| z&@9WTj;oJ`=VY_)fZS<3>u%8XS~cd6QTdt3G5UixsAXL^tr<@q7Z67K&c$+{D>t&_ z`(nEER4%SwiYqensL4VoSvU=fgrAXgM<@o`WR{b!Jk4?SUtiPg{j?S%T3;FCjMA5L zm}J$SiCXb-XSYRm@s!ml?#+7MM%ZRSz1n(D($=nu(%74Cz+1Hav@$l<s4ti44CBE? z8sU8xI|v@gOD=xfz|?rkG!emLa%7-7k;YX@R_neXHh6)50#gC3pX=l;eU*Zy2tikT z^5&WLp>B|A;m6(V@3)M7&3h3eK26bTaW}Ad4#AUJjQrS|FNWJBo^`}_@!-kMe<GJt zp^nR<3B~N~0dN@ZKd0;);t~t+w(;0rjrYEA)QKC=%s~?2FHV3Ssc$VW1(V#3j@<ab z{5Ch(a%0S(+<l{|XkTYN*tYvi77peCb;bj*FeU)o<iBL$KhE$dW$E8w-Rl@fpP^jO zrzEwt(1;+D){S?`#Io@GbIqlp{75ZSr4$JkEn^cCoh2k4wA|yPO*zs%m@ggN9hN1& zTH5OTPz{lnAHa0zcUCOX3F+F<iAIUaEGo?rqW->}%<awT_j=G%Aoq!S<)lO0KUZ6d zS=-Z2NeGv^rQkvYr*dmkO-qs&_dMoPvM;1H<<PP_4{3rL%;Wt7>%C`N1*V>5V~X}O zLZ71`@7U$YNHg$wJH)ug1rV9q2X}%UeDyv2cTnX<WN;-FArcG~-o6}Wx8&Qcl9!eA zXwB7BFXbxQQWzxEN7mFk{+D`p6&L3rzx}rE9~N~DOd2^+>2ST{_1n@yQS5j%bVCS= zY8!aNCi_Li%f{vczbvseTzWs}I&tAa*@&pxJJ+Q=u64%2q7AXP*n-?oEu|%yA|g=2 zg9%sft{x%~fmw~{+AmT12Pb)rT{ZDG;9(26`SYBXwIv+knqGi0FFadSlETP^(3<g0 z2%aY0e%>b}C31ElgBQlI8ES{bsR}Oad5*RNkA+0#)6xha=!-RO9U^}==1iyM`yR^| zMV_e0lyQ(x!a2DqUzu=h-T1~?9tZn{a_bYp+uQT;V%uTSrU5!WImn!QZmEW{beFR< zGIv6+vBT1avlfQ)T98t8k8j~YV+{7syg<`POs1<T&tXJLAj=X*RSl0lxU2Z~qXr+3 z>0AE4<StS$cldh%cO3!HEB;IF`s3j1`w!NvdY1a!f3;>wunb;XvlqxDx~F&aK5+01 zPq+%{TWXLKUXyn&J^HvkW@Vgq8zeESD3#O(gt}MH4u;(nhcWwp-k~2&)b)>_2^tJS z%M5XsMdQot^l>5}i|BW%rBlNOhEzvI*-^1#yyijs!9s3Xg!HXfQ)wvE+&yVgmu48= z{%~yd{83z2jw!~feGNj7L=t^^m*~s>H!E=>N@DCAbqg|;Ub0350FX{j%~2600JX-_ zCAdhzqF$eIha@!1q!3H=Qj(4@XE}ngG|5HLkdl%WonHQjMi{I`yxD%Rh$h_3PCBsH zy&wRp&cg!!lK#oXC_yr5Xsw(8s8k5f=SxPB*@O8H#XYusS9YmM_9wC9BKQqm)Sq6T z=2Z3*Ruv}n*FNo$XbPbq{=o7pDAQC->ygzUJrKQ9CDax0Fr8J^dSydNRV|2q3Tb+9 z3SBUFa_WI9xuc|YG>$@&#<swT|K{{V$09n?#GZqZ@wne=*8{vPDO)CW2DZa=ZiN(Q zj?pk(n`?B9#THdY0!;F|X;d!wcIgG!F<+$0W7?NPolsqz4X<zCYVb*^$9heRi)@6W zQW`rE2+Kia_tm2O8aT~YtQpMZq(`PWiyqzh^%_?Tp)n1=#HibGjf7{0E<L_?@V&_~ z;q{sk^>ujmc1ty`wnB9KesC@toN{3zgzD5!*56xzveh?w2oOMNoHj#uwo^9xU%K`v zKh4<)GMo`{P^vk?wr_?{j>ukrJX&6|t9y0VrsmbD`ikz4Zdj(q3&0ZJvGr}LiC98y z(Y2^PqS3YZ)NqkA%taw>22M|pWj_ygTu%=g*mYgLcIfk@-v{V(tlr88OuKu(<zt19 znD^(BEhfFT>0Mr2`Zlctsl5{JU4zH(%|tiEJS_DC5W#kP1Pn}Wn2`^E%mYENo4Xn} zfxS5tliKO{tMsHWF%#ob0^jekR5tiLg)+VWr74R+v1&O3Fld?qn4SNXQ=H?sZeOpe z^V=!zYZk(7-sfa_xENC;2ia6lpL-tX2sE!|iC9ZQ(%)c^dTh}Qid#f(K)MPa40Z$L z5w~}L(e&!GQXVURl8_rgr2~bxyB!~kyk9Z|<BPHT$bJ}zL~H{!35A+D(432%O{3e% zksNQjoWNpe1kfrz$73E23=Q2nr_UxF5ff5|x>*6ViY>);k2Io3e;p>fy;tTc67WHt zb}ka#@<mapNs(4cN_N_?yeQ0Ky~E%+-gF)?S*lXt0a1SXVHT97bZmNmi&jIdodPiF zT7xL;^RX`*6jJBm>KIa$dku~oDf10Nq7aTdbTD4)krU&*HzS|h^?EK}h{I1BsLl}z z6h9j^XAD$+Z<t=msb?+JvP#!GzmmOW=Wg%d`}(M?G+Ih~;l|Znf0!6nE-3v)F{F~i z$NT9;WJ-)snLMxY&c=~8h3Gv88AD(OTWccAjy`DJWMkMD_6k#pD@vE>bQfV&$gPwm zJEqWA+K&Uq`-vCBn&a;9cFI$OG+^4E$4ck>9YMUxinf9xkyltvUWtRYM8jO6%ejuW zq75ZeZC~Ah=NFg@PszS|&9o53M}WU#ge~%r>Wji|4(;?rosNK#T8&(k&Nlnwj{nv4 z#ue_%6OjKkpTAR$B4nTZ!vMy7<=cjuBKeKpiqk^VVFVhMXiCOSa;e{H8pACRy4X$; zrr#Qp34!2hvD_Lz`-$I0DJvXhS?{5}Yr0Ir@G=314=>)>`>-(*M4d5G$gVLLC!(34 z{lgD@hZW2IugYGOv51?xynNo9x&YUPAL3+XIML-we8ZvZ+QNiL+3rY4&%|%v22~L- zoZ-~jTpEct6xVPQ9Z)IMV({l-3F$56ney3(<H))vKse8T_HD2_qvziOYGwh-2L9id zt+sZ~CQizKgTnsj^&e%qPes-a;9Bb-z6M|=ZwX{w0K4RyQfsUP)K954y#o)V$r9}# zTC<b9y~Lac2{g<<43IK^uVTLxeRvk7*P8k260HW#%R5W~OzON`T$=OfrhYj=;qbjI zq3MgDAf)}B;r+{e%W%@e7SscE%5A{HMn)zhxn<m1mN_Vlla~$YqkBCXHSI^RlgTK$ z=EHZ%4GOM@)s(x__fF(1$w)}(ks?C$FBcAO>g)ruvt!bQSg;6#eHVUeUkKT2tVZ>- zTIzthmDd|sx$7Dj-z!$X%zP`xB#n^%6jIB`nB1R#lGppaUOjR2*4NIYdMNr1T=Y5g z%7hT2gPaJw9~bR@{OcD*J-lL5RG?Q_mTIZd&pCBG8Bphzw*Ems`>a=%)1uM&aTT#S zNulp59`c(iTS~VAnF$Oju0LkKi$E{T^&vvUYis$&&ugUCPNyx(HV<(5!GB5E`ZPxb z1n;n6lPPaql)yoFpSJdh@4^{0a%sMczwL4QHi1an7Z~nX<~T~*CEG;<vAl+R_!-si zS*3m7;X39NwQ)e}sV#>ezxiIDvgh9E@*|PP@M-?QQMUH%n>K5y1M9avW(@+nHN$H* zf~PQ4HE*#w^BGZCr6@P~`Uh%ub{(*8>8QR%M&m1FEY%EYkoPNs3cSDMm-}i!=FjgM zfcil5cYgT;7%pqz<ZR;jZ`kR7EBYsbdf&o006`rN^6FLp63JOFv%qF0hN~k=(4c6V z*FQW7F?p%mb@1ka87B%NV#y#!`llSt`_pJBZcO%WoOjM`2P?`AOCXr6jf>qEXuHG1 z(9a}%6#4V|@KUMMy)~^}-0eF#LOgqIzBiKPhV4OgLC1<vdTtz4*(=bp-m@C)rAR52 zXo;nps*!m^wMxyW*b20kWaPBnS<YvE-^t&kZB|))qU9Sqqs)7v(R&a(1~6DxrNc~; ztQaLEW>4Sy#oJgKfgH4wt2iv4BWi1AB$ktv8%Yl}t0(Gmtjk%HlIudmhNa{*B~1r# zu+vsT5*rDXM>Uj3DOS@H8w-uS<d(l@9(IMG?`Uf0bh`O|?_$@b@zpB*>mWS)WdC<Q zKp<$C?0=9r|Df}~5d9B@&oTj6?Q8%PTgbD|VCRnZ6@J5FS>1Anl>#q;TwXw53T+5q za74M~B0+qTb$)vtj}y;umFi6v<>tsvLxNl4C~p2BMk9+Vd%Vn&Nk_Aqs4DG&&iWdr zL5%MjChtXleLmf9Mokmzm*gY1h@buHAxwQ+RCn3s_2r?=`5{3ilL^#$Pc<8EjP%f? zYqesBbX?-TfWiX7<Tk)0sFzgB*(^#MkkNb2m5k=hoUmuAlig6FH+Co~lZ|#wmCu<X zg((Xi`k+2qQ2wp4Ho7rk8fGqR#Y>he@K=ALbI9Sb5Z-2WT~UD^ngtUMxdj#7lA-5! zCL`IIubk+9rjKV9j{;E>hb#veXoE~Yq(~H;RCSr87?Y~9>l~E~Dc63@zrZsmU`0h( z?2&-(=G!VNM23%g)1s^gp1>xNypLy^xI?UBWqgGe_6{7ZG+zn9sTqrMYq`F;M_zV+ zzC}K+Y!z&BP(DktUOQZOP;sL}{jRi&l3sm|DTU+BOvScjW3Y3R7gj|@OrPVFO8NR_ zlnQjKMH~CA5Ud0De!;O;fy9-T+cNq4<x}!m)vi~vi$1|>qh|*cc=ch-`J-jL&4*-{ zF`A!T<k-)?pT-PFd5Fe3vF~zVb+c>D5dCsc5m#K&Q)x3KIH~R*6)!ARI3QnC64hw1 zQZFapr?5f*(D86SZM(~Ab65zpMYq;G^&!dZe3u^ih&kNEjf-8T1vK4{Q(O954pQhd z>Okcy7PVC_f)v_Rr1n*l0Q}{#h|<(sa)<bNY!w<H_{Ihd=<1ep6=RYOSjt8nY7{(5 z17rwgGlQPWfSfa8t2&(elTQ;sdM_aGJ6eXt9=8Fk^o8TF34@~`J?dj=m_xYbtlHOx z-{<n_Tp}5(o`N<DRH^}J2FAB_S<L$2%eo}$5-x7=Xf|Ez-P-&58okXqR_WMPPA|v1 z_=u-wOVp?r6wYg->z+L^O;1`|BES(=ezU(G7=ATg;)r|8eXfqSnr|_hr>}}cpU+C1 zPr16Y%l*mwLtndGBl2Zq_+|KI>Aj2Qz@6$qMt?&%TD{C#YPmNAC)F<COKMCfPHI;L z6zE|^er)wQhG_QBdm3_k(Whh1j-T9c{FR?yl4%2DPrpnwMe#PZz(OQ_P3zTOd&6Fg zFBI3q%6>qL*DZ3jX~oLw3g*sVKG$DVAoV{M69r!9$%3ZZ5bu5-!tt2o+J2rozoVHv z6)|8q5sBx%>2UZIv|WdI;OY;Yg&U$l1bEYIe(#s3MTBwAi9v&~n`NAyAuY~x-tJP4 zVGmYARr&qhZyh8*7<HCFnfDpmy+KQs(FzJ-A#ZWVoEQ+5NMZ<g0z|SDIAcbZN1CYy zRXM+pT&u)XIeI6d7H9rsNw!GP6GR$Fv>1!L!$`|jno0QyNjD^0vqNu6RC}>MwA^qW zth)!Hi^y<fgy6-9dg1bALEQLTxqYFQ@p(vjm}Jus7rZ92pKZJgPVKMHwYtJ=0B^Y6 zP>9<Q1pM+5!g4j?YMU^dWlZo@j#khk#6?UzY&x;oCZn^U(~&i!>k(NtVL#Sz8Q5lc zbSc<z)I@<{C$g<>ILm}OVsCIfvMZr3BH^_fNdm5SdL)S?MvJ#O4w5q6urml@e=HAN zCB$wCQjhxc8xejDb^EtmC#3-<`+hq^U3u1rzymo$kwd9ubtSd%^CW~rLt8hYO1iAd zt@B@w#NXj&=l9mxIO!ZaJKVviHApzqMz*>zSct8Q8Iu-}29qMT(9DL>`pd#4x^GP} zHURc@Pbn%GWPd8JOx>?YY|9UMl#M+i>-q);$c~335EcBU9^`0MTS!{Ng21HrZGJ8a zNb0pYt;5))liO?qU{{P}EYf14R71y9UT6HAA~VxV=GI>f1Iy=@nz3=BWu>j-lCW{) zjq+<O!r^O`jCQT8S=eZ61l269L87Av3Q5_9q@rbuYo?d#`yez+YQkCAurrdE2&h@v zc>i7>p>1PV{wryRJP1|#>yBBdk+zFUcmehMfOR+y&nMkBboXDbyF<X%htfS!m<XV^ zvxA#Ih8!-mryoD)+_cnUa@-Ue#Ww|)p@F*eI}~gPr>rd+JHJ=#Mn*KQ!n$nD*sr5j z?n=kHVt)6e^2Cb?3X$%0Vb>nSp!od6eXTKPZ_&Kc<Km4q3mu>wD+-?yQbr4?<knej zblLlR+q}w4NG?Z<<_qY>>tN-zo-*Q;kkjw>HYw^ju%#wlThb$V_C@<2c0Y8jr9TE0 zdM*u)(8)R#^;+IWVec`94Jp5E7`gq}73pzKPZ=DOezi&Zjt@h^LLZx!^6*L-IFy2a zW}%D6NPo_*^k9wH)i>MDW2w7xnNx2wY4e6&^wlHtXZ<F(MO$ut7Q_J~Kxi$JV9UvS z;PWz^KT5B}qaJf!=0lpceOuJ-K>a8b@DZZr?@0a-JU{zu3*7vtHXA;`LXa8uKM3Ey zh=Kl_TCApHyCQ((TQ$dBu3ci+2f;01PCzA@h>@NnfLOf*+h|$U)D{U_LbcD*A?%fz zS-@<ClQ>kMA{&g~zPtYX+F3K`<k=`?n7~+)_wBLbAl?Xh;GHGxDbLO)U6-vDT`~Q} ze}K}=$7=kW3!D4<iOQV{ZqyN%jwJ|R^T~84nkB7gW5rt>smkXc0S+7)MNGNac>6sF zB=0btiA%Pea;tLYeHA^r7e?6=hw+niN`7e!l}_Xd{VKx0sG@?XI>LS0p@%;;GcLp` z&sYJQyA&9i!UL7_hlBQ5fMh7Ik=R)fZNv{dsvT1>CPn4;)lpND8PY@_yRapb!1(Ky z*&8hP3+9^Qd6<H|hCk<hvan-Kfvyw)(Y&WEp2xmqyQoPb^X)uVZ}W9m&OZ&sx2!*B z^6x<Vq_{sk|8se3m@-WW0mryl?#?o`5{X?*)$rR(Hrh62PVYFbb*>hZe;E}1wO&F% zs93R5+5V5^6ApW<zVXIYmn?Ez*3VVvE{dStZI!b^_ck!*@)AF)G}4hiy(AlVvQe0` zDRHUOs>-N&(B*~31+rRB=z}9rJobLtIM@6xTz)4~Wn_v6wgCsmTg)M{xgsL)Q*5*n zH$%gZLZ*xcE<Fx;R71v=!>jq@y7pc$YzqJ4Wg&$$DP0nF2PgDHsm^H7>N}5Ko$0Jg zMD4H1^t8p6(zN)x=I}XEm6)+d)N7zGVaOKk{$wXsnpek&%k6OkU*e+%=8M#_CXy4| zjz_@KX{&Nau^IJmwV(pmTC?D1h&<yZPIJQb?}(5e|8~0kbBf;$Bny~!@;Dt|w`Gfc z6_V|xwA;daL(_B4dcL!24fU`p@__0Z<Hc=m!__X7ZVByZn&lfg+4(T(br}ue4$t?G zKQ&<rG=0kJKp&vB*IKlJZ<%ykO*x6;_BC+AjEM`iTYq?-!tun2o_O|Za@cX#&0n=Z z#96Q8=6RrNJC{4$@#55>+=~D$Y^Okc<lh7YU6e)u>yG35LmE*X+wgrpFOJc?xrX(~ z%%Lo=d6VduHRbTfLgL_N*8(w}3b>I1#CwjY2F(&Ef?Sc%P&BW@wFPeerGau|v(2X% zF!-MS8(~9#tlxd=e>C4t{3$nrIV<(9WaE4}MRIBNpVCpw0L3?tHWy_$zTVOdGp=Zv z+d4Lpe3?*mS<b4;Hjb#XI%eqhF)Nm*V54(&4$bm+hyn4S-!5m^RMbAHPITtx;bO;} zpprrQZiFI}W1|SyC7tg3T{5CclKfS21sVvx3c~de<+mN-#UxEZOPWmvIf^mbwBnio z^%_T~ul#|Rt&X6Rk?Ytgb2Se;xL%Fg$yhCh%dKQ84RT;5)d6oNijK=3yNB+(0TT8` z<@iMfjkr^#(N4e;b(%@U5muOK=rW9R!d(oC8;lGUQ6YOyf?>(#w}Mw#*)T@#vohdR zPQ~R$pE)YCsx1$a*u?C+81!6-@NARw7UX}%vJpd?ublX)$HqqsX>zBYi`VTugxRXS zd5f%`gET`5vX-*7RBeOlh8`M4s~ba>N~_;MkMc>1{0=nGa^{Xkul2p@Sx8Sw1MMWN z%Tcy-iK>=AHs^igfNE!9l?Zg+f`^EeW|nv{I18rTYrecsoHIZ3-zCIQ@*yY}`+~_C zU_3It+ngpbU+PLlR>X$Nr;@=q+VsT<SiV^PK3*#9NPHV;A>JeWB^;4{$KKR|BhW&P zVF}1aVq~KVO)Htr`cz$BMQMDlkq82Z9ms;OALL`95}*0#!imYkH*k1;Br~Oy$Q*&x zON4x8!Z}>lQl3D~qHA-~JkI@!Icgw0J7fc+Z2d8hL#iR<U@kU*z*5y0tmrd;BpV=I zmH}z5zcXZ|i3yoys|X3zxz8Mxg%G}Eik1}d(T|^=ADf8fxh?*75F1uBXgx%JDHt;I zhcAD9Q0CqkBCqsm?A{p7A+MR3EtOtM<$$3fmw}`c2V_)O8Cqsg8cO5$<y4vq7F871 z<`wqw_cKG@whTL&oc<Sx7%AcdV`%Q#IW`$r2^;4OiL1Quqa(KXD^b+xX&a*HNV2^A zRgo9^^stzX5lHIC>Sdk_SaEE*$0EcZg|*x-sn2iB+`T*;7P>$858)uUDIpiFX(y^< z<yKP0Yo0cj?RzV?CrW<@cI(jRVDVX11#>eu^DfxPI(&4k@~NBgI0VsdCzPFDnPKb2 z<U2UeOVe$Jc6`MU?O+KX>|lW(d_UrfPTV`Gx`?20si4rel=Nu+IK1zD@A6{$dAj`g z>DHWnrZtAy24+&~E#le6$Px&{qj>oT*3K27fpn)ja1n^I<_R@#!tZ#AriOK&8tpg0 zGWI_kp5~_$uG;|<!0+wX{>_l^4;lL}o3Q<@=-=`_VS0XV#in!hx#yg$A~1}_1-ZLh z^bR;?Zv|qNWH0Y%HDfv;aM$Pkmv)_>Z2rHcn_aT5RSwRhgPGl-4{k~JW?(*?J5Fnx z_i4wt+sBJ4@>pRy#&G{wf@2{ZMH)_##Fz<c`BtKiJpS2B>9lmE_|8Uvo4J43Qi5D7 zu(^}?-6*uuDFmULhwSEAJZNWHlZ)6)D!6}6d4XWx&96~q6a~1{X6|hL;V%u#|L;`z zx7^?VwN&_LUN~S|zW=pU_$Ow-|7I%uTPEuNT3-0Kgw+4FRQRW{`G50>_!D*ekL2Y4 zfxJNbua1ZRPkrHUQI`Kd8UCk_iT@@y{7+XO|C?m^pQt}xg^PTj1<VP*^GB)vJ~#Z+ zas3aU<UdRPIU>sAx_`SQLoNe50;hdkm5wm;<>>RLgz0~H0U1$;YZBo|e?DDZtcJ%v zG6?;AFa2_tJN{txeU2PGCY+|e6*zcLIgCZao&Ws1u0Rb3jIC4<I^9t9IUYWncxL7t zDV~w3DrFzKSp1tM+$*x#AeTwO%CT}<)?6(d8TZFF1WQ?=2itx!@OnVWL$}a!C|dC> z>8{>V$z}dv)7~U=!WyT6djv4`R1$E1z{2LRyio-;(wI-|13xbX^i6k-zUI=}US#gW z;uy`whR$F5YyaOD7=Pkd{)f$)l-u?cT!00bH{w4Hx_{W=AKuh|`SOQ3_S9G9a2Sz% zs^<Kv-*g`mWF?3|sOo<t<%kCP`tQ2bQn%|avRU*jx(#4JL5aMoQAT{4#EUgM%uLI& zj*(-_BC#^CUM<6-MR1e~+VNR0osas}{(NH~6Ye52FY_QZcBH1^>G<|*J^p*?2DI03 zIckW&CzB#;F`UCYmQflzk-;;;s^EYQ6FaVht(o%LmFi8TjzrD0!~AliioEOg=ZxET z$7RRsl0&yF1v)TBAtp#T>siZ;yyLF$!su$Gfo$J|8AgUZC(Yefjo?eG8WNih;H;Z= zAVjwN`2I8&<MF*HIyLa|nAqAQTv{IM`)Fhk+6F#$&&sN(uHMJ{q_3$+2`K$s3Yefz z(MJdL^D8*Zb-QK8wa2CwT-t(oAXq}5o1U@=$=G79fNsRUvGW7qwZ{)J+UuMHtq%)_ zs7M|`vK&*P#&HV41qm3XIkkMIZ?&XV5Hkb7-d!&9ToxD_Q1C0z*Mz@*^j;IdRJIb@ zmTk+aEo`=`I>WVXxXV0>Rz&1s?|CQ~u;9hqn$@cI_Rd`9;|7*yZuM7ESeHh-9Ohj@ zVKZA2m~7%(`xxlh%hK@`#f5)w9k<Z4n|1;&t76QMIz6zZ4(^)bLsivd?5z|=b!YJ6 zIos_}jhVi6jM|_ZT#YbVU?8|KyIcIs%m8ifE%2)aDlxCr5WW=H`#Xj~YDyv#T5do> zKhwLJ=#{kloMJ17Kr>5<3@RofGu3D3rd5B{&431tq_E$AU;8;i)4=eiB_z_~AhQL9 zAfQW7lt_(J;|zqvpuZNH8<*J{DD4Oh*QV%!#+6Tz`Yw3!wzFAj`nwjOkK#0@ZWf6L zq2TtO2xX;f;o@$nkFz4K_g6K;I@MAjkS9vgYz9IGfjaoGCt;4`5Bhg5Cr1hQW;H1# za4NI8LVEect}Z^FHG0`FONR&Tfy@uJiY!!=3UZA(@CZ%3=7K22Qo*^ZN@P9?gBReb z7Q3p3@#A>q{V8@+m0<SfR}nZ-44$rpL99Z3B?NVhWy0l)H?Y?@oAwsDPz<?7#S#eQ z#f}@|9bxbw>TSlooDLGX*zRyU?5ETT`4}7Y1I)Ys*~-JO|L{`*5HzQu4g~b+?=!Qr zxrvPl{h$ATWbzrny#+}7{KcpLAvm>|>q64ihj8-A0;LMHc07#vj+u745j$c=f=l-1 z)Xh7drr&wD;CLnP5Qt3=Z~b#DVr(A$O-54_C#-F8oM!i+!QBf19EE%Y%kHSd)8zc# zJOf+-5f5qkmNV{#B338wulp4CJ&6i)Ind_sqr^-I>QYJKSurv>X+w*mlAL$6F!8A1 zsx@Z?0p1`joTq(|kb!c5_(zD$J%Wc`DrFX)%7X9A?z>VaAwl73$&yVu$1Vl@1sW6b zX;8LMIH8aSXs$7v&Xz#RtIgpaoSC2ni`VFtew81V9uPn0*e<N?7x+&XZ{Yk%py7JV zb|tk>ZT+nsv|L#@_<3x0ac<hQo&=rQ&Je!1gVy$MG}6mW?AosN;Kb2B@OI+dc_ztY z6KLUDZ%>lH4-Xr_+6ho6Ut3+mEo_t!Mh0{|_K+t+cn6-agc(>0%xU-qawW9<e(~ zs|<j;sLy~)0zG&QXfP0KLolbCUBV<=s_um)@Ct-`f12~i;h%hJVl~a*e5$)izc%O` z4TeQxS9Xiil`v|i(MXodnN}HNy$?#Frr@%nT~k6*Mi9y6Gqz;aibtsz5$jdrnwG}; z77Ui2YFcHDD#lc~22%+Fk`w+?Ct>5%ghgS=SlGzoP^2_B5AvY8!28Bz5)Xb+Ld#TW zV^tP<HgC$8$!<^sCKCE$j-)mJRR$`*<e?2sL3UI<lZf4tI}S~<q^O0llLD{%w7+AS zWMo&YJt~nJ7>E2+^--UdaibDEdtkd5|FM^VaGyh4Al2VcH-Kk2#Xw*Q<>5wT8JMpV z9Y4x_&rH>MYIXlUIYLRoMQm?G*QB-7Cf@EW_LcWMGzH6_JoU^>)D6=|n0idy$@17x z5VaxSL^+s`x^MOMX3KS5lTGhL(6>sk>#<z4P0_e&Q(e=jn<aVrXjEp2+?{nUZK$?_ z?m~Tl7rRg@PwlHO=!_YWK}N-UX>-sr;t3{JvBQ(4d1Rh#X5e_^wB>Bxud2@l3$JL8 z>mhZ~+Oc)~RTs|_u0N8iGI(y9TkASR?iZBSd(u`GG|N)`z}C&|6PryNMFChQ!6ok2 zNo{pec3G?LIQ^mL?qzN6xq<^}oNEdZ{w6J2U+15!$7}~EY!ujCA~G#*i8?X>8#|0= z3M3Dc1Oj;r7NnyHvW(s-s=veA!K(T522%%jmm)oOx<-fA(cXo0ljoi%e^iF&82tRT zr8L<yHKtfcl%C{K*R%L+k^87*lttM}D?wpeszAa6>=T_;#G^@l6%RY^`fZ@d5w%OX zHMM8SiHI%=i9$PFXh1m?mAZLj3dCP8{`m}#2Is-h%pdqz>lZ302_VO%WRd{mEvuPr zow_;xEAyN4I4bendiJ;Q29`83tw(3qj56d)Dn3$W()IW%Lz%iqV*@ud{)zjEMS;#T zE#a_dPggyRd*s5(H&uJfh=?)j7k@~)ZiB^Bp3%tIG!wWdVz!M`t<AK@dyYK<0Y5~d zTB}kkW@Sea*DMpmDQ&;)?pm*x4V6O?rRI-(9K8k#J*T#ga#vsF>41jC-Y@KJg#0`l zzmjj&WjqifTLV!hffe0IW`djBytDK3@6A;+xnee|i`QaP%Oyt@=a|{UUZ<E|pv_C% z7A_-_E9h4q@=P*_VlZQf86CkmcXq?bLUtuEI0JC69Yj!j9STBm1!JB#^1`<{X2fF% z#JzE+`|NSC2*l%v`C`lsIbv{${_iDRJn;}RzBmgbuDI9`@?KahaXMz>+Ebpo8u$SH zG11V>s%(1SF@`CWG<RI|>o~Y-@^<)Qt2EmI|MkmD-ie>X$>}%?2mSo<0N3fyr@%X5 zV$Eve__sBS<@mC9<U|xC+}3<5%IQ;lF~Dit(^{$Lo`;fB@rSjul;O1!C3KWEzp`=f z9*`1PBIppZ3<7~T1E)W3_a2brzZD3^=sN;&1`L1I8UD&eo@0wIjj(kK@zmb^_^bVE z_#D5p^~+k|3C6PHzSq^y$ffHrPtclE#USi}5{NY^#(BUKRX`oVl;HtgumZaH*MdE$ zLhLx=RLdp$`7I{6&ztnb(^{lM7WX*$_w+?+n<`v?y;EoXqy`pX*8m`rfAKT?i?;V~ zi-Z3duoyMj4X~cTL2R{caerI0Y5FW;d`?GnMs*7;mEzK0L2HBd_<-)}u+=S10R4fX z#D3{PL=QL3F`8Qdj#NK#KVXUQc;U$b94@({D>p$D3Qo*o*i~l7G5k%~frT%jd}+u) zW;h!w(y~ue?1X2f9ZNgaWW;7_O!__!TT}IuIC>{M5>8@0Z|KwmX`Jo#Q|x(2H$^+g zedcr_KDow-=2#9KHY%jl;_w&hbYA^D(~Ql&e{r<{woCZ)Aq1+sDWX;f(BSv+4<T%0 zVr*eRZ((C#X2M8kZ)+B=ASVtFgZ;Y^yrhJP5)csZ3=j|qJrqEA1N{v8VhscY({3Rw ztRN{YOrYRsXKG<>0t6%xo|FQqqHF=!<?C?<ht}W!+f>FKf|3wo2fHG)BtdRaD$=L3 zFpdBtK~XSjE*0=WkRc7^el`k<02cuWU=v&#|A-MjeQ4%3Gq=fKPMx>DhX=k*?YEt7 z7oh$DrZ8X@)o?(^Z!!j{vD~x(T{GnMvj7l;NDkaw8cn=E9tsK&(zwn?<+XSidmbd& zY|XFtj}IzMHt{|XAQ(Z8cv{0B#NOzd#57+SP=V%<`zkw_lo`e=phjWiL69%f4)!$h z(hmBt!~(Ih!x#{Q_JMyUrpXvE0U2W(7Mau}#B&(42aP{l<KY_s_t4SMB}QLS24Vat zGLyMw4uVJdKp}s&V?-roOdB(Xo_t^;ZYP%~kuWm-$Zp#8qvn<6NfAcWG_IUtw{A7t z`+i?w`Xrs2jroaZkmn)l1J0?xGu~+o#iMVWG2{4{emMjE6T_e+k6j3f92v1;3@1_5 z6(_oBkfb9iH1Cnq*r$m@v?4L7Gi?N66#h^gWZpr|_Tn5)^dBLwldtX)XF?9C1-=NI zgFbv!O$Cq6(|Rxaj3i#nEy$e-8)>)qPEU8wsd<=^Hr6pki|z6SeR^@nbi<?)u<=h$ zGu|YwifYZqc4RjK6PNJuYrUTe^@eak<+s2=;_%@`K&18IY5Zl$%v2AYiSe)ktO@DU zG9>ef$)kjgt~3iH&65w34}fH{7ncXOg(t^2gFao~Hb%JtEj19^8*L<4<M@X(Nvwo> zWZ)@fmy-iwfYa14SS_$QB{K|Z31F8Xd7uK>=mW{btyq6WwHGeE2kj;R=?gIN2X7|$ z4Am`F4Pg!ToP%@*<|RnU0T=U?${r;XB6<s?8OGM1dyDS~L|%{{6Ugo-1tw%764*8Y zj7ab|LU;)brVtuJuOaZ80FWF83Un#|1VTQNkOhH^9HC+;s^A!*`Kie%k0UB)*b{#| zVV^06JG>W=e0?Sw#IkPBYAkESSpz=~5M3DZUg|Ae4#W+Fl%M-o(9OV|Fq>c7wsfE1 zc|t%aP^6H5gfj^)=kq9Z7jvkfNQHd~r4m5PA5nBEHdVnn0WQU04S0zf$SX0&UI9A~ zdJq-Q(>y{uayha&QgTLX1zwNv^}i5~&FeCvz*LQ596;{<*{7etNX_`1YA6GKfP27I z2+Qn`HE389q2W{hc>x0_QntHtz_u5!Z^5WapS${fi4hl}D2jQ2b2q?2Mw^TdzX{(B z#0_gP9OtJ`PvRA}yL3A{AHw9|;ZEc=>yz}8+#7*!0)g-pDF;dbw6zeM0pvDEZkl~8 zgFq_D2+Do<L?4tPj015^kcN1>oVVDU08xCs1VVuVN^JdC6(KIsR>>1$AF|Q-=pnp4 z_uAC<EN#h7Azzta0=Wuz6t>?uq{vLTf22D`-vr!9Mo^hh^~V`XSENuSTE?Ax^Q4xI zTSzLDrca!Rr%UD|_L27#2_eWQ-zDt*rb(_$=A>JwWh#?QWkrZXlR?)e+bH&sd=`f* zCnrB49YdQ!?k01QuFa1oI$!9ipgAWyw>x(_2kcSa-pM1(C)%m-tH8VMtvDbvph4(c z4^=Qza3oAe1cfNCXoz9@4nqHIMC_+78U-x@y`P%ZE`sX;6X2*)ut{rx-wZBwFQp@; z_swENccf&b?Hf)~c3F;Ul!}n5S}CqlOC?jSf^Y7u&_Yi@a1jQdVz6qoO0SA~8J==S z8CPLp<v~7~!fKVPtc{3{;<_xas88$*>AeAbX-Fi5yix3cN%SHMICfUD7<F#Lj2Npb zs}E~`x;X19D|y3R15txx!%4$;E7XSbhQ#_u^Ct7y6Z0dmlk(}3d5=8lsfNY<lZ#oK z*{rGA#mI%#yv1Vnf~tbasmbZ8c|TJDMtfEb0|ncwDI_a%yHrc}sjE(8Yh$B6Rx0LJ zGdP@8?As_rY&V)78b^&jJ(bSl)gWsj_F<+H)?;Q>7I=nnRvQ){t3o4mv&PZ#@w2v; zXpi(~hub1_M|5BG7W8rSOWJ4}&192g#0m<v4YkvX^zsc&94)7EM9s$~1sf2X#-;it z@4ALMw3UTrgw^9E(xuPUr;RC1h&7w0ezU;4TNl+E+X201;#z|;gR?PyTxlFXxaK+F zX&3ayG`+nYy6TddXP=9ms$j=SyZ6JStI7(gXB*b;e`GY`tXA~c#Mw&7=Vs@0xv;xo zv}QYHU)kSjoI3QQ?jP@JZY^Js9-<wqp4|6njdCxyEqKih4wyAeqUl9dbzRbJ+J;~U z_7|H*y(~Xh+*{p~zlOf1ymY}az#u`eK=yp~{n`ea4So!99f%z$$UyAwc6E#N9*0KQ z6=WzZEHo;l7pxgn0c{0a6he<!1&tqTAG?Hn%`!uvgu9GF`WX#h^)oB-IhM|+bsQt~ zI<^D3aw!`6MoI(>3^a9Q_QpP|;SEyIYqsm>>sSEftWLw-0#lNS#V8$JitdEAFBxzm zQkFvERT9=1jadvS6AB_pOf8SbtA^c@?HTWxK@4+I7<1}grph;#Z)ch9+#ac?BeVxG zS3K@N+TAESDMOXXlmeBhm5XNbW>03XkD-qbpB>*+e62z}2TG$5zSa=vO||tn^lzZ$ z3;7uYL!r>3v6_q!2TtqMe08sDrXM9OqdA=&DNZs|8?M}`YR$0u*1_t<FvxvaG=DT- zK2K}KvS_V6+mzh-aKvS<v(uV<zjAuJfM|WStk4kO%;>UP)pF1x+Jet6YG*m2Jh~dU z*tKltWYekA$<XB$Ih)+epX0anKGivIdHSnj6Ltx_33ePd61L0M$foT*zdx3gU(QB; zWuvp#buc$;DeEmO*0trLlq!LCgz{wbb90*kqK$m__gJr#%MMj*9dCDhhirE}J4pe_ zS>LR8?ngh`{bbjqmXvvX1>WlWpM8Q4-4nvLp(hAspXqqs_Mt8%CKa>u;rBiF`v<EB zYhyaN@Lbx@$zQWesa2?8s5@0}sJ+U1O23qymzG(nSh>#iH0-Qwqh6C=WZ&^DtC%Ud z)$7)DUVY*q<-31549dpOdf;Do9QY-(uDM<ZIiWa-#v%Z}44)spHn35+R2T!$T(r`& z(kI^yU!?cJ$6-w{(C99jMcTi)S)4dd?AK5SP!p>sRy{P)*m-!;9<1~(Of5W|{#vx# zxaxGMh~990F1#IwZNjz7>ay``yN)@}3Tb0=n|!ytJ#BGaeF*V#eN4aLUbDN<SaT?u zZMZ!ForGk^W5U}whB-NL|MXm3#NFA}6uQoQ$8mn$My@GOmTl`E;-Pk>ec*8oJCCv7 zh4o8q(`wbLX0q<`V)QCS{#Enc&KKkTmkYrqU@On-oB{p&xc#YMgUjvLs+4v-cVc&D z&V-N9GknMm>~`MQqSb6SaU(Iv4d_kTj?D+bXW@PE(^y&~LL>Tt*+Fu07(PnB(iiKG zmUHR5l<wgqJqJDMPAp%mUl$+m%PKE(-~1_!C!#<ojJqWzf!eFU{83<m?)iZFNb7Fz zqH>n){INhj!p+Psu$Dm-qO}VLD+Snr5acEaaDd_jIlwfLZGjqV6UzOhz8RZv;zZ7c zMUnL@E91v4Bb!0}Y`Q2Z86GGpu|t!nkq2sK;^Q8amp%Xk5>KZA4J2x7QQXqIN38mV zlpD#fv<FaU)l4)bO=V^OxC)?vfI}?+J7fa%UBH12IDmja6GDIhiZl=k;1J0H`A04A zOb+Nju0eih?EncX3j^K;2uRt;(Zs~o$=uGlT@YYl1_EBNP|<MKkd@&wva_KxFt#%^ z0VIXm|84@r<IV-Rv@vluAOPfv+B$K$^Ai2Jg9~u|yO^Gc;Lk12R=h+SvI+#kc8(?l ztaL1N3`Be|1Ox;;j>e{3N+M!^Zw~mzOJwfsY|lkc@8;%4=f+HD=V(UH$jQk`&%i{_ z!~{qtHl=m)uyr<Yr?qt={@X+T@f;BoCnHA-duIzfTY}%uH82EVJo6F}{qE@he*X45 zP24U1*^{l)-(L&xg7m*@=o#r4=>PAt0Zn;+mvSjsxSLpOh*;PF$OGtukA;nm=g<BB zspg+O{;j2|lZm6S-T&e0tplp+zO7+Ez(Yz%D%~Ir(%s$Nol;6mcXvuCp>%_EOG-$0 zcT2b5I=_4G``-8a!^a2koU`{@bIm#C7-McefERue{J-n_-!J~(Km7l{@IN1^^M5~* zlauFvf8_uA$$!6+pBZ}R|7#`wYnlJ^U9irA$o$OzXU_zYkqX#_VPJ$|WW+_(Jz$Tr zk(M;nZu+%CF;oXHC9%kmQX&(>Wp~Ij=#U85gXI%`v%Mn2%&-VImnL9OM#ZEfAg43` z{raY(<M8S9A!pYucem+A(4G4xt6mWN?`}@*n4sOi>vpT-wrfILs<#mdWX2GDxKMxa z*H&;R8_%)@7r}ph3H>g)ao`kU;Q#y+<rnbs@iQ>|Ez=k*@Tjn2ofs@4wr1eJ|Mf)? zEF8789Zb%$?f<-EI%z%Y|9Sf<n1F3tr%LeCWJb7-$MdMOpB{fr?;cJ&wpacBrRdh% z${a7$TNI{fCTeIIXdKLx>opv+_o2axef5B(lQI&|To;g&v-mxKzFP}=Wxn$}gU$Qe z{_d!D%=~1j>3oE1b)Y*0#bPj#YTBjtsAhPG(5{T^u&g$=tmUM6qCf_F-a0?Vd{Tic z1(#7*I$tuTq`U_i+@$a&W|0LfLEh@1v-P@NWgGQl+uy!7Y~VL^+#Qrw(sO)Cq3*`` z7VcDL)X`qSdpK2`Upj7)sw1gYSf;2`SfguDXPtm-5X^S<^tYb`=b)gX{O5{p!@T92 zd54x`^M~V~l}^j;(9huq%S9OH8>`RI@pP@{c~Jbr{PFhh`O?R+;<fw)h<Na#rrrlC zM!kmQoslncwU#3V&YOLleQSr69jQ9CmV;6xK9rL`l+xT+eYCzSW|x$h&`VJ*)!S+9 z|H%(KYJWJPZ?t<<E`{!gXq-RN#JGC`>mH`DgvY<9n_;n60+eI?7tunDd?$_hpY|st zcwG-DiTK=-w^JEbVi7Rk(<tS<t86`wl+WT;p_Wf46+GBc<U6Kp^SVk5Lg$s%>W~RN zhQ2p>2zYO4S1XP;7o&Wq1L2qyTNN!Qs`U(kE~`E_DQ(vaa$3G7Y{;UF{0>Xpo*NM~ zTYscTQotS?Ab6jyv=ut8wwEBrS~BaDq6XZ82;*q?A-PZOIO|4ndAgb%o~t%X(Yhvm z#dpMFuwLGJKJ;xj_i5(gq(w<Gj<}pb1AoOL&0wn+TPfMVeVOy}@l6nj-gp8Kd+a@f zvN)Kq(V<K&M{LV4wyVo_Vg;_XZC2ZTFq;NW^R+cry$;LorAGKpTWhmiXLJJZX9vI? z4ZVTIF4$i7OV}WuO}-ctGMaAWDD(UG>;kr^WLQR>FcM{STFZ!W*3i5B{r<Svs}wS^ z&;i6Z_82MDx_qbsb7bHq+zg0E5nquA>W^}7qSm(ytogs#YP}d$Ga7Mn(fe3&_JN4^ zQ&BV_r|gX~SY=rP7GvQNh6X}#jK1zc!<%>Ox|0;Hu{z7C8|i$2BF_5j3-xAv%wHin zKG!+~9M<t)?=4m@zkhL<=zQgD(@{T(5e^6LIe$FLVgWIDKt+nEunS$0cb`(j9qT)D zY_ISBcA60r8X<@B^tIr_5w;Y5*+{6c4!N<&;c(63Q11R0$95e?ZNKL`E6=rnms`z; z6_eUOw^wVHbUS6=re%Ov8ya{kUlD?IAnZwM99YMHPp7JH=+uSa^7yx3?r^4j`)bw* z?^--Y{Cer55}LDgqsVpCOZ2zaRnTZBAT=&oX4@;Etsd|tEoFYBBk{d8(XmL;$eU_y ztqU2D1_!?*nt)x>NAYhVCmTF!z!|wQ!^GLO!WMT6hy{&sQ+e@deeAsbmUJJ}=t^|K zTjQqn&^PuLnZ(q5c93AifDHsHG=-#?1XWUD7C80h<!0BUeiFad*YA>-*-zVU3`e*> zPHSilF4$Ev{>XOIov-i0e-FRm?_cb;IX+C~uqnsfM#*<n6=Z2f*7#ssTCQmtJGA@v z-{VCb;-(dIhCNryaf99+i(?ic9IHqtyp23>v-$|-%2BGGLoreVh$Tjw$?poq+H{M% zzUPB96BP!0BcvBA-lxS;^7HTe@VVg0!~KsFB&*bVrV1vNgbXg+S3EXjsKq}XrN?ls zXusf$*I$}y;R&?<NdSi+-l<uD0MB)zf&H0S3w??AEP<nh0M5LfEa^9RZTVo2o#vP2 z4<NPPiGpiskFWDe74?sI*WS>{4YgOl@|csS#TP;hXkd;frh-I?)!0*^v`V2Iy-L z#5&bm5Q5&X;3#Es$b``DkI9GcSiR%0nGiQH(cWJ~77|L=WegP-1UV}6)$8)uLX5_z z>&2_Lte<)m9oz4|+c&O<)|d|_R@KrIk1aa1FkZG2289aiLvvbM4wETg$G>Oqrhm^5 z7B|c8X&`~&{T*x)h>T|Vxbr&!<gsl{5zJHDsiFi#TjSi<IWf?<zl6rU4~ckeP_<dV z?H9;LJhx0Czjlxi1%`I2OnSOUE6!(2wV0nSxzi9P`wGY~Oh5sWZ2TxUU5A8Cy_e7W z9+@xZEf3ouc^5gj>C{K!nHPa<@l-o^ySc9zqWaRvFc`oq`bt`&Cg%o|Xyi&Y%L`0; zLVtN0$12@{yvpITxYiYv#EG%^{-|!rWmu*^mIxv1|GBuxAc-hkBnLuqc4R)2yJq7q zIG($$r0vGdST(oP=0m0oE=R*T9j(uPkAJ0p@m~Ihu1YT^Se3u%Ol}t#c^H~iCNzl= zH;1!I2eXyTjr$(wxc$%G_(EI@))W@Qn?#btF*IVNOkgcy<dpD=vq2Kg7PJ}RoP9Te z{n7h3$W;`#W?rxhH5PJc=t>{(i5LxAxqn7ReM;+}-83lZUoZn}Ns0z?!KA<G4;QJm zIHBk9FIu`bg-Z-{-Pu2vT%zheENbfhbjbcpNN>28X5^djlH@asr(pC;;#H8A1)`4# zltP8epj%mb!t~jUH8^149!t{{C+t2|o+EhS!mr3fAmIf^g7j_Ww};DH(>6PE5L1N` zYaNbl6X(WCaTsuh_)lj&ufBc2L6jIjTkpA2>L_^p!fF=U3XXCOC=@^Rk@~gb96>ed z?uvIdf%M|T>Lv6wUZDKBbe%QODt$U1W=2u*i8-W1C6$!4%Jpfe;MQ?P{AW3mnew@> ze%9~{Kl)-9p3&!T?>t+3`f~r8L3)uu+IBuTCa+7u<0~zAC3yQ4qBQ)B87FX^9zR>F zlq+cC*hlCFz8tp;M$O{+Xu050D0sIXMnaGB#lA+SSf_gT4P3PpI88@k!q2ds;bFpO zCKQ@EX$EfK**0D`37`0hKmKMNoHQ{=33P06JLc$CNz~y3a3>%Unh+_gq#nLO%V~35 zFkSF6H~|dsKWO0Bcn{0eEMCGhdd^E_3;KAaY)APx4<*wPa=`t+p%weWv`e%|rAIW3 z$Spm~V<Tc{6k4Xi=_<z{piRMOD7y?47t|OH3nBKoRI&KA`4+c5`jr@I1!T(QpyF)d zw!dDBeEbBRh<8tLABufKa5Te(qq--9uV(a=0Dxlf&E??FBA@}-1G5UphX0{$t^8#1 zXC>l$$fRt=S`1V73(08wZ+)t3|Jl%WVUU8>_reC8MaF{wp3+Y>aMS71=y_=yt}hm~ zM2b}y#F*OOFu}}rd(AEO6${>8LKlg}jn^CAqiHjLzUiZtj$L{E)}mvFMt-_+X3ddZ zJs&@u_FHf?`q`|<NwM>YUq5ibi~9SQON)&oZU2UYMI{DRf%9D^uWQMB1fz+zn-#t5 zWp^V2HuLb-+l{D9KI|7H`AZnaLdiISCTIeqP1EM?(1O$sPFSX+xS8@Q__Xps?885C zg7?yTtpK?VgKC%G&2D`)BuCPriVeg02EVbHg)D>HIWK)tZltQN1uft+g>kjpMT|B4 zVNcbU&J&2DzV2s_X3cWl{m7>0-K?iH6UI<v&yHDw-q}dA4773Gc-6ok;7ADr&~U z=-6Q7m7OSrYsMxSu)@oRfV+_k`Aop?KAOcte=8Y7NM+>rRR6B_H(Q_{3d2~AfVb>s zUktm$FKCT+%?1_MWjzGX^0UzrilOIric24Xm2{<Hn`rI=<B5;OaU3%^%A1QfHhPM_ z!&1ba;vp-;%pGO0%U?L{sN1}6QYm7&MF}}=lds$56|eXHh~;?h5HxK>GMKM*24pN@ z9kOw)ey)Wsdd;%iVzKP3>i1t>+}fLB(Ezt$xGS>ic!OIr-x^48fda!Zp?~j6E1FA= zK={%N^SK@*<7xUn9CL}Jx1SF&xcvQvXNQ>Ds{R%*<-Wu$#{ORgNrZe`bw#AAGG-{n zNU@-KOPp(G2I8Wd*C64aSY8O0@u0c;0Gmwrhhp{;eZ>Y-Fb8g161BpF&tz$3dvoN( z-_}nnp1XtN-^9QJIj@^(3=HhoJo3!T-@|tYfr~u5lu+RYDco;s-YQpP9i&^OA+V%W zAYr$^^}SuUMeTL|76EhqlGx*G^T-iM4x)8Ap=fV#@2kI6`u*Mbwea#4|Cv9A6y7mR zCM*T$Qy@HWy$hU?f^a8P*^STlhu8|49AphHrl8r7ed{tnhLrY=Y8_rr28R3MH+u>m zO)IuyQCe_V75}I1V5A5Iu4VPVPF+_$-Kl>~K;k1H^=FMx3C46<-@;PVNZ0ncn!chs zo(e|#DU{)qp(Og}!27g~t9rq<l+KYR`;+Ph$jA@`qhIFTO0-$5D&6IyQFqqfsnC`S z7Njsw7}jWw&(C+e5zkK#heJs?MHd(Hjcwz>YTKc)1|F_Vob>Y9ata#&ZKD#!g%}SM zJ76=#hcqk_m{93EMTzqF9dLk@1V;f<QYQ>vi&t7B@A_wc?9p8{qjA3DI<<}cAGu8L z-|z^$f<0KWOLnxP%kluw)}@5zi0hl;s^@NYeYQ2SL(_I@RjvIa^myTbT`h;pa%tvp zSZeG==R5k!Y?Wps0p>FO{yn+a2A&^0YGdzaeN^n$!LZZQr_2q$uw!g-D=<s<Svy&7 zv1=K}%5qz<i2$Xukim8rTI{1SSW1`U-vnv&uRxnDnk=WlRsiZVkD81+e4$8t$nW_g z_rL+|%9U+!jW9@vO0)gThlY&H{Yk0vs9F7wBgz-V=A*|F!^`fgj1KkXKE3suv3!aT z);(xksJQiJV4G>xK($Y`>BoGxQf@t^<JWdIgKbqr(NFAMR#r1aZ?TYfY0s=(B^>&S zq=Jd<<L>CRXzw+ZIN5X2=sovS3>ANi`5=}j$W|7=(^&~;#uUmB*2gHr1j+egp?$LW zOR!rOGiet)Ba`96H%lMmrb@MxoK|R}_1|{)CsZ7R9!!l);%5R!mb45MjWQWDs}pi} z;2ZFN+>uAy1g{v|-`W8uZmRzT;BA+)u9s0CIq4DKT%$s-9@;<4!FVynQIcc)ad2o{ zN4&1r$d-e-ZFW7}Q8mz6?V(S>A%UgJB1<XpwZS;Bcgaa~{_c7>GXbyxowzz_&gpgT zcDDP<pQW#kt$#y5-)*PK$o~YbD47yN;4^6b8Ki@Ywt9}BZJcZ@IBALQBGafCo&yM~ z@p4Q};&YA^C=db><z2!E?hZBQF4V2UG{Xt}b^rh^5wx>3%Ixd@NY->AzM-{*%y7<V zixF~Ie^m*B1ZlUpeHgLtF+2kC!6=S@51NNyj7StbrsTVeT@+i3-R~5&R%5vEHt_@X zviuvP*?dv8i8Ef=er0dH_P!B*8_*$n8MRmqU1L<R#$?CJn%PB;D$6wsWG4pzDi@WO z$Je|?Zonv`B=!T)p2PPHApNpZ@U%Hw*)k8zAtty4`}Vt?n(b6Q+wSueEkm9U(?Ks^ z&AiRKBx@3f0y@%65YuQT9eKFsMjsBQitjht0ZCvET5%MzAKN`x-l<#aPdi^6dnLTF zcHQzyM?sWoYIKiQszDolR%7zM4^Q`3oQP+johU~XWvFO0ok64ieirmfu&8U7HI@z9 z!t6miL2(~hVNdnOqmXm*n^5slW)5+E$*2^!<Awc$={GO8TU?6*Rr-?*!Zz&_zwLg( zD;)#7fgIGy7E(N8JAxaqKl#J%L<Tin+XvcIxPU)VNPp}TepftJc089Pr5>FOwQ`iK zMKLu?mzQ7`NrLVdLjW50jY_Q40D9C;4ZWsFrOELSHQ;9nWu@nbqkO|$cgjfjXPnI# zBEf<PO^D&RaNpVAnfPtI7a>-@7XQoMn+{o3&fg&OCuIzdlD9?qPt}{9`ZcZbqOjfP z;X7{iDfl4e?~u93I(VY~;l=H&WB@!M&);rEV~GV8f~^xC;N0=lTS5#I?k%h7UH`^! z7v;yQlBoNw2tqlWR#35Zx1PUn*d#V9Ro(ZFVcekRUEqUw4yKiq#CO99B7AROL~poc zJ;(gZYWhEYISGgbi32fBp&&%G31zodVVw}H-%ILE5(oYqaU$$6ICc_4wY+XeMSW7* zXKV@o*@APa&THwY@i1}9ZY=kW-UxbW60bcnvW-|38^DDigO?oWd2c01m1tapD6NpR zw94`P-eH~#y}MB8-F0SP1Bf^TxR^rG%gae6ytJwLVCw+Zu{tki>8K|1tJZa9d4I%r z4FuTGwO4Kjam8r7DsaD-Khf|(FJ?qmmeF*JsWw`~P<WuWWTDh8s*OBErVqAHYD>qW z;}QUtkw|w2dr(N$MLJgw5cW_yNFsUD_><MX%VWA&6NaD!s8&de<bmYbY$WUdSyc4D zdT=OJGWOKxYdu?G5OUkN+~N+Uf_@fwvRy2-N^58h;S|42M8Zvon-e18cKRyx;Xn5z z2`+EM%<Aq*SzmvYXZNkbnZ0I{Cp`C<hNp;bq`-u+TGb9n*+2DNr!}B};3e}s^c*I` z!dcdT`JpK4vsfsHr_e0mcBDP;bF+M*UaO%-3ol!~fYxxh5yd<+AXVhSs%W>;>UmZ} z^aj+9a46Iy=CwNC8l)Eo&4#Dv)wGsE_zvu(sXAsV4&4VT=@)%cjS>l7BmdcCXj0`o zDh1G9WxztFVo1x-Q$h=yvuwhF84J!ZUNbelMcST{BuFyoY2s$p&*=VgKZ)P*B{b|E z;N|P}f}XqnIYL4Ho;Y*cWukq}AT?*vhy&w$I1|<5`-Yp-Rihxzc&Ap7Ckd10jcS#k zcz_13fqbOes4wOXO+i1oFMWvtb{-F$PWNJW1NoJ*zSn*sq2FCWlHx=;+<(O{X%=)H zzZnsGAF;;B_O#DHi<rWf_aonMTMDNj9wNH7rOWDX=cqex!<}6_VP6is5_*i+?QQ?h zl0ds^3oBA_aQ%KZOO4gYe*kqNG)!3Lp^X74B}K>un5p>hpH|O{t#FE12#R@M7}$dX zDCt0`OwadAkXH0le$0DSR|mjb(u0aR3<KLCMTl#buRegzyGKgE?@`5nHKpd#g@9LJ z*Z@7M7+COt-wg>)Q?6yTn|U`6n6Hqu6A*liAVnw^-Er=eNEriyV-g9IjHpNcHWjOA zJ%T1DUf^bl{dXCmW2o>u=td$gw_E=q-=8V}LLERISA_HjRhS`&yvVJmK`0abJ=-ti zE;%P}>QDd4LQEhFX-<+r2^8I3UjS%a#sqHCbFDc&QYJ0bTM7pr6B#7|^7`|n3g<iL zYtyi&<0<y_3@mIp;->G@{U88%Oub?jep9r(kmTXW*S+4Cd*8YU@uL7*5dFm4rE3Zi zhk->IP?n%E{5ZntvYYL0i;K5}8J!mb6ZjhMyURD&7l_tXp<f)DWi;9Vb~bOSa`;RL zmmt|09Yeown1_2@Gt5-8|NYAll>Nf>wn^dmrT9Yx=1mJI9EwmzG}!YU-aWvc7P&sx zf9mX@WwZ_umipRUf@lE)<bc!SFn9ob=Kip4{j_EhNFIH`)`ZbRPp?Z=%3O!L=4iuR zLFq@>%!jtM06DRURQ>1p+CV!NL_d90k3Sn7KUcgC3+YUL3=zSeis?E8zFq>EZHX9V zB|lEEd8wuQmJ5D}7@P|_18LEd`C6-CDE$ZsMCm45qx?V^Y^tKS2y~y5Adh9WqluuI zSFUK>KvpDxLbnKL8xQl`^Gawc4QqWKf}ex*1hQDO7g{RS`-5D+X99kUeloGnO6eZL zX<F<?h(pI|`@>L%RSw-|f85wsDq#wlz6rhasA+RSp6TjlD1Zt7PMr-Ak9ht@bnJok z)7#fh=X0+>1zczTZzuu+j8~hv4yv&9s62jG$MZdd=L$NTlraF}qJ-5@lJ??D%{!eF z2G!N2VWt*&-8yTsu(vMZYlm4%8$bPHIti?@$lf?Keya!!x-y$qO#clop5J33wpQ3b zVu0>PmMIx&ZRfja35ED)ze>Q;FrGt+=Rum>GUo3kyeJ~~piLM|QW7lwRrP$iWp!-i zbCq(d5!Ydvt3h!FXhxI@qBr(c0qy$jprtHvEb7u&<=So~FT5Mc<W$?FSok=lA~g+@ zQ0Pd7KlnR?JtR2*N?I)dW}S8m!JX`(xcddg<u*7v(@4nJnA9<r9GWZHc7an@Bte8% z_(5KK<KL#QX}y0GP4gol&_%S9c&x#WpiX`jd0|9Zs&oP%^G$6t4RQ#m-(F;1uS%{& z)zmc$)`Fei_DM0fo&~mNU4#&AW=2@#3i{Lyt#R+d!(N>>ZlV)#+NvwY6}$>XB}klX z+x|S6NF`Ud3?jEl*C_3yUi8gB^0SUY^=M3<lg7<YSGRllaYM2U<;j>>!|yISc%+rl zqDe`^%quRtUXnm`gur9lxlGw!OqXcL0Zw^7@cn9~^zif?Eza92vn!A76s;j#J$te+ zVlQjkgshH-RdJ`^Y6RH7GT}qGpKmuqrjNj}$Ypoj_MpJV;$X(ud<1Zpq2CgJ3>N;G z1`Up8^ON)%0z55j7hp<sKTJ*%Xr671g{CKbr<m&UKCahlmcto!_Dhb*2*gf8MjPA2 z>mX-zpLW2&3bqEcn`@=tLY+;Q91qct*sCcV8|oCz_cQa0Bj!}YzMjd&_+|n_w;_ce zs__bnDj==?y4Cc}H!I#2{Y36lHMgnv(`p9-jllSDw+-_Dmv<JAe*qnJ=y?rO95f(f zSpVzy=fw{{r`u=`DEpYl#9VhG)OGPworEHO0e(zQgW}=v$j0O-SP%ZHw(=J{D68%U z+kn7S-w;HV@*qb4$N!>!86ZymZ?xNUV`SK)x_0GMK&?_^*mdD3iCl<Gj_n?ZVGILJ z=z(m4z^;A72lQ)Q0--Wt0_>t_wFqNe@kd^ep9?|7z+nRMunMIB4)9IN&h?DTHq+2p zcOneX5)$LB&UWv9jl#IHnW1tD<yw0VbZ;TS%K0RlwXz{rHXqOvB}K2B#qv-en}6(! zCgA<k=@IEN#piWtErWB*k3zxF$33=c^CNq!x}W$W?x&L2S8_Oq83H{QTO5~a>a6i1 zte}7wFKwIj9NRd7TIEN%^lXtQm&W83`*4TelqPEmXh-=RcTonN(;vCMnPovqCm|_L z^o_x4T{an@3!q+Ct)n`1Wkz^9@xAq0ZsWLI0H0L4x*SEZ-o3cr1g+g;Jexm|$J`l? zf`=UvonXh3u9`pTBi&$4oj*Q+&%{n%1ROZF15T0?b62o8lC9^$27GL)D??*1(92Ti zEWdof0)5%P#<1&;9oRLxqdF`Mt94XK9SA76dp=!$4(DI59DuymHR&nPz7~jbNdTCI zA-gt{qG)H?4sNm}9KO*fhIMjkDtwC3bS9D9IDA&o!#u&XI+4T8)>;JVoZTGKzuw5t zOj(`N&e8@Lo6~n)wgfrb{YYkULVfr*7heMK9Y0%TdAfLad&OQn{?)Svf!SR?khGgk zdim>WQi1*|6MGBEYAMNykaRohVHuuPX9l5py!rn6_=}U?JEWg3iZlDB4t6{zH=nJ} z??A&qb@+;yTM4#&QRf6vY0)`@%)dp-ey~Z4GOL-M)$jRHmi0`?6!CNX(h&RI=6PW9 z;UnZJj*nLQ?weCiS_%z(lONCB$7jQzHJ3jwYd?U;I(F1DDdyZTzxzQgmm@~{z^gB> z=|kX>fEOtA4<HMg;TGXNFXDCq9-%pN9Yeu*_U?&~`WL;!U9<bwo|koM2{dDOb{al{ zKxk@j-m+qaFP@~O%`N7p$)LS>A+!SYyyj@#?yVt|DkZ_Yf^GrBy~0?Hv~dwud7J_W z$Nf_IdE!+T$RS8SnbRLn0;R19s69o_lk}+lb1;^CQOT?YSlu2ysdI8#<1O-b_W^%3 zRpX#En>#TEs9>eBm&0r_lB5rVWC+W$LU-@rTWc+(eQ)^HuL#P720*<bCEWIYt7k@` zp2b~lHWzg8osIXnZt`*hq<#Hw;odrw9WQUBRVoW9PI=cflS^W$4#OY1O5P|mpBL{! zFr2|jFOK|eBu0g1@^y=D4!0&`s#r~mxhbuHIq$$ACytO%gYlu}w#};qNV?HPe40Q_ zrLX()6?-?wyP^@N<b>wIrORgl2nGzP@aj@2X>?6^^4}#cbVo}u+sG6Q8D5E4^n{{K z%Cp)Va5%2CE<F8%wp%|D_RREc1E)YU{zUk8H%r?rhBNS2V*jnCShUdf2Q7VPi7Szj zUWGmdd{=(N{`h~#%0IA82mjWO@*X<LM!0!xxNpN3G?1h)dbg~6rQ<{(63j}T2V<d^ zZa=<_2g6K>?9eDV1RlK7AZi2J%prRsO({>&QJeC}2e&49jPP<&3#IW9zmjO<I;V9} z6D0(4IqCR7=9Hn>plv{o8!z*@+A@yN_Poj_;q>O&r`4vJt?u56BN4!cc{FSzDg9FY zqcpFZ$54{8`WduFy(0%#gx>n`YTpj5&PW{iA4QH@M70~6rz43U{EjF@v?E2K1e|Z^ zlhG6c-DX&u*E`SZGO9SbfD?v%fctfr?*w0^>Y0S#1R9kJ?0DkyErWx<F_kkU1vt?( zta0^ZTcqEVCm<)xT5*p=AlH5s9`3!RrLCKrm5NtPXAwD+&!#-%PlWL>J>R3_p2<MH ztsZ@5#nyCOT^nAs`ivP~NGg#Y{gy|y0Z?u9lggN{m#~F$GBE-X57(e1X$XOk>`yC7 zv%YA|$3ay(jd&NLF3<b@ABS=H9U`dQPGkcqt*k0e78w;xniUw5RIOS0!iMqZfzk9P z!9jm9k@g8_%6J(lgiLz5i@x`6L7{|J5GRKa|LSpNsY;wtx#krrs!tZZc7B-2G9NGu z*h~~eJUf&$SJv3!r<!2CVx1{<@ig6lJ^s1s8>p9+Ko*Y#SN*yGeAU8ID?zIvAp+ZT z<N-u)B|ZM^aXBrF`XB5S@lY19B$0r5#=po?ZQ8up)wC^&lgfcNn8iF~-^h1ACuNYQ zV?vlw59bc=6>h4w-S-Oe#<UEf?~l-Su>H2AgxLe_(7YoPEr<ECnw@Y`N?fD<@UI!w zz!1{(clN3YAwS03eJwAIVx!3`?<#b^BaLG14K_=HU2!Q<J&}Pf(!!ZR$JpC0=Jwk> zM9x8}4anyf0nD~{u3!3$HnHUl_W%PoJ@)Az{-HM4%b=P920VVLD!j7&81hKrJBQPq zJ|0APd@1hfXkCb=28yOn#p2aiabOz#K_voO_>w)Zr_%TwWO((f3U(jQvu_!kz}-j3 zwyRX3LPW9WN5J<b?LrBs@)!B!O87CiHTd`lNH5SU6o4;5N$7H1Y_Mj(Oe>q01$Gr* z?T)wYuS%8SLUagYsN%M%eJ}#shjY!rE<kC_{o0tmZZ6WX`Lavx?v>5D5o{a6rYKQ5 zn?+jYw4#^zgYXT)u!%t|XA6lC{=Ue{T(~bJk?YyyEy7@&!MkArgqY<(NomE&#LvW< z*BE_*XKUA@4BF)%(ei13UL`tx6T*JxlF;EQUUNa%xWj+Ws8&JHHvLEC=38*2lDA`` zG4Q*IzMHiF%|6QmWnTpiiB<Bcx%b~*`)ReabR0%oeI<MzPciCB%Pqo(bPRUGa63bU zVRstoyYVN3%94vxhS8U~gEybHB-?U;z2)P%XK=;^gIW$!WziN(tf<7ER!kAZhlk!d z>4gDR&?J<UdJZ~4_)!`mFSt&YGWU{+!}E83JNXs2>18dDgG&FzeZjw*92|p6EOGPK z(h9>n!+ctW=AP(}+HzMEmRI|yCY<5xNhCss!<#Qm;QiDtBaD!0wDu3JTD$PJPInt? zoHtJMqe%{ZPjgb3bTR&Y5lM-nC+rcpjt_!WIb+>+Ka6-^o$Ue)A0^ph)SHWGT`&2G zJiS9c%^v9!kYW5R4#qa*Wk;*PE$xQ6fy`##_y2yw?wwYuu4UYHq4*(xn#JsDH=Dw{ z#@4d+*5aOk2QNM5r4J|1?y^4jX`pyfC0%=}ujHtwRaa>R^4Vr?NXv^-{Tp)GoR6CA z>cy8JD5=KODrtUdW$`N+Ozr3XlI=}$e{nt*q;$&EWjm#FeV@nq4A1Z{>uZZb3<J9Q zTA&eSmKVPh^?g{h)cs7c9Cq1jwLzo=%9F;{wVR05no|_P7WdN}Cs9SmHsCx+oXz?w zr`gYbcGvp>VI%2d8S>K*D|b$ovD{fdeM<FyZdfJ#XZU`~6E@%a1FfOto97w+F`X=$ z!!rhLk243JcHe*5_d%P#b&6<Cf0Wg(DXgFfi3r)}q%l-u?cDrkzhxvyVTP-|pm3E$ zfocvMrNm;t_WeGgdii=d<Z|A<=!DIIK^aBny6ZU;(i|0mH#}p8H`H!bFJh;)r`yf$ zYsx(=Dkcr4y!p5?a)J$!vC_y=*HQVQC!y&f$jtncE7b!qF-hHjF1Cq=ix+idG#lec z+<9@BVt1$Z57#CMl&CN!?nr}qOMV(ZL2L|no)NO*c9p}T(vzG@<3DR?y}$BU-|e@E zcb@v1^=f0xJWhuEX_PaN?rXPuA2-ert7VpJxn@82HlJVerr|y3UTO6GoD!iYaW@KV zh_G2{_l1A%wiOe1FkaQvpd;+6jZvtQFGIB7s-R!Yd9+@5b5Ih;P-iZC^u*ya$!8BE zb)#3g{Orr{y{l;>G}uOcZdJb2BqDxu_6M~!g%YHifm5g1RrDhv9s%%LHT&1f^rf?7 zqZv)L9o^5RY9fV<igjd$yv6KB!4W9An(M>|kkRi9`oGUn6c1bLO2|C|xvrfqnvly6 zGC~^r%!i8eP*hy^4nNHl-NU^?l!mayR2hft_P@h!nDUu4zMI-y^HC(y-4~Cl?sa5a z<`zW(zbwP&>F8H&WGUSrT;HIav7v((FUej1gsL0TxAc$pV+ZJRERIB)ia0dTjCx3B znZz^_xV&4ikCBgqIeD!ey^({-W$G8-INUp4zbd-qwYs1Ofj6a+X0>-_m%nnZEkg;x zSKL;kLBE1`cgLOG?)gN_^9v3B1$(rw^gLd4cuIf2wgzBnFv4S|nF#i(zfydRK>DK{ zeN6u*BE&j5h*f>w!#$ylUho{#<UAV6fV;z&T>l$rTNz)LQ78Sqk^NVE&x1WQG7jco zq_MGGJ+y+o_0L!0(KC62EWi|I4Mi?^0<NqGE<hVeH4h<!wA_@VcMIz|?Dq7RLHxur zQ)%2iT~f0D+O;^&f2h|ZjPMZKv=rKa6`6_Q_H>n2%(E{1jj{!_SQt2JjMF>NpQZwt zmeyl17BIr3FW^ndq$5(hiEV5V(@@W<$uY%Y>Y2<LCjPlGu@*#FieG*;=B@c>SpN@7 zvl78oV-yJL6U-Zed+8wO6uIxHUL!}e!MFxOp`pJ0(m#VLD6?IJ8=!rZuyGCtuGfvf zH_soh;QK=P+%iO2y=Cjbq9ZxI?mx7x09>_B0v7+5w4emCHH6}F=`>;#rr0|BpUZB| zMv*P)P{Bt%PWT->-RQ1)uJnkHwgA5-c_d_x*k-%!U}FOrvvVL$E)^Tkx8}Ut?HAzi zUk41Js7{bJ&DDROsfW#l`gvq%Cx`)kWEc~d?!Vw`qZ@uyK&A{EFmRf1|MZ9P=TePm z&#~NR%(K9$YiS0O7fc4}Cuyc5!>I#+j?wWnX)%TLz6}_tlpZnV+M(cAxKOD7f|$(l z141V4<ees|pdUNNL3NZ2uGC+63!&I3p}}Ud&ua-o8U8VHDmtcw1OuOh({4sypGnnu z|DvR$OBNrFRh$&7WEsdZ!|`Nd1tLL+a!(2wY!ZZA4)y^DX55Vob~Q*7L-9KI{GzWn zDblzNZ{#9$K0y5*IGEwVq^?Mr2mw5<2UC&dD4)%Q$`rGC>8-Vld|aQP{z%~GqE;S4 z-}DEo-XN8!<Cx@dJR!%N0zPKnkdEF6x<R)ja0wU%99F=RRiYZNY6)nf`!FizyWgj+ z7mA8+exbrHQjE0s%+pY52XP5@;}1ev;^!z~^J{5$pc+R%ye1o>pD{!v5W_7F^p&vn zE|_;^cqjy2Q3_NKT={%4a^%o35h@&v86Hh)A<^88%wWExVcyIVNdx%gOk1v&XDc~) z6WL^zM>!dI6X>mB)+|uXLV0!e6SXLcOjh*-2J4dLrIzHg0MODF%IEOU2Xbzq=Pwhm z!jspM7aD1&SpLVg0ri$<ysl@%6bFPF*d4vyyb)mS^IvlAClX~+qYxuKf%K}zFW7Rd z^sK<!j69IwINqErZv#dy?eAv)Y^!K#7Y3~vJUNxLUV}XyC0#|d^1r;y8u--|ve$7J zhV^#d1x+_x9aO<|f(t*gTq2=5ag&y%J0YA!tZ)H5osUY&71K;}10mxD=9ib(A0#qg zVi@2+h0_u@tI;f*hr+vnDO)-<cvA}L43Wy(QC^qZ^{_M>ErP}W_L05bpRfHPiQ|1# z-M^Lfadgn=mu3=~vLr;Dnlz}tl`V)uGr#}s$7p8DTvkb#=@US|{qSQAC392|0vpDm z-9we8pO;~ZE^s;CI{g8M0B#$^qGkal<qGKJC#e4l9u(ydeN&3=hod+HC)INMqrR~l zxr)F;VFA5)$0yKQCs-$Oc4G{H<AbD1I9hTEG{kcME=;MnWHE%CB~GL5z1V;Xy*qU$ z4<VEHyW7UY`EKZw^N&U+CRF$qBfN}MA!I=_zc{@2hOfk+c5cM)pF6O(#>5%=-dV5< z4hgktnuTMAFA>ve15zzEb3cUiYW#Z9vC@J0{@3#_V&Fr<b$~$q5^QFDs7-e}UtBvb z0rgM6)Kg|DMoI}0cacDD=yD2ZAVeFqMnQT*Ese5>2?XgFMN7~fn}grcw~O)s#BB@+ zEL;Lk!AfqjkBTT9Abp8p)m!E%xzBFqtt=r^6$W}Ya`RkNjRH0(F{lBw6v{It%fQy4 zVL6t=2qhewKJE?y1;D&35aAp!paa0hk^j^H6lt43c_G9}^?_~GK-kndm@cJ3d-FcI zenwX=CO&+8qRvKb9&}a+xoY`)<eiZqm7pwk=zXY9L7oKSq;^akG0<4M1;=f<;AO*w z=OGh7SQ>oe*h&WUCY6hOsHOreGqrW&e-q2}epY<<)&){fQeZ;L0Pro)LW~9f0phRl z#K<zkLjBBiX!X0on~{#WZ(?EQL~_f<G(+gHYR9-ghM_vd6?5BOUes0~3e$MU2LF7H zDdaU?fG(4=NM2*y??)Rb*~t%7a5m=+@eE#9+jGgR{fJVza5l~OGRlbRD8e)xY6iu< zIkUKw^`0=AQ#k=)?y+1UqxSm)h8P^sx#c3Sj|x7XiDhuwY1VL;ln}Yii7eX!d7S!p zL(C9%0PwKr?I~T46X;2XNcrzcfz~epG^xVq+-v^bLgP8ckk<qO<46<0khmXr0^|;5 z97d1$bJSry&Cuh;pR*~Z)CXEF)GkU);uEI9T%~IuvuUvG{{szNU5Uc`dGYHNZ%4Ga z1^}pcRoj-;$l=dEit7Oi%zFUXmgRaST8SS(>ns~bED#)V$UeqTp=Vz$(F#*FBS{>f z44DA&A`X;)CSb(({^SZdfcme2Nk_rY-$Vx%+VZMN3ILiAZcKTx;lp%#G4QYf-$Lmg z&jX$zJfK_o$nJ4U3&Kczxm%+pqicapPSb7P0<UZKwMk@KU;-Hi0le~YY9zHnX7U`M zomChQbH5Z*Gqqh#1gll2Mixfr9%{BAS*_$cF<WdeQ$;8?o>?PVJtjL7X;$4rxH;Re zX8|>@`WV*#7{PR&V0!vl!7MhIQ^*z~O-HzO&5x}(oi9Wmych72INhnVO|>d9%_^3V zlYad?i+XXg!|z{kE#;`(vZjnLrg2_RIv?PdF7&FWQ!(L2f9U<~0PZYyddCpd02kq} zMS+(<>`?u-uk{s@1p=+{t<zArlvQh@)4^VWumA{1Y`>=~Ey)|*ZyTg*sDpKWz=74c z!9Sj(3JYuH9q;6Zg7jm7@o?~Ch~#|Q9EEb7KdM+5`gFXB_Q}=Bvfd3o5=H2`qB=xQ z`C17)9%HGgHeM6C)O5lAH9EYLPry4;F`N4r?i_)OW;#k$h@U&anRJo*x)%7lL+PE> zpiVe!!XjP@a9^rrf?zwD(-;zBVuN<X(ST1J2n-M+>XX)ndy|3-a#P{2+#hD1aV)>^ zvg+(4Lxr0tl$Aveu0;wATHMa>4=bbC$yK?q9$7a<f!#?X>{BqU=3u$rPu$ODF|uJW zB0Qu~_Ug@oYlDx}ib7AH$Tl#$2&2K(NPY$57sn!lAWmt^b?a4)euMN~n&mu{adUrl zI6RO*p%IVuF&V#;Yx$Gf=+%4-rx?H-oIT9B?nb~^R&!X<G8BSmNDC!@1WOy5Q3LYG z<K0Cf>9MVD^c<Qbo)}b)^M)e$60{$|%)*4mJ`zn9Db&@oL`Em`pb(!5e=SQA8TnHt ziMnJ%Vj6e^lPTalaSD1Xk5}4S2$x7{Pud?GbU*|SW2Ob3$!m+{QL_Hqp#D(9X zXSgacV1HkN^*zs^cMiiuHWBGs&gb9j7+CLkviO(q=hV`7uu$_Bu$fg3;ArWSY3~y< z#`vQwef_pS5a|qTJ?YiICNOX=qm2?4h;2knMoZ2C=P0#`*E=N$_`sUxS>!ixCc>nS z^F|O!1^xv<GwLIvzr_!22+0fsnv_=Um_865CV&uAZ;Q^^gK08~qN<k=S}OL(cqE-w z%qarM)=gDU00JbVz<KH<G%I^H4|RXti)J6CO>0QYQhJnQ732kaCPJ63x(84<afvte zbDfr5XKgI0)LSi=a~LAsjOZ|ms!3hf|89Yu#=~RRGSHX(6Yk<m9dIuLJ6mZa<gAi2 z)I?{|)v_AIKJ9SZTnZe>K-gC_4yM~jgGQb3SINLnpvgbjfO=~NK(aAJKSm>p0}^w? z63}f48%;X>VZUuM+oH}#ax4in1DrDi{L$t>3U4qXJgHzifrCs*$2V)&i2C+JJ&VA+ zP%m8XmW~Fe&6|%!Q)jFZF;H7PIrJTBcJ<Ql{*?Npf)}<J$QfL$7M(_qIiM3?6UGW; zge#n1y0b-=5Ph(z(8A)Xc*FdVIc@F!L#(sZZDfv?h<BYQ><{MO5~La9>XM#G<~|uO zco*CPEd$q-8IO~u-S3t2qn07UAYOxUo*(ZnTytqlzmz-mL2hLtj}t6Wbq0}5|0rU) zUCRNZ^K#-}lUMKIOT@n7-Z_>qBzrvpvrqhopUawP=0FW-m>Q<Ki(R#~5PBad%3(Vt z9e%M`tVTm-Z=`Jl9pqW{eNdS5dp{%uSA?pP+mh@HHzT<&*=g4{$L9llGn{tvjXdv9 zHo}D!8C1z}MZf^fCu^1-cN{LP=+{6#$@jZDm{z+Q2SA0I<nvhoVsxh!@Sfi!gR0EQ z(fX3WIU;Ua_b+gRpyxDf@{_G;fmUJ!`zu1l4s-|vfLfaw+K=T7EOVMZCy=eggz1c8 z8hy<)eFw%{0mbPo`7#0T>m%f`j}_E|c3=?5D8$a>ZsVMtJ`UKRkx}FlHhK!{)IN93 z7k$QXa>HM6WFpkQWBHKPhZs<%RUpoMf6{Vl4(#+}23~k)qtGg6*H6MI{oA2BK193z z8K_8I!{4|Kt+HL!5d?f6Z<WumIjMmsH%CCWkJ1Id)`-`nJNVo_*qKNNo?bQ+HB)BX zwFsy^1j*<|3FQq7^n>c!H)Qj#y36-~+gJYF_T?Saap3Fp&W&-78xZ+mmWp1!1Bj-k zwZ>!Y@bnU-b|UwHga;4UT5Kq<n_w|YfBzw~=I234DRLJ^w=|HI>T5JI{;K19GU4U? zek#=Wvb7QX6Nowd#`|T|ZX1W7+xJfpb4F>ak<3E+RG_e?#U8%RX$1}gGTbvTx=`tk z9Z?Kg3Z5zTTRq4ET0p&uFXk=Os9(S8GQ7=bB<4#{w@@Mu6GY+iU>eQkakfT3ydWX= zRU2ad^q$P|tKT2Is6qW)F-byrLH@A}cBxVwU=)~s3Ybzbp_<ah5G<6ulYkM?bx7)b zBv*c}XGNk``wbeQOM_2f2qx7pzYM`5MtFun_4-6PD)q(sjwsgg`wt5cxYxQ>#sL`C zLcbs4TKAmCVC?cA$^A(UfZlkaS3Iq$4!<Yla#sPSm70z20l37wy1Ql(BgF|QL$I+$ zFnRVJAPa*wb;YcF(BUtrrIiD96<dj)Y|*|pM(1Bh(*<(xo79B{az>0siLwSzCu~0l z&+LFc;irrhX7x`gMsQhy$<x+N70E2Q9UucF(n4)2gPSZwRkq#Db^4mm;Fo9d8UjZQ zk?8ivY=4$5QD5NRb?w#{%zE=fMGWj+WN!XPOJ=>d4RfYZl&1jx$q<L_ckY^?mTEYs zR}H1&VHeDk<DQ)NZUSwy6sokBoS<?2>@!fu9MFxgDe1{f##7~)09NxP`y?sO=q>Ee zLC_sCUIO{qmzB}=!`8(w;W%To0&)&E_(<p#*J+e$4sC+K(6BdT_sY4!E~tu9s-F^g z+~W_KcA2eA4(g)dAG_9JhqsTbv%C%Y>p<N*Yv7*!2%@3c=z#IEXQ1@&YX$fk+yWr$ zWRtT3j(wc${IuhrW>udL@NrEYZv&Ge*13<{;fz93d=K|bD?VLt!rX<4-|HY`uuH(Q z@wh>dx}bk#f5kwh{o;88RA^Sr0lFB%3QFKcNnk0Lm4V?m?S+hFC87(%V>7gZ&Rn%& z)z^C-V5mtPhC80?TotwT7j{T77pp|@>&CfR>i&{{#5$?G$Bof|2_@$~L$WetCXa<Y z9z1u3FaU!*NPvEzDj1n^Nai(p_7dRbc@@)5-fWYAW@CqBl4Y9PWlI`u#_5j)9#E_8 z$s0R?cOyiS)NYyyl?XVThwv~ZqtByYN)LdGgsYBW=dq!ovHsh=70F0+Ok|WdYi<L8 zg+&OCAkA*oO)8?K%#@{b&(%go2`dIBx3v%pctHY_Nnc9diNKKY0`n;kQ1CC*zD)z{ z<Y?mnOF-X=)x@05>#C{;39Q11-v(N6wEmlNk#$j08WCCS^kb1C<!IYjn9@S1FO+>E z%j=++vvS;48yUbIIT5URY<Szf*~(l*J8po~C>9m%w7D@r6*&PHBbs;gCtqrKGfs#& zb|#q>51987#{?hbZ#+NzQcsV)44eWk!7eWQ`W3gu4-?g9QW{qq#AfD@*T?}`Wo`oO z;%m@`hr@bYctB0J(on!}P_R~b4ICa7jXN;eM-H{AY$!5hqQRNN-jDe`Q@kYl6z`E= zVSn<oW;+a~OM&;(9;wjNWfDI)W>656YD5veIZhFO5t*E7^7<om$Pjd*OucO!z+@BX zKmuCdnh9A3r1jBg<S_6Yv4zMEC;YJT9jNcyp?RO$<S<zOJMgcfzlrKog2yOIAT4~N zoVO4P6mQvqWIu%q3q1eAGb(!ZZs%SyL=0rm^(wTFBi5vl_H$4>ko9Omz_nunkPt$q zsk-&t`glHk#k?vnSuco%1s!`l;PwShV5$0yZ#HRA-h?odiH?v0N<5UfMz~2<0mmk3 zE@Vq0z8jPsfdb4R?G!`jUpRMLtck8<+@NxaKq-f(s;H@+-uV!a04O`fuG76wnxrUd z(1>`|0ZKcGceXl8W{2~{E?_9D3WSQDA$09}P_W0dsmii~$81<udIJP5BQQc(V1Be3 zC@@a1NDe9<wRBQ^?*UA{G>LfVlPU@}LFoyzwb=!=^tuZ$KuvN;ww$)N+=~;t&6yC& zeE-Twn?D2^cptJop_!oDh71{BXTC9b8|T01o0D!Uo>tT8m}RiX^PuS@k$fNXgH4RI zGBCNJvT-Alp7#Fcv{LYU??!z_?f|e270&BBVRuKK0hb|D?KjouBQFs^_H3`FaoTis z2D}I<$Egv`*eRoyUT7l@Xhl&qVih?Cel5u>X3$c7;Ec)W!2K}>dR-Y{tGRsTP8J;n z?I5^CFftoJy0UK0+lpQSC@~W)^061nU=7}}A`ZO?2t-mfCbN83JcCh?o{eom8SN>L zG9A)8`YSGG+8WHSS^&yoqEIePRABU=91&2F^#T*N{*i;*D*2Md>jVty4SE2)>toUu zk%rKzw<OUh&7`+}CYQ#bS3!6C2ga3UcSo~1XLbSVE%TIsl3ofk*>+O%KAcc+Ho_XM zindi~ApsstM14;g&B6xnA_BUSDRx%?u8`N8onkGirO#lmRe11lyui220bz+P`qT!3 zs`+1cZ~*19WT8|iis~W-qmNN=$P4N#?J?}KfG5@95}-da!bxBku!Npb_R$>}m>Qx3 z4_79aBNIGzI*W;DLu=S~e(V>jT&|}p206a>Hrb>Y{=|Ou+o{8J?q1dlxKxt%aU8O3 z866GA0v$c*d;{sMX2D1u|Mk8&1vxy3$BoXL9KTe+I12}h2;kEYG=@QTrqA`gFJ>lO zP@0+wmedEbxVpy3GtK_k8j)Bj=v9MLZyMQlw4jkci>d6{lCcIJ{*ihAZ1SdW0Am0# zfY8Eka7RQVC7aVOm2eBg6FTp$n;eZ+BqKw*Qle2>;=sI64`qRCYoR7cxG@axPS7Ja z>TcJN*uFM|PhT^Jk$PPL@RCq#G@%uh2+Rkp)3@*kp#LoCOQ168CDwI=1dGNas+h6l zn?fg+6GtZi_cReM1DU-(UX=Ut{)2gj1#(L|_3;F-5=_6m27bJ00i`@F5$%l=pr}pM zS}AQ)4RjEN;lY}U=DG~godXiX=3hvf+Gd$Lq>4!FonbUWh7*}O!21UnkZe*kHhw^Y zboqyk(W!l>WM*tRs)4%r=k04p%r|4WQo%Um(0$*S?e70P3*fMl8L|ZBd^Eujt@(Tj zIw%t_$zljRHDnONba98<2-qztwX&9!ZpEhlP_mx_$EH1)=+Mxxn-z_O2^dB~>u(6$ zE=0AV0Rv0GKA@yk0Q~IOi9v4&;HJqiY~}FvEm~K%p_C8ssWn$%&BswL8CncxV15o} zC{z0pi!1`qTnE^wJCNA7W{v!C4&<!9N$Dh}V6Rj`XAr>js{*P%QM{YLBa|e+eV|2s zTZ3hhsHndJhWL<tzk@8O0SVTPM<l4!s?0e_tFb!R2U7T?cpG59{<KYdUhE78BA^7P zP?zXDH-;)302)f83ac@*P5!`cuIgKbvCiOohb3*ThBBv^ya@lF3!FD;*4K{hy1&f5 zF8BWMMo`1PJPif|=nO{FdIFf@U+v*-c#kl{i*y*&>H$(qD>(-wPbKP`_wNjF+?XUG z9%$m<Zf4EkZOp$!Vv=<c#`5goE3kA8C2K&>3VJ}d?oolaDdyM{Ai(Z9)Z2h?fTa57 z#XPCg<sYe1(qEQv|5O`7!D;^l5eN8)1UZ9LVfN}TpH(1-uaDs*E;a`uAJV%vMm2eb zKhY;o3AhCf<S{3mBZU^!(jP@ePP%R(O8#JyKot1*&|mao{C9OVrOAr~E|{Wgdy~Zw zyJaA3mcJrv6mYHs!9xmWM1rj6oC}~Mru!$1)|=P!RwQUsRlxGG%nTi1K)&ZMZEXcE zP+h|(i=`PDP_Q{+#vGtC>(-DiP*r{fE-rc$`GZeDcA8701!F@TLv4Cl4b?`?fSVcu zw8A!Uc`}TO9n*c2BE=2-^b1D|)kg|HC<L0I)>&ikvBOiZJ72uAW(Q^69*qkB>b>4W z3G|;%Eg6-NK%8k!0y)sz^l#t09nGm!0N0}oCDs8JyU+b)x6o7$hArr%Lz}&$n?6G= z?YY){EfoL>tEkcVg3%iQ`V5XYVq`z-k=TgX!V+xoRe=XKfsIr@(yxG2Dam>O$k4A_ z6{;^1J>UbDH1(K*JfA~p1lVh7NXs)R;qXbI7DqEry`g%_ch!91b);AGg0{02L@lxP zh|DqIz6)8a**V4hf3tux)S)Q~=>iOghVDAl6THvaqPzm#&3l~U!V&sYkxb?jh4>v5 znNpf?;Oc(+6=|~r@Ni(MLAM{2cID9<j#)GEesKU8N7I@uX@*Dwq@g53>OYtfD-`+o z9c+bChVV{63NisQC<S<mnCp$aCS+)2I((n%ZlNHlbtIM|5L{LGrvlD=FQ|t)4sfqT zu-9_Xssv1+$@(sXROf*G90CQ5mTSo=NK=+rzh(em;uZA6)Q%+`J7)?cz{58JbC&gp z;6PW49Zc8jONZMAC9HgRNjBqrRMk$Y$s&G>6d)8AyHT(!UQA$s(X)U*^u=%iU`|OI zs1o(P09NNT6qL(OcB{_Nn2|}3%oUaOTd$;ZiDYuomgjLm9zjC_O?I9j>aI#i9J}(q zub|~&W^aP)sDz%!J=D3(y55dCj|_ll@5KG1S)jrUt687A4x`x_pqa49$q6K021s|P zwA#*U7W^To;<SlCn#lZWb)y;D3Hs1?z-Zg{JCn1thFmV2>*_=`KKUvFygewiU#~0# zBrp0}ktSM2Y;c~0;Gj<5D#8%9=}+liH~+e##-$1n=olt|nVU&;*+QWh2@YyTU&+}= zsiYpO@!kx8X_ASs=Kw?pv@K+}<-l$R>30AS1Ia3$46l9R$(f}U%HKSTXum`MAffxN zVDlzR44p?DA^%mY@Z<8qz*NgLnY!RC;Kr1U2!3#ig9CvETeny$4kM%rH;df{9x?L1 zq^7Lcy)^j85tF2DeBO{Alpm{5i(c=B&J43O>XzeR&H-xYldIPd-4FFvjN3l#EHM8H zM$RalX3&Rmz@AP}$)$p+lGy|un0AGDTp0CIHbyx4waWH;TTfsdEdcq}X4q+BswG8K zO%sp&Lqrc$?;En^$4%D3E<gyGrB@1qNr+wXefR(!4L~JeD-cDRYAFgpqR}RTMlSTx zDH-fmvA?tVw7{@F4GQkNc<_J*5eWQWu>6C-CQi5V6@4)t&~hr8hMpE8+e=j@V$kv4 z0swO+8lBB-7V3)Q;h2)zmJU2>56KgtGHbob2}nx^2~}gJ6i(nehX9B3eSgN#YoE%e zRqGT~tgs0%)<P)<CTtVARy@QQy?-ctp$1Xc{uu<+;9=K`U<=@$*D&7L*<E!9l1$hm zI3j^CJCi7LYi$sh969+l(2iRRM}XO*bSJdH<aOur;C$5KRD)_zsE0v0VF1_eIsexI zb(aK|%^5>H3om`7_ad%xI-LLx3aOFRji83@%+gCh!Y4&w(;Tc6cZ5ooTMVbx%v*lh zM@~$E5_y#ja+>L7-0Wn*7l6b<=+IgTGyhKJAt=g^FC9qh1buA8(f>!)d&hIxhX4QQ zjki&DMr7~3%3j%#y?01Pva_;f?;TO1>=m-gmQhGZMOJ3E2pQkwx<8-q_xJeycRwE8 zclYITUgvq7$LsZa9&pzgt2Dd$4bTxnr80;1OuVXK?02@o5WEi>H43pk=K1)zu2Nz3 zDq_%&A(k|wXXx7-;tZ#{F{wR+$&nb`y$V_<5S4JC_*oGKtJ&Zz;W^in8{h26zCmd! z`b1z`@8ut4I}*w@ZS$=Sgs#?_*+U0g$UCG{MiS9cm-m_3-U`LoE(9U+Hk5<cE$F() z*Qdzth{^l^-J*L+F&BYH_8(_vTu+O2wxEYpW}~LN=zoQU2&|DB0TRb@=+oj42@nv` zU!CBPdQ8H8XG(W<qCBf=2c!dC$I<7ZJ28!f2HbseHo7mjfNCP-G9_SeaVKBO<PIoc zOZ!Mt27TvszJHnH3DzaCG43%~ROJ&}VCK4{+1T9#vK0A&fxREoVr*PPs~cJaAQV$% z_TIR3zH^}-V836xZa1HA+Vm8n2(Hagofy37)`RN+|0Ucj>6dRzJ$EDG4Sxz>B+fHC zo@FBB7EN@!ywn4wn&vYqkBhg(kJdq5S&1HsW7KLMgG*PH{E1+E7ydDzI&_R^%zYQy z>`DJSP6iKFOvR9I>WW$UaXZ>NGVaC(s2QV=wGNfk8W6#t#QAGgORzfWKBN?f5OLG6 zw_ZGv+)+L@H~gL0qF4p@!#4?0gSEBXaD>G38UM%!SsJ;<%2x(JFF+l@Jx+%1(c67W zPtImZn3Y#E@ygxeQ)*C&WJ;#V3rx=Z!(x|L)_<(iO_uXJvJ!@VBxwR+r1*cef^rg) z$@wGOzDRHrm+wZB6dJRVT}|1Ec7FkTpl4gskic-;vm3R8wA|b|)L3AD&qK%oV`T>1 zqW2^r+9T8|c()iKO)#q@>dT*i8<-%o9T5n6Omp6g|5t)&&aS!3IERT0zblw+v^{$V z@>NOa<@1aZAG|{1M@*wV(5@*i*FCirj$t+5%7&-@9$P;h<#2us=RmN=qA~NXGZ>?) zaBiaUrxjd&%mp)t);uYBn{(efI^x1HopVh7w@J!Xi8jM@Tov*k_rgSC-<eL|AR*4r zdx;Q+%;EC7u3}<-WpL4vyRtqNxs6^C|3!@8UAzk2!GoTTyKmw_4ZkqMR+GdhROC11 zX~OUDxsefx&0!>{1VAa5OZ*ArH`3!@G_!&pKh0;n^5qg8INT~#U*0fx{&^j$o(}@U zqQqQD23K*E9P-?i^Ir6qZ60L>f&JbCG+Sp3T*FeGLhxdIj}un!ZdiU$yQ}R<xM<p4 zqVp2j0<z%3U}a&x5PPd?lTBNea}Gq8*E;zgmF)3<|9dAQ@wck#rE(Z}dC!+l{(yX2 z7DpgxA0z6VE{*m7@7;ehB3_V$vt_fFdf~GX*5t>!I@EKOxfFzR0T(y^u-cEXiChi6 zn(+$ne>(Pa0MWSJt%#XV12H{}j}?PL${lQm_S1f>cb}o9U#cWcn&%n+rkNlNMItqS z)j(QRIEJ2?v!RLVR$@Iv?*aCK>np^aTpa7cmn)H3)^R5SKU4#oGl%CYpSf}9ql%7p z(7N$gHg5kRX@U-JeF}(@u79qXMO@vpyca18psnVU_42r#o-SFY$uM%v<B!54C1p0C z%ZzJWmhabDL^|@Sbav_2urw5ryl6An@jc2JMjjcks_M*0AI*g;Opn4%$pXsTM0~AT z_;oGGUK}UktX8>ozPF3-sCWEg2mN-9<rR%b%=1fNJC|T&I041uHD~|PGec##948W9 zmojdIjK&$WTo=-xFxjmbPHWF}uw{4yUyXzJLq_~ysK%iv8L1CO#jm_o?%IL#T;Jex z<QyZt_ue(;YgbI%3*}(tPk4{YUYx$9p8Ei?zyBNYX^Q-KFp6+R3J&=_QSYHS`|P;@ zNoOz*&o_oL(jwW@o$$j0kmD=(UqBJ}ULhP@6{WM#UiyN+vU&Re%`k-kD*yzPfV7)3 z%Kof|BLdFLd4{%ro-m*1DoNMFCLFkqwY^HL1nuUx;X14vdIE`@qN^h(k|c4@;T9_K zJAlBw8`w@|ncWDB0l^|&5LekfLy%<=G2C5_&@@g10YDut)+`l^8K@Pc^4SUC4)7?i z>rXW^VDSORiPMi2p{bV_noVa(`1a3c^|~t6N$>O<iWRJ7A&SQQA*K-T^&F3_-YmD! zHnL$0hFYlixf)$xneQDoyU@n)Hcl0q%1qxj^YbAK!MC@#yBu*lF2ikpo-1$UPh3DP zd!9gly|3LM#HP62A+gT}$NP=mjM?wDNz#q_|EO;AjTC2MI%wtnU0elSZ~rx!>(WzW zD6|^dhK_Tjv}AV)w@hlR<@W;laKXW#(Nw|LJZ(A}V6I=xlF7HP5$O<0dF1!8gDHM- z81M0eaI!;+BmNKkDV8bsT2$0IxH-K4)AGbYRmM*HYrYDl!PmTq=4rFxzdR7*d3u1E zAyytIpyNdUda)8z1plW#C_Dpw=-GJIefLV^vPkjcRjK(|LjOh=vc}nEDkf?M%Fs>B zLV5=r-Rgs6XLG39AUc4L$X5PyzN3xQFNTaO>}QJcMuw7h%mW#Sr{wtm$}$bHVKbCH zf(B_gmhpOqzu(i!ADGNU#Y~zw&}oXQv}Z{wL40*W-gQ}T-eW!PO;@k_dmfWImQ4zt zFK%;HiC6h8%`H;u-e14*D9z<);Km){#hA@7{Vt(hX!B9Lby9z)KQH-L<+0R}nseln ziwnx?1zY~_TK58*EquNy5xM8eJ&u{rGCC;i(_lq$>XXT<|Bt+LV&Zy1tiO@rFR`3$ ztKcBECi0{uVGnMG{x^p9gvY|tud7jHZp^&M{SX~Gfk&6ahsi6eFOiia@J~YCql~Q6 zE1<Gra%_T2*g9xcOZp)Fs_mo{&|9Q|3i9@VS}LmkHZeaI>70kGIN>o%&<YfEe<Ut^ zU+B^=A;~@v?X#?<Rrjn9WsY=;gy{+Z0`zpvR!T{Hz1K_DU~Zr1w7Dc{WgCj8h4BXi zD=G&J-b(80+?LbUOS>Lr{l!nUo_idQ39ib0A!adD`gpX<?*g{^yZHH3p9BnjOJ#R^ z$ovU9Td4_tRsZQ34BZo}ND~dOjp-z`9VPqs=8vpx$~jU_S4qs}$OJ+~6!;mxU_<5Z z^ey^*+-)-UI~Ceb_|t7E`rlBG>|{ALw2f=}$?U>Xa!y!__wSe>JC!`B43X?H)?y7# z9JpO&iV>gvyz#-0SB6$MW(V-rEqpreLbUnC!egMQ7zX_W5mS3NLsa<AsAA@ntb19n z-9N;kGIP`I+Yd4bk(w+(QF<Fp15C|d=M;h+O@>>utoEb=F3ZzEWp3$-L+<|_Z#qKn z#eIuB>x-^Z!+OFIf3Uh7B)uazM=*l#mg6!01ik(~y1hZ<*8=vMKY72k&o-bBRS3II zOd_2m+lZw6YTWPFxu1WFviFk>H?hy_n+;NWqyGMzdQ-^fAfDy+gt{ebt-uqZxmZkZ z9}oW$ZhAyvH;6~I#K{v-#Ajufio|6V{Vw6&tW~XXSR9jP-St+!W}4~VeO~q<dQaX% zSrG5<o|f1xYUxcv%X*#wZ&$1$F`+9>1@4&nt}w^sG5rI0T0HiOgS^}bN0Y1|_4YR^ zBi<K*vN(C30d>L6$`<l>1KobYp5!`~;pX(kj_wXIdmO@(GaZ4pc6v6D0lwqA(YMpL ze^`ysF<cC7e9hecI;TZtoh?!A=aJ?s<{;ahrFv<+o5z}&T7P+ha?_Wp>uPhhs5?D} z@x?w@n7o-Q9i^4*Omm?R7%?E(zLXS6;BIX2xzNhirTYiO;tc;dtn7zYOflVd#mOfx za`h=7x0dfl(QHTNQx;t(zOk|POJ6>gc%jW~>9`PYg)+nK+g#eLg+D8A_`G^@o|F2> zzV1%M+~FlU`QHQWtIf-X%;#QR1SXb0^WUHD-LCB3TszS_Srg)2J+?M^U8WnlF`hh7 zH*6;}a0%;rH`Rz9TS4bZT1HEF4c-_ca)0xbarrJ|xgk%xs`s#H9=r5m(rx34zbNd| zo7t+O`kv+4J#c2OJk<2P#76idtfvWcc5W(Hz$PsJmbU-h(=b7M>R|MZRfy`1dFH7Q z`z!c*44XVd9)aDRZ@w<*(Z3MWD~!Jf9PgxhOE?=yZx)WSjOaY{4t7=gU0%LplEdJg zxjP`S4J~~9zeoJ%mg}$LS3(2yVg?G^hqpN>7yO<{J{n${44X|$V6Y!ssHGBfv+nd8 zTE^7anfruYJF?t3no)UQbKaC()FawCO}lcQY&nRQf{?5!TH><$44E19djABjxBDNg zuW>FYwNSpSfKGqey`dgW98r?8tK$y&VSQNHW&fNv+<lpTN3b8ds47L2;UEzxJA;sZ zReF}wL5@X3egE&3V)_j#bgqTTJT!zNArdsqFI>jx<{z0{`DM^r)Dh+brVM=LdmAqn zlA>Rzulvf0K2=AQj{LiUwe(T$G{5SvQd6_elXf-z`jSQ@PpRMCNr2hD<~e>wdkgB` z*1n%FjMQF|vZV+;VJj&NSIjd$yeeH#lFZm=;da_G5OH_zvVI3k?rw6WM7rQQ=fq}z z!QXbWz5wr~@PPSFTPq{Bf+LD>n`ScG9zEil!By!6e>mG2Yxo>u>lv1c*Z$_zbcDB& zDAas89TM=ZDzmjz5X+Q&<LT}sF<%^?R<C!7*E=`Z{U5=>@2`~Yls(sJx_CH7g#>Tl z;q%6u`PMcW#LF;c;O475@z>g@^jj$2h#9~Lct!lr4xR8kvWVYktKhvXu@rGYS}E$P zb{T`_*&S-0RzaW6*CUnsk<)P+RW&S{Dy7~vD{FsOzop$8odI#z-}x0krR@AZzZzDB zFo|4tG0o@$fT&1V`e7`o-MKukLRW+s2-^`^`((|quFL8LhnS<CtOQ;2#M^vV@Xp|< z@7j-LJTko=EG{mnnIHYF6N&He-f8%&YFQIb!$|BXKd3QorgJyq($e}MsUr0)dXL|= z>vPzOrmU8ERG~)`PBnq+f=^^3`kC$vPrjpSv(`viixX~;G3WMmSD<331p8a5QtIqu zZA{Da;jhAeGJLpbT~stZQINe++F`3S*RvX%ibzI6e(v~B(?OofT~wB%u5-rQjVP~% z?9Eud{`T!fufF@89%%DugDk5TxYd;VRL+)1b2pQ>9);W+C}8Kne9Ed7f1!_`zyCy~ z)V}QB)^TZ-`Be2wo4sEN0jGa;gYPO1i1Gf-2zEi0TCHJE7(t}C+E91ob<p23{R;kC zjC=M`N-J=QESc{KThjY&H~PHqmi=-(g9wvaO(5R~c>}6)8lD3#=IZ6rLG{D|+{sT7 zG(+jp){1qD0%Ya#BIH3!IMuEXn{_kwjFK`a><k8D$EgRRg`bX6%1pf|lm;dh_jINy z`(lcF4~p=&h2gzU3dP7=;nM}9aYZtZPG+uW)5my}Soktynp_<O`R>^60X5Vf4BuZp zZ;?p5_V&9Iw*@1@AuC<bFqf`9nD<-B6Q<R09XS%}agWSPnbaj23d~uTStH=t7|QY8 zu6=f?_{Sud_m5L7jJN}jS5s(RebbWK{_#7sBW0)G%6@AfKHF-)2y)M?SD+F?p*yp5 zDC@qG=V1m+)K#Y$;46?DUFz~*3fI<@yhTp2I-b-bbkwCRKuQ~G5M^{$sKA1L1VA+I znh=J2y$LPU6W*_S_PhC1KWon=hCO%3ku1|>Xsi<U>aWkao$<0=XQfU>Q?(Uweu<L* z5wvA8NIsDcup&w0pB8g_jbC>2?7&<GFJvx8aXjc^x`4S~4hp`BcZ1a}Zk3&)?5aEJ z;wUDva+khKi~MHt>Qpj8FFW7aj3gBt)js-d^s;0uCMsSTm$HDN_5e$qU}bKtBJsFV z>=vuH^!~p$CI;FIT^dx>R+h#u1l68RWo7r;g+08m<Pw!_mI=-=f5;Q{FRaWW5S#Jd zY{^Ji&qunwAjk8kMg%W|(4^&B!9?Zqg^f+4o~AwJUrv9f8Wp&c$m(7wSXYmI9f|8M zuRJ|VC#uRj+8UVs@aW?1GVY~atd+>EzX{s=j8rCcyQF(E_UXMJ(jS{@)#C*l2cmTf zYVQvJNs3XDP;iTk^o==+NtnIV6Fj!9)5V_skAe}4UG+V0XV5&YLVtlL<5KFKou3c0 zB~I}NtJ9m3WC;@(w%_y%{@cozY7hK7^7rfM>)=Lu0<;~!+*FYDn4<J)ZQZZ8A+y{O z%Ge63y2E4v@l;HoFBA`L7P8iipPP@04SyYQAWoa}OZ3B0Al1-~EPacKzGvN;eC6(4 z+V~~HD>D7k%0|tkGCzr*hSlioNT(#;bdx!pvYn94{_P_B%XuMx%da`#mK60Ofy3D& zoUiUzJSnLw>r)qcKK!aTe?~slPi%j=-1tkpYTje+@y0ZvwBIMZ7CULztJQ+??q;D! zzi7Acw(MW8v_0hTUU2BA=My|~_q)Dh5J@!6+f=aMq}D_kJ2`LZI#B0IuQ{^&aAT@= zVBdAQa%H}=b?NBj?9uvPnM86Q{+GYb(tGLpvLfmKc1=h)pNzblORLp(Z{-keR#WKu zmqN<_^<90MSP0&^?@vu^^Hs8G-N4z_iC38)lD?$<_&V-6y^Ys?cWZmLy<IkA=lzR3 zdcgah6u$?!oLYhAu&^@K%lG_ZAC7vIaCpwB+|xqr-u<E24d)zsmp^SMH{zZzyLGTx zOqU;R^!s-)t?kr@)}?^a$Pcq=zh8fd^$+*O{=L6tbEMgQt%qvmdS59SL+1kCHgilt z-4DtM=br|+U#p)I%S=jTIYcCcZR4Dz1>Kz%ztx92?|!d!j7q9W-DlIb>>jjw6{z$* ziJUQ3;2@$~^4#-O?6g3bR9!5i$cODK`qiAdJn1kMyUCNfwurnIy>bPC-Dk3cg2vRu zM^%1Zozv9uEWhV^J8u((E?f1F$Nj(bR!kD@ot1nQ8NcS1$4!dbO#$!ScA`phvs`v$ zj+l>vlIObr72*u-X<(s$h5OcGhog6BEk_}_6)44?E3xW)(nH4YWI25O(#dD)GZqdN z`hBdWC9RzZYw^J^H`vV0|MK&qo)%OvlAkHYtq9%-6yI8j#1+4l{7dY`Hg()|6vk^> z@0Jp!+cpC%@$OG!1=|9;D8<BZN{Qwd*aP0vw)xp;P@gvu+2j#<aQ}<=lFfqM9E@Z8 zMQPh~on&tFlJU`D3M%wD^;*A)I6M2x(>opCN+<S(7`?83rs&gXS)tsgUF2=3mdXzt z^I^L+r)ix$D8S7&k|7;8OD`q)$=F_La5)fkh7>g_{n7{|C1&NtM{bJMnZ=2{?YTaR z;*a%;=wMpMzq4Pe*h7U1NT&KzA?2iAADLCM@}}+tD2+T1RF{hD0tSzzx;~hU^G%=% z#RRXng}ARD;mgxxwlKPNm3||;lkjQ@FIJwMrCkW0{L3vvJt_7XyWUM(-h+i|7xUst zvzbS1#%&>w|8a3^CF2_opjQQm1H+A8wQD*EWVi)PPBaSVHZpejeUm(Jz46xM8zJ$I z$=k3{MWH6%bS0<GjB6YzEYrk0(zhM3sRnS&UY03_ypyl+ddH}q5xH5&I7iIz^Tzp` zJKfL!#p9@-6L(zc);wgruaesSJ<d$e1$;;Z<<h+IXloa8k#T(Hq&~eSVz+?xr~0(F zDy%Wm+}urqrsuexFxoj`MejKe1dHF0H?5L(2y{rmFr2<KlYj8o=T;j@$4x2^AM9Nm zCaubqo2vDqfhv#lzeyQb)Hy*n9k~3Ng!Tb$9K`6B_J}Y>+d>}V4*uN0Iz_(ydFi3B z-DDxPaefEu(v<nZ&$2h^Dxk^Zl`6cU`qfpE@)js*eKlY9$L*L5NGJ$r4GNX0m!4pp zzdPDptWGR&*6&9->ids<*Wtx#R59gMGz6e&o@6>P>pHa2D47JP?UOJ%Rf+QzGdzz| z-c&R6JOX~4`wErwu@Vr*_TwC;oji~4i{AYL%^}(ow``k@YvYSOUVWqeuVV?B3z~Px z*Nj_Be98%mGYIbcX!#*Vw7reD0`8yGW6z`)4ATk)L^D0IeJ_*oM+mTzvzJmo_8k`3 zHPW+WYG=Y`@boKL6Nu?M1H|{|q+(ZW6F1dBt<)#uO*6&IyzwI{ZmG0k`k~)gqKItG zxE47<dnHWd`hD*E?5*^e@4=%NrneheDYs1{Ik|Pi{#^rKb)0IkiJ$6y`MnTu2;W;% zAQ86>6Jerr{8Vxs5?7VinYmK{H?7C?fGNj)Cx#_A(eeFx6kSeH;}2KKPcn<CeD|N^ zUsxpkM4GHxz7M#^RxeMRo7$Dlm}|cY;JOvk)>t&}X%aO4VI2EJ>s4?0M!r~HJGieR zqP2@~+JLzfK|7%H8k*QR5_VxC>)m2+4s#ej5wde<&|x9O(q&I2Hy7~yF4S?@8_6rG zw-#L+d#y!()@^}aWTN~d%T!t3LJb+fd(CDC4ADadKbR3-a{IHMcveiYu=IXu7Q+G& zN8Md&&d+4-j*MvOa-FO%#$>me#=}_`UL7SRL^61DcEu)DNDF!)28GoY7G1&@-=9hO z)%E>aB9jl(j`64oIE;~ev{muV9TB|{E_%<>gR5DTqPmaGENo###yrPt4osPtxBhC2 zaKvp#2N>@!fRMz^M^sDeH7YOUG|q8ZrbC8nrBH$ITU!&$9?kkT^bHM%?AZwU)E?<S z%{GvPzvt{aG^*dwkfrdtl+E<}JXobs{*{j~?k8G7$SFtIO8=iPXZ7e)IwKnn*!5C@ z)Ha0Bz@HeRN~qw(NoHZGB45k=5i3&FE%CS&;$PP(CC$W8;KsuJuh&Q#pNiJ#uo}wb z_3r%+EbVV@-IobI$X$0**1SBTL5O5ZO2ORmO4in@3EByMz6!@iHr!)-+qazM0f%?p z5t#9{ZOk1qOkL;$_Mi;A<atkoMApp`s8f4#nLru@RxTdU@@$uqLe3D((lq=Z>Hw2X z4J|gj&vFh*{z~fxt>Eoh-KC=c9xKxKj6U_%O-Lo4aqU*NfsyqWZ~{}oB59P69-Ta1 zqQjh!J^tbr?m@2$G*ty$3DgiTpT;u@gU8m0LS{3PR-#Cp*%YC$0l~G7I30f!ywG<} zUk_EkJPMi~25;B2ztr?5t1+hdotT;1J5+?eY<KcFBE}bq6ym~YeBXS!L1q|Lq6;3D z#}rK<X=WmDP-@XV@C*@;WdqIC=qdgdyyXl~NC%-8Yd2Y8G9ZBtj^=u5w+!-R8u&wn z{61abQehYi8;9IqvY`ydf>*C0LZfzjn~}j$X0HE=YD@0tHfh5)xR<NSd*I#T%^yw` zXsDoNx+v-%4hV)(n%3FH?EL%(5{*H^DTtta-jeoa_4i-QUp9N|$_o};GQ%$AZ_IFs zinSv91G|z#Qv3{wILg<Zg%mF#X5C6G#kok7;}5!qRH-tc3y-}Yk|Isy?V$gsfdh24 zp#2CDbKy1F1DaUq(Uv*D%Ja7j>c$jBhrF>yj(pqElQ@@Y(A#qV8Ek68l)R@w+O_yr z*CjeggamF0g&?v?prxSf-_ZU7(p+SiJk})7OElf72hxebSfe@dl=E&cuhEpn#zLcg z>FeXOOXJtTCPP^S*4ekAHfVA>OhR9`M+g}MUq`=A`7^?p{=BN<tb_y5JSR0mA&jBe zUv!v-=YinM9MBN-3l1?b7D6$-V>$=`NtyTC5&lH@yKA9%W7^)gd9wc>=?)Z}A;>C` z#@+Z(ngaWN5dBA#W8M?5r3VcZj!RQh8C{G!(A7gyt|C`9AqHdIglqDN^%nff$n|%> zAc#_RoEm8{DdaH%isskSN<8<##<}|bK2YN8g!p15_;j4DApg5O|KAS;@^-B@4@!Wq z%%ZgsU#AO`Mu{v`_1d-1_QriV3<=9~pBfF=RNp9l9Q=w3g^svk+G8u|eJkKlK`aj@ z8>}8yHt=9$g2A967c2hpCrK=D?&Tu+j;HrrAm8CvJ<CN%3HF}u3Hm-wOe7Qx$bQtf zvP{IHAozjy<*pOnormO)5tD+>=G}%|zDX7n8}xz;IT7mP8SC{k^FhOt=LFD}%-@Qe zthQ=T-<Wz67a_-Ts2Wqy0{$SztzTexsSZBRJ`Em)FTZ@UHIH4KcZs+t@MbJ75D^np zWV7lrfB;r<&j|6IfEn#Zv0ZPzg(8ZHQPp{(j1{qFC)2(a@&}WgNHx7emaHMWokR__ zt$j3D8UHh{zI%W97QjhYnfxG88qrn=UzIPFvC#F{2su0bRwRSbko@AOQnUi?zj~#K zpZBquLjOw()5L5M8ZZNq@wHCeA#f7+DK8t0kVob8qjghf3JnLIs9HLc(<6ua>*}~~ zy7XS5A9=pnd2zBO9aeNP5mU?KYk;9`h>CabAO-IyhYVl^6SS---xT)@D|JUYef0>u zN_M;>1;?QmG_tcmAHWNEHSrl?3R#e}UKd2QF@TdZ+S>&$_txDlnDwD)R0z&s6+H1; zl`PUwRXp7gJA?JV^5s~QhbrX?>`%Y`_aA@(t=3Ew?A*;DM`8bq|8hsNaw_TVN+cTc ztYcu3)YzFXb2V@RF6_%1)rxF-$CQx7PFuv9u?A)|S0ZTU+Y8>W6|Ln$F|n&U@(A~o z85X0zXY!gEM#fphF<?Q)xoigQ<4TgN7?OpIVgXL_1v(|}V`NqIT+|;O$ebF?Klu03 z;04)?^M3*7mdEDtnRI@?QiOo~I78V>Inz%ZUBqAk%dxzEPV{Y-@0HV~%zqD0Nyv(J zH!cF}X+*c61<L|Sl1ymeu+tlu(viq9q=uyjl@3z$9jY)3czE9L0->_{QI6A1+?|c9 ze#<!y(CCn-as2}UZ&5|UP!=ToikN*|XIfaV4Py4OLBuT+rmVc~^7}_hguGrr(4R;a zRI;pgfs={>0oi2}e`2ruT*6%!mcFHCk+C51z-i__A=DK*KooxW$*`#TIpuZ$I2kI{ z_@d42<S7@VuZ}gyjD^)ZjO0tKzWZ?rBir=mj6n1UafAs#lXO08#0{c_z8|!@Clnr4 zzdIZ>YB1D_AO;&)ae-T;4J*D)gCn<YBva-^8-wVCD^IKJYvoyp{dj=xTr#o>&SKB9 zZdYK1!}f=C5OMCyMW19j{%M^w&5ngLUyr1A+kjDS6npFiiO-){?y8cq5{o!-tdxG0 z^?$^(RpOq@=qH#UxHSaAI(yo4?NK(8?1lGQ3}$50ya`UM%(;W|%EqUN#hoLHkreaV zjVbF(j*}HR<CSJ#jUE=*Cx#R#<~Y6mC|QTzAoIdxY?(B5E_El_#$~?sTnII2m<(;Y z+`UP&hj?%LfP$xmC=P0W!|Z~+VBpEb;XV_q7enyvOdgUT9`qC#VoWaMjfE=u-za2g zaGFrBL9zWlgXu^qRVB{|#Q$e~B|p+fPf3DcWCy`04|wp~9}?+qb)?i1-$M;5Co^#% zQU>BZ@>)a)>uTm;L%W3x9zuAlUGBhOvx5$72FQM9hTvM`eG89;L;&*J*bhQZj5~*O zZ)zFUSGbtW@7emp-n~@%I$!-~-Grf8>1SOq3d2kvAGQ3q;cm>ZRl5DvGH$vC^#kJ1 z?#f>Ua6ZM=#`q*+X6>QgBF%^lS;MDEQhU+(9T07l`=&_u17;6AW37|0%g9!%7=nJd zDbf$l%S94Y_~mopx*GyB4iCJE=E+_s%G)6G{?H<Zu$a;u?1)ANGHHB$z=24P#gM0@ zqCb6A{?zyNPlwsX1i4idr_);`1&Tx+DNMbH{((KnHiXQMadlX?Z0lCd{>y7OUGu7v z=fkB9>qh20pDZ@&G!Y+xq!=L(O7%=LTY%C0BlS&I6^tLTU|m|>K7zQg-eseK93h-R ztk6;P7`VFBk(dFvb<KXkv+G`Zj<j80#?)Y47OovpKmCO0-hW-@y^(Ah!Z>Jow0-^F zr0s`m%J+~^OdEWHwa%@gO-`unA}zoqHCVs0D5K$SeHw;QHlv&Rrb?5LN&w@a?!3YI zE8qN$BQn<mZS_WvphmraY<Ue<b<%toig#famH1bOo6D4#ZvmHUhIL#y?!+B{LdF@L zeQMbWwx7M~EVoO-@X%r4et$9}o&!eVrK#c@w-MQ!b&++J=p4N5TpGmFgg19#Q~mW% z(9kLq-6Xvkp*L&qmqn2zgvGZS_CDPFMi$4-FW(L2Q0h#oGi*V3A;~w<`2!%+J&>U$ znCclb+&r`(MWF4C83vG@FR(Cua`)V8g(w?hOT2dz!$fD91-#ew&mKrnX7xbfxT5vr zHDfXbmQsRCM1jM_`PoFv0c<WQka5?6fjgH)S=2v^sVqA~)6si2%O_R)H1#$g$+Uw@ zQk95BJb&qNN+!;~8fgkyk5sRlE>qh5!s`}GU45^2$%0U^Y^v}ndu!U<2t0BV-|4ut z1bTfcENq!m^is^Nw|j=c<KXo$Waind>ArH+hevDbp5Ep6MQd1(?DV2C5^%8oBi+Mb z9Es*$3?Lr&Q-l_xb*D{`kV;ehG|(!XW@vyc#9k0sH<zYfpAM;Uy+pBvX!C!=TSLfv z0P&Ekon~moU^sj6ax8Se@G93dPZnV@YrFl;isOH8JS_d!+&!RB!p$Uy`V4-1kGQ~v zR=xqAi*=ds*nyH7G}u7Q!CR|h<J`%Sk3M=%fMhnrE`9I~v#uQG#=^Epxk4kN8p&~G z2eId56IV_>DrwHSkGQnXH1X;m>Kh}YK8ypqEhXhC^SrB;Ig!~A-NRM8Mr>$ujpRCf z`%4AdW{N4b6NV=w^A*0L#J%9{5Qz?dL#tsmI=qaHi7KVOwuC)cSAnwq0PvCDt$4gS z@WBzG@R?M<1zQ(KuJ<e$7|v=c$}yFZb=4bHTTaYcvwA3FAl|e=>i2c;cL7d8LP@JM zs|krCEt9vs*+i6Bew0PS?D{u%@Hn(O{9b+}mdgfXp#DS~<mWzZuyJRIVnJe)rcQNQ z06d=!!>k`TOd0+sO*1hSE&U#5%n@{U?&eN|&th-DnP*)gIuUqs2ztL$YL=rNoqUp5 ziDOuds<{aV0xaL}4oy2Roy_fiXnfw@zx!68np+nVzgKyT8K^$PSysud#<Ib*jnv^K z&Dx&jy<263m}5Kg$doO6rH#M{Vun?$$z3FN+Wvs7kYs(DSd{f)Sh`|UiO08(+d%q_ zerjx4k<64ReGgsk0O_?F80_H`2~J3rAnwNR3NaXI|3FVRGZ*k*0|l7FPvjLij@$5b zDMKuIJ*jJyAp&k6|G7kK<7OJ=XO3V1nu`P*KY7Q-R>Z6vPaLrZ=wdn_pM-WHWd{DR z^!rK$fqOBo3)Mi-vj@_t@rTFg?rgB2a7k$>g^-!0C_g6?zK<nO8ErZao};2C?BPGk zc!dyG(V*L~l9<(c+p}mQEI*Q>CRgIU?R336c)T8bkvUJ_z4WmJrdtuz0(F~>Kgv9B z{7Ze*>}CU)Uz__!h+`|#EexVDncz9%6A8?aWd5(p@z@?1JZ4|T;?@ot0m5Q=n>CIR zaWdLIt6Kl}ZvdW0wi+MY0M}6s&W*v#m~2e_i3EI23~%uj+>8>i*I>Xwxw4>*_qPrS zvIgPFo{Bx-{4*nC0M5(<Z@?{5@9Z<lrrms3B;#u8MeW=KSXmQJX4NFiNRUIYPgyif zaQtS0*O(e|R}$r8VzJXi6Gb4mK!~;cy7=Bo+Em`R`Ho93-EKWoB!$D3Rfyt6gphu! zxSh}CtdF)rL^EtRHSg(CD|lSCzsef>k&}z&)4WIR#cz}I?c+o7+2i-y8`~NI1!onr z+rKyVw;l!loG}Tgd~_K`C6FI6{#%1f-rH*HpGDT_3gg-?OYI$|FuUvELAq6QrAuE@ zd#phuLv-%V(*740KF6)AZ&i5@+hE?qx8>K_0eY|R@ZNj@*{hjWSTm&Fg9aQPp)JnF zd!8B3W2Mr@s4Ooxxl|jB@h4!rQ>dXCX8F&n%e8!T{Ti)A@}3`*r+iOsIRV?-JK)j; z4BDj)3ZK>8`$Y2)io6^{{v3a<Ip1~3?b75qQP=6I8iP`iy5B>lOiD$`V7xWcJ`s4w zV9kei698jz?j(HtMPPhddSzU0$eU)I^8GS-<Bogu73@-)R9VgdRGw27spFyXlS*7l zuX(^iT~!nuWSyw8_|Xz>@UB2ar)^2(0mzH(VvEj2sfrbwO(cO$?kwnxqx^s^>f<GL zSqjXoeOSr^5X8c67VTDsnGpFoZMK%GCO9v{2m70!o<e{$!+`rp+IT0-60Y=NNfxn} zBqsPqRBt;!BJr9B$13TB+|qcHs!|cl^D?rYTMd?KkDK_TmGTE_HK&5orcXT&@NC%D z(<zvhEH#O*|EwYLcrJm!0A}nX3(#Q#(CK-TURk3{;_3qKtb0`0ww$_$Xl<rX*Sl*D zLY@<#t;4cdjGG^VE5byR#Nm<kpn!S=Dpn*4W;pVHh5F!}6B(>#g8OK7lyOa_UbU<) z1G$VBO#lpj;QZe<zki$Ef%V&Y%b)Wrv4T5)p@NxuOf}cxdTH~;Znp#E2Y$izUNim@ zPTaY6HIRj0X?CBGbmH};gAv#1dj~U;X{UuN%sr_{|5eJdK(6i&#sYN;!Bq4nZL5h{ zA+l>s<y4Mf{jM4A%2u)ggnvxrJqcMwIXvch*?Fi$X!=T(T<@f-GQYJqxI=Zd0Ie1q z?ewh-uhR}H5I&@SFAnNi0fTXT?Fl;;+ml6xtP%Z@<I}gFZeheDK)wtF&;scnRwVlX zC%mcj{iiT})9xo0jJXtf5_!$d@6xT`UtT9w;`Jr-n$`;p+1#J#n9ifPfNQ(rrX=ZN zVQ_?FByMjK#F7B!QX72-v9cCk30t<lV*Sg_EFzSMunr<*EdD>8^RY_eXMN@{mai-m zzAOWZ<`DF5TpmOl#S4brADp9UhW;A+vaT-Wx4f;gpxG-i2bcMBUH8TsVUxOXbB2cq z_eAFvR9;hha7^+uig<n%>pL{>=nsV}cY4lLP+7V0WSkD(moIkLCJRn_*$-a3@*7rZ zaFm*hS{Ysmr<Ud1f8#+VED^?-o=?zH{S&ebF5c<#Y=dqu4v7sDX9ZLQ@_HUppIetK zs#4n)np5X<AL0;QcUgi6xMraXRMmz)aIJ=ae?Fe~%sb<AfIrJ}>4ZmN70wT}_+rAJ zxw64Q3$3|k_66tXWY5+k)jv#Xr6(lRrK;{KV~t&YJ5qCcDV*`<&5w9|{5otURyAx? z{bCb#>0k9eHtR9*vYj;3{lK;e`Sq*I>7H;G)G)5P3`N?iF+pMacx5^-pR_kAhzi~P z7e;J=hu5<^%_*FzF>U9j|3qqdR8f4dbw*Cz`!B;|iLlvbX4ST2LlO>LQodmyC>hjS zpFJhKL@K>5W=2URE5D~mf6iP7hWh3$-VLUr;C98lCX>!y2s-O_K3k=9=vD1*36%2E zj_TMZh`@agyRgkO*NpwKtVXWiH4698O_U@w*X*Ad89RqEb}lr)>{BcX2d?n);WjI< z-#H_W?+oXy{9KQlTpZe^BYOl%aAwa5VjOUVbruQT7tv}!Rl!gprX*qg2J3r4Pcmb6 zQwkhADX+$pn<UAVdUp6i>+ju6x2(Xl2TFMZ&3{Qu7<>MdYUPzSNt$Ba-J(0Bk@+(@ zQBm0AVEkgE;v8lw{HV%kvAD#r8oXSyp_IKm&!P*8griZ|2(~V{WxD(FS8!*}(G@v{ z?(1lKTbP_$bdBOVB%;s5{1(hfw;l<syN{K%2d#?^E4W{Y@w77j+m%4Xe>q6g%qe&9 z{qNmOKjY_D^3Pxbfxa;vCWoBZYo&ZU-3hc^uPRC3m58@&ZO<ZN;7`+Q1ae`JS#w8( zW03qZ7J*DVKD(;fq^5F*pssq+K$GIywLnE1>9UoOL)(J#W=XYbp#$f#KgOS@?quNG z(ivmis=MXILd7A^y7_usrgIf;*1SkYsO|8(v$)`BC`lT#FGhzzDN~mYX}_O+Q8_Lr z<>V*%)O3ch&(Ivpt7=`%IwpD?Zi#?ceN-zr$HQ)X3V2LA+<GZ^hE;3!Mmen>s}X-Z zNyMMd!#|zX9_JO>qF7G$_eUzusf;XgL=~bsATR0s?-7{(mjYd%VvU_VNl6l#C^|P# za{il6!j{2oN)u$In~-pNF#f*t3&x2dk@p1C<cV9KGFK_v!CHK<NQ9%V_;Tdo!}c>D z_=+ABTD6m;o*c0c&OD@ve>`eAq99FWc#Nm4)1iNh+u!L^?)`FpigPEQgk2KB#6D&F zQM)CT?~qoU$+COaLJ=`XPesM(@r1bzuSHnTX!#-!1Oe9Z$*68C^FPiXamze=@Yz5L zVjbHM<S`@?YYi_WxuEp0F;8zvgr3QG>~k3dwk)q}t~}2(xQ*B{ZV6o~R#puEv-Vw% zMsX+bs4RTCwhLy(TF;VDPLZ6dK4XbKXgN=5>nioO2&fND(U$Pobkhpns>BbvB%kah zT3;?!NvPkft<)`z?J6bU<$<EtyH87Jqq!3mIm<VV&nW0{f_t;j3svx=UyoX=@@K|% ziGXzh^LKsN_eFt0Jo0W}UT=hULlghu!`Z<71Z3!xAMi%%B!nG?c{<|5E(=0<BS3O| zx~P+;&c_rbvXC)fni=P~{YD@U-4Uq?Lnr+kS2&sbf3T3;HVPi!B;w<LIx?<zv8PDA zRhm)rT4Q)w;BHTJkF>p4jNklQ9QV2x)R*ST?33}I{VJI^AbUUp)8~?PqloD9IgGm5 ziS|Q!eg}P+<6A5;VCS^8463{q#6K;OhsrH0?tc8b;nu~Gv{w<H4C$s0(Uw3J-*Ot) z=N2D%Sw_6_jQRxZuP;kTe;U>?ebT<maCB3!{L22Qaix!RiRpCs>UDv?r71}o#VJuQ z-fWR_SsW!x9B53^^|f8P>|!%go^RGm8*`s`mi5Evs;%EMvGam?)}gZ-b7W;k(m&qJ z5={rd&;zN{S0#dXbfpDQ4OI=tp@Q?0=h{T=(%Pj9$DXJILH#0E9szy<4grz2=~j;; zlZB}PLE}Hj1Zsb$i1d>17Hco06S3m3#i8=Jfws}+^G*Gxs)vDhgV67{**|t47oPmS zt5H(sDZg{g;8tx>^W0MRHc@VzJN{>t$@p<`qD4lu<otXGHAa!Plrha2$9N}={?c8d z9Gv+plJzM$1)l03lE^q|&`r+?o?frCCc}9X;x@;ku32lmHC<mfaP*^8V%+SVzxVg` zBh4<qWoTzuZM`o`8G0vIE?SMt$!CT|_JR6!u7lDUChqB-yO#rVs?n??<)LOLeJK=- z*LgJFon2`)@$T<?(gCfnO&9DOE8v&N7N%Z8C3_mqj((!UwE3($uZ(fE3Z3veHP)o{ zm1)zHfWtfsbK?HNss2#ZrI4ketX$iA?nMV5G=`SJQudE4Irn{xPt3kd^(QGeRg=t8 zq=Y^dalG57WLG%<vs!F~&mmr)=<}!7ss`lleZmgTQAxBF--HIt)85G2j;0Ve&A$zd z@2q2PR`jMOF;4GVp!lY#s>o0QBg#|mx<}8wSiva%?Pk_Nr<ix!?%t^NL7_4(Hf{5t zD1`_P)f>Zq+W#2QexhiB8caTF)E}m)-9veJD6d~FVf%&^tZ}+K|EL7@Pk-@JXfPjX z8ZhJji4z20b-7w>aZRRgXYJNHukI1C9F_F1At|t$D^==s-;^JYMi((83&)V3!3A@i zP<(EB=ro5@)!~R@zNbTRBI22b$gPiIhT;BMWi!u9C|=2=nwNW5z0+W#l8!+uVut1k z>7t&{OZrrlRHwev+55mX#q74(@YOUE*Dg_2)0@14eX@!WQ)p~(l=G*wcP}yOWz=`N zlsI#q?S)U#%w(Y-iTgR3dy~b!cIW<r!Yk)X$XE_9drJfHFmdx)@+CLu-h8%DMcunH zWRaip<l#$e^P<ixADjA@`Uq!v#F?42uZQLd>k@{(RlhuH{q4%B`?VpW5mE*WHhesC zLB+Kn*%uCBq>kr;S0u1lMj@_gOlWlZI(@zPZ!!cLMyVW2(fN20X`3V*b3h$c-9eJC ze;t!$+*^a(_?T=jv-(r2IfI<?Qv!0&uef1+ax_X#{P}UqSBwtz#ZY^Fs<kMA7!ZT+ z%niT5eC^1ZQ&%l87?vYD-V71q3I;2B&I@!hpivezROGg_1azeSSr_&%sxe^!x28It z+?rvi702Vohjj#&C$j1_E--i;m=b#*#y$xc7(&O#9#B~6ik^ucy>zK5hVhy&w&$o; zL6{d|Yk?L#xxa6s3d$o)?k6?py;8?VihAjI=Pw!Z7*4wZEm)q%!{GGnzNv`trb>|f zFDYa!;mgK|{t?P}a-ElRZ*Fs4hpT@VGJ<DEo}C1y0BO5R{hOYZzb=y%83b{ddN0{# zde%H?rmv;>6lOOlFE`Braqsqg-hIM*k%5UP^o@fbDFs6c@852Ne47hV^3P;NRAHi= zJd5t%%+P(Ji1z^yeBRVRnM{i2lvA@bOB5f*2s3CB@@PBXii~@^0|7IYOx6zp7#Q3q zYKrpuFmHQA*UZUo@=^@BqU_3o3pKp)Vn7C((NI!25QsS?l5lV^dwWJzmoA?O4_OLO zH1&7feF(SVD)nEoq9oO4#v&lV!aVf{f-nW~88^B`j*AbA?-C)k<NROwee3TRagYY> z%)SqoZ~|GpL{*eWyqpeIsoAAKP1&#dYQB<@^+*|p%uD8#7^4q9oi9^b-v>=C6X{Qi zn7xbCi1<AM8Y(XUe@otlsyGR<N|>k@_5LtEwNe?yHeT&AeWr*~#|o`keU-&$v0ge` z`u4N(wQt|>hPB=EPr3;BBkW@-hHp*0{RwL8f}<REZmSGczWTR(wqI2>mmiW7h3efA z?>$u0^P+f2DoAS*&PTNc)0plN8jY}K31NwUI!}$eNnotkWw8wNi84UX`P35OPd-*g z6N64Q{|b3I%3JmmxL8BoDW}kjCKaWvdk^Cbtp%UVkJUkY*kMBU+6oaSN=Zc*qlxkJ z5>v3)zktasb%Y6|iQjvX3$5-S!MR@*8OG2Ni76+adx&OW!SMi9sWzUYDJn1(njBfj zHeK3|kP6HMuG!Qq5C2!OA*EC6rb@ZT1k6my>cc*LKfvSg@8i(i24H>7k>To~-wh&? zE%0#%9cMQxq_E;B`ERhDz;)`|5WDVFO0*m&Bk{Tb(-BdWEX&_Wcha9u?wKb*Nf`tc zBWnsbPX#c*%BBrYtOx{DF6;pe9J5cF^7^7lcEHstw;V&kZI~U*o&5_qPP`PfeUX2T z;U3BQ^zFmhpL>-EMhR|r`5Y@sBE)VEMTF*7*=GvBm{1nJt1qH9E<A0NmpBxkyP+eV zrkvQ^pJ{1WT8XH|x(^!pA+FvDKpd#k5ct}e=0*$5!Yy2>(tUl0F0_G7U!5adkgVcH zr<{$v@#iG2Y@uw{Z1y56)y^ED6^}F<c@AQ?_;kb8<Jl{ABK|;j`UQlPbQlY^6fBo0 zhl&l6v!in4x>2*$TTlQEH|taumO=jZ(=nEh5SE_$;RbqnLd*i;RTPCgX!OMp>DL8# zkRB0SvX`+uPZ6dQVyS?OXT8L^pfBBH)atozwsaoY>6-%%Hh&nw<y${nUL2o<0}Cs~ zzG$uHJ7}}m!9iW(R8)LjyYnvbiYShh<qPVN5s`WoF%KK%tkcC$B*0u!6CCr>Zt*P> zb-p@be`99c*pLO)uewhlm8j;%*W$6H{^otuJFFOVx)7FKQE^+VxtS^a`IoNLH(k*1 zu^PYlftA`}kpSNVU1%!h7mk$76K2}L$96@Xf<yJa0A%3JZ^U_*>^UsX{^eeU3W_NK zgW9p^ZBknG6|BS*L%ULoXENWE5#{F9*d~B3!9J3gOdL7|8!}C9<+1`DR{eKx)n8j= z$B{PX5g4ojd>;JV&DTPuNkVs+I)uk|wk|tlvZJPxq|Q`5aRr8zNMbgi(_&L!GTk|t z&lCp5Z?p^f>l{f`o}&7MtE+(0FF{4#768NX?(4Yv+w&_jz`!;sW~DjoWZ51ouf{0h zPq<j<VN672-~0Ty;shzGkqLugwB3ksR53Z+ONtpKHz2H=_br4N2lm4d_>o-m!=X2v z>rTQH0{JkWo6qVfnTX|4>gVz4@giYb_W7?hl%Gm>jP5Y3hAop^?P*fha3Up%=Eh1_ zU2NGGw7f~}c$gauB9$o)Tf|TJh#U^->TsE0Y`l7Y3Mk^UjZvVa$`*^~w+P=@pmsb6 zp_BHnFZF=#f^T1S)%6G$gS-Fz9Pt*a40c7VhrjOC(yA9t;1a2Az8ISUjfy8s=OEzj zZ6@vie%@Zg`MmV_davu>U5v19Z^0+`+36-jvT7g^8~z5dSLeHA)W(yE7`XvP?Y%zb zDM0~UyFvyM%qWa(41?Ay2_I!rp12{-jQ^djDD2#0s>pzY?onV;>e}j!qx@hk+1#T+ z!od8AytIA2Q{@kc_QEj;oEU#HyCFs{hMAZ^8E`~;#{ei<f~G$A?&hyOA*GOb5xpYC zR~k7?S(g5#$Yf^^(24ASCX2?%!JwGS%)LQ;5JY49F=%fX3Gdwiedc|EoR*yA{4b%s z9B?neI1b%I7-}pq2F;bJ#?+L)jkPMfX1k({ko}9d023pkh7prIruF^tagh4b@n)W6 zK+xiF#eVpOL1>IhW}bp4C%zubI<Ob5Ap79E2x8p$vo-VMQB;;<2>J+qsDqcCzo!^5 zlw$=RCAX+9ku<?<pe4{WGhQZ2sPna-?(I<+E1;s~fIlywONpCK>Uek7HW*VGzmP!V zSY;me-#4D0VXSIS`R!vG9!4z14#2fjtw9TuAE>*LfpDgtH|$IFL1FP~_7pgD-<ml* z8j$|}PH>bW{KZS?p0E_GFa#U`8z3*zq+g2OapfUqVAgE^L}}rbg3J@YXI>9lR8e)0 zE|VN8l{lJ$`E2&$oE^b#kz$;ZYQdL0v@JQTxD8z2;}5duj7Zk_7$12c241Y%yG3#s zx|}ia5NxuS`Z;5XLqNVrLh@k8Z0#hNOxm2VCuDSW=N89?*cL_mQalRV#5h#~^%H4$ z#Yobc%aWku<#@s-FHsn8xxxV6bk$3;OvT?i1jm}pHvRM2#VF4JCuj$uG(=9#SbpMZ zpvaJf?onpKej*?S^xDi*cqe`l=@u%OP+_+FtO4F74Vh+!ObrwV96(`>cOEkd8W8(; ziy-j>hYf7K5w6T)FS?lIl(~>Gj_A6UkWggkV&n`)qB2Sy9cnD7YgdhdfO^G$bb))x zG6+&@Mdz^FUQ>Uk79FvDdzyL;s3@D}^?<9mS9<L|-9mh{oEP#2L7cVN%o8zFjzz0I zns$$(4czIRoCWwbspJ*<HUzZX2p|Ol`K+eSxOkEf%uyH>z68XXk4>7Rv53J%G-i={ z4Z1iFRtk@3;Tr}mgq<U>LJJigLIh7X2J_MTA+N}89ms72^Y4f^fcQx*I46VwgWH61 zD?xG{9L(gi;Bua<sC7P1qsFp!Qk|G+^Yc7jk-gxw3fxt?cez}Ldzh5dBW}UhcB;l^ z3~X{v&p)vJw|L=4=<R|CyzB1~Wv&^B0B*VrV6Hh7AtX8}=!}H<7K8X$TTZ%4wuxX) z<sPWN*n>p3J(T=6Ue*LwvscCcvAQ_PYHrE{Sd<4uMwhPLJJdqm4VBB`pom+F{j>4y ziy^+U|3|?O`T-O0JA4;D4mHbXA}V=k{F2UwTYdyEcB0gts^401R@jY%z{gECA<xBq z!I!buk}oDS22Eh~VcCnoG=&#qtgz6Mub~E;<Xuk)9`hre+YRt_zRFax-g=H|Z`JQ2 z3MM{*y!#i!D2b!wTUXQqMy#R_i#NI!g9Uf1C9}RF&OUFWXATTm`yBdK2+!+ToWkue zaz_^UDm<d(HmEqC{{}OBAn-~N_LY77uS-Ny44~h?MMgv-3GRP7>R){UZteksuNru) ze!<zNRfZMyD1DKT_;E+<R5RV26ft2C=rfbcu%a7x`;zDjR&8Mf`xr3Coo9>G$Q*$? zTAE^k{cAF!mW)*BW$>R!LB`1NZ;M|Jw!hDjZ9d=YKDhx0%(ca`@~Tv*J^QUbt#_i) zD<3b@h$KT+auB+*v}!N8KBz9jv>?yV$bA{g6jmq;G`<@JAs_8+lzvw%-5Hq2^2@B> zRavy&tM^He#}^#e^Ui)v8vlAFE5DDWK`4DuaurY*`}zx->D*t`|6G7l&3Ym?A4|dA z)_!reonMw!ISgIUHn9G&es{uf|5qh{xOomMb@L}=5%0~4ayGmUsx^G|gxT;_pO)I< zqu-OC$^pRs2slG5Co?cXK>AaN?ZIx+du`v6x4;<krHPvQ(sBOtxqNtq%w!>so}rON zU>i97e4UOrq#==h7<I!~_B*$5qrX$X{eGXR(6Qc2e&>}76|3tNR^Fd>C|CZNT6ws{ z!<5ut^|Jy#uVR`XRA!lbs8PNCAPyHBW`-0ic~Q#eE7|$#jz5tZUXDc8G}c#P|8vom z&XB5{9#PeiH@F|;A<JyQt<P;#%J4ZU|B^qbt(t)!uur-R)HBtVz%B76qg*kC!>IK0 zpet;liquqfzh8o+d!33wb;O)(>0Gn`=!Axeev-PfQ;HTD_bZQJfKh|cv}X~HL5x3` zI-XO&{bN2x=w{NO4E&SLSBr%=#PQ^WwEGe;XPIm<bD<Y$BmUMms?;^V{#6mB5GuD3 zpYZ3y7xelJKwSpGN`US3F&5oN&5&W4R#p#)+1;67WqkTEuX>obW?ZYD{wndocu9)= z_mFFvY+it$$!#bm;0nE=EgWwB{1=+bNM(?PEGB3E)^GH>MLdzHh<<}uR^)8?ON70R zkXw<NRh8G|+4ajv^7v)pv8qhR#5ck2>8h+d*rxgTS&4pcq<VwFc>l<QteTc|gH}ZE zG54L1Y<vsLE;uN}t{Qd|RTpZ`;o}af<jn=xb?b$D##d|rU=?#(jOJfum));e{cd#u z7TLNtdPmz2z#x6~2e}_T;&BRY=xJ!zBJb*=3KkI2<@`3>l1K0CWLK=n{+>X<!(czQ ztO484ME>XnHe-t>S7!olFhgEz*j!W6+;UJCk*Mm#_@Q49iOQ72)CDGU<dSzO&9%qi z{0Z~?j5Ktx#SZh4Q!<D+nwL4!p5t_txZ;|wA;1&|83}Kzs0jQVc+zoS;0lY4fUv-G zAnFe=CrL5ELHfA4N{^b8E5w~?hN5V=GaNU!b_|(kQuW{!_HcFy7lE~E)pO{gObyAs zI*V$)z7yH0Q>tDx$^ZnUZjmdnG90quA(*jJR2UlL$t7_o*m+zSQx3uVoTtC;AmCrc z0b-YC>-<`_WlOAfKv`{49-KXF1_~`dzzw1)+6o*WR#CN0vdLEVXI`nR)I|t^6$?)f zCTxC3oz(&Lz?7`So|~Cc!4=A{!YAr%1I3e3OZ=91{%G8RaSYG=Tf4Sv?)Z$kL}u)H zz0{}XWV(9xZ}uV+G!si?G>+7Z53Vs7B&rO=v1#9#?kKS83iqix{3#52=A+fQH!fW? z&7+ej+m4x1HctBBv`@L_)Iij%kceuf>F{YJv(DC_$c$MbA<nI;Q&`2f(|;!wXLOhJ zlkj+0SWr<N<6UiQf=(NS)>9EqoxfmR-7#u#zU;DP^Rq_X=dr{hbFh5{_0>iJuh`gH zlI7}^X-k;6dU`wNRFtRqfOSakYf*o7Bmo1KjyywVP|+YcX%Qc{&mnH9{!Lz;L;|W` zV$5_!xeD<XDnax*b^-3FfsZK{G^D)aO^L+s`l*GEC*rnvZqL|OaBYcG@ZhJXn2ImQ zN~JPfh!+HFwB{_+za0j~-q5h74mRe|GrL$pL8Atat5hnTk0#U-v{_sI??(xXsSb3k zJq-SrTk<<TQbjSkN8?-|O23T5TFL31OMBK+#WFraA3ppC*!5SD0|Y-pPG2lYW~KDS zn#O`U`-9HQN^iT)VJ6K+XS*kujo3nuheXj~nk4VD|4(~g9T(O5?n{S&4xQrA9nv5z zDInb-IT9k>qSD<+cXu}k5{e)qodN;^3Wy?7272G6XCFoJclP;w?tk~r{%oCD&ic-? z-gw@ppDG_<>It(cuZ{cY*>kfG{|nD?XBxAIJty<@O#S+eGrD+8DtSg6o<rG$ADk?@ zJ1{h$_GyF&TZOgYU7hM{nauJJqWPYv<Wb$uRTZ29%9Szy2TC`KWx@}Esw`DBQDq2+ zJo_fnt|w7z9?b(yFD4FB9$+*na74fH;NRn!=hJbqobC!E^kb%l8G>BC>!og0#kIO( zQ9_o;q+bpl@raoweBVAk|5R?_`kPC4BJoR*kx3@b2(rLYHuG@<yKtfvOWVWHB_*@( zT#xWJUAL#2*R>&f)JK2*rPjs>YQn?&#%gGLr5cuFN2Z~yHn*UfU;e^voz<W?$`<K2 z<y0Pq((@^9ZOLa!@XjZ=9hbbncX30;O5e!06tq2IsJ#=3%oqhH!Xk>hG4{d6(4*=z zhuqy~#bjJT-v>HE5)ZdnLa&wy!M@HG*0n*g1m~buvyk2ngWb&mDhH1AK0>;`7CRZI zK<BbhSCqh<0#qww$`SKUx?=}a>M9;LCudhicuv^={khHFLtaDwO^UK*;N;bwA*LoR zfh}M2a}2>^A=CE%R*{7_2-={-CK+b#<98BNfi7{uH;BTpV1AHX`RSWyfMV%#Sf+fL zH(#aF6|?5x{54ACql2>5%$@R~L(h+|FOZBmF8C)3YP@TOpZ`b}ahm|hG1PuDl$64H zv6@5}6tO!?0+Lb-G@5PM+ybok%rwQ-T=9!@6n&rLr&^1vUC)-uu>}J9ZL&sS-0)Fa z<_a6}Dj1VPiX>WXPKzE3$5%%4a*Jza%G`IkH`UWh0NSzuBWB$#ii`ymt}c$gpgyJ2 zo@xev--zZdj|<^X#wPL%<RZyvpt?&PUt|%B8BF-hvfvjq-H9ctupWh!NN~%kPbb`? z_+r3{B_v0|A4a6X?EGv+*(AX0-V=An^D^){NFkYRgIwbi#JwrZDK?B!XUAN7^J3{> zvU1^)a1aWaO0GaNdI=h-6+n<dH+5GYq11NnVo+MLmN$gUFv;mZO4o6oUfmL(7E&X8 z01<4nsANv?y-Yb2f+z|tMU};HT3{cLlWn{OVq39%<l=;xSvNNGj*J|i$-tQ*y#pR> z#~5l=9(QN;A)%`B!`8|IYzJ8^WUEF>^f0a7ulgvTfO9-inYA5Dj5UK5zk~=V5LcG* zE%Ho@cDS}d{)H@lSsu27JepsLLIK5t*=MqGM3TG*GHAwE6R;j)f^Xv<P;45nddetB z2AW-Nk<i$~4@IGqRZz@`u)QLF>6)aqA^|=eWmy{Nti8vQJa0jN;<WdpAU;^~dK!(r zS=Bn3O^SBAX<le{IeCaBi1Rqhn~_0@AIbs9M{fEG3Vh)Yt<wTSP@QjT@JCFct~ztW z$%|t(6qGhA?&E<_{6n72u6etvkq|!CCFmv(tWis-Y?(z7B(8q}-VWqjru#K;*mb#2 zAZp}!>uYey!O6APpZt{+H~_uSrdUlL#+SiHzT`7T(e~d4MR=apkxIQ&9F+!2Sd9&d zBgwhMx8R6jf;xORNUqt1N#f!!Ro~?oIL}fJ1&$`jF@X#eASN}s8d(-iBGn_Qz!$nD zaaoOg+9X!B(7Oo^z(K&~VM17fGf^JI$UO=&qQ-sXnxEUZOP?ElABu#J6^isB4g>9} z$@yH=bD*t!Di0#ub$f1-UXy9<XzP7j3l`kz5V+Xm)t~U)r(Ztz_G)M=ZgR0SK|CY8 z90&KgBcm!U5N^MK#dp0`-n0m6CiQ4t7Ura<*YhHVh!YJ1m(29my^RV`DU$=rxVbo~ z{9H@>9SASNFW4*(g_9p{O%Gpt0_;Mq;bpZMU}?tENLu8x3!;t2070D##91XlfzBZI zlO3pocal2lysGeh*KWZ4>CX)CC8J$#46kckn)SOv8qXWRxk})6Ad9ve1I!Q6+<h@i zK>6Te)2WDsEc}j~@@LMW7`M6BHdyfAxPH)o_<EG?RRUD!X$^?wf{m3ATry@?K7It% zD5Jt4!wzJK^~DOL@_TwmTe>r}M)@5SRaCONV-ba=pzufzz{Os1I!MJ{ON(2%zYhXx zn{ypN^`cqeM79KN4i3&M?*S`tJXEM2h=SS5MUO=wKrG~}xOFpL@vlb~mtGmPxt1D% z#wtA4BRQgxJ)8lwHQxKSP|04_n;34Kv{)+H;vHk&QVz5m-JpJT;sovh%(Mby(DZ(w zRK656`rcsl*KLNAxJ>LvV;m3AH!#GDwPx3_-ykheyF9(PuA`w(s1VuuOv(_LF8%gv zvb!3@h7+Kupe#~on~ci%mMw^GQ?h$Ny}dT3bDC~|9H~beL*tHb1TLdN^{rWNtQ%B* z2D|y5MP3S83NzNLO$GXxdX4Y5gMxK@F}Hwjy_G7<<u9=00}A_Iy}ppXA#6-tO!B<S zNgxc4xe*zyHU)eMHb4r!`X0*SD0|}oDPf?-U8kLP7!e!HZ-)kOC0{Y&FFU<!P@E5_ zW-|3m`Ec$ASAz5zZoUwO0HlI3S1w-W!A8FDWwXk3?CzUqNM2Yxjvguy*@7X{!UzDr z!fC*VOw_<gARimO4IC`QXmoeM@Z<1_guJIyOI6(fRTW-Wr|t8{_Y`ME>44CAAE@oL zw)V^0Kx&Zo2a5+;&>UD3_;FN9KEasJbMj!JLuJfK9Z9HcBRHCBj`~X#pgLtB2R&wD zrJ|G0#}Z~cTUQvAK_%|v8GF4#3G8ruV2$EHIf4>j&=uv?T=ha%jO>9yTQ)_}Cq$Vk zah<N}Ef8+wFZTBfe*)D7pMb=pcqd97dK8(QBQT{THs^qug%Ok>O9BCoQXs;K9?Ifd z6PDd%*Z7Jr$vF#M3POIm|B-p3O#&>Y#E4m--wipq0pZ3!HUT=C^B_wc{^1Q^B1i&Z zy)y-|fb|Z5z(cgM4oHm-tq&g_;TCb`WL9f`l@@p1yfVV~ywD{pnfxPB4<nlmFe4QH zVmCoqPEk-W0)-Syf&TdOVROBRi~{Z2IphbbEE8?5Nf>OJTRqN{!t&(%tam>TW`#-S z!b~mmrD-ykg?0oxKsEXybd<0jrzpLO9YqH13&`~QUqRjnVzv(9ujZ$)iPyOGdNiN# zRlI^z6VRiuG)g8x&H}Ca&9;rAB$8^N1`yCsvqwgPiZ6-oJy2dJ<kYZvR~ri$#%qYi zF|k{qz%@H7LF9L<090d6MPsOOf@o|__m)BESv2hps0$kC9kUA}{PcAafdo`Gce^b( zRHqU2-AV^hJISW>Qy@doqOB_WbD&Ol>1$(V$&%=}3QA-e1+Z)Hods;3W>Kl-(b7E8 zro=<@N9T5c!AUo_fN-U7^`@<91{U`>$X~)%ecv3z=xaBufcj}Q@LU{7kAW(uI7U#T zDoWJAdtP%k#RFh@-;|>Gdida*eu=n3ITTY-VbJ)bK#v}N1da;?uxPBUtVqX0hId!c zcn&HD2W44Sz5}fnXSATyj=?wnPTvWm287|yj05wDqUk8M4Ti+drR|1<WA2w39MOS5 zqPrTGW(VxK*jPDtg7$gi%L7`wJFt+K%V`U^0wf%Y&?dQQwL5^B6iWTj*OTDZmygw= z!4Cl8;#hvHqz35FCNB&F>nQMGA1I;%8+(8yz!a{6(Ai{QkQyb>k+&wF%wjbskpR{C z{NX!rJ+TXpUC2q#33aL`wNs^!BX*)@Ve!txKo!f=?%sy#f!Dl+xuUX+#kvJU>Yxpf z+$g$l2kp54yVDa80b^PJ4m5&*8ZG&A2Nuf3ikra#kLtNeP-sG|fU>Ck2(LMj8-Lyg zI&%G*mOvTfB;cDN*9;2(2n^Xg{LUbEq=ygjEC?(RJN%JvM+Kp@Ic2h{cWdGz1~qX^ zR5hKv%A6x#+r}4nc)mA(2YjE6jb^uP=U>_oF{=)<C$I&-N&ghhIHXWn(*f#jdQ!O3 z)RKs??TdrNgaYp`kO|op-}kZz%L<k?%tw`O-_!QIt;7@vN!;gy-=WtneAT@O>U_qV zij>vu^WC~aKOHY(Go-Xt$|_PTfQS9Mv`xH`;sGJxSr-A%qH8isRM8#&bRXz~i{tf| zKiBHylfDDtnumL$jdj;^TRnig&)Zh}hD%5RUY}-oflgo6x@@BxbV{`YzoL>;su3Z6 zC}>_$z|b=3o%9+UuwK_dZtt7N1{`u?ji2@>R+<gUwVThXM%k223M9yZ*x)_B*at(} z7O-0&nn#s!h}J|ts#uiYxz4S8Ii>ic0^I{fPG78t_(0quSaieleFwa$#hma1iw@vY z^`dw_J^ospyxL$vsiN|eoVTq|f>XOPo3!~9v$Q}T&}Lsk6@gO)I8wc52tA&OU4NPq zuTM%UjkW^uS6p|Br;5hcMe&qPC1%u)fw6oVNC2<ygG!3^8faI68RCX!{dJYk4?iNR z6na<nvty-;uV$u|+tbaSo9Ni=wD8OTxnglfs7xwoE8zez(w$ma)0pS}V#lrYM6Lq3 z3d6b$tDwW9aAKP{$1(QJHi;4%sOM0_J}=9|)XKIRy}N1~V@vB?6MR<^^sk{>kuh|y zBtuIPaw6b;qh3P<n`W5iY~HfP#e2)UnZ98|k`{RH49md9;R)6Kh&{eGwWU_6g-BlA zy$}~84KFmv?A<F*$LA&VjuD8?Fnchqy&V!>+2;!;KwR$PI0(hNE?#@VvBbcssmu?Z z)w1B(<T@}YKJkp^b_ZVcgnciNtZFsS8BH95M|oWcN~;-3b*HLbNeh###W%I2BaTwI zOXCaQ_E>OBmc^ImoB;d~d#p`c7W0BnO-Y<`qSH<MF|}huj_Z!GGfmo2CS`~6zzPXm z2f=GavPV({o^%jp(rDpB1HyNN@O>Tf#jD7_-K>2?;{MfO)b^_Adzme^P&7kz6DQVb z8T4Sv$X<xU1QPnC(X4J~XkfwAEb=7lB|BBoVy9iEows9K<pMbReUVYwt8H7)u$RD) z72a-=&_gl!pdLU`kN15@)_o7lv2FI83GueH)bR7xeen%tShJ8xbHD6G*&62dOl^MQ zopiBV?n|9BOI&EN3+uo*Q8QoO@_iVop<%2i%}pJEyea2JT>EXs`(*+mIb!o-U2m;F zO-*9sE5B+ne*|J|VR-WnUOKOyrV?7vx46>6#L-IT@LpsQ-InVwPUQecycNm-w(=fu zRL~I)5sZL5jr2JxF5xtEroqJ-NcJ?Ml?>xcwoXzo0VVyDf!v8<fERDqTQ+e_qgoP7 z+aR8^c^>3tfv%gE)Uqp#sFAs~R2Y~*^Q**~HFFLL!z7rWC*&TDx&6#DkwVBgR%rgB zjL!;Yd)d2ERA9R5=EsfVGuGSO&hwdeb>VS+JtApwIjt{3R?ixQ+9biLG)gfVum&51 z&e6hdfCsneIR0q(1*DsCnm&om>I&?Yr0|h8jq(9Lkq9}*I+p#{qrDYT{9S?MI>+EV ztpkE%ef(qvU!K(G?K@=a@78l>ePj}_$U3Vcv%x%q@P@{4K|Xm-Z8T6}(3qDKrS}XD zA^H@BrwQc5POIndR^VrTV6Cy|Y?w=~UjV#YdC1=e7uejpL8dSr$j8qIMZ4I>z`&TR zhP)*7o1p`;`iulhE2bo&vtcm>mBeA@s~mZi=Si>8<E=&fx1K@G|I)_!7q;_~gpJNW zlg-4%WI~aVWRBaV=@&-X@t8Laz$*Z?k%iy2tDUdXukS19l#U{`q{6$-1$t%hJQ#y- z>m`Gk`2q(sBhk{=HVp!I2SCFf0)1S^q%(4b8;jEI7)v-Ay`qmt{2zzm`%yu<wuR)& z#f5kVCH9fqpv?v?&Z7dw1R37RK<}?u&yb||SfC^Akt`5<S5{1%^LroQPk`hCg$lg) zcR}8roy#%M8xS9N*Xo?to{S84fRjZ)erY?!_BGQGHh~`jaD_I=2sY^rjy+rua0U6n z5&S`tFMIqwKy*c&fZ9fzma|z54&>&0o^gKBk7Vcx82nX8%gyK+cm|*JgKaRMK|72C z#j_Yy_JLyrUj-*wi=>I`tO*FSx@jepEd)8xh2DBoPrvCwqOFnA!VZ>$RH1Mqi=G<J zkm}w`xGpPHp^`@UIWiQ}nZx64Pz3vy7vOhZ6uI0BprYuSzzF2Z!ksMDz~S|t%op-G zzo^}8iU)+k-5}t5_o1O2zmpk<-?Jr~85^;`(|ax%n7D)OS^BF`Z9&%P?cEFDtKlJl zxxTOA8i+Hq47_ldGiz}MJ6Ph42_kGzKAMV!_xjUVQ0Je>*_%9y-(gYINzZD+HxVe7 z{gfzL+v|99NA8in`;h4!{qDK^O?*FGD#%L*HBVG}k5Rq=#RJv75Cw9y{{!GdF@nm1 z=!y|#b8|~Grh{{hi|E5LeW>I-;K@;+31dU{>G<GeEau$@?_NlpqtmKZ;=XVcbq557 zgq@}8RVFGhD!{SM)+k&u@nfsVZ+F|$*{KzVgSlSAH>GIYO{t+*LR*Sx1>Lc*H14Tn zitvMdFG}nOlJDlOX*r&avJ-%0=I{ulVTFi@yNc0gai)QUK1M$VJpui+UWM#!P$jxg z=A7t`B+sb%O_awBC@hfS1*xaHRcZ-jD%C~<Lrz@!+1UshZjjse+4YEk1cHnKzWGNl z0^&14_ula$6<(Z05Cop|Mg*s^25Ke*O4k<vr73BmUG1ea6}W*_-j~2;?P$lI1Pf}& zHuVXl1o!8W3b<hjQE|1u;n97l3ce)`#W!FH<Z2by0B=e^P%$|`GuVPi(BW7sSwGfo z0fZIp0uN_Dv<-m*b62Ww6%N*-WiTKob@`#eqzsaH42W?_00uR+SoK1v*XbLU&Y@VB z2B1}a4|Pch;V?4u@d##PLb*#L8Fo)q`Wn7u5`jW~C_L~ULisZ>uKiI2iXd7zNDaIc zsLV%pr$Pnoj2|G3MlJdy893I9BdNs<)`zn}cZ>Z9VT$gg7`+FerBd)bXsCpe{9OfI zhIB}uTN?4a{_TCh6SWE+g?RNdy>=853Kx8L44u>n4kVy!lX!XofE(n&!S=}OqJAM| zHgF5X%0Yc55WrQf(QLnP<gecS1pfnwJL=p8>Uvu36liM6S~6e`#;eB{EPU=a(vj<q zP`@rH_-<JAL*(~<p+MMrY`w3|MckRE78DRBO~61{Nx=&O5FW{asi^gU7rpF7+5k;F zxx-w6Pr(`ZI35y()ggf5^%8~n=t&|Q$h5VO1D2+wg;ip(=5l4heb&uI4NUHUU#DxG zNk02<E$9J@R+>{GC}p4knp>+uZExNf-BaePQbn0Q51IV(TW&D$Sgnp{fIbSDn6!)z zTT_*YC-+zw>e`+rz0dykMSiZ?feTWB5QAR8X&sq+eJZUHGUcEG;m>R)h-?@+te#0F z%~Cub)MrV!*5RERfop`gk}3{T)dnZMfgf;2_&soabF3MGs`6L7W{oKEnHAAI<qYDV zQw+&+m~<M!RNX<zjwWAFc3@~;+@Q&hd<eZTb${hi1OiIZrOSgVQB<|AQ_!HQppry{ zO3HxfhNynIM>c6to1b~mIGQA%bn7i}-TIaS$4FIN&@!lB-IPPbU4a7p_9~p6N9JIP zZ_~DeA}U})AAtMU5?}^sKuo0Re}H{MM-4;}q7zU>CIHEZaL%he3~&R7q(DmKSH-H? z_K(!ovOp04f7S203AEU3-dHGBn**zS(c2CXYPkjyjp9M*j3Ox8$04l&>J)OM+|onp z`jX|n$zt(!2mScn-EVB6f{~uBs2I4hpj-k2yXKlG#JTXnI0~c0FRWhh14+8tjLIpd zeTu4}g|2xQV0HZ<?(e1_ZfqM~WVsqz^7)cHD18LVVP6H|GOD->jW=|qD&|WRM#92A z_=8821pEQRKO(W$AIYBtDmc@nhW~(cR$Y?cb|N;@eGV*ID9N`Dn5eKL6VpKJ%l!!u zyT}UVQ2GGd)Gqiz{VTjJ<?zcm)?n2(*Q=J?q+xLYLYscfz*%VKB>=_CFX*0eqoToy zJ3-P#5(~PQYBIZi{KOdzTach!2%5t}eJB*c4&*2!NO>W$RY3<7$p&9ofA%NfF&_jP z88c{nS_zcUE2b*AjAz1TRG|a72#>A=6t$Qoulgol4V+V<nBceG&%BzcBzStx$tRBJ z7SL4v$(l^7cC^u5(0VJvK~Vt?i#F3v(;i3lSrF@n06{{DP`67m5U&D528!MjD|iwX zsH@voa8)7Ov`lC#(12{r25=!21H|<-J#h*nJ`kJ&=G3%*#`pUzK!zko!Nu1LMz03X z3r7Jg3{4Jj3~oz1NwgnVa-cY89(GUJ|N0E)288<2SfGM!|NR>XFb_#)-E9AS_Jibn zTyjc?B<LH=fCV++;#>m~^7qfDP+(br(Ax?Bhayw3TTw6fVaWU!jZeTD=IHg;{pT|Z z5JV`*cm&`Ox!_mSg25w^liUX;yYHW2WPswX*jnTt4+Qh$0f2)wOAzmXzTwvet(@RU zyni0~9%LT-zdHm+63%Tqn+5TP`bglVD0@|=O4`(4O$il^2nhoT3tXc?k}y5!Qo}$( z($hskA_7+&9bLIxL9<rGk3TPRdfv2qV|3Huxd7~|xal{kk?CAF`UelsZW7rLRHN1n zh4Sw4a*Q@ngpVnRsO)Ze_{6b4a(!8_F_-rWNx+19;e5=wm^`lC^yX$^9Q%@3{qDzR zd!OLA%&OshF9)5Dh9_4ixp50<MHwoVT&Wh-$vefq?k5YbDpXouMQzC%q~kfOdnHjm zGg>((wSQVxQFxEzOdKJ)cI}%2e;<@q;jM?5m;qO>@=#-Btilg^SvC1Ys|vDsJzrkg z3=RxSO;T*m*>Ee6DA0SRnu=wQMHzy*PV652!qpZ@^La~{mv9DZ!Ss8Qs=HO+Y`rkL zCIsHvIZjDzP4D9R(qrTHSiMv<+Oqexb24=26Os_U`I2(C-S9}tRp8B815ebtM~h8d zSD(GKpYNfJ<v0-Qq}=mPRHc9$QrRsJGaU~MnBh1`vL(I0@eX%tv6LplzvHlnDFMSL zV3RM@qWYCBW|Z@8EsXHBpo@}LAF7+~7`h_T!L2?$ZaO0j-ZZOsXOe8SS3~2)B*T1& zCcJVahL4*0ujjuws^3j}Z`L^&gaZ@Q^oYEsV9~;^mvl8}RO>1KeqbUSv&c=3c@3E6 zS(#jMOIv=!ID!Tlxn2#CQ6=(wL1<|y*Q@Oa<#?**&s3qH<b-{ySGeiYOwMe3v8aj9 zsaRuT66HX9O6&^{A`bm+DF;u{%^T$*ZzivcX9$|rqRE7OvW6K>`YB`OmmahetEmj? zX3z@SUWz4FEG=%m*vU-Yz4fSLmj200x%-g`Y{-;MTiS=F{1+Fi(6jrNOD-Jt!fDoo zj3iTh&9C{34kVjN&JY~z%FH5*camI)^jx*lb{%=Xwx1NPq2MOB`s5m-t?Xu;!<(4T zV%s6f<i1QPZ>(fJ$ZlU|dn)f@yJ0Rx2&#x{28pvheExZN$$ddzz+_YEPPNp7!wT7U zb<64(y80H~d`Y9P2bE`-JozV5`|Bz>-|F^>Q50Rt)A755I%Y*{mR@;W))ENXy_1ob zI33wqN95UO1PnEe+K%Uatv+8c^_lo^A-F!uD5hSb`t8SO?uAL!>7u(WZS@^8`%@YV zJ*jh3`sFEi(H5*66I!k}$tJ1Q2bFr-CAQZ`I%Gcgq<j>z?OERLnJd+oDm<?i?u%$O z^qV}gdurdud{a%(Ej+{K18qn8nIZO}49TPc`T!&!se&{DDZaryb=_k;2OJ$=u^_gf z?lRb6r+ZXLJ;z>fH&gC*(zmLx9J8*kOB%yHBTv=qY10zD>U*X?+T<Q;SY)!aaVRif zFH@rzMZO)CSuCp0wiAal<bJQO*qQKwW?M?nj0-JiB#hZ8O}bArg^;afaRdc)G5z?4 znw|2%+{zbu!|*F1Dt!)daOp6d^h;)ozye!KoFDHO*C9f>iG}QYVU2vLjE0A<?&;<D z?^wkdG#M7+s?C+_4=v3+h$WuwKbw~9EH}Iy`qA6ngmfRjsOpQhqiuNjQ?^gOn4H~a z(_5m05izL<+#@=H#T3IAsfYVQt8mG?=V<G0l-=Ofbe3_?M3|2l-CgdkyY*>N>y?Z~ z%eQ<=lSXC}m-dbd_dA-S{*BYU27>K05~4z1lRoGwd!3DF3m_OqR`;ME3u<Zi$<EK; zx7N-OiC(NJnU6`SP#jdB;1vx0Ji_w{+q%?a>RotJCD+_R9wMDKnk<^`qBENC%F9rY zkgPx|>`(RHNrtf3sUU<(D*8w$FKk(8Og<Ve??W~E(2<H9E+0!L9&K$d6ir3@-*0i_ z==$+5$n#yKl9%hpUk#0+OCxKVKg!e9LGR<*pzR-fu9Eg}gY-I<(xup_&qL_iNy}l= zZAt>`67N5K%G<o_w7E6JC&V?m(I>Libri67nNGikF7C^`&1_uxF@6F8jH)f4m1T76 zf*km3+1pN|XJ3?sMZM6@^@{m>4HoQ3I|)t8-c=+Gv;@?CeC4xnd2V4}s_s=J=MxvC zqD`HVg#8Enj0gNgm~!kdD4kvUfN^xc`|#_1zpx1jSG!O10h^?=&TF@Jx*}%YhkB#d zZm9=S_?KeLU%5C55VcU9(KPYEPw<1E`1QgnRuM%kU5f1t*W?lp?)ev7bfbn0{WklQ z`TJbOsV}rdzMexu`t}VK>EsDS=t06ygo1?h9t{Zz|G!QkM`whKnzMtW3v~Qc+*`0u z=OzmtX4<BPy*k@;Q9_C#5l=3yL2+`z*cX#g3N_NMc$;r~@f9qdVUtx`Q|LYB*E?B< zj~qR|@$4-oOcZHayv--x6BC{)+vvOb_U^3;$<14RAP}a50`d0Sy}k!8e7-meA`+71 zqIL9iKjnx`Tl1y%A7?gdlAskW4oIaWrmem{Fet<{Tc}*bh$0!b?;61*>k%T85&Wdo zaYwbo_IXuOVcB5-s*u2FUAE%Ws`RI&&-b$IlSQgx1+Es%mcGKg9h%f&dS_0s;oYl| zeKzl8xRHM?=U$df_Gbfu&gbX8GAgI~)MiH+(>heQ&wqP_L&Q|UE)}kUi-o|>xzCJb zg%&JY5E(S^4i%eLpDS`A1Uo`V=Gp*dn*m$CL3`O`%@L9Erv9d)TfH_`*2A!;ueT3* zowTJq&gXIk4^dFP;}@v95^Rxzbguvn_Ke(gKm;AzN}ZxFBbi0a>;n52+VrbLI*03w zJM!iYLZaj6r)OU*?KU2d@6mG}rK!PsYmm_JacAZfLzRdaM^ti;?7YWQ4PLL0!<*s- zGdY5Y1t)6AzRoT4$Po3Vpjfe?(?7f+dG1x<#WXpmNVCADRP`qF7td2`GukLu%)T(1 zYRlcvYe0)7rHW-<HO&mhicMLLb!rY=#UexOU$y>RB759>`@jS-IKOQBEM@eY>58E7 zeR1sRyQM=HzykSm38{%at<6S9Lb~LJghcp{5MyR;htPEOvO|1dL~k+;9rATxk6*Cu zUxF_Vf13Bb-0&>?h9Qe>;ezXnFg$DmjKNqHoyj|gYb!!m&6^p|TU;Wio1N*(kl_As zsdrUU{7zdoVy@X!y+~GkY8JEXhLbo;k<A^ksc)UQVPlPT;k!2Xh`mIo9y~7my76V& zL|o2lQv0CrQ`RF=MB${)?k+pUmY_Dj1ZC8d0Tt1RC+8lCKHEYl)~3j6AG<k;rE%u9 z&wXO2bh<J$%6`SgIK6K`@7v=V27ZoSnkutdnKV9l(;oRn`d9P3verk>&K>(yZW|aL ze|_ArsOR1DlF>rOTj!X>8$-QF)6leOD}=9sq5dx4B~6DNE57o>weI*^Vz%pV?ZeqS z??0I{VM;zUM%A_GP#`c?Y9GFCrm?F1Ayrm8?Z)JxSB6Z&+@ga`l8s5;{RzWcP7Swb z3+9{b_N*Tm8JT#^N`EFnSY$R;uTijhWllBfd$d^>K2l`5IQ@2W{7I#^=1qd3$KD#{ z_J_1wJ#7m*L+q6+K}m)6wVc!G1G{f6Z0zE$z39?6)-MkiP8lt%EYB+oCr_D_cd@xv zG=Aj4J$U1wZMM3r=mF<3VuMt%!)ePvHt8y*64w`YI};_%8|D0WK62OZwv3LKw3Z2X zKhM+`wg!FqLYgGLHs6y(lgn{W-ktG@=X~;nO(4+u&XK|$=fI2c7vquXS~uKZCKk&k zC}!wZ+~jP}JWixvco&G>%R`N_WtMK-YbVxHS5hHP>M?_$Hq5zMTvlT@$ZMj(FOoj} zYBJ_Yx_yVcy2tB_S}_&l#yIT)6oSEUcek0zj=`$8>jKx@+#(gtnvECgIb)SR-*xx9 zIl_;VG@WNyr6e|3sNBk_K2f{5r7=ibrFeOTB^hT~lO*^|wUWn1tI?!#teEZv1>91c zg8Y!=NldNFo0}1BG>!YgYdb66#cY1hl^?6qnIi9J-k!!1e;k%{_1)u7>_ZW<9%)VM z!h?7R*|;|)SQ&2?y`*Ef&k57$8T6+CZ-g{@ZlKbybw2D6xk$`KplRk@<vHz6t{wA$ zSN2h`Pa+HF^T}GvfXF~odO>;~0&*|!*;Td(lj5Y_+54%{F{(Rl+##1>*-NSn@azMI zD#2{#dNM@&hf-B1ZY-1twq^X~Ab*9y!_Yb*x*m;ASLL@;iYt<jq_*?0d+#c3PEF5b z%!ySwp<!n&3yw2lrp>#bop`FMR4I;sKcO)3!=z91!l$x;B{%Cy_|AC)KHRhr9X!mp zxrwOe$J}F|zsXKvS9Xa<6BJ(%`Wj4k(5aO1{P=av#>M+pVuYW*|4qYu3vJ_l=fi!b z!fg>YO|?daRl;5DkAXfY<c3y)LH6uiwArz${ly8dG^=Yva#x;u5Mv{j2sRYtsMbYf z0<#D)l3=V@j&GJZ->#%YzqBjCq@qaPX_Ius=EA`MZ<ZXftMOpTp9wskSe(24*yB** zU}w)^PO^+vJFZM#ep2Nn(GclNBJ2dl#yOp=vs(0#8ne-IcLg-m)e@@Ta?KBdt|au* z1T<l>R6_fEEe#W!SyK0vNcDr+FDG@JOWH3LIkPNc)Dk(9!Al!N4nt6!&7B}(EcT<j ze4#wLy=AcJmGoZ-nx;&yTBf)bb8+cbg~(j=wvbqVl(u{Us|InYcc2!3U~VLJOh?ZO zybc%q*d@6n{ieLK$9QylR5D34gRuw)Kg8|ufPEVEqIl{!ao#Y#RN5;uG`YdK{_wpo z+}yQ7EfMXaHk+1j9jFcXv1~&~@K9HBwR_FHt=D{E5|Mixp(bLUhuqB^)765y#iDT` zPagD1ol6^{HOH@YAgC?YXn6Q^|2Cqk`1pl5%nlRtd8rmRzFjd+)A1L=L>i|s(@R5< z+X!Ko?Lk@n%x~b(|C66r3Dvi{BO@V^p#BsI+-(pZ|1A<kYN$B$aN~BU&fN`lzHkf+ zP*-nJevWRFVA^g~%91)qACB7adEZ6CRQ635$MEo-J59VMI*9JGOKRkqyVgX`7zSy| z8=`9$(vw4&o{ivShV@u0c;WRYM|^H?RXKYm`dxIKZ=Xzo&#Mj<f26guSN!NKqzIe& ztBA641_Pdk(P1ac!a|nmnS;jeS9>&1q;KmedI~t3_#b4321tAI#9TtWFSzcYUVk>$ za&8kx35VjUVAvz8OXdMA)0CLAXPUB>&sA<Z5y*;?Ia68~+6rVn?ZYEB+A_`MISOz# zwmffM610$_TU>W<oLJ=OU>|RcuJMNPfcPPN-XI+1s*_!pIVV8{S*DZ7a->!sx1Et% zLuWL`E7o+fV&_7A*;T%1;qvr~mf_7?0$v}po>q?>KAgQ(>@J)tK<$W{cmem4UT@)Y ziHm^iC9Goye!JUQ*M)C1UwUAhIc_kmqwwjrvd$3a>-mg<PkV2)+PFH7z|s2WB(<*> zvX}z7jRIH?U`SZVmJSx*=ZDM8(Ge2c;CX1s%sEJ48voyZ-Ph{Yc+L&$@F@D0Gg>O< zYcYn6n;&Y^TR@dlU=czkB33fRI0aX#YQP?;u4X4BOjaiMw&wI||NMo%BQYs+K{w5= z%L_4-QWS!ErHe?1wVq<!OI%DS_hCM_hV>0o<qKWoyk8IS(uEBJE~96mVZVIbAXA~5 z@Q{>2tLH*+9d=@&TVfZiP1`(KNxQ3+V~UteIT|BC9pw;9&R?|TlGGe)mi>;2Y#~S5 z@yGNpxo5pI)<}Y$X`}me#TWZ>R3v1b8^>2N=og=A)CuZZ!hE0+RKLg>XY^RM|LLM% zx;`S7q5a_!#!-!TWRa7LPu+nvThber+EhpLH5p^?J3P4eienK5iaTFY7-B+i*OGnJ zNNVskW@hOY)#-KezS!QDX083Whor6oM#0z(>m-`H9Q&5w4T{Y8n^ZMUZb8pBKa@(k zYsY7{snvHcds^F3jYm0NAuHgh#G{>Rlz&`2mBZw6E}p@dr^om$r_O~VZUU4ew%W-j zz2|*(t&6Kiq7UMXaxuPzGejS9;Rn37=(-*9oS`Z?_f^Z|9lixOQTx38_Jv`qLjHlk zjqUediAErgg3FPoWP+*u*23mUp4QBVw#zSq<pbU=TP%mi8(qSV4ty`!S!IStf4P~{ zar+aaxZ6k=t)A4g;@L%SA{&r_VOi+5%mLSzbWw}7WUQIL3)`|E7?zt(@F3!dOCqQg z?fiCkZ_y1n7K~V3wqCi}52N=S+&)NPXA43lmoqxN(~j1TMfzwXSb`-;-*4VIi!^Q4 zeLUJbEBY+vGU?+Pf$67Z+qmlwz|Q(}S8n=JzBB{>;tX~s{;#{z!oeBw|F`8&Rs^D6 zRRg$*f?lY6Ij8a>S1n1F(ljjX<4WFjUW%x5Dy@`JYH3ZlhwnIAa>vCMGu~w_-m)K` zwKC4-AY-FUTo#JtMqx;kE>j84*7>l6Lbuhz>N&~WzjKy7YweX)>4-8P2DNg2w-7do z7ZW0Ngq$;TJQBusrKA;4Ecbqkz4A~d*HExEr}z;DR#YBKY4>~oOIN*nC1avJ9rQy- zHJXbkaL-8P_*2}gr$1}4+bhD|C^pN@{Gi{UEi*XbwG`EcDw}-GR$Gk{#>DW2gycsH z&U*Z@Wy4pHo{dX$GZ~|QG?dQwXh5@<345!8jPX%u)B=Yir;xYOu@X5wzBd0IF-FS` z<vY(mjaUXHeTA=eQQiBBLfmY>9MhPjX0-ja=bK;W<1U?p>1P{~k%+dK=*e5uA2Vk? zq%k*yTRZiKoUYP|VAE2JSQBdsv|0}AHC}i-1HV8m^p)WwDH!7)>k=7-1K5=Ru{85r z9w&SOD-)mKhm!VlDxi0UmmTa~5%#VoT3(I_7h`CpswtfW_;6!1=sozVI#}8`C+_A4 zQiO>!!p?<@6Z-S_8|7@TbO!=a!h-sTjr-@lx|lyK-jKZk{J5E`jf4GZKW$+|*U$xS z69n|bf8Gw>;Q>k@o4JdfjU~c`>jxFzKYTZxpGuFqk^;LDphxoz5)$zVG#uO$Xg_g& zf26r5qHiO?!8<1QJ46^Tviw5OcL<)-o++B9vO*IKr64%nPg0>k@+SoEX%L|?j*^OC z?8m{Bo`iTt_9q12X%J;<*?oh+710v+JH(aqe?st|2J!Uqs<k*6%BwZMLntu*2_bMA zghWc|yKn$O()v3@EBBuef~P_BbEvV;fXN*GV~Mz5Isx&^68Zi(r!J9JQ|e;~4Px@} z6H6pg^lxb2$M;mUzc1fBuzr47Ex*wAeZv2jXgT74L;Jo0PenU}9_4izJY^WzijZ~Z z=POI%2igy!e&3>}f+ehrI(7pDp+AO=QTlJBeP0m&OEiYde?$AeHcmxL;__&*0{g8B z>^GX9PYK@9%lv|-Z06<Q=IZi;q5Sx8>fX!y#?V^{m<TK0?{H7#{xjUE`|xX|P^&bc zPWKP$ny&n3xKsCJuKHWUBLGJT7~08)6;%1paHsCimG+Q{RPe9@f56$R{b#sS_p0LX z1GZ^ET`KnP)X8c6XE@>0wtfYQqq{ty&IQ2Ho|su9;8p$a?RCn`UgSOv&j4MnJphpR z0?frpyq5<51K#&T=l8=RNEFqT8sL!uR(%q$$oPN2JN4vXK=Z`g2Y9am-#&?lX8J$i zow}5{)vIUI0bUC@&`vHEVT=EaCv@8I@w<}be*g?%96atxjzW0-2b{fwE5b$d$BF&( z{i$QOU(<s`4ZyyEXJtPzx0kJdp-sii#TDUv;{5+{>F-j2W0LQ&IAD6AU_+dI>T;V? zkiQ?~zhM48$&*CwH^sps<OKrBNjPSwU*Jw#gr^PS;*0j%B>?W|j~!R&`k&!WT{4rS z@$c`0;e!OIlfxM4c?#Sw=g<#=|9*b_9Xa0X-yr|}oclX+iub=k{`-0ScjPQku<Z|q z@yBTVU2gb0a)HmkLH_$;_;=*8+y4gn?+4@Gk!$Y!8|1%lvA-iX-TgPn-?{y%hxxC_ z94FYqecykB{DblTFQI$={uT7U8;_GzKk@%p(En~5o`fC^_*c+>--kP4GFjtbj3HT= z^~6}u1pa{j$;1EQz(242yU{qwlRgCf8<M{tKBrD0%d#W02w<K*Ko>j7i$4bcLh(O` z#&=@>18e_1M(gJoIEVj$`z2!QRQB62tVa%18zlNa*zaEKDFppsIKPwi%cBBS>HCWY zseZSZO&35z|3mR(KVOGHqk~x4O@yV58JEpXGb_YJPDgvI-w&?8Kb@}<@^^$^p6>f> z{*Lf_1i?=lP&9rZoQNm*{r2Cz$3JhE)%q_2PWqC62l(Ax@e_d9;0M47=f&^0pERWZ yycr3p%@7&sceDEMcb_!){d%{W$uD>RWByZ9LI+Y75|Rk`F9{#WaAsghApIYZyfv!; literal 0 HcmV?d00001 diff --git a/lecture_material/09-Graph-Search-1/print.key b/lecture_material/09-Graph-Search-1/print.key new file mode 100644 index 0000000000000000000000000000000000000000..75440c05592a081acb6edd6d6f70acd51dfe8e6b GIT binary patch literal 301849 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�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¬f05{>+)GgtbL64 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�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	<6ph=cmL^k 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 literal 0 HcmV?d00001 diff --git a/lecture_material/09-Graph-Search-1/print.pdf b/lecture_material/09-Graph-Search-1/print.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7e13a1df7015ddf502df28874342512fbdfa2a86 GIT binary patch literal 32962 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 literal 0 HcmV?d00001 diff --git a/lecture_material/09-Graph-Search-1/reading1.html b/lecture_material/09-Graph-Search-1/reading1.html new file mode 100644 index 0000000..71509b5 --- /dev/null +++ b/lecture_material/09-Graph-Search-1/reading1.html @@ -0,0 +1,15011 @@ +<!DOCTYPE html> +<html> +<head><meta charset="utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<title>reading</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script> + + + + +<style type="text/css"> + pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: var(--jp-cell-editor-active-background) } +.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) } +.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */ +.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */ +.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */ +.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */ +.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */ +.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */ +.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */ +.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */ +.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */ +.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */ +.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */ +.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */ +.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */ +.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */ +.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */ +.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */ +.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */ +.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */ +.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */ +.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */ +.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */ +.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */ +.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */ +.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */ +.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */ +.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */ +.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */ +.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */ +.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */ +.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */ +.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */ + </style> +<style type="text/css"> + .container { width:99.5% !important; } + + </style> + + + +<style type="text/css"> +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* + * Mozilla scrollbar styling + */ + +/* use standard opaque scrollbars for most nodes */ +[data-jp-theme-scrollbars='true'] { + scrollbar-color: rgb(var(--jp-scrollbar-thumb-color)) + var(--jp-scrollbar-background-color); +} + +/* for code nodes, use a transparent style of scrollbar. These selectors + * will match lower in the tree, and so will override the above */ +[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar, +[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar { + scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent; +} + +/* tiny scrollbar */ + +.jp-scrollbar-tiny { + scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent; + scrollbar-width: thin; +} + +/* + * Webkit scrollbar styling + */ + +/* use standard opaque scrollbars for most nodes */ + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-corner { + background: var(--jp-scrollbar-background-color); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-thumb { + background: rgb(var(--jp-scrollbar-thumb-color)); + border: var(--jp-scrollbar-thumb-margin) solid transparent; + background-clip: content-box; + border-radius: var(--jp-scrollbar-thumb-radius); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:horizontal { + border-left: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); + border-right: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:vertical { + border-top: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); + border-bottom: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); +} + +/* for code nodes, use a transparent style of scrollbar */ + +[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-corner, +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-corner { + background-color: transparent; +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-thumb, +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-thumb { + background: rgba(var(--jp-scrollbar-thumb-color), 0.5); + border: var(--jp-scrollbar-thumb-margin) solid transparent; + background-clip: content-box; + border-radius: var(--jp-scrollbar-thumb-radius); +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-track:horizontal { + border-left: var(--jp-scrollbar-endpad) solid transparent; + border-right: var(--jp-scrollbar-endpad) solid transparent; +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-track:vertical { + border-top: var(--jp-scrollbar-endpad) solid transparent; + border-bottom: var(--jp-scrollbar-endpad) solid transparent; +} + +/* tiny scrollbar */ + +.jp-scrollbar-tiny::-webkit-scrollbar, +.jp-scrollbar-tiny::-webkit-scrollbar-corner { + background-color: transparent; + height: 4px; + width: 4px; +} + +.jp-scrollbar-tiny::-webkit-scrollbar-thumb { + background: rgba(var(--jp-scrollbar-thumb-color), 0.5); +} + +.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal { + border-left: 0px solid transparent; + border-right: 0px solid transparent; +} + +.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical { + border-top: 0px solid transparent; + border-bottom: 0px solid transparent; +} + +/* + * Phosphor + */ + +.lm-ScrollBar[data-orientation='horizontal'] { + min-height: 16px; + max-height: 16px; + min-width: 45px; + border-top: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='vertical'] { + min-width: 16px; + max-width: 16px; + min-height: 45px; + border-left: 1px solid #a0a0a0; +} + +.lm-ScrollBar-button { + background-color: #f0f0f0; + background-position: center center; + min-height: 15px; + max-height: 15px; + min-width: 15px; + max-width: 15px; +} + +.lm-ScrollBar-button:hover { + background-color: #dadada; +} + +.lm-ScrollBar-button.lm-mod-active { + background-color: #cdcdcd; +} + +.lm-ScrollBar-track { + background: #f0f0f0; +} + +.lm-ScrollBar-thumb { + background: #cdcdcd; +} + +.lm-ScrollBar-thumb:hover { + background: #bababa; +} + +.lm-ScrollBar-thumb.lm-mod-active { + background: #a0a0a0; +} + +.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb { + height: 100%; + min-width: 15px; + border-left: 1px solid #a0a0a0; + border-right: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb { + width: 100%; + min-height: 15px; + border-top: 1px solid #a0a0a0; + border-bottom: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='horizontal'] + .lm-ScrollBar-button[data-action='decrement'] { + background-image: var(--jp-icon-caret-left); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='horizontal'] + .lm-ScrollBar-button[data-action='increment'] { + background-image: var(--jp-icon-caret-right); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='vertical'] + .lm-ScrollBar-button[data-action='decrement'] { + background-image: var(--jp-icon-caret-up); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='vertical'] + .lm-ScrollBar-button[data-action='increment'] { + background-image: var(--jp-icon-caret-down); + background-size: 17px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-Widget, /* </DEPRECATED> */ +.lm-Widget { + box-sizing: border-box; + position: relative; + overflow: hidden; + cursor: default; +} + + +/* <DEPRECATED> */ .p-Widget.p-mod-hidden, /* </DEPRECATED> */ +.lm-Widget.lm-mod-hidden { + display: none !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-CommandPalette, /* </DEPRECATED> */ +.lm-CommandPalette { + display: flex; + flex-direction: column; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-CommandPalette-search, /* </DEPRECATED> */ +.lm-CommandPalette-search { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-content, /* </DEPRECATED> */ +.lm-CommandPalette-content { + flex: 1 1 auto; + margin: 0; + padding: 0; + min-height: 0; + overflow: auto; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p-CommandPalette-header, /* </DEPRECATED> */ +.lm-CommandPalette-header { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + + +/* <DEPRECATED> */ .p-CommandPalette-item, /* </DEPRECATED> */ +.lm-CommandPalette-item { + display: flex; + flex-direction: row; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemIcon, /* </DEPRECATED> */ +.lm-CommandPalette-itemIcon { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemContent, /* </DEPRECATED> */ +.lm-CommandPalette-itemContent { + flex: 1 1 auto; + overflow: hidden; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemShortcut, /* </DEPRECATED> */ +.lm-CommandPalette-itemShortcut { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemLabel, /* </DEPRECATED> */ +.lm-CommandPalette-itemLabel { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.lm-close-icon { + border:1px solid transparent; + background-color: transparent; + position: absolute; + z-index:1; + right:3%; + top: 0; + bottom: 0; + margin: auto; + padding: 7px 0; + display: none; + vertical-align: middle; + outline: 0; + cursor: pointer; +} +.lm-close-icon:after { + content: "X"; + display: block; + width: 15px; + height: 15px; + text-align: center; + color:#000; + font-weight: normal; + font-size: 12px; + cursor: pointer; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-DockPanel, /* </DEPRECATED> */ +.lm-DockPanel { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-DockPanel-widget, /* </DEPRECATED> */ +.lm-DockPanel-widget { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-DockPanel-tabBar, /* </DEPRECATED> */ +.lm-DockPanel-tabBar { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle, /* </DEPRECATED> */ +.lm-DockPanel-handle { + z-index: 2; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle.p-mod-hidden, /* </DEPRECATED> */ +.lm-DockPanel-handle.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle:after, /* </DEPRECATED> */ +.lm-DockPanel-handle:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ''; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='horizontal'], +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='horizontal'] { + cursor: ew-resize; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='vertical'], +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='vertical'] { + cursor: ns-resize; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='horizontal']:after, +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='horizontal']:after { + left: 50%; + min-width: 8px; + transform: translateX(-50%); +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='vertical']:after, +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='vertical']:after { + top: 50%; + min-height: 8px; + transform: translateY(-50%); +} + + +/* <DEPRECATED> */ .p-DockPanel-overlay, /* </DEPRECATED> */ +.lm-DockPanel-overlay { + z-index: 3; + box-sizing: border-box; + pointer-events: none; +} + + +/* <DEPRECATED> */ .p-DockPanel-overlay.p-mod-hidden, /* </DEPRECATED> */ +.lm-DockPanel-overlay.lm-mod-hidden { + display: none !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-Menu, /* </DEPRECATED> */ +.lm-Menu { + z-index: 10000; + position: absolute; + white-space: nowrap; + overflow-x: hidden; + overflow-y: auto; + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-Menu-content, /* </DEPRECATED> */ +.lm-Menu-content { + margin: 0; + padding: 0; + display: table; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p-Menu-item, /* </DEPRECATED> */ +.lm-Menu-item { + display: table-row; +} + + +/* <DEPRECATED> */ +.p-Menu-item.p-mod-hidden, +.p-Menu-item.p-mod-collapsed, +/* </DEPRECATED> */ +.lm-Menu-item.lm-mod-hidden, +.lm-Menu-item.lm-mod-collapsed { + display: none !important; +} + + +/* <DEPRECATED> */ +.p-Menu-itemIcon, +.p-Menu-itemSubmenuIcon, +/* </DEPRECATED> */ +.lm-Menu-itemIcon, +.lm-Menu-itemSubmenuIcon { + display: table-cell; + text-align: center; +} + + +/* <DEPRECATED> */ .p-Menu-itemLabel, /* </DEPRECATED> */ +.lm-Menu-itemLabel { + display: table-cell; + text-align: left; +} + + +/* <DEPRECATED> */ .p-Menu-itemShortcut, /* </DEPRECATED> */ +.lm-Menu-itemShortcut { + display: table-cell; + text-align: right; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-MenuBar, /* </DEPRECATED> */ +.lm-MenuBar { + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-MenuBar-content, /* </DEPRECATED> */ +.lm-MenuBar-content { + margin: 0; + padding: 0; + display: flex; + flex-direction: row; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p--MenuBar-item, /* </DEPRECATED> */ +.lm-MenuBar-item { + box-sizing: border-box; +} + + +/* <DEPRECATED> */ +.p-MenuBar-itemIcon, +.p-MenuBar-itemLabel, +/* </DEPRECATED> */ +.lm-MenuBar-itemIcon, +.lm-MenuBar-itemLabel { + display: inline-block; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-ScrollBar, /* </DEPRECATED> */ +.lm-ScrollBar { + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ +.p-ScrollBar[data-orientation='horizontal'], +/* </DEPRECATED> */ +.lm-ScrollBar[data-orientation='horizontal'] { + flex-direction: row; +} + + +/* <DEPRECATED> */ +.p-ScrollBar[data-orientation='vertical'], +/* </DEPRECATED> */ +.lm-ScrollBar[data-orientation='vertical'] { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-ScrollBar-button, /* </DEPRECATED> */ +.lm-ScrollBar-button { + box-sizing: border-box; + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-ScrollBar-track, /* </DEPRECATED> */ +.lm-ScrollBar-track { + box-sizing: border-box; + position: relative; + overflow: hidden; + flex: 1 1 auto; +} + + +/* <DEPRECATED> */ .p-ScrollBar-thumb, /* </DEPRECATED> */ +.lm-ScrollBar-thumb { + box-sizing: border-box; + position: absolute; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-SplitPanel-child, /* </DEPRECATED> */ +.lm-SplitPanel-child { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle, /* </DEPRECATED> */ +.lm-SplitPanel-handle { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle.p-mod-hidden, /* </DEPRECATED> */ +.lm-SplitPanel-handle.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle:after, /* </DEPRECATED> */ +.lm-SplitPanel-handle:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ''; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle { + cursor: ew-resize; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle { + cursor: ns-resize; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle:after, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after { + left: 50%; + min-width: 8px; + transform: translateX(-50%); +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle:after, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after { + top: 50%; + min-height: 8px; + transform: translateY(-50%); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-TabBar, /* </DEPRECATED> */ +.lm-TabBar { + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-TabBar[data-orientation='horizontal'], /* </DEPRECATED> */ +.lm-TabBar[data-orientation='horizontal'] { + flex-direction: row; +} + + +/* <DEPRECATED> */ .p-TabBar[data-orientation='vertical'], /* </DEPRECATED> */ +.lm-TabBar[data-orientation='vertical'] { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-TabBar-content, /* </DEPRECATED> */ +.lm-TabBar-content { + margin: 0; + padding: 0; + display: flex; + flex: 1 1 auto; + list-style-type: none; +} + + +/* <DEPRECATED> */ +.p-TabBar[data-orientation='horizontal'] > .p-TabBar-content, +/* </DEPRECATED> */ +.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content { + flex-direction: row; +} + + +/* <DEPRECATED> */ +.p-TabBar[data-orientation='vertical'] > .p-TabBar-content, +/* </DEPRECATED> */ +.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-TabBar-tab, /* </DEPRECATED> */ +.lm-TabBar-tab { + display: flex; + flex-direction: row; + box-sizing: border-box; + overflow: hidden; +} + + +/* <DEPRECATED> */ +.p-TabBar-tabIcon, +.p-TabBar-tabCloseIcon, +/* </DEPRECATED> */ +.lm-TabBar-tabIcon, +.lm-TabBar-tabCloseIcon { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-TabBar-tabLabel, /* </DEPRECATED> */ +.lm-TabBar-tabLabel { + flex: 1 1 auto; + overflow: hidden; + white-space: nowrap; +} + + +.lm-TabBar-tabInput { + user-select: all; + width: 100%; + box-sizing : border-box; +} + + +/* <DEPRECATED> */ .p-TabBar-tab.p-mod-hidden, /* </DEPRECATED> */ +.lm-TabBar-tab.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-TabBar.p-mod-dragging .p-TabBar-tab, /* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging .lm-TabBar-tab { + position: relative; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab { + left: 0; + transition: left 150ms ease; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab { + top: 0; + transition: top 150ms ease; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging { + transition: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-TabPanel-tabBar, /* </DEPRECATED> */ +.lm-TabPanel-tabBar { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-TabPanel-stackedPanel, /* </DEPRECATED> */ +.lm-TabPanel-stackedPanel { + z-index: 0; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + +@charset "UTF-8"; +html{ + -webkit-box-sizing:border-box; + box-sizing:border-box; } + +*, +*::before, +*::after{ + -webkit-box-sizing:inherit; + box-sizing:inherit; } + +body{ + font-size:14px; + font-weight:400; + letter-spacing:0; + line-height:1.28581; + text-transform:none; + color:#182026; + font-family:-apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", "Icons16", sans-serif; } + +p{ + margin-bottom:10px; + margin-top:0; } + +small{ + font-size:12px; } + +strong{ + font-weight:600; } + +::-moz-selection{ + background:rgba(125, 188, 255, 0.6); } + +::selection{ + background:rgba(125, 188, 255, 0.6); } +.bp3-heading{ + color:#182026; + font-weight:600; + margin:0 0 10px; + padding:0; } + .bp3-dark .bp3-heading{ + color:#f5f8fa; } + +h1.bp3-heading, .bp3-running-text h1{ + font-size:36px; + line-height:40px; } + +h2.bp3-heading, .bp3-running-text h2{ + font-size:28px; + line-height:32px; } + +h3.bp3-heading, .bp3-running-text h3{ + font-size:22px; + line-height:25px; } + +h4.bp3-heading, .bp3-running-text h4{ + font-size:18px; + line-height:21px; } + +h5.bp3-heading, .bp3-running-text h5{ + font-size:16px; + line-height:19px; } + +h6.bp3-heading, .bp3-running-text h6{ + font-size:14px; + line-height:16px; } +.bp3-ui-text{ + font-size:14px; + font-weight:400; + letter-spacing:0; + line-height:1.28581; + text-transform:none; } + +.bp3-monospace-text{ + font-family:monospace; + text-transform:none; } + +.bp3-text-muted{ + color:#5c7080; } + .bp3-dark .bp3-text-muted{ + color:#a7b6c2; } + +.bp3-text-disabled{ + color:rgba(92, 112, 128, 0.6); } + .bp3-dark .bp3-text-disabled{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-text-overflow-ellipsis{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; } +.bp3-running-text{ + font-size:14px; + line-height:1.5; } + .bp3-running-text h1{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h1{ + color:#f5f8fa; } + .bp3-running-text h2{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h2{ + color:#f5f8fa; } + .bp3-running-text h3{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h3{ + color:#f5f8fa; } + .bp3-running-text h4{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h4{ + color:#f5f8fa; } + .bp3-running-text h5{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h5{ + color:#f5f8fa; } + .bp3-running-text h6{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h6{ + color:#f5f8fa; } + .bp3-running-text hr{ + border:none; + border-bottom:1px solid rgba(16, 22, 26, 0.15); + margin:20px 0; } + .bp3-dark .bp3-running-text hr{ + border-color:rgba(255, 255, 255, 0.15); } + .bp3-running-text p{ + margin:0 0 10px; + padding:0; } + +.bp3-text-large{ + font-size:16px; } + +.bp3-text-small{ + font-size:12px; } +a{ + color:#106ba3; + text-decoration:none; } + a:hover{ + color:#106ba3; + cursor:pointer; + text-decoration:underline; } + a .bp3-icon, a .bp3-icon-standard, a .bp3-icon-large{ + color:inherit; } + a code, + .bp3-dark a code{ + color:inherit; } + .bp3-dark a, + .bp3-dark a:hover{ + color:#48aff0; } + .bp3-dark a .bp3-icon, .bp3-dark a .bp3-icon-standard, .bp3-dark a .bp3-icon-large, + .bp3-dark a:hover .bp3-icon, + .bp3-dark a:hover .bp3-icon-standard, + .bp3-dark a:hover .bp3-icon-large{ + color:inherit; } +.bp3-running-text code, .bp3-code{ + font-family:monospace; + text-transform:none; + background:rgba(255, 255, 255, 0.7); + border-radius:3px; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2); + color:#5c7080; + font-size:smaller; + padding:2px 5px; } + .bp3-dark .bp3-running-text code, .bp3-running-text .bp3-dark code, .bp3-dark .bp3-code{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + color:#a7b6c2; } + .bp3-running-text a > code, a > .bp3-code{ + color:#137cbd; } + .bp3-dark .bp3-running-text a > code, .bp3-running-text .bp3-dark a > code, .bp3-dark a > .bp3-code{ + color:inherit; } + +.bp3-running-text pre, .bp3-code-block{ + font-family:monospace; + text-transform:none; + background:rgba(255, 255, 255, 0.7); + border-radius:3px; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + color:#182026; + display:block; + font-size:13px; + line-height:1.4; + margin:10px 0; + padding:13px 15px 12px; + word-break:break-all; + word-wrap:break-word; } + .bp3-dark .bp3-running-text pre, .bp3-running-text .bp3-dark pre, .bp3-dark .bp3-code-block{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-running-text pre > code, .bp3-code-block > code{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; + font-size:inherit; + padding:0; } + +.bp3-running-text kbd, .bp3-key{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + color:#5c7080; + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + font-family:inherit; + font-size:12px; + height:24px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + line-height:24px; + min-width:24px; + padding:3px 6px; + vertical-align:middle; } + .bp3-running-text kbd .bp3-icon, .bp3-key .bp3-icon, .bp3-running-text kbd .bp3-icon-standard, .bp3-key .bp3-icon-standard, .bp3-running-text kbd .bp3-icon-large, .bp3-key .bp3-icon-large{ + margin-right:5px; } + .bp3-dark .bp3-running-text kbd, .bp3-running-text .bp3-dark kbd, .bp3-dark .bp3-key{ + background:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + color:#a7b6c2; } +.bp3-running-text blockquote, .bp3-blockquote{ + border-left:solid 4px rgba(167, 182, 194, 0.5); + margin:0 0 10px; + padding:0 20px; } + .bp3-dark .bp3-running-text blockquote, .bp3-running-text .bp3-dark blockquote, .bp3-dark .bp3-blockquote{ + border-color:rgba(115, 134, 148, 0.5); } +.bp3-running-text ul, +.bp3-running-text ol, .bp3-list{ + margin:10px 0; + padding-left:30px; } + .bp3-running-text ul li:not(:last-child), .bp3-running-text ol li:not(:last-child), .bp3-list li:not(:last-child){ + margin-bottom:5px; } + .bp3-running-text ul ol, .bp3-running-text ol ol, .bp3-list ol, + .bp3-running-text ul ul, + .bp3-running-text ol ul, + .bp3-list ul{ + margin-top:5px; } + +.bp3-list-unstyled{ + list-style:none; + margin:0; + padding:0; } + .bp3-list-unstyled li{ + padding:0; } +.bp3-rtl{ + text-align:right; } + +.bp3-dark{ + color:#f5f8fa; } + +:focus{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:2px; + -moz-outline-radius:6px; } + +.bp3-focus-disabled :focus{ + outline:none !important; } + .bp3-focus-disabled :focus ~ .bp3-control-indicator{ + outline:none !important; } + +.bp3-alert{ + max-width:400px; + padding:20px; } + +.bp3-alert-body{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-alert-body .bp3-icon{ + font-size:40px; + margin-right:20px; + margin-top:0; } + +.bp3-alert-contents{ + word-break:break-word; } + +.bp3-alert-footer{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:reverse; + -ms-flex-direction:row-reverse; + flex-direction:row-reverse; + margin-top:10px; } + .bp3-alert-footer .bp3-button{ + margin-left:10px; } +.bp3-breadcrumbs{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + cursor:default; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-wrap:wrap; + flex-wrap:wrap; + height:30px; + list-style:none; + margin:0; + padding:0; } + .bp3-breadcrumbs > li{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-breadcrumbs > li::after{ + background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42L8.59 8 5.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z' fill='%235C7080'/%3e%3c/svg%3e"); + content:""; + display:block; + height:16px; + margin:0 5px; + width:16px; } + .bp3-breadcrumbs > li:last-of-type::after{ + display:none; } + +.bp3-breadcrumb, +.bp3-breadcrumb-current, +.bp3-breadcrumbs-collapsed{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + font-size:16px; } + +.bp3-breadcrumb, +.bp3-breadcrumbs-collapsed{ + color:#5c7080; } + +.bp3-breadcrumb:hover{ + text-decoration:none; } + +.bp3-breadcrumb.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-breadcrumb .bp3-icon{ + margin-right:5px; } + +.bp3-breadcrumb-current{ + color:inherit; + font-weight:600; } + .bp3-breadcrumb-current .bp3-input{ + font-size:inherit; + font-weight:inherit; + vertical-align:baseline; } + +.bp3-breadcrumbs-collapsed{ + background:#ced9e0; + border:none; + border-radius:3px; + cursor:pointer; + margin-right:2px; + padding:1px 5px; + vertical-align:text-bottom; } + .bp3-breadcrumbs-collapsed::before{ + background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%235C7080'%3e%3ccircle cx='2' cy='8.03' r='2'/%3e%3ccircle cx='14' cy='8.03' r='2'/%3e%3ccircle cx='8' cy='8.03' r='2'/%3e%3c/g%3e%3c/svg%3e") center no-repeat; + content:""; + display:block; + height:16px; + width:16px; } + .bp3-breadcrumbs-collapsed:hover{ + background:#bfccd6; + color:#182026; + text-decoration:none; } + +.bp3-dark .bp3-breadcrumb, +.bp3-dark .bp3-breadcrumbs-collapsed{ + color:#a7b6c2; } + +.bp3-dark .bp3-breadcrumbs > li::after{ + color:#a7b6c2; } + +.bp3-dark .bp3-breadcrumb.bp3-disabled{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-dark .bp3-breadcrumb-current{ + color:#f5f8fa; } + +.bp3-dark .bp3-breadcrumbs-collapsed{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-breadcrumbs-collapsed:hover{ + background:rgba(16, 22, 26, 0.6); + color:#f5f8fa; } +.bp3-button{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border:none; + border-radius:3px; + cursor:pointer; + font-size:14px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + padding:5px 10px; + text-align:left; + vertical-align:middle; + min-height:30px; + min-width:30px; } + .bp3-button > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-button > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-button::before, + .bp3-button > *{ + margin-right:7px; } + .bp3-button:empty::before, + .bp3-button > :last-child{ + margin-right:0; } + .bp3-button:empty{ + padding:0 !important; } + .bp3-button:disabled, .bp3-button.bp3-disabled{ + cursor:not-allowed; } + .bp3-button.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-button.bp3-align-right, + .bp3-align-right .bp3-button{ + text-align:right; } + .bp3-button.bp3-align-left, + .bp3-align-left .bp3-button{ + text-align:left; } + .bp3-button:not([class*="bp3-intent-"]){ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; } + .bp3-button:not([class*="bp3-intent-"]):hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-button:not([class*="bp3-intent-"]):active, .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active:hover, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-button.bp3-intent-primary{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-primary:hover, .bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-primary:hover{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{ + background-color:#0e5a8a; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-primary:disabled, .bp3-button.bp3-intent-primary.bp3-disabled{ + background-color:rgba(19, 124, 189, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-success{ + background-color:#0f9960; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-success:hover, .bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-success:hover{ + background-color:#0d8050; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{ + background-color:#0a6640; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-success:disabled, .bp3-button.bp3-intent-success.bp3-disabled{ + background-color:rgba(15, 153, 96, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-warning{ + background-color:#d9822b; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-warning:hover, .bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-warning:hover{ + background-color:#bf7326; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{ + background-color:#a66321; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-warning:disabled, .bp3-button.bp3-intent-warning.bp3-disabled{ + background-color:rgba(217, 130, 43, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-danger{ + background-color:#db3737; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-danger:hover, .bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-danger:hover{ + background-color:#c23030; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{ + background-color:#a82a2a; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-danger:disabled, .bp3-button.bp3-intent-danger.bp3-disabled{ + background-color:rgba(219, 55, 55, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{ + stroke:#ffffff; } + .bp3-button.bp3-large, + .bp3-large .bp3-button{ + min-height:40px; + min-width:40px; + font-size:16px; + padding:5px 15px; } + .bp3-button.bp3-large::before, + .bp3-button.bp3-large > *, + .bp3-large .bp3-button::before, + .bp3-large .bp3-button > *{ + margin-right:10px; } + .bp3-button.bp3-large:empty::before, + .bp3-button.bp3-large > :last-child, + .bp3-large .bp3-button:empty::before, + .bp3-large .bp3-button > :last-child{ + margin-right:0; } + .bp3-button.bp3-small, + .bp3-small .bp3-button{ + min-height:24px; + min-width:24px; + padding:0 7px; } + .bp3-button.bp3-loading{ + position:relative; } + .bp3-button.bp3-loading[class*="bp3-icon-"]::before{ + visibility:hidden; } + .bp3-button.bp3-loading .bp3-button-spinner{ + margin:0; + position:absolute; } + .bp3-button.bp3-loading > :not(.bp3-button-spinner){ + visibility:hidden; } + .bp3-button[class*="bp3-icon-"]::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + color:#5c7080; } + .bp3-button .bp3-icon, .bp3-button .bp3-icon-standard, .bp3-button .bp3-icon-large{ + color:#5c7080; } + .bp3-button .bp3-icon.bp3-align-right, .bp3-button .bp3-icon-standard.bp3-align-right, .bp3-button .bp3-icon-large.bp3-align-right{ + margin-left:7px; } + .bp3-button .bp3-icon:first-child:last-child, + .bp3-button .bp3-spinner + .bp3-icon:last-child{ + margin:0 -7px; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]){ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover, .bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"])[class*="bp3-icon-"]::before{ + color:#a7b6c2; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-standard, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-large{ + color:#a7b6c2; } + .bp3-dark .bp3-button[class*="bp3-intent-"]{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:active, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:disabled, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-disabled{ + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.3); } + .bp3-dark .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{ + stroke:#8a9ba8; } + .bp3-button:disabled::before, + .bp3-button:disabled .bp3-icon, .bp3-button:disabled .bp3-icon-standard, .bp3-button:disabled .bp3-icon-large, .bp3-button.bp3-disabled::before, + .bp3-button.bp3-disabled .bp3-icon, .bp3-button.bp3-disabled .bp3-icon-standard, .bp3-button.bp3-disabled .bp3-icon-large, .bp3-button[class*="bp3-intent-"]::before, + .bp3-button[class*="bp3-intent-"] .bp3-icon, .bp3-button[class*="bp3-intent-"] .bp3-icon-standard, .bp3-button[class*="bp3-intent-"] .bp3-icon-large{ + color:inherit !important; } + .bp3-button.bp3-minimal{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-button.bp3-minimal:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button.bp3-minimal:active, .bp3-button.bp3-minimal.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button.bp3-minimal:disabled, .bp3-button.bp3-minimal:disabled:hover, .bp3-button.bp3-minimal.bp3-disabled, .bp3-button.bp3-minimal.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button.bp3-minimal:disabled.bp3-active, .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button.bp3-minimal{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button.bp3-minimal:hover, .bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button.bp3-minimal:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button.bp3-minimal:disabled, .bp3-dark .bp3-button.bp3-minimal:disabled:hover, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button.bp3-minimal:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-primary{ + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:hover, .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-success{ + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:hover, .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-warning{ + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:hover, .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-danger{ + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:hover, .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + border:1px solid rgba(24, 32, 38, 0.2); + -webkit-box-sizing:border-box; + box-sizing:border-box; } + .bp3-button.bp3-outlined:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button.bp3-outlined:active, .bp3-button.bp3-outlined.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button.bp3-outlined:disabled.bp3-active, .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button.bp3-outlined{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button.bp3-outlined:hover, .bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button.bp3-outlined:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button.bp3-outlined:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-primary{ + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:hover, .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-success{ + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:hover, .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-warning{ + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:hover, .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-danger{ + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:hover, .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled:hover{ + border-color:rgba(92, 112, 128, 0.1); } + .bp3-dark .bp3-button.bp3-outlined{ + border-color:rgba(255, 255, 255, 0.4); } + .bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{ + border-color:rgba(255, 255, 255, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-primary{ + border-color:rgba(16, 107, 163, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + border-color:rgba(16, 107, 163, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{ + border-color:rgba(72, 175, 240, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + border-color:rgba(72, 175, 240, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-success{ + border-color:rgba(13, 128, 80, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + border-color:rgba(13, 128, 80, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{ + border-color:rgba(61, 204, 145, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + border-color:rgba(61, 204, 145, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-warning{ + border-color:rgba(191, 115, 38, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + border-color:rgba(191, 115, 38, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{ + border-color:rgba(255, 179, 102, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + border-color:rgba(255, 179, 102, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-danger{ + border-color:rgba(194, 48, 48, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + border-color:rgba(194, 48, 48, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{ + border-color:rgba(255, 115, 115, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + border-color:rgba(255, 115, 115, 0.2); } + +a.bp3-button{ + text-align:center; + text-decoration:none; + -webkit-transition:none; + transition:none; } + a.bp3-button, a.bp3-button:hover, a.bp3-button:active{ + color:#182026; } + a.bp3-button.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); } + +.bp3-button-text{ + -webkit-box-flex:0; + -ms-flex:0 1 auto; + flex:0 1 auto; } + +.bp3-button.bp3-align-left .bp3-button-text, .bp3-button.bp3-align-right .bp3-button-text, +.bp3-button-group.bp3-align-left .bp3-button-text, +.bp3-button-group.bp3-align-right .bp3-button-text{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } +.bp3-button-group{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; } + .bp3-button-group .bp3-button{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + position:relative; + z-index:4; } + .bp3-button-group .bp3-button:focus{ + z-index:5; } + .bp3-button-group .bp3-button:hover{ + z-index:6; } + .bp3-button-group .bp3-button:active, .bp3-button-group .bp3-button.bp3-active{ + z-index:7; } + .bp3-button-group .bp3-button:disabled, .bp3-button-group .bp3-button.bp3-disabled{ + z-index:3; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]{ + z-index:9; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:focus{ + z-index:10; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:hover{ + z-index:11; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:active, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-active{ + z-index:12; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:disabled, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-disabled{ + z-index:8; } + .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:first-child) .bp3-button, + .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:first-child){ + border-bottom-left-radius:0; + border-top-left-radius:0; } + .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){ + border-bottom-right-radius:0; + border-top-right-radius:0; + margin-right:-1px; } + .bp3-button-group.bp3-minimal .bp3-button{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-button-group.bp3-minimal .bp3-button:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{ + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{ + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{ + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{ + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button-group .bp3-popover-wrapper, + .bp3-button-group .bp3-popover-target{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-button-group.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-button-group .bp3-button.bp3-fill, + .bp3-button-group.bp3-fill .bp3-button:not(.bp3-fixed){ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-button-group.bp3-vertical{ + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + vertical-align:top; } + .bp3-button-group.bp3-vertical.bp3-fill{ + height:100%; + width:unset; } + .bp3-button-group.bp3-vertical .bp3-button{ + margin-right:0 !important; + width:100%; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:first-child .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:first-child{ + border-radius:3px 3px 0 0; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:last-child .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:last-child{ + border-radius:0 0 3px 3px; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:not(:last-child){ + margin-bottom:-1px; } + .bp3-button-group.bp3-align-left .bp3-button{ + text-align:left; } + .bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){ + margin-right:1px; } + .bp3-dark .bp3-button-group.bp3-vertical > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-dark .bp3-button-group.bp3-vertical > .bp3-button:not(:last-child){ + margin-bottom:1px; } +.bp3-callout{ + font-size:14px; + line-height:1.5; + background-color:rgba(138, 155, 168, 0.15); + border-radius:3px; + padding:10px 12px 9px; + position:relative; + width:100%; } + .bp3-callout[class*="bp3-icon-"]{ + padding-left:40px; } + .bp3-callout[class*="bp3-icon-"]::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + color:#5c7080; + left:10px; + position:absolute; + top:10px; } + .bp3-callout.bp3-callout-icon{ + padding-left:40px; } + .bp3-callout.bp3-callout-icon > .bp3-icon:first-child{ + color:#5c7080; + left:10px; + position:absolute; + top:10px; } + .bp3-callout .bp3-heading{ + line-height:20px; + margin-bottom:5px; + margin-top:0; } + .bp3-callout .bp3-heading:last-child{ + margin-bottom:0; } + .bp3-dark .bp3-callout{ + background-color:rgba(138, 155, 168, 0.2); } + .bp3-dark .bp3-callout[class*="bp3-icon-"]::before{ + color:#a7b6c2; } + .bp3-callout.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.15); } + .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-primary > .bp3-icon:first-child, + .bp3-callout.bp3-intent-primary .bp3-heading{ + color:#106ba3; } + .bp3-dark .bp3-callout.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-primary > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-primary .bp3-heading{ + color:#48aff0; } + .bp3-callout.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.15); } + .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-success > .bp3-icon:first-child, + .bp3-callout.bp3-intent-success .bp3-heading{ + color:#0d8050; } + .bp3-dark .bp3-callout.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-success > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-success .bp3-heading{ + color:#3dcc91; } + .bp3-callout.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.15); } + .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-warning > .bp3-icon:first-child, + .bp3-callout.bp3-intent-warning .bp3-heading{ + color:#bf7326; } + .bp3-dark .bp3-callout.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-warning > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-warning .bp3-heading{ + color:#ffb366; } + .bp3-callout.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.15); } + .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-danger > .bp3-icon:first-child, + .bp3-callout.bp3-intent-danger .bp3-heading{ + color:#c23030; } + .bp3-dark .bp3-callout.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-danger > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-danger .bp3-heading{ + color:#ff7373; } + .bp3-running-text .bp3-callout{ + margin:20px 0; } +.bp3-card{ + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + padding:20px; + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-card.bp3-dark, + .bp3-dark .bp3-card{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + +.bp3-elevation-0{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + .bp3-elevation-0.bp3-dark, + .bp3-dark .bp3-elevation-0{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + +.bp3-elevation-1{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-elevation-1.bp3-dark, + .bp3-dark .bp3-elevation-1{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-2{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2); } + .bp3-elevation-2.bp3-dark, + .bp3-dark .bp3-elevation-2{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-3{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); } + .bp3-elevation-3.bp3-dark, + .bp3-dark .bp3-elevation-3{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-4{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); } + .bp3-elevation-4.bp3-dark, + .bp3-dark .bp3-elevation-4{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); } + +.bp3-card.bp3-interactive:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + cursor:pointer; } + .bp3-card.bp3-interactive:hover.bp3-dark, + .bp3-dark .bp3-card.bp3-interactive:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + +.bp3-card.bp3-interactive:active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + opacity:0.9; + -webkit-transition-duration:0; + transition-duration:0; } + .bp3-card.bp3-interactive:active.bp3-dark, + .bp3-dark .bp3-card.bp3-interactive:active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-collapse{ + height:0; + overflow-y:hidden; + -webkit-transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-collapse .bp3-collapse-body{ + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-collapse .bp3-collapse-body[aria-hidden="true"]{ + display:none; } + +.bp3-context-menu .bp3-popover-target{ + display:block; } + +.bp3-context-menu-popover-target{ + position:fixed; } + +.bp3-divider{ + border-bottom:1px solid rgba(16, 22, 26, 0.15); + border-right:1px solid rgba(16, 22, 26, 0.15); + margin:5px; } + .bp3-dark .bp3-divider{ + border-color:rgba(16, 22, 26, 0.4); } +.bp3-dialog-container{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + min-height:100%; + pointer-events:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + width:100%; } + .bp3-dialog-container.bp3-overlay-enter > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear > .bp3-dialog{ + opacity:0; + -webkit-transform:scale(0.5); + transform:scale(0.5); } + .bp3-dialog-container.bp3-overlay-enter-active > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear-active > .bp3-dialog{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:opacity, transform; + transition-property:opacity, transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-dialog-container.bp3-overlay-exit > .bp3-dialog{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-dialog-container.bp3-overlay-exit-active > .bp3-dialog{ + opacity:0; + -webkit-transform:scale(0.5); + transform:scale(0.5); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:opacity, transform; + transition-property:opacity, transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + +.bp3-dialog{ + background:#ebf1f5; + border-radius:6px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:30px 0; + padding-bottom:20px; + pointer-events:all; + -webkit-user-select:text; + -moz-user-select:text; + -ms-user-select:text; + user-select:text; + width:500px; } + .bp3-dialog:focus{ + outline:0; } + .bp3-dialog.bp3-dark, + .bp3-dark .bp3-dialog{ + background:#293742; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + +.bp3-dialog-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background:#ffffff; + border-radius:6px 6px 0 0; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + min-height:40px; + padding-left:20px; + padding-right:5px; } + .bp3-dialog-header .bp3-icon-large, + .bp3-dialog-header .bp3-icon{ + color:#5c7080; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin-right:10px; } + .bp3-dialog-header .bp3-heading{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:inherit; + margin:0; } + .bp3-dialog-header .bp3-heading:last-child{ + margin-right:20px; } + .bp3-dark .bp3-dialog-header{ + background:#30404d; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-dialog-header .bp3-icon-large, + .bp3-dark .bp3-dialog-header .bp3-icon{ + color:#a7b6c2; } + +.bp3-dialog-body{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:18px; + margin:20px; } + +.bp3-dialog-footer{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin:0 20px; } + +.bp3-dialog-footer-actions{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:end; + -ms-flex-pack:end; + justify-content:flex-end; } + .bp3-dialog-footer-actions .bp3-button{ + margin-left:10px; } +.bp3-drawer{ + background:#ffffff; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:0; + padding:0; } + .bp3-drawer:focus{ + outline:0; } + .bp3-drawer.bp3-position-top{ + height:50%; + left:0; + right:0; + top:0; } + .bp3-drawer.bp3-position-top.bp3-overlay-enter, .bp3-drawer.bp3-position-top.bp3-overlay-appear{ + -webkit-transform:translateY(-100%); + transform:translateY(-100%); } + .bp3-drawer.bp3-position-top.bp3-overlay-enter-active, .bp3-drawer.bp3-position-top.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-top.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer.bp3-position-top.bp3-overlay-exit-active{ + -webkit-transform:translateY(-100%); + transform:translateY(-100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-bottom{ + bottom:0; + height:50%; + left:0; + right:0; } + .bp3-drawer.bp3-position-bottom.bp3-overlay-enter, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear{ + -webkit-transform:translateY(100%); + transform:translateY(100%); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-enter-active, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-exit-active{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-left{ + bottom:0; + left:0; + top:0; + width:50%; } + .bp3-drawer.bp3-position-left.bp3-overlay-enter, .bp3-drawer.bp3-position-left.bp3-overlay-appear{ + -webkit-transform:translateX(-100%); + transform:translateX(-100%); } + .bp3-drawer.bp3-position-left.bp3-overlay-enter-active, .bp3-drawer.bp3-position-left.bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-left.bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer.bp3-position-left.bp3-overlay-exit-active{ + -webkit-transform:translateX(-100%); + transform:translateX(-100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-right{ + bottom:0; + right:0; + top:0; + width:50%; } + .bp3-drawer.bp3-position-right.bp3-overlay-enter, .bp3-drawer.bp3-position-right.bp3-overlay-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); } + .bp3-drawer.bp3-position-right.bp3-overlay-enter-active, .bp3-drawer.bp3-position-right.bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-right.bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer.bp3-position-right.bp3-overlay-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical){ + bottom:0; + right:0; + top:0; + width:50%; } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical{ + bottom:0; + height:50%; + left:0; + right:0; } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-appear{ + -webkit-transform:translateY(100%); + transform:translateY(100%); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-exit-active{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-dark, + .bp3-dark .bp3-drawer{ + background:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + +.bp3-drawer-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border-radius:0; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + min-height:40px; + padding:5px; + padding-left:20px; + position:relative; } + .bp3-drawer-header .bp3-icon-large, + .bp3-drawer-header .bp3-icon{ + color:#5c7080; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin-right:10px; } + .bp3-drawer-header .bp3-heading{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:inherit; + margin:0; } + .bp3-drawer-header .bp3-heading:last-child{ + margin-right:20px; } + .bp3-dark .bp3-drawer-header{ + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-drawer-header .bp3-icon-large, + .bp3-dark .bp3-drawer-header .bp3-icon{ + color:#a7b6c2; } + +.bp3-drawer-body{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:18px; + overflow:auto; } + +.bp3-drawer-footer{ + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + padding:10px 20px; + position:relative; } + .bp3-dark .bp3-drawer-footer{ + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4); } +.bp3-editable-text{ + cursor:text; + display:inline-block; + max-width:100%; + position:relative; + vertical-align:top; + white-space:nowrap; } + .bp3-editable-text::before{ + bottom:-3px; + left:-3px; + position:absolute; + right:-3px; + top:-3px; + border-radius:3px; + content:""; + -webkit-transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-editable-text:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-editable-text.bp3-editable-text-editing::before{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-disabled::before{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-editable-text.bp3-intent-primary .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{ + color:#137cbd; } + .bp3-editable-text.bp3-intent-primary:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4); } + .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-success .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-success .bp3-editable-text-content{ + color:#0f9960; } + .bp3-editable-text.bp3-intent-success:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4); } + .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-warning .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{ + color:#d9822b; } + .bp3-editable-text.bp3-intent-warning:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4); } + .bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-danger .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-danger .bp3-editable-text-content{ + color:#db3737; } + .bp3-editable-text.bp3-intent-danger:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4); } + .bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-editable-text:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15); } + .bp3-dark .bp3-editable-text.bp3-editable-text-editing::before{ + background-color:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-disabled::before{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{ + color:#48aff0; } + .bp3-dark .bp3-editable-text.bp3-intent-primary:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4); + box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-success .bp3-editable-text-content{ + color:#3dcc91; } + .bp3-dark .bp3-editable-text.bp3-intent-success:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4); + box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{ + color:#ffb366; } + .bp3-dark .bp3-editable-text.bp3-intent-warning:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4); + box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-danger .bp3-editable-text-content{ + color:#ff7373; } + .bp3-dark .bp3-editable-text.bp3-intent-danger:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4); + box-shadow:0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-editable-text-input, +.bp3-editable-text-content{ + color:inherit; + display:inherit; + font:inherit; + letter-spacing:inherit; + max-width:inherit; + min-width:inherit; + position:relative; + resize:none; + text-transform:inherit; + vertical-align:top; } + +.bp3-editable-text-input{ + background:none; + border:none; + -webkit-box-shadow:none; + box-shadow:none; + padding:0; + white-space:pre-wrap; + width:100%; } + .bp3-editable-text-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input:focus{ + outline:none; } + .bp3-editable-text-input::-ms-clear{ + display:none; } + +.bp3-editable-text-content{ + overflow:hidden; + padding-right:2px; + text-overflow:ellipsis; + white-space:pre; } + .bp3-editable-text-editing > .bp3-editable-text-content{ + left:0; + position:absolute; + visibility:hidden; } + .bp3-editable-text-placeholder > .bp3-editable-text-content{ + color:rgba(92, 112, 128, 0.6); } + .bp3-dark .bp3-editable-text-placeholder > .bp3-editable-text-content{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-editable-text.bp3-multiline{ + display:block; } + .bp3-editable-text.bp3-multiline .bp3-editable-text-content{ + overflow:auto; + white-space:pre-wrap; + word-wrap:break-word; } +.bp3-divider{ + border-bottom:1px solid rgba(16, 22, 26, 0.15); + border-right:1px solid rgba(16, 22, 26, 0.15); + margin:5px; } + .bp3-dark .bp3-divider{ + border-color:rgba(16, 22, 26, 0.4); } +.bp3-control-group{ + -webkit-transform:translateZ(0); + transform:translateZ(0); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; } + .bp3-control-group > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-control-group > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-control-group .bp3-button, + .bp3-control-group .bp3-html-select, + .bp3-control-group .bp3-input, + .bp3-control-group .bp3-select{ + position:relative; } + .bp3-control-group .bp3-input{ + border-radius:inherit; + z-index:2; } + .bp3-control-group .bp3-input:focus{ + border-radius:3px; + z-index:14; } + .bp3-control-group .bp3-input[class*="bp3-intent"]{ + z-index:13; } + .bp3-control-group .bp3-input[class*="bp3-intent"]:focus{ + z-index:15; } + .bp3-control-group .bp3-input[readonly], .bp3-control-group .bp3-input:disabled, .bp3-control-group .bp3-input.bp3-disabled{ + z-index:1; } + .bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input{ + z-index:13; } + .bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input:focus{ + z-index:15; } + .bp3-control-group .bp3-button, + .bp3-control-group .bp3-html-select select, + .bp3-control-group .bp3-select select{ + -webkit-transform:translateZ(0); + transform:translateZ(0); + border-radius:inherit; + z-index:4; } + .bp3-control-group .bp3-button:focus, + .bp3-control-group .bp3-html-select select:focus, + .bp3-control-group .bp3-select select:focus{ + z-index:5; } + .bp3-control-group .bp3-button:hover, + .bp3-control-group .bp3-html-select select:hover, + .bp3-control-group .bp3-select select:hover{ + z-index:6; } + .bp3-control-group .bp3-button:active, + .bp3-control-group .bp3-html-select select:active, + .bp3-control-group .bp3-select select:active{ + z-index:7; } + .bp3-control-group .bp3-button[readonly], .bp3-control-group .bp3-button:disabled, .bp3-control-group .bp3-button.bp3-disabled, + .bp3-control-group .bp3-html-select select[readonly], + .bp3-control-group .bp3-html-select select:disabled, + .bp3-control-group .bp3-html-select select.bp3-disabled, + .bp3-control-group .bp3-select select[readonly], + .bp3-control-group .bp3-select select:disabled, + .bp3-control-group .bp3-select select.bp3-disabled{ + z-index:3; } + .bp3-control-group .bp3-button[class*="bp3-intent"], + .bp3-control-group .bp3-html-select select[class*="bp3-intent"], + .bp3-control-group .bp3-select select[class*="bp3-intent"]{ + z-index:9; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:focus, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:focus, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:focus{ + z-index:10; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:hover, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:hover, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:hover{ + z-index:11; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:active, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:active, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:active{ + z-index:12; } + .bp3-control-group .bp3-button[class*="bp3-intent"][readonly], .bp3-control-group .bp3-button[class*="bp3-intent"]:disabled, .bp3-control-group .bp3-button[class*="bp3-intent"].bp3-disabled, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"][readonly], + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:disabled, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"].bp3-disabled, + .bp3-control-group .bp3-select select[class*="bp3-intent"][readonly], + .bp3-control-group .bp3-select select[class*="bp3-intent"]:disabled, + .bp3-control-group .bp3-select select[class*="bp3-intent"].bp3-disabled{ + z-index:8; } + .bp3-control-group .bp3-input-group > .bp3-icon, + .bp3-control-group .bp3-input-group > .bp3-button, + .bp3-control-group .bp3-input-group > .bp3-input-action{ + z-index:16; } + .bp3-control-group .bp3-select::after, + .bp3-control-group .bp3-html-select::after, + .bp3-control-group .bp3-select > .bp3-icon, + .bp3-control-group .bp3-html-select > .bp3-icon{ + z-index:17; } + .bp3-control-group .bp3-select:focus-within{ + z-index:5; } + .bp3-control-group:not(.bp3-vertical) > *:not(.bp3-divider){ + margin-right:-1px; } + .bp3-control-group:not(.bp3-vertical) > .bp3-divider:not(:first-child){ + margin-left:6px; } + .bp3-dark .bp3-control-group:not(.bp3-vertical) > *:not(.bp3-divider){ + margin-right:0; } + .bp3-dark .bp3-control-group:not(.bp3-vertical) > .bp3-button + .bp3-button{ + margin-left:1px; } + .bp3-control-group .bp3-popover-wrapper, + .bp3-control-group .bp3-popover-target{ + border-radius:inherit; } + .bp3-control-group > :first-child{ + border-radius:3px 0 0 3px; } + .bp3-control-group > :last-child{ + border-radius:0 3px 3px 0; + margin-right:0; } + .bp3-control-group > :only-child{ + border-radius:3px; + margin-right:0; } + .bp3-control-group .bp3-input-group .bp3-button{ + border-radius:3px; } + .bp3-control-group .bp3-numeric-input:not(:first-child) .bp3-input-group{ + border-bottom-left-radius:0; + border-top-left-radius:0; } + .bp3-control-group.bp3-fill{ + width:100%; } + .bp3-control-group > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-control-group.bp3-fill > *:not(.bp3-fixed){ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-control-group.bp3-vertical{ + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; } + .bp3-control-group.bp3-vertical > *{ + margin-top:-1px; } + .bp3-control-group.bp3-vertical > :first-child{ + border-radius:3px 3px 0 0; + margin-top:0; } + .bp3-control-group.bp3-vertical > :last-child{ + border-radius:0 0 3px 3px; } +.bp3-control{ + cursor:pointer; + display:block; + margin-bottom:10px; + position:relative; + text-transform:none; } + .bp3-control input:checked ~ .bp3-control-indicator{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-control:hover input:checked ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-control input:not(:disabled):active:checked ~ .bp3-control-indicator{ + background:#0e5a8a; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control input:disabled:checked ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-control input:checked ~ .bp3-control-indicator{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control:hover input:checked ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control input:not(:disabled):active:checked ~ .bp3-control-indicator{ + background-color:#0e5a8a; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control input:disabled:checked ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-control:not(.bp3-align-right){ + padding-left:26px; } + .bp3-control:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-26px; } + .bp3-control.bp3-align-right{ + padding-right:26px; } + .bp3-control.bp3-align-right .bp3-control-indicator{ + margin-right:-26px; } + .bp3-control.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-control.bp3-inline{ + display:inline-block; + margin-right:20px; } + .bp3-control input{ + left:0; + opacity:0; + position:absolute; + top:0; + z-index:-1; } + .bp3-control .bp3-control-indicator{ + background-clip:padding-box; + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + border:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + cursor:pointer; + display:inline-block; + font-size:16px; + height:1em; + margin-right:10px; + margin-top:-3px; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + vertical-align:middle; + width:1em; } + .bp3-control .bp3-control-indicator::before{ + content:""; + display:block; + height:1em; + width:1em; } + .bp3-control:hover .bp3-control-indicator{ + background-color:#ebf1f5; } + .bp3-control input:not(:disabled):active ~ .bp3-control-indicator{ + background:#d8e1e8; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control input:disabled ~ .bp3-control-indicator{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + cursor:not-allowed; } + .bp3-control input:focus ~ .bp3-control-indicator{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:2px; + -moz-outline-radius:6px; } + .bp3-control.bp3-align-right .bp3-control-indicator{ + float:right; + margin-left:10px; + margin-top:1px; } + .bp3-control.bp3-large{ + font-size:16px; } + .bp3-control.bp3-large:not(.bp3-align-right){ + padding-left:30px; } + .bp3-control.bp3-large:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-30px; } + .bp3-control.bp3-large.bp3-align-right{ + padding-right:30px; } + .bp3-control.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-right:-30px; } + .bp3-control.bp3-large .bp3-control-indicator{ + font-size:20px; } + .bp3-control.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-top:0; } + .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-control.bp3-checkbox:hover input:indeterminate ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate ~ .bp3-control-indicator{ + background:#0e5a8a; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-checkbox:hover input:indeterminate ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate ~ .bp3-control-indicator{ + background-color:#0e5a8a; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-control.bp3-checkbox .bp3-control-indicator{ + border-radius:3px; } + .bp3-control.bp3-checkbox input:checked ~ .bp3-control-indicator::before{ + background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z' fill='white'/%3e%3c/svg%3e"); } + .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator::before{ + background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1z' fill='white'/%3e%3c/svg%3e"); } + .bp3-control.bp3-radio .bp3-control-indicator{ + border-radius:50%; } + .bp3-control.bp3-radio input:checked ~ .bp3-control-indicator::before{ + background-image:radial-gradient(#ffffff, #ffffff 28%, transparent 32%); } + .bp3-control.bp3-radio input:checked:disabled ~ .bp3-control-indicator::before{ + opacity:0.5; } + .bp3-control.bp3-radio input:focus ~ .bp3-control-indicator{ + -moz-outline-radius:16px; } + .bp3-control.bp3-switch input ~ .bp3-control-indicator{ + background:rgba(167, 182, 194, 0.5); } + .bp3-control.bp3-switch:hover input ~ .bp3-control-indicator{ + background:rgba(115, 134, 148, 0.5); } + .bp3-control.bp3-switch input:not(:disabled):active ~ .bp3-control-indicator{ + background:rgba(92, 112, 128, 0.5); } + .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator{ + background:rgba(206, 217, 224, 0.5); } + .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator::before{ + background:rgba(255, 255, 255, 0.8); } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator{ + background:#137cbd; } + .bp3-control.bp3-switch:hover input:checked ~ .bp3-control-indicator{ + background:#106ba3; } + .bp3-control.bp3-switch input:checked:not(:disabled):active ~ .bp3-control-indicator{ + background:#0e5a8a; } + .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); } + .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator::before{ + background:rgba(255, 255, 255, 0.8); } + .bp3-control.bp3-switch:not(.bp3-align-right){ + padding-left:38px; } + .bp3-control.bp3-switch:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-38px; } + .bp3-control.bp3-switch.bp3-align-right{ + padding-right:38px; } + .bp3-control.bp3-switch.bp3-align-right .bp3-control-indicator{ + margin-right:-38px; } + .bp3-control.bp3-switch .bp3-control-indicator{ + border:none; + border-radius:1.75em; + -webkit-box-shadow:none !important; + box-shadow:none !important; + min-width:1.75em; + -webkit-transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:auto; } + .bp3-control.bp3-switch .bp3-control-indicator::before{ + background:#ffffff; + border-radius:50%; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + height:calc(1em - 4px); + left:0; + margin:2px; + position:absolute; + -webkit-transition:left 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:left 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:calc(1em - 4px); } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator::before{ + left:calc(100% - 1em); } + .bp3-control.bp3-switch.bp3-large:not(.bp3-align-right){ + padding-left:45px; } + .bp3-control.bp3-switch.bp3-large:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-45px; } + .bp3-control.bp3-switch.bp3-large.bp3-align-right{ + padding-right:45px; } + .bp3-control.bp3-switch.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-right:-45px; } + .bp3-dark .bp3-control.bp3-switch input ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.5); } + .bp3-dark .bp3-control.bp3-switch:hover input ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.7); } + .bp3-dark .bp3-control.bp3-switch input:not(:disabled):active ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.9); } + .bp3-dark .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator{ + background:rgba(57, 75, 89, 0.5); } + .bp3-dark .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator::before{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator{ + background:#137cbd; } + .bp3-dark .bp3-control.bp3-switch:hover input:checked ~ .bp3-control-indicator{ + background:#106ba3; } + .bp3-dark .bp3-control.bp3-switch input:checked:not(:disabled):active ~ .bp3-control-indicator{ + background:#0e5a8a; } + .bp3-dark .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); } + .bp3-dark .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator::before{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch .bp3-control-indicator::before{ + background:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator::before{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-control.bp3-switch .bp3-switch-inner-text{ + font-size:0.7em; + text-align:center; } + .bp3-control.bp3-switch .bp3-control-indicator-child:first-child{ + line-height:0; + margin-left:0.5em; + margin-right:1.2em; + visibility:hidden; } + .bp3-control.bp3-switch .bp3-control-indicator-child:last-child{ + line-height:1em; + margin-left:1.2em; + margin-right:0.5em; + visibility:visible; } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator .bp3-control-indicator-child:first-child{ + line-height:1em; + visibility:visible; } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator .bp3-control-indicator-child:last-child{ + line-height:0; + visibility:hidden; } + .bp3-dark .bp3-control{ + color:#f5f8fa; } + .bp3-dark .bp3-control.bp3-disabled{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-control .bp3-control-indicator{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control:hover .bp3-control-indicator{ + background-color:#30404d; } + .bp3-dark .bp3-control input:not(:disabled):active ~ .bp3-control-indicator{ + background:#202b33; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control input:disabled ~ .bp3-control-indicator{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + cursor:not-allowed; } + .bp3-dark .bp3-control.bp3-checkbox input:disabled:checked ~ .bp3-control-indicator, .bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + color:rgba(167, 182, 194, 0.6); } +.bp3-file-input{ + cursor:pointer; + display:inline-block; + height:30px; + position:relative; } + .bp3-file-input input{ + margin:0; + min-width:200px; + opacity:0; } + .bp3-file-input input:disabled + .bp3-file-upload-input, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-file-input input:disabled + .bp3-file-upload-input::after, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active, .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active:hover, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input::after, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input{ + color:#182026; } + .bp3-dark .bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input{ + color:#f5f8fa; } + .bp3-file-input.bp3-fill{ + width:100%; } + .bp3-file-input.bp3-large, + .bp3-large .bp3-file-input{ + height:40px; } + .bp3-file-input .bp3-file-upload-input-custom-text::after{ + content:attr(bp3-button-text); } + +.bp3-file-upload-input{ + -webkit-appearance:none; + -moz-appearance:none; + appearance:none; + background:#ffffff; + border:none; + border-radius:3px; + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + color:#182026; + font-size:14px; + font-weight:400; + height:30px; + line-height:30px; + outline:none; + padding:0 10px; + -webkit-transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + vertical-align:middle; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + color:rgba(92, 112, 128, 0.6); + left:0; + padding-right:80px; + position:absolute; + right:0; + top:0; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-file-upload-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input:focus, .bp3-file-upload-input.bp3-active{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-file-upload-input[type="search"], .bp3-file-upload-input.bp3-round{ + border-radius:30px; + -webkit-box-sizing:border-box; + box-sizing:border-box; + padding-left:10px; } + .bp3-file-upload-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-file-upload-input:disabled, .bp3-file-upload-input.bp3-disabled{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-file-upload-input::after{ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + min-height:24px; + min-width:24px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + border-radius:3px; + content:"Browse"; + line-height:24px; + margin:3px; + position:absolute; + right:0; + text-align:center; + top:0; + width:70px; } + .bp3-file-upload-input::after:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-file-upload-input::after:active, .bp3-file-upload-input::after.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-file-upload-input::after:disabled, .bp3-file-upload-input::after.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-file-upload-input::after:disabled.bp3-active, .bp3-file-upload-input::after:disabled.bp3-active:hover, .bp3-file-upload-input::after.bp3-disabled.bp3-active, .bp3-file-upload-input::after.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-file-upload-input:hover::after{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-file-upload-input:active::after{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-large .bp3-file-upload-input{ + font-size:16px; + height:40px; + line-height:40px; + padding-right:95px; } + .bp3-large .bp3-file-upload-input[type="search"], .bp3-large .bp3-file-upload-input.bp3-round{ + padding:0 15px; } + .bp3-large .bp3-file-upload-input::after{ + min-height:30px; + min-width:30px; + line-height:30px; + margin:5px; + width:85px; } + .bp3-dark .bp3-file-upload-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input:disabled, .bp3-dark .bp3-file-upload-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::after{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-file-upload-input::after:hover, .bp3-dark .bp3-file-upload-input::after:active, .bp3-dark .bp3-file-upload-input::after.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-file-upload-input::after:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input::after:active, .bp3-dark .bp3-file-upload-input::after.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-file-upload-input::after:disabled, .bp3-dark .bp3-file-upload-input::after.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::after:disabled.bp3-active, .bp3-dark .bp3-file-upload-input::after.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-file-upload-input::after .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-file-upload-input:hover::after{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input:active::after{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } +.bp3-file-upload-input::after{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } +.bp3-form-group{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:0 0 15px; } + .bp3-form-group label.bp3-label{ + margin-bottom:5px; } + .bp3-form-group .bp3-control{ + margin-top:7px; } + .bp3-form-group .bp3-form-helper-text{ + color:#5c7080; + font-size:12px; + margin-top:5px; } + .bp3-form-group.bp3-intent-primary .bp3-form-helper-text{ + color:#106ba3; } + .bp3-form-group.bp3-intent-success .bp3-form-helper-text{ + color:#0d8050; } + .bp3-form-group.bp3-intent-warning .bp3-form-helper-text{ + color:#bf7326; } + .bp3-form-group.bp3-intent-danger .bp3-form-helper-text{ + color:#c23030; } + .bp3-form-group.bp3-inline{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; } + .bp3-form-group.bp3-inline.bp3-large label.bp3-label{ + line-height:40px; + margin:0 10px 0 0; } + .bp3-form-group.bp3-inline label.bp3-label{ + line-height:30px; + margin:0 10px 0 0; } + .bp3-form-group.bp3-disabled .bp3-label, + .bp3-form-group.bp3-disabled .bp3-text-muted, + .bp3-form-group.bp3-disabled .bp3-form-helper-text{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-dark .bp3-form-group.bp3-intent-primary .bp3-form-helper-text{ + color:#48aff0; } + .bp3-dark .bp3-form-group.bp3-intent-success .bp3-form-helper-text{ + color:#3dcc91; } + .bp3-dark .bp3-form-group.bp3-intent-warning .bp3-form-helper-text{ + color:#ffb366; } + .bp3-dark .bp3-form-group.bp3-intent-danger .bp3-form-helper-text{ + color:#ff7373; } + .bp3-dark .bp3-form-group .bp3-form-helper-text{ + color:#a7b6c2; } + .bp3-dark .bp3-form-group.bp3-disabled .bp3-label, + .bp3-dark .bp3-form-group.bp3-disabled .bp3-text-muted, + .bp3-dark .bp3-form-group.bp3-disabled .bp3-form-helper-text{ + color:rgba(167, 182, 194, 0.6) !important; } +.bp3-input-group{ + display:block; + position:relative; } + .bp3-input-group .bp3-input{ + position:relative; + width:100%; } + .bp3-input-group .bp3-input:not(:first-child){ + padding-left:30px; } + .bp3-input-group .bp3-input:not(:last-child){ + padding-right:30px; } + .bp3-input-group .bp3-input-action, + .bp3-input-group > .bp3-input-left-container, + .bp3-input-group > .bp3-button, + .bp3-input-group > .bp3-icon{ + position:absolute; + top:0; } + .bp3-input-group .bp3-input-action:first-child, + .bp3-input-group > .bp3-input-left-container:first-child, + .bp3-input-group > .bp3-button:first-child, + .bp3-input-group > .bp3-icon:first-child{ + left:0; } + .bp3-input-group .bp3-input-action:last-child, + .bp3-input-group > .bp3-input-left-container:last-child, + .bp3-input-group > .bp3-button:last-child, + .bp3-input-group > .bp3-icon:last-child{ + right:0; } + .bp3-input-group .bp3-button{ + min-height:24px; + min-width:24px; + margin:3px; + padding:0 7px; } + .bp3-input-group .bp3-button:empty{ + padding:0; } + .bp3-input-group > .bp3-input-left-container, + .bp3-input-group > .bp3-icon{ + z-index:1; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon, + .bp3-input-group > .bp3-icon{ + color:#5c7080; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon:empty, + .bp3-input-group > .bp3-icon:empty{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon, + .bp3-input-group > .bp3-icon, + .bp3-input-group .bp3-input-action > .bp3-spinner{ + margin:7px; } + .bp3-input-group .bp3-tag{ + margin:5px; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus), + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus){ + color:#5c7080; } + .bp3-dark .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus), .bp3-dark + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus){ + color:#a7b6c2; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large{ + color:#5c7080; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon-standard, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon-large, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-standard, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-large{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-input-group.bp3-disabled{ + cursor:not-allowed; } + .bp3-input-group.bp3-disabled .bp3-icon{ + color:rgba(92, 112, 128, 0.6); } + .bp3-input-group.bp3-large .bp3-button{ + min-height:30px; + min-width:30px; + margin:5px; } + .bp3-input-group.bp3-large > .bp3-input-left-container > .bp3-icon, + .bp3-input-group.bp3-large > .bp3-icon, + .bp3-input-group.bp3-large .bp3-input-action > .bp3-spinner{ + margin:12px; } + .bp3-input-group.bp3-large .bp3-input{ + font-size:16px; + height:40px; + line-height:40px; } + .bp3-input-group.bp3-large .bp3-input[type="search"], .bp3-input-group.bp3-large .bp3-input.bp3-round{ + padding:0 15px; } + .bp3-input-group.bp3-large .bp3-input:not(:first-child){ + padding-left:40px; } + .bp3-input-group.bp3-large .bp3-input:not(:last-child){ + padding-right:40px; } + .bp3-input-group.bp3-small .bp3-button{ + min-height:20px; + min-width:20px; + margin:2px; } + .bp3-input-group.bp3-small .bp3-tag{ + min-height:20px; + min-width:20px; + margin:2px; } + .bp3-input-group.bp3-small > .bp3-input-left-container > .bp3-icon, + .bp3-input-group.bp3-small > .bp3-icon, + .bp3-input-group.bp3-small .bp3-input-action > .bp3-spinner{ + margin:4px; } + .bp3-input-group.bp3-small .bp3-input{ + font-size:12px; + height:24px; + line-height:24px; + padding-left:8px; + padding-right:8px; } + .bp3-input-group.bp3-small .bp3-input[type="search"], .bp3-input-group.bp3-small .bp3-input.bp3-round{ + padding:0 12px; } + .bp3-input-group.bp3-small .bp3-input:not(:first-child){ + padding-left:24px; } + .bp3-input-group.bp3-small .bp3-input:not(:last-child){ + padding-right:24px; } + .bp3-input-group.bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + width:100%; } + .bp3-input-group.bp3-round .bp3-button, + .bp3-input-group.bp3-round .bp3-input, + .bp3-input-group.bp3-round .bp3-tag{ + border-radius:30px; } + .bp3-dark .bp3-input-group .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-input-group.bp3-disabled .bp3-icon{ + color:rgba(167, 182, 194, 0.6); } + .bp3-input-group.bp3-intent-primary .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-primary .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-primary .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-input-group.bp3-intent-primary .bp3-input:disabled, .bp3-input-group.bp3-intent-primary .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-primary > .bp3-icon{ + color:#106ba3; } + .bp3-dark .bp3-input-group.bp3-intent-primary > .bp3-icon{ + color:#48aff0; } + .bp3-input-group.bp3-intent-success .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-success .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-success .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-input-group.bp3-intent-success .bp3-input:disabled, .bp3-input-group.bp3-intent-success .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-success > .bp3-icon{ + color:#0d8050; } + .bp3-dark .bp3-input-group.bp3-intent-success > .bp3-icon{ + color:#3dcc91; } + .bp3-input-group.bp3-intent-warning .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-warning .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-warning .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-input-group.bp3-intent-warning .bp3-input:disabled, .bp3-input-group.bp3-intent-warning .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-warning > .bp3-icon{ + color:#bf7326; } + .bp3-dark .bp3-input-group.bp3-intent-warning > .bp3-icon{ + color:#ffb366; } + .bp3-input-group.bp3-intent-danger .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-danger .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-danger .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-input-group.bp3-intent-danger .bp3-input:disabled, .bp3-input-group.bp3-intent-danger .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-danger > .bp3-icon{ + color:#c23030; } + .bp3-dark .bp3-input-group.bp3-intent-danger > .bp3-icon{ + color:#ff7373; } +.bp3-input{ + -webkit-appearance:none; + -moz-appearance:none; + appearance:none; + background:#ffffff; + border:none; + border-radius:3px; + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + color:#182026; + font-size:14px; + font-weight:400; + height:30px; + line-height:30px; + outline:none; + padding:0 10px; + -webkit-transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + vertical-align:middle; } + .bp3-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input:focus, .bp3-input.bp3-active{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input[type="search"], .bp3-input.bp3-round{ + border-radius:30px; + -webkit-box-sizing:border-box; + box-sizing:border-box; + padding-left:10px; } + .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-input:disabled, .bp3-input.bp3-disabled{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-input.bp3-large{ + font-size:16px; + height:40px; + line-height:40px; } + .bp3-input.bp3-large[type="search"], .bp3-input.bp3-large.bp3-round{ + padding:0 15px; } + .bp3-input.bp3-small{ + font-size:12px; + height:24px; + line-height:24px; + padding-left:8px; + padding-right:8px; } + .bp3-input.bp3-small[type="search"], .bp3-input.bp3-small.bp3-round{ + padding:0 12px; } + .bp3-input.bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + width:100%; } + .bp3-dark .bp3-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input:disabled, .bp3-dark .bp3-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-input.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-primary:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-primary[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-input.bp3-intent-primary:disabled, .bp3-input.bp3-intent-primary.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-primary:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-primary[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-dark .bp3-input.bp3-intent-primary:disabled, .bp3-dark .bp3-input.bp3-intent-primary.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-success{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-success:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-success[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-input.bp3-intent-success:disabled, .bp3-input.bp3-intent-success.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-success{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-success:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-success[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-dark .bp3-input.bp3-intent-success:disabled, .bp3-dark .bp3-input.bp3-intent-success.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-warning:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-warning[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-input.bp3-intent-warning:disabled, .bp3-input.bp3-intent-warning.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-warning:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-warning[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-dark .bp3-input.bp3-intent-warning:disabled, .bp3-dark .bp3-input.bp3-intent-warning.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-danger:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-danger[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-input.bp3-intent-danger:disabled, .bp3-input.bp3-intent-danger.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-danger:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-danger[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-dark .bp3-input.bp3-intent-danger:disabled, .bp3-dark .bp3-input.bp3-intent-danger.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input::-ms-clear{ + display:none; } +textarea.bp3-input{ + max-width:100%; + padding:10px; } + textarea.bp3-input, textarea.bp3-input.bp3-large, textarea.bp3-input.bp3-small{ + height:auto; + line-height:inherit; } + textarea.bp3-input.bp3-small{ + padding:8px; } + .bp3-dark textarea.bp3-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark textarea.bp3-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark textarea.bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark textarea.bp3-input:disabled, .bp3-dark textarea.bp3-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } +label.bp3-label{ + display:block; + margin-bottom:15px; + margin-top:0; } + label.bp3-label .bp3-html-select, + label.bp3-label .bp3-input, + label.bp3-label .bp3-select, + label.bp3-label .bp3-slider, + label.bp3-label .bp3-popover-wrapper{ + display:block; + margin-top:5px; + text-transform:none; } + label.bp3-label .bp3-button-group{ + margin-top:5px; } + label.bp3-label .bp3-select select, + label.bp3-label .bp3-html-select select{ + font-weight:400; + vertical-align:top; + width:100%; } + label.bp3-label.bp3-disabled, + label.bp3-label.bp3-disabled .bp3-text-muted{ + color:rgba(92, 112, 128, 0.6); } + label.bp3-label.bp3-inline{ + line-height:30px; } + label.bp3-label.bp3-inline .bp3-html-select, + label.bp3-label.bp3-inline .bp3-input, + label.bp3-label.bp3-inline .bp3-input-group, + label.bp3-label.bp3-inline .bp3-select, + label.bp3-label.bp3-inline .bp3-popover-wrapper{ + display:inline-block; + margin:0 0 0 5px; + vertical-align:top; } + label.bp3-label.bp3-inline .bp3-button-group{ + margin:0 0 0 5px; } + label.bp3-label.bp3-inline .bp3-input-group .bp3-input{ + margin-left:0; } + label.bp3-label.bp3-inline.bp3-large{ + line-height:40px; } + label.bp3-label:not(.bp3-inline) .bp3-popover-target{ + display:block; } + .bp3-dark label.bp3-label{ + color:#f5f8fa; } + .bp3-dark label.bp3-label.bp3-disabled, + .bp3-dark label.bp3-label.bp3-disabled .bp3-text-muted{ + color:rgba(167, 182, 194, 0.6); } +.bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button{ + -webkit-box-flex:1; + -ms-flex:1 1 14px; + flex:1 1 14px; + min-height:0; + padding:0; + width:30px; } + .bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button:first-child{ + border-radius:0 3px 0 0; } + .bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button:last-child{ + border-radius:0 0 3px 0; } + +.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child > .bp3-button:first-child{ + border-radius:3px 0 0 0; } + +.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child > .bp3-button:last-child{ + border-radius:0 0 0 3px; } + +.bp3-numeric-input.bp3-large .bp3-button-group.bp3-vertical > .bp3-button{ + width:40px; } + +form{ + display:block; } +.bp3-html-select select, +.bp3-select select{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border:none; + border-radius:3px; + cursor:pointer; + font-size:14px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + padding:5px 10px; + text-align:left; + vertical-align:middle; + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + -moz-appearance:none; + -webkit-appearance:none; + border-radius:3px; + height:30px; + padding:0 25px 0 10px; + width:100%; } + .bp3-html-select select > *, .bp3-select select > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-html-select select > .bp3-fill, .bp3-select select > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-html-select select::before, + .bp3-select select::before, .bp3-html-select select > *, .bp3-select select > *{ + margin-right:7px; } + .bp3-html-select select:empty::before, + .bp3-select select:empty::before, + .bp3-html-select select > :last-child, + .bp3-select select > :last-child{ + margin-right:0; } + .bp3-html-select select:hover, + .bp3-select select:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-html-select select:active, + .bp3-select select:active, .bp3-html-select select.bp3-active, + .bp3-select select.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-html-select select:disabled, + .bp3-select select:disabled, .bp3-html-select select.bp3-disabled, + .bp3-select select.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-html-select select:disabled.bp3-active, + .bp3-select select:disabled.bp3-active, .bp3-html-select select:disabled.bp3-active:hover, + .bp3-select select:disabled.bp3-active:hover, .bp3-html-select select.bp3-disabled.bp3-active, + .bp3-select select.bp3-disabled.bp3-active, .bp3-html-select select.bp3-disabled.bp3-active:hover, + .bp3-select select.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + +.bp3-html-select.bp3-minimal select, +.bp3-select.bp3-minimal select{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-html-select.bp3-minimal select:hover, + .bp3-select.bp3-minimal select:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-html-select.bp3-minimal select:active, + .bp3-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal select.bp3-active, + .bp3-select.bp3-minimal select.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-html-select.bp3-minimal select:disabled, + .bp3-select.bp3-minimal select:disabled, .bp3-html-select.bp3-minimal select:disabled:hover, + .bp3-select.bp3-minimal select:disabled:hover, .bp3-html-select.bp3-minimal select.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-disabled, .bp3-html-select.bp3-minimal select.bp3-disabled:hover, + .bp3-select.bp3-minimal select.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-html-select.bp3-minimal select:disabled.bp3-active, + .bp3-select.bp3-minimal select:disabled.bp3-active, .bp3-html-select.bp3-minimal select:disabled:hover.bp3-active, + .bp3-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active, + .bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-html-select.bp3-minimal select, .bp3-html-select.bp3-minimal .bp3-dark select, + .bp3-dark .bp3-select.bp3-minimal select, .bp3-select.bp3-minimal .bp3-dark select{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-html-select.bp3-minimal select:hover, .bp3-html-select.bp3-minimal .bp3-dark select:hover, + .bp3-dark .bp3-select.bp3-minimal select:hover, .bp3-select.bp3-minimal .bp3-dark select:hover, .bp3-dark .bp3-html-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal .bp3-dark select:active, + .bp3-dark .bp3-select.bp3-minimal select:active, .bp3-select.bp3-minimal .bp3-dark select:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-html-select.bp3-minimal select:hover, .bp3-html-select.bp3-minimal .bp3-dark select:hover, + .bp3-dark .bp3-select.bp3-minimal select:hover, .bp3-select.bp3-minimal .bp3-dark select:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-html-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal .bp3-dark select:active, + .bp3-dark .bp3-select.bp3-minimal select:active, .bp3-select.bp3-minimal .bp3-dark select:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-html-select.bp3-minimal select:disabled, .bp3-html-select.bp3-minimal .bp3-dark select:disabled, + .bp3-dark .bp3-select.bp3-minimal select:disabled, .bp3-select.bp3-minimal .bp3-dark select:disabled, .bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover, .bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover, + .bp3-dark .bp3-select.bp3-minimal select:disabled:hover, .bp3-select.bp3-minimal .bp3-dark select:disabled:hover, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-html-select.bp3-minimal select:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary, + .bp3-select.bp3-minimal select.bp3-intent-primary{ + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, + .bp3-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, + .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, + .bp3-select.bp3-minimal select.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, + .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled, + .bp3-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-success, + .bp3-select.bp3-minimal select.bp3-intent-success{ + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, + .bp3-select.bp3-minimal select.bp3-intent-success:hover, .bp3-html-select.bp3-minimal select.bp3-intent-success:active, + .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, + .bp3-select.bp3-minimal select.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:active, + .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled, + .bp3-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning, + .bp3-select.bp3-minimal select.bp3-intent-warning{ + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, + .bp3-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, + .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, + .bp3-select.bp3-minimal select.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, + .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled, + .bp3-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger, + .bp3-select.bp3-minimal select.bp3-intent-danger{ + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, + .bp3-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, + .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, + .bp3-select.bp3-minimal select.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, + .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled, + .bp3-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + +.bp3-html-select.bp3-large select, +.bp3-select.bp3-large select{ + font-size:16px; + height:40px; + padding-right:35px; } + +.bp3-dark .bp3-html-select select, .bp3-dark .bp3-select select{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-html-select select:hover, .bp3-dark .bp3-select select:hover, .bp3-dark .bp3-html-select select:active, .bp3-dark .bp3-select select:active, .bp3-dark .bp3-html-select select.bp3-active, .bp3-dark .bp3-select select.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-html-select select:hover, .bp3-dark .bp3-select select:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-html-select select:active, .bp3-dark .bp3-select select:active, .bp3-dark .bp3-html-select select.bp3-active, .bp3-dark .bp3-select select.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-html-select select:disabled, .bp3-dark .bp3-select select:disabled, .bp3-dark .bp3-html-select select.bp3-disabled, .bp3-dark .bp3-select select.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-html-select select:disabled.bp3-active, .bp3-dark .bp3-select select:disabled.bp3-active, .bp3-dark .bp3-html-select select.bp3-disabled.bp3-active, .bp3-dark .bp3-select select.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-html-select select .bp3-button-spinner .bp3-spinner-head, .bp3-dark .bp3-select select .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + +.bp3-html-select select:disabled, +.bp3-select select:disabled{ + background-color:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-html-select .bp3-icon, +.bp3-select .bp3-icon, .bp3-select::after{ + color:#5c7080; + pointer-events:none; + position:absolute; + right:7px; + top:7px; } + .bp3-html-select .bp3-disabled.bp3-icon, + .bp3-select .bp3-disabled.bp3-icon, .bp3-disabled.bp3-select::after{ + color:rgba(92, 112, 128, 0.6); } +.bp3-html-select, +.bp3-select{ + display:inline-block; + letter-spacing:normal; + position:relative; + vertical-align:middle; } + .bp3-html-select select::-ms-expand, + .bp3-select select::-ms-expand{ + display:none; } + .bp3-html-select .bp3-icon, + .bp3-select .bp3-icon{ + color:#5c7080; } + .bp3-html-select .bp3-icon:hover, + .bp3-select .bp3-icon:hover{ + color:#182026; } + .bp3-dark .bp3-html-select .bp3-icon, .bp3-dark + .bp3-select .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-html-select .bp3-icon:hover, .bp3-dark + .bp3-select .bp3-icon:hover{ + color:#f5f8fa; } + .bp3-html-select.bp3-large::after, + .bp3-html-select.bp3-large .bp3-icon, + .bp3-select.bp3-large::after, + .bp3-select.bp3-large .bp3-icon{ + right:12px; + top:12px; } + .bp3-html-select.bp3-fill, + .bp3-html-select.bp3-fill select, + .bp3-select.bp3-fill, + .bp3-select.bp3-fill select{ + width:100%; } + .bp3-dark .bp3-html-select option, .bp3-dark + .bp3-select option{ + background-color:#30404d; + color:#f5f8fa; } + .bp3-dark .bp3-html-select option:disabled, .bp3-dark + .bp3-select option:disabled{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-html-select::after, .bp3-dark + .bp3-select::after{ + color:#a7b6c2; } + +.bp3-select::after{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + content:""; } +.bp3-running-text table, table.bp3-html-table{ + border-spacing:0; + font-size:14px; } + .bp3-running-text table th, table.bp3-html-table th, + .bp3-running-text table td, + table.bp3-html-table td{ + padding:11px; + text-align:left; + vertical-align:top; } + .bp3-running-text table th, table.bp3-html-table th{ + color:#182026; + font-weight:600; } + + .bp3-running-text table td, + table.bp3-html-table td{ + color:#182026; } + .bp3-running-text table tbody tr:first-child th, table.bp3-html-table tbody tr:first-child th, + .bp3-running-text table tbody tr:first-child td, + table.bp3-html-table tbody tr:first-child td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); } + .bp3-dark .bp3-running-text table th, .bp3-running-text .bp3-dark table th, .bp3-dark table.bp3-html-table th{ + color:#f5f8fa; } + .bp3-dark .bp3-running-text table td, .bp3-running-text .bp3-dark table td, .bp3-dark table.bp3-html-table td{ + color:#f5f8fa; } + .bp3-dark .bp3-running-text table tbody tr:first-child th, .bp3-running-text .bp3-dark table tbody tr:first-child th, .bp3-dark table.bp3-html-table tbody tr:first-child th, + .bp3-dark .bp3-running-text table tbody tr:first-child td, + .bp3-running-text .bp3-dark table tbody tr:first-child td, + .bp3-dark table.bp3-html-table tbody tr:first-child td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); } + +table.bp3-html-table.bp3-html-table-condensed th, +table.bp3-html-table.bp3-html-table-condensed td, table.bp3-html-table.bp3-small th, +table.bp3-html-table.bp3-small td{ + padding-bottom:6px; + padding-top:6px; } + +table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td{ + background:rgba(191, 204, 214, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered th:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered tbody tr td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); } + table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child){ + -webkit-box-shadow:inset 1px 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 1px 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td{ + -webkit-box-shadow:none; + box-shadow:none; } + table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-interactive tbody tr:hover td{ + background-color:rgba(191, 204, 214, 0.3); + cursor:pointer; } + +table.bp3-html-table.bp3-interactive tbody tr:active td{ + background-color:rgba(191, 204, 214, 0.4); } + +.bp3-dark table.bp3-html-table{ } + .bp3-dark table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td{ + background:rgba(92, 112, 128, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered th:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child){ + -webkit-box-shadow:inset 1px 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 1px 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td{ + -webkit-box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:first-child{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark table.bp3-html-table.bp3-interactive tbody tr:hover td{ + background-color:rgba(92, 112, 128, 0.3); + cursor:pointer; } + .bp3-dark table.bp3-html-table.bp3-interactive tbody tr:active td{ + background-color:rgba(92, 112, 128, 0.4); } + +.bp3-key-combo{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; } + .bp3-key-combo > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-key-combo > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-key-combo::before, + .bp3-key-combo > *{ + margin-right:5px; } + .bp3-key-combo:empty::before, + .bp3-key-combo > :last-child{ + margin-right:0; } + +.bp3-hotkey-dialog{ + padding-bottom:0; + top:40px; } + .bp3-hotkey-dialog .bp3-dialog-body{ + margin:0; + padding:0; } + .bp3-hotkey-dialog .bp3-hotkey-label{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; } + +.bp3-hotkey-column{ + margin:auto; + max-height:80vh; + overflow-y:auto; + padding:30px; } + .bp3-hotkey-column .bp3-heading{ + margin-bottom:20px; } + .bp3-hotkey-column .bp3-heading:not(:first-child){ + margin-top:40px; } + +.bp3-hotkey{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:justify; + -ms-flex-pack:justify; + justify-content:space-between; + margin-left:0; + margin-right:0; } + .bp3-hotkey:not(:last-child){ + margin-bottom:10px; } +.bp3-icon{ + display:inline-block; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + vertical-align:text-bottom; } + .bp3-icon:not(:empty)::before{ + content:"" !important; + content:unset !important; } + .bp3-icon > svg{ + display:block; } + .bp3-icon > svg:not([fill]){ + fill:currentColor; } + +.bp3-icon.bp3-intent-primary, .bp3-icon-standard.bp3-intent-primary, .bp3-icon-large.bp3-intent-primary{ + color:#106ba3; } + .bp3-dark .bp3-icon.bp3-intent-primary, .bp3-dark .bp3-icon-standard.bp3-intent-primary, .bp3-dark .bp3-icon-large.bp3-intent-primary{ + color:#48aff0; } + +.bp3-icon.bp3-intent-success, .bp3-icon-standard.bp3-intent-success, .bp3-icon-large.bp3-intent-success{ + color:#0d8050; } + .bp3-dark .bp3-icon.bp3-intent-success, .bp3-dark .bp3-icon-standard.bp3-intent-success, .bp3-dark .bp3-icon-large.bp3-intent-success{ + color:#3dcc91; } + +.bp3-icon.bp3-intent-warning, .bp3-icon-standard.bp3-intent-warning, .bp3-icon-large.bp3-intent-warning{ + color:#bf7326; } + .bp3-dark .bp3-icon.bp3-intent-warning, .bp3-dark .bp3-icon-standard.bp3-intent-warning, .bp3-dark .bp3-icon-large.bp3-intent-warning{ + color:#ffb366; } + +.bp3-icon.bp3-intent-danger, .bp3-icon-standard.bp3-intent-danger, .bp3-icon-large.bp3-intent-danger{ + color:#c23030; } + .bp3-dark .bp3-icon.bp3-intent-danger, .bp3-dark .bp3-icon-standard.bp3-intent-danger, .bp3-dark .bp3-icon-large.bp3-intent-danger{ + color:#ff7373; } + +span.bp3-icon-standard{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + display:inline-block; } + +span.bp3-icon-large{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + display:inline-block; } + +span.bp3-icon:empty{ + font-family:"Icons20"; + font-size:inherit; + font-style:normal; + font-weight:400; + line-height:1; } + span.bp3-icon:empty::before{ + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; } + +.bp3-icon-add::before{ + content:""; } + +.bp3-icon-add-column-left::before{ + content:""; } + +.bp3-icon-add-column-right::before{ + content:""; } + +.bp3-icon-add-row-bottom::before{ + content:""; } + +.bp3-icon-add-row-top::before{ + content:""; } + +.bp3-icon-add-to-artifact::before{ + content:""; } + +.bp3-icon-add-to-folder::before{ + content:""; } + +.bp3-icon-airplane::before{ + content:""; } + +.bp3-icon-align-center::before{ + content:""; } + +.bp3-icon-align-justify::before{ + content:""; } + +.bp3-icon-align-left::before{ + content:""; } + +.bp3-icon-align-right::before{ + content:""; } + +.bp3-icon-alignment-bottom::before{ + content:""; } + +.bp3-icon-alignment-horizontal-center::before{ + content:""; } + +.bp3-icon-alignment-left::before{ + content:""; } + +.bp3-icon-alignment-right::before{ + content:""; } + +.bp3-icon-alignment-top::before{ + content:""; } + +.bp3-icon-alignment-vertical-center::before{ + content:""; } + +.bp3-icon-annotation::before{ + content:""; } + +.bp3-icon-application::before{ + content:""; } + +.bp3-icon-applications::before{ + content:""; } + +.bp3-icon-archive::before{ + content:""; } + +.bp3-icon-arrow-bottom-left::before{ + content:"↙"; } + +.bp3-icon-arrow-bottom-right::before{ + content:"↘"; } + +.bp3-icon-arrow-down::before{ + content:"↓"; } + +.bp3-icon-arrow-left::before{ + content:"←"; } + +.bp3-icon-arrow-right::before{ + content:"→"; } + +.bp3-icon-arrow-top-left::before{ + content:"↖"; } + +.bp3-icon-arrow-top-right::before{ + content:"↗"; } + +.bp3-icon-arrow-up::before{ + content:"↑"; } + +.bp3-icon-arrows-horizontal::before{ + content:"↔"; } + +.bp3-icon-arrows-vertical::before{ + content:"↕"; } + +.bp3-icon-asterisk::before{ + content:"*"; } + +.bp3-icon-automatic-updates::before{ + content:""; } + +.bp3-icon-badge::before{ + content:""; } + +.bp3-icon-ban-circle::before{ + content:""; } + +.bp3-icon-bank-account::before{ + content:""; } + +.bp3-icon-barcode::before{ + content:""; } + +.bp3-icon-blank::before{ + content:""; } + +.bp3-icon-blocked-person::before{ + content:""; } + +.bp3-icon-bold::before{ + content:""; } + +.bp3-icon-book::before{ + content:""; } + +.bp3-icon-bookmark::before{ + content:""; } + +.bp3-icon-box::before{ + content:""; } + +.bp3-icon-briefcase::before{ + content:""; } + +.bp3-icon-bring-data::before{ + content:""; } + +.bp3-icon-build::before{ + content:""; } + +.bp3-icon-calculator::before{ + content:""; } + +.bp3-icon-calendar::before{ + content:""; } + +.bp3-icon-camera::before{ + content:""; } + +.bp3-icon-caret-down::before{ + content:"⌄"; } + +.bp3-icon-caret-left::before{ + content:"〈"; } + +.bp3-icon-caret-right::before{ + content:"〉"; } + +.bp3-icon-caret-up::before{ + content:"⌃"; } + +.bp3-icon-cell-tower::before{ + content:""; } + +.bp3-icon-changes::before{ + content:""; } + +.bp3-icon-chart::before{ + content:""; } + +.bp3-icon-chat::before{ + content:""; } + +.bp3-icon-chevron-backward::before{ + content:""; } + +.bp3-icon-chevron-down::before{ + content:""; } + +.bp3-icon-chevron-forward::before{ + content:""; } + +.bp3-icon-chevron-left::before{ + content:""; } + +.bp3-icon-chevron-right::before{ + content:""; } + +.bp3-icon-chevron-up::before{ + content:""; } + +.bp3-icon-circle::before{ + content:""; } + +.bp3-icon-circle-arrow-down::before{ + content:""; } + +.bp3-icon-circle-arrow-left::before{ + content:""; } + +.bp3-icon-circle-arrow-right::before{ + content:""; } + +.bp3-icon-circle-arrow-up::before{ + content:""; } + +.bp3-icon-citation::before{ + content:""; } + +.bp3-icon-clean::before{ + content:""; } + +.bp3-icon-clipboard::before{ + content:""; } + +.bp3-icon-cloud::before{ + content:"☁"; } + +.bp3-icon-cloud-download::before{ + content:""; } + +.bp3-icon-cloud-upload::before{ + content:""; } + +.bp3-icon-code::before{ + content:""; } + +.bp3-icon-code-block::before{ + content:""; } + +.bp3-icon-cog::before{ + content:""; } + +.bp3-icon-collapse-all::before{ + content:""; } + +.bp3-icon-column-layout::before{ + content:""; } + +.bp3-icon-comment::before{ + content:""; } + +.bp3-icon-comparison::before{ + content:""; } + +.bp3-icon-compass::before{ + content:""; } + +.bp3-icon-compressed::before{ + content:""; } + +.bp3-icon-confirm::before{ + content:""; } + +.bp3-icon-console::before{ + content:""; } + +.bp3-icon-contrast::before{ + content:""; } + +.bp3-icon-control::before{ + content:""; } + +.bp3-icon-credit-card::before{ + content:""; } + +.bp3-icon-cross::before{ + content:"✗"; } + +.bp3-icon-crown::before{ + content:""; } + +.bp3-icon-cube::before{ + content:""; } + +.bp3-icon-cube-add::before{ + content:""; } + +.bp3-icon-cube-remove::before{ + content:""; } + +.bp3-icon-curved-range-chart::before{ + content:""; } + +.bp3-icon-cut::before{ + content:""; } + +.bp3-icon-dashboard::before{ + content:""; } + +.bp3-icon-data-lineage::before{ + content:""; } + +.bp3-icon-database::before{ + content:""; } + +.bp3-icon-delete::before{ + content:""; } + +.bp3-icon-delta::before{ + content:"Δ"; } + +.bp3-icon-derive-column::before{ + content:""; } + +.bp3-icon-desktop::before{ + content:""; } + +.bp3-icon-diagnosis::before{ + content:""; } + +.bp3-icon-diagram-tree::before{ + content:""; } + +.bp3-icon-direction-left::before{ + content:""; } + +.bp3-icon-direction-right::before{ + content:""; } + +.bp3-icon-disable::before{ + content:""; } + +.bp3-icon-document::before{ + content:""; } + +.bp3-icon-document-open::before{ + content:""; } + +.bp3-icon-document-share::before{ + content:""; } + +.bp3-icon-dollar::before{ + content:"$"; } + +.bp3-icon-dot::before{ + content:"•"; } + +.bp3-icon-double-caret-horizontal::before{ + content:""; } + +.bp3-icon-double-caret-vertical::before{ + content:""; } + +.bp3-icon-double-chevron-down::before{ + content:""; } + +.bp3-icon-double-chevron-left::before{ + content:""; } + +.bp3-icon-double-chevron-right::before{ + content:""; } + +.bp3-icon-double-chevron-up::before{ + content:""; } + +.bp3-icon-doughnut-chart::before{ + content:""; } + +.bp3-icon-download::before{ + content:""; } + +.bp3-icon-drag-handle-horizontal::before{ + content:""; } + +.bp3-icon-drag-handle-vertical::before{ + content:""; } + +.bp3-icon-draw::before{ + content:""; } + +.bp3-icon-drive-time::before{ + content:""; } + +.bp3-icon-duplicate::before{ + content:""; } + +.bp3-icon-edit::before{ + content:"✎"; } + +.bp3-icon-eject::before{ + content:"⏏"; } + +.bp3-icon-endorsed::before{ + content:""; } + +.bp3-icon-envelope::before{ + content:"✉"; } + +.bp3-icon-equals::before{ + content:""; } + +.bp3-icon-eraser::before{ + content:""; } + +.bp3-icon-error::before{ + content:""; } + +.bp3-icon-euro::before{ + content:"€"; } + +.bp3-icon-exchange::before{ + content:""; } + +.bp3-icon-exclude-row::before{ + content:""; } + +.bp3-icon-expand-all::before{ + content:""; } + +.bp3-icon-export::before{ + content:""; } + +.bp3-icon-eye-off::before{ + content:""; } + +.bp3-icon-eye-on::before{ + content:""; } + +.bp3-icon-eye-open::before{ + content:""; } + +.bp3-icon-fast-backward::before{ + content:""; } + +.bp3-icon-fast-forward::before{ + content:""; } + +.bp3-icon-feed::before{ + content:""; } + +.bp3-icon-feed-subscribed::before{ + content:""; } + +.bp3-icon-film::before{ + content:""; } + +.bp3-icon-filter::before{ + content:""; } + +.bp3-icon-filter-keep::before{ + content:""; } + +.bp3-icon-filter-list::before{ + content:""; } + +.bp3-icon-filter-open::before{ + content:""; } + +.bp3-icon-filter-remove::before{ + content:""; } + +.bp3-icon-flag::before{ + content:"⚑"; } + +.bp3-icon-flame::before{ + content:""; } + +.bp3-icon-flash::before{ + content:""; } + +.bp3-icon-floppy-disk::before{ + content:""; } + +.bp3-icon-flow-branch::before{ + content:""; } + +.bp3-icon-flow-end::before{ + content:""; } + +.bp3-icon-flow-linear::before{ + content:""; } + +.bp3-icon-flow-review::before{ + content:""; } + +.bp3-icon-flow-review-branch::before{ + content:""; } + +.bp3-icon-flows::before{ + content:""; } + +.bp3-icon-folder-close::before{ + content:""; } + +.bp3-icon-folder-new::before{ + content:""; } + +.bp3-icon-folder-open::before{ + content:""; } + +.bp3-icon-folder-shared::before{ + content:""; } + +.bp3-icon-folder-shared-open::before{ + content:""; } + +.bp3-icon-follower::before{ + content:""; } + +.bp3-icon-following::before{ + content:""; } + +.bp3-icon-font::before{ + content:""; } + +.bp3-icon-fork::before{ + content:""; } + +.bp3-icon-form::before{ + content:""; } + +.bp3-icon-full-circle::before{ + content:""; } + +.bp3-icon-full-stacked-chart::before{ + content:""; } + +.bp3-icon-fullscreen::before{ + content:""; } + +.bp3-icon-function::before{ + content:""; } + +.bp3-icon-gantt-chart::before{ + content:""; } + +.bp3-icon-geolocation::before{ + content:""; } + +.bp3-icon-geosearch::before{ + content:""; } + +.bp3-icon-git-branch::before{ + content:""; } + +.bp3-icon-git-commit::before{ + content:""; } + +.bp3-icon-git-merge::before{ + content:""; } + +.bp3-icon-git-new-branch::before{ + content:""; } + +.bp3-icon-git-pull::before{ + content:""; } + +.bp3-icon-git-push::before{ + content:""; } + +.bp3-icon-git-repo::before{ + content:""; } + +.bp3-icon-glass::before{ + content:""; } + +.bp3-icon-globe::before{ + content:""; } + +.bp3-icon-globe-network::before{ + content:""; } + +.bp3-icon-graph::before{ + content:""; } + +.bp3-icon-graph-remove::before{ + content:""; } + +.bp3-icon-greater-than::before{ + content:""; } + +.bp3-icon-greater-than-or-equal-to::before{ + content:""; } + +.bp3-icon-grid::before{ + content:""; } + +.bp3-icon-grid-view::before{ + content:""; } + +.bp3-icon-group-objects::before{ + content:""; } + +.bp3-icon-grouped-bar-chart::before{ + content:""; } + +.bp3-icon-hand::before{ + content:""; } + +.bp3-icon-hand-down::before{ + content:""; } + +.bp3-icon-hand-left::before{ + content:""; } + +.bp3-icon-hand-right::before{ + content:""; } + +.bp3-icon-hand-up::before{ + content:""; } + +.bp3-icon-header::before{ + content:""; } + +.bp3-icon-header-one::before{ + content:""; } + +.bp3-icon-header-two::before{ + content:""; } + +.bp3-icon-headset::before{ + content:""; } + +.bp3-icon-heart::before{ + content:"♥"; } + +.bp3-icon-heart-broken::before{ + content:""; } + +.bp3-icon-heat-grid::before{ + content:""; } + +.bp3-icon-heatmap::before{ + content:""; } + +.bp3-icon-help::before{ + content:"?"; } + +.bp3-icon-helper-management::before{ + content:""; } + +.bp3-icon-highlight::before{ + content:""; } + +.bp3-icon-history::before{ + content:""; } + +.bp3-icon-home::before{ + content:"⌂"; } + +.bp3-icon-horizontal-bar-chart::before{ + content:""; } + +.bp3-icon-horizontal-bar-chart-asc::before{ + content:""; } + +.bp3-icon-horizontal-bar-chart-desc::before{ + content:""; } + +.bp3-icon-horizontal-distribution::before{ + content:""; } + +.bp3-icon-id-number::before{ + content:""; } + +.bp3-icon-image-rotate-left::before{ + content:""; } + +.bp3-icon-image-rotate-right::before{ + content:""; } + +.bp3-icon-import::before{ + content:""; } + +.bp3-icon-inbox::before{ + content:""; } + +.bp3-icon-inbox-filtered::before{ + content:""; } + +.bp3-icon-inbox-geo::before{ + content:""; } + +.bp3-icon-inbox-search::before{ + content:""; } + +.bp3-icon-inbox-update::before{ + content:""; } + +.bp3-icon-info-sign::before{ + content:"ℹ"; } + +.bp3-icon-inheritance::before{ + content:""; } + +.bp3-icon-inner-join::before{ + content:""; } + +.bp3-icon-insert::before{ + content:""; } + +.bp3-icon-intersection::before{ + content:""; } + +.bp3-icon-ip-address::before{ + content:""; } + +.bp3-icon-issue::before{ + content:""; } + +.bp3-icon-issue-closed::before{ + content:""; } + +.bp3-icon-issue-new::before{ + content:""; } + +.bp3-icon-italic::before{ + content:""; } + +.bp3-icon-join-table::before{ + content:""; } + +.bp3-icon-key::before{ + content:""; } + +.bp3-icon-key-backspace::before{ + content:""; } + +.bp3-icon-key-command::before{ + content:""; } + +.bp3-icon-key-control::before{ + content:""; } + +.bp3-icon-key-delete::before{ + content:""; } + +.bp3-icon-key-enter::before{ + content:""; } + +.bp3-icon-key-escape::before{ + content:""; } + +.bp3-icon-key-option::before{ + content:""; } + +.bp3-icon-key-shift::before{ + content:""; } + +.bp3-icon-key-tab::before{ + content:""; } + +.bp3-icon-known-vehicle::before{ + content:""; } + +.bp3-icon-lab-test::before{ + content:""; } + +.bp3-icon-label::before{ + content:""; } + +.bp3-icon-layer::before{ + content:""; } + +.bp3-icon-layers::before{ + content:""; } + +.bp3-icon-layout::before{ + content:""; } + +.bp3-icon-layout-auto::before{ + content:""; } + +.bp3-icon-layout-balloon::before{ + content:""; } + +.bp3-icon-layout-circle::before{ + content:""; } + +.bp3-icon-layout-grid::before{ + content:""; } + +.bp3-icon-layout-group-by::before{ + content:""; } + +.bp3-icon-layout-hierarchy::before{ + content:""; } + +.bp3-icon-layout-linear::before{ + content:""; } + +.bp3-icon-layout-skew-grid::before{ + content:""; } + +.bp3-icon-layout-sorted-clusters::before{ + content:""; } + +.bp3-icon-learning::before{ + content:""; } + +.bp3-icon-left-join::before{ + content:""; } + +.bp3-icon-less-than::before{ + content:""; } + +.bp3-icon-less-than-or-equal-to::before{ + content:""; } + +.bp3-icon-lifesaver::before{ + content:""; } + +.bp3-icon-lightbulb::before{ + content:""; } + +.bp3-icon-link::before{ + content:""; } + +.bp3-icon-list::before{ + content:"☰"; } + +.bp3-icon-list-columns::before{ + content:""; } + +.bp3-icon-list-detail-view::before{ + content:""; } + +.bp3-icon-locate::before{ + content:""; } + +.bp3-icon-lock::before{ + content:""; } + +.bp3-icon-log-in::before{ + content:""; } + +.bp3-icon-log-out::before{ + content:""; } + +.bp3-icon-manual::before{ + content:""; } + +.bp3-icon-manually-entered-data::before{ + content:""; } + +.bp3-icon-map::before{ + content:""; } + +.bp3-icon-map-create::before{ + content:""; } + +.bp3-icon-map-marker::before{ + content:""; } + +.bp3-icon-maximize::before{ + content:""; } + +.bp3-icon-media::before{ + content:""; } + +.bp3-icon-menu::before{ + content:""; } + +.bp3-icon-menu-closed::before{ + content:""; } + +.bp3-icon-menu-open::before{ + content:""; } + +.bp3-icon-merge-columns::before{ + content:""; } + +.bp3-icon-merge-links::before{ + content:""; } + +.bp3-icon-minimize::before{ + content:""; } + +.bp3-icon-minus::before{ + content:"−"; } + +.bp3-icon-mobile-phone::before{ + content:""; } + +.bp3-icon-mobile-video::before{ + content:""; } + +.bp3-icon-moon::before{ + content:""; } + +.bp3-icon-more::before{ + content:""; } + +.bp3-icon-mountain::before{ + content:""; } + +.bp3-icon-move::before{ + content:""; } + +.bp3-icon-mugshot::before{ + content:""; } + +.bp3-icon-multi-select::before{ + content:""; } + +.bp3-icon-music::before{ + content:""; } + +.bp3-icon-new-drawing::before{ + content:""; } + +.bp3-icon-new-grid-item::before{ + content:""; } + +.bp3-icon-new-layer::before{ + content:""; } + +.bp3-icon-new-layers::before{ + content:""; } + +.bp3-icon-new-link::before{ + content:""; } + +.bp3-icon-new-object::before{ + content:""; } + +.bp3-icon-new-person::before{ + content:""; } + +.bp3-icon-new-prescription::before{ + content:""; } + +.bp3-icon-new-text-box::before{ + content:""; } + +.bp3-icon-ninja::before{ + content:""; } + +.bp3-icon-not-equal-to::before{ + content:""; } + +.bp3-icon-notifications::before{ + content:""; } + +.bp3-icon-notifications-updated::before{ + content:""; } + +.bp3-icon-numbered-list::before{ + content:""; } + +.bp3-icon-numerical::before{ + content:""; } + +.bp3-icon-office::before{ + content:""; } + +.bp3-icon-offline::before{ + content:""; } + +.bp3-icon-oil-field::before{ + content:""; } + +.bp3-icon-one-column::before{ + content:""; } + +.bp3-icon-outdated::before{ + content:""; } + +.bp3-icon-page-layout::before{ + content:""; } + +.bp3-icon-panel-stats::before{ + content:""; } + +.bp3-icon-panel-table::before{ + content:""; } + +.bp3-icon-paperclip::before{ + content:""; } + +.bp3-icon-paragraph::before{ + content:""; } + +.bp3-icon-path::before{ + content:""; } + +.bp3-icon-path-search::before{ + content:""; } + +.bp3-icon-pause::before{ + content:""; } + +.bp3-icon-people::before{ + content:""; } + +.bp3-icon-percentage::before{ + content:""; } + +.bp3-icon-person::before{ + content:""; } + +.bp3-icon-phone::before{ + content:"☎"; } + +.bp3-icon-pie-chart::before{ + content:""; } + +.bp3-icon-pin::before{ + content:""; } + +.bp3-icon-pivot::before{ + content:""; } + +.bp3-icon-pivot-table::before{ + content:""; } + +.bp3-icon-play::before{ + content:""; } + +.bp3-icon-plus::before{ + content:"+"; } + +.bp3-icon-polygon-filter::before{ + content:""; } + +.bp3-icon-power::before{ + content:""; } + +.bp3-icon-predictive-analysis::before{ + content:""; } + +.bp3-icon-prescription::before{ + content:""; } + +.bp3-icon-presentation::before{ + content:""; } + +.bp3-icon-print::before{ + content:"⎙"; } + +.bp3-icon-projects::before{ + content:""; } + +.bp3-icon-properties::before{ + content:""; } + +.bp3-icon-property::before{ + content:""; } + +.bp3-icon-publish-function::before{ + content:""; } + +.bp3-icon-pulse::before{ + content:""; } + +.bp3-icon-random::before{ + content:""; } + +.bp3-icon-record::before{ + content:""; } + +.bp3-icon-redo::before{ + content:""; } + +.bp3-icon-refresh::before{ + content:""; } + +.bp3-icon-regression-chart::before{ + content:""; } + +.bp3-icon-remove::before{ + content:""; } + +.bp3-icon-remove-column::before{ + content:""; } + +.bp3-icon-remove-column-left::before{ + content:""; } + +.bp3-icon-remove-column-right::before{ + content:""; } + +.bp3-icon-remove-row-bottom::before{ + content:""; } + +.bp3-icon-remove-row-top::before{ + content:""; } + +.bp3-icon-repeat::before{ + content:""; } + +.bp3-icon-reset::before{ + content:""; } + +.bp3-icon-resolve::before{ + content:""; } + +.bp3-icon-rig::before{ + content:""; } + +.bp3-icon-right-join::before{ + content:""; } + +.bp3-icon-ring::before{ + content:""; } + +.bp3-icon-rotate-document::before{ + content:""; } + +.bp3-icon-rotate-page::before{ + content:""; } + +.bp3-icon-satellite::before{ + content:""; } + +.bp3-icon-saved::before{ + content:""; } + +.bp3-icon-scatter-plot::before{ + content:""; } + +.bp3-icon-search::before{ + content:""; } + +.bp3-icon-search-around::before{ + content:""; } + +.bp3-icon-search-template::before{ + content:""; } + +.bp3-icon-search-text::before{ + content:""; } + +.bp3-icon-segmented-control::before{ + content:""; } + +.bp3-icon-select::before{ + content:""; } + +.bp3-icon-selection::before{ + content:"⦿"; } + +.bp3-icon-send-to::before{ + content:""; } + +.bp3-icon-send-to-graph::before{ + content:""; } + +.bp3-icon-send-to-map::before{ + content:""; } + +.bp3-icon-series-add::before{ + content:""; } + +.bp3-icon-series-configuration::before{ + content:""; } + +.bp3-icon-series-derived::before{ + content:""; } + +.bp3-icon-series-filtered::before{ + content:""; } + +.bp3-icon-series-search::before{ + content:""; } + +.bp3-icon-settings::before{ + content:""; } + +.bp3-icon-share::before{ + content:""; } + +.bp3-icon-shield::before{ + content:""; } + +.bp3-icon-shop::before{ + content:""; } + +.bp3-icon-shopping-cart::before{ + content:""; } + +.bp3-icon-signal-search::before{ + content:""; } + +.bp3-icon-sim-card::before{ + content:""; } + +.bp3-icon-slash::before{ + content:""; } + +.bp3-icon-small-cross::before{ + content:""; } + +.bp3-icon-small-minus::before{ + content:""; } + +.bp3-icon-small-plus::before{ + content:""; } + +.bp3-icon-small-tick::before{ + content:""; } + +.bp3-icon-snowflake::before{ + content:""; } + +.bp3-icon-social-media::before{ + content:""; } + +.bp3-icon-sort::before{ + content:""; } + +.bp3-icon-sort-alphabetical::before{ + content:""; } + +.bp3-icon-sort-alphabetical-desc::before{ + content:""; } + +.bp3-icon-sort-asc::before{ + content:""; } + +.bp3-icon-sort-desc::before{ + content:""; } + +.bp3-icon-sort-numerical::before{ + content:""; } + +.bp3-icon-sort-numerical-desc::before{ + content:""; } + +.bp3-icon-split-columns::before{ + content:""; } + +.bp3-icon-square::before{ + content:""; } + +.bp3-icon-stacked-chart::before{ + content:""; } + +.bp3-icon-star::before{ + content:"★"; } + +.bp3-icon-star-empty::before{ + content:"☆"; } + +.bp3-icon-step-backward::before{ + content:""; } + +.bp3-icon-step-chart::before{ + content:""; } + +.bp3-icon-step-forward::before{ + content:""; } + +.bp3-icon-stop::before{ + content:""; } + +.bp3-icon-stopwatch::before{ + content:""; } + +.bp3-icon-strikethrough::before{ + content:""; } + +.bp3-icon-style::before{ + content:""; } + +.bp3-icon-swap-horizontal::before{ + content:""; } + +.bp3-icon-swap-vertical::before{ + content:""; } + +.bp3-icon-symbol-circle::before{ + content:""; } + +.bp3-icon-symbol-cross::before{ + content:""; } + +.bp3-icon-symbol-diamond::before{ + content:""; } + +.bp3-icon-symbol-square::before{ + content:""; } + +.bp3-icon-symbol-triangle-down::before{ + content:""; } + +.bp3-icon-symbol-triangle-up::before{ + content:""; } + +.bp3-icon-tag::before{ + content:""; } + +.bp3-icon-take-action::before{ + content:""; } + +.bp3-icon-taxi::before{ + content:""; } + +.bp3-icon-text-highlight::before{ + content:""; } + +.bp3-icon-th::before{ + content:""; } + +.bp3-icon-th-derived::before{ + content:""; } + +.bp3-icon-th-disconnect::before{ + content:""; } + +.bp3-icon-th-filtered::before{ + content:""; } + +.bp3-icon-th-list::before{ + content:""; } + +.bp3-icon-thumbs-down::before{ + content:""; } + +.bp3-icon-thumbs-up::before{ + content:""; } + +.bp3-icon-tick::before{ + content:"✓"; } + +.bp3-icon-tick-circle::before{ + content:""; } + +.bp3-icon-time::before{ + content:"⏲"; } + +.bp3-icon-timeline-area-chart::before{ + content:""; } + +.bp3-icon-timeline-bar-chart::before{ + content:""; } + +.bp3-icon-timeline-events::before{ + content:""; } + +.bp3-icon-timeline-line-chart::before{ + content:""; } + +.bp3-icon-tint::before{ + content:""; } + +.bp3-icon-torch::before{ + content:""; } + +.bp3-icon-tractor::before{ + content:""; } + +.bp3-icon-train::before{ + content:""; } + +.bp3-icon-translate::before{ + content:""; } + +.bp3-icon-trash::before{ + content:""; } + +.bp3-icon-tree::before{ + content:""; } + +.bp3-icon-trending-down::before{ + content:""; } + +.bp3-icon-trending-up::before{ + content:""; } + +.bp3-icon-truck::before{ + content:""; } + +.bp3-icon-two-columns::before{ + content:""; } + +.bp3-icon-unarchive::before{ + content:""; } + +.bp3-icon-underline::before{ + content:"⎁"; } + +.bp3-icon-undo::before{ + content:"⎌"; } + +.bp3-icon-ungroup-objects::before{ + content:""; } + +.bp3-icon-unknown-vehicle::before{ + content:""; } + +.bp3-icon-unlock::before{ + content:""; } + +.bp3-icon-unpin::before{ + content:""; } + +.bp3-icon-unresolve::before{ + content:""; } + +.bp3-icon-updated::before{ + content:""; } + +.bp3-icon-upload::before{ + content:""; } + +.bp3-icon-user::before{ + content:""; } + +.bp3-icon-variable::before{ + content:""; } + +.bp3-icon-vertical-bar-chart-asc::before{ + content:""; } + +.bp3-icon-vertical-bar-chart-desc::before{ + content:""; } + +.bp3-icon-vertical-distribution::before{ + content:""; } + +.bp3-icon-video::before{ + content:""; } + +.bp3-icon-volume-down::before{ + content:""; } + +.bp3-icon-volume-off::before{ + content:""; } + +.bp3-icon-volume-up::before{ + content:""; } + +.bp3-icon-walk::before{ + content:""; } + +.bp3-icon-warning-sign::before{ + content:""; } + +.bp3-icon-waterfall-chart::before{ + content:""; } + +.bp3-icon-widget::before{ + content:""; } + +.bp3-icon-widget-button::before{ + content:""; } + +.bp3-icon-widget-footer::before{ + content:""; } + +.bp3-icon-widget-header::before{ + content:""; } + +.bp3-icon-wrench::before{ + content:""; } + +.bp3-icon-zoom-in::before{ + content:""; } + +.bp3-icon-zoom-out::before{ + content:""; } + +.bp3-icon-zoom-to-fit::before{ + content:""; } +.bp3-submenu > .bp3-popover-wrapper{ + display:block; } + +.bp3-submenu .bp3-popover-target{ + display:block; } + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ } + +.bp3-submenu.bp3-popover{ + -webkit-box-shadow:none; + box-shadow:none; + padding:0 5px; } + .bp3-submenu.bp3-popover > .bp3-popover-content{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-submenu.bp3-popover, .bp3-submenu.bp3-popover.bp3-dark{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-submenu.bp3-popover > .bp3-popover-content, .bp3-submenu.bp3-popover.bp3-dark > .bp3-popover-content{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } +.bp3-menu{ + background:#ffffff; + border-radius:3px; + color:#182026; + list-style:none; + margin:0; + min-width:180px; + padding:5px; + text-align:left; } + +.bp3-menu-divider{ + border-top:1px solid rgba(16, 22, 26, 0.15); + display:block; + margin:5px; } + .bp3-dark .bp3-menu-divider{ + border-top-color:rgba(255, 255, 255, 0.15); } + +.bp3-menu-item{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + border-radius:2px; + color:inherit; + line-height:20px; + padding:5px 7px; + text-decoration:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-menu-item > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-menu-item > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-menu-item::before, + .bp3-menu-item > *{ + margin-right:7px; } + .bp3-menu-item:empty::before, + .bp3-menu-item > :last-child{ + margin-right:0; } + .bp3-menu-item > .bp3-fill{ + word-break:break-word; } + .bp3-menu-item:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + background-color:rgba(167, 182, 194, 0.3); + cursor:pointer; + text-decoration:none; } + .bp3-menu-item.bp3-disabled{ + background-color:inherit; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-menu-item{ + color:inherit; } + .bp3-dark .bp3-menu-item:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + background-color:rgba(138, 155, 168, 0.15); + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-disabled{ + background-color:inherit; + color:rgba(167, 182, 194, 0.6); } + .bp3-menu-item.bp3-intent-primary{ + color:#106ba3; } + .bp3-menu-item.bp3-intent-primary .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-primary::before, .bp3-menu-item.bp3-intent-primary::after, + .bp3-menu-item.bp3-intent-primary .bp3-menu-item-label{ + color:#106ba3; } + .bp3-menu-item.bp3-intent-primary:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-menu-item.bp3-intent-primary.bp3-active{ + background-color:#137cbd; } + .bp3-menu-item.bp3-intent-primary:active{ + background-color:#106ba3; } + .bp3-menu-item.bp3-intent-primary:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-menu-item.bp3-intent-primary:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-menu-item.bp3-intent-primary:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-primary:active, .bp3-menu-item.bp3-intent-primary:active::before, .bp3-menu-item.bp3-intent-primary:active::after, + .bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-primary.bp3-active, .bp3-menu-item.bp3-intent-primary.bp3-active::before, .bp3-menu-item.bp3-intent-primary.bp3-active::after, + .bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-success{ + color:#0d8050; } + .bp3-menu-item.bp3-intent-success .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-success::before, .bp3-menu-item.bp3-intent-success::after, + .bp3-menu-item.bp3-intent-success .bp3-menu-item-label{ + color:#0d8050; } + .bp3-menu-item.bp3-intent-success:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-menu-item.bp3-intent-success.bp3-active{ + background-color:#0f9960; } + .bp3-menu-item.bp3-intent-success:active{ + background-color:#0d8050; } + .bp3-menu-item.bp3-intent-success:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-menu-item.bp3-intent-success:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-menu-item.bp3-intent-success:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-success:active, .bp3-menu-item.bp3-intent-success:active::before, .bp3-menu-item.bp3-intent-success:active::after, + .bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-success.bp3-active, .bp3-menu-item.bp3-intent-success.bp3-active::before, .bp3-menu-item.bp3-intent-success.bp3-active::after, + .bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-warning{ + color:#bf7326; } + .bp3-menu-item.bp3-intent-warning .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-warning::before, .bp3-menu-item.bp3-intent-warning::after, + .bp3-menu-item.bp3-intent-warning .bp3-menu-item-label{ + color:#bf7326; } + .bp3-menu-item.bp3-intent-warning:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-menu-item.bp3-intent-warning.bp3-active{ + background-color:#d9822b; } + .bp3-menu-item.bp3-intent-warning:active{ + background-color:#bf7326; } + .bp3-menu-item.bp3-intent-warning:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-menu-item.bp3-intent-warning:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-menu-item.bp3-intent-warning:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-warning:active, .bp3-menu-item.bp3-intent-warning:active::before, .bp3-menu-item.bp3-intent-warning:active::after, + .bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-warning.bp3-active, .bp3-menu-item.bp3-intent-warning.bp3-active::before, .bp3-menu-item.bp3-intent-warning.bp3-active::after, + .bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-danger{ + color:#c23030; } + .bp3-menu-item.bp3-intent-danger .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-danger::before, .bp3-menu-item.bp3-intent-danger::after, + .bp3-menu-item.bp3-intent-danger .bp3-menu-item-label{ + color:#c23030; } + .bp3-menu-item.bp3-intent-danger:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-menu-item.bp3-intent-danger.bp3-active{ + background-color:#db3737; } + .bp3-menu-item.bp3-intent-danger:active{ + background-color:#c23030; } + .bp3-menu-item.bp3-intent-danger:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-menu-item.bp3-intent-danger:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-menu-item.bp3-intent-danger:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-danger:active, .bp3-menu-item.bp3-intent-danger:active::before, .bp3-menu-item.bp3-intent-danger:active::after, + .bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-danger.bp3-active, .bp3-menu-item.bp3-intent-danger.bp3-active::before, .bp3-menu-item.bp3-intent-danger.bp3-active::after, + .bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + margin-right:7px; } + .bp3-menu-item::before, + .bp3-menu-item > .bp3-icon{ + color:#5c7080; + margin-top:2px; } + .bp3-menu-item .bp3-menu-item-label{ + color:#5c7080; } + .bp3-menu-item:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + color:inherit; } + .bp3-menu-item.bp3-active, .bp3-menu-item:active{ + background-color:rgba(115, 134, 148, 0.3); } + .bp3-menu-item.bp3-disabled{ + background-color:inherit !important; + color:rgba(92, 112, 128, 0.6) !important; + cursor:not-allowed !important; + outline:none !important; } + .bp3-menu-item.bp3-disabled::before, + .bp3-menu-item.bp3-disabled > .bp3-icon, + .bp3-menu-item.bp3-disabled .bp3-menu-item-label{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-large .bp3-menu-item{ + font-size:16px; + line-height:22px; + padding:9px 7px; } + .bp3-large .bp3-menu-item .bp3-icon{ + margin-top:3px; } + .bp3-large .bp3-menu-item::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + margin-right:10px; + margin-top:1px; } + +button.bp3-menu-item{ + background:none; + border:none; + text-align:left; + width:100%; } +.bp3-menu-header{ + border-top:1px solid rgba(16, 22, 26, 0.15); + display:block; + margin:5px; + cursor:default; + padding-left:2px; } + .bp3-dark .bp3-menu-header{ + border-top-color:rgba(255, 255, 255, 0.15); } + .bp3-menu-header:first-of-type{ + border-top:none; } + .bp3-menu-header > h6{ + color:#182026; + font-weight:600; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + line-height:17px; + margin:0; + padding:10px 7px 0 1px; } + .bp3-dark .bp3-menu-header > h6{ + color:#f5f8fa; } + .bp3-menu-header:first-of-type > h6{ + padding-top:0; } + .bp3-large .bp3-menu-header > h6{ + font-size:18px; + padding-bottom:5px; + padding-top:15px; } + .bp3-large .bp3-menu-header:first-of-type > h6{ + padding-top:0; } + +.bp3-dark .bp3-menu{ + background:#30404d; + color:#f5f8fa; } + +.bp3-dark .bp3-menu-item{ } + .bp3-dark .bp3-menu-item.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-primary::before, .bp3-dark .bp3-menu-item.bp3-intent-primary::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-menu-item-label{ + color:#48aff0; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active{ + background-color:#137cbd; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:active{ + background-color:#106ba3; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-primary:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-primary:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-primary:active, .bp3-dark .bp3-menu-item.bp3-intent-primary:active::before, .bp3-dark .bp3-menu-item.bp3-intent-primary:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-menu-item.bp3-intent-success .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-success::before, .bp3-dark .bp3-menu-item.bp3-intent-success::after, + .bp3-dark .bp3-menu-item.bp3-intent-success .bp3-menu-item-label{ + color:#3dcc91; } + .bp3-dark .bp3-menu-item.bp3-intent-success:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active{ + background-color:#0f9960; } + .bp3-dark .bp3-menu-item.bp3-intent-success:active{ + background-color:#0d8050; } + .bp3-dark .bp3-menu-item.bp3-intent-success:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-success:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-success:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-success:active, .bp3-dark .bp3-menu-item.bp3-intent-success:active::before, .bp3-dark .bp3-menu-item.bp3-intent-success:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-warning::before, .bp3-dark .bp3-menu-item.bp3-intent-warning::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-menu-item-label{ + color:#ffb366; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active{ + background-color:#d9822b; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:active{ + background-color:#bf7326; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-warning:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-warning:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-warning:active, .bp3-dark .bp3-menu-item.bp3-intent-warning:active::before, .bp3-dark .bp3-menu-item.bp3-intent-warning:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-danger::before, .bp3-dark .bp3-menu-item.bp3-intent-danger::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-menu-item-label{ + color:#ff7373; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active{ + background-color:#db3737; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:active{ + background-color:#c23030; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-danger:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-danger:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-danger:active, .bp3-dark .bp3-menu-item.bp3-intent-danger:active::before, .bp3-dark .bp3-menu-item.bp3-intent-danger:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item::before, + .bp3-dark .bp3-menu-item > .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-menu-item .bp3-menu-item-label{ + color:#a7b6c2; } + .bp3-dark .bp3-menu-item.bp3-active, .bp3-dark .bp3-menu-item:active{ + background-color:rgba(138, 155, 168, 0.3); } + .bp3-dark .bp3-menu-item.bp3-disabled{ + color:rgba(167, 182, 194, 0.6) !important; } + .bp3-dark .bp3-menu-item.bp3-disabled::before, + .bp3-dark .bp3-menu-item.bp3-disabled > .bp3-icon, + .bp3-dark .bp3-menu-item.bp3-disabled .bp3-menu-item-label{ + color:rgba(167, 182, 194, 0.6) !important; } + +.bp3-dark .bp3-menu-divider, +.bp3-dark .bp3-menu-header{ + border-color:rgba(255, 255, 255, 0.15); } + +.bp3-dark .bp3-menu-header > h6{ + color:#f5f8fa; } + +.bp3-label .bp3-menu{ + margin-top:5px; } +.bp3-navbar{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + height:50px; + padding:0 15px; + position:relative; + width:100%; + z-index:10; } + .bp3-navbar.bp3-dark, + .bp3-dark .bp3-navbar{ + background-color:#394b59; } + .bp3-navbar.bp3-dark{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-navbar{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-navbar.bp3-fixed-top{ + left:0; + position:fixed; + right:0; + top:0; } + +.bp3-navbar-heading{ + font-size:16px; + margin-right:15px; } + +.bp3-navbar-group{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + height:50px; } + .bp3-navbar-group.bp3-align-left{ + float:left; } + .bp3-navbar-group.bp3-align-right{ + float:right; } + +.bp3-navbar-divider{ + border-left:1px solid rgba(16, 22, 26, 0.15); + height:20px; + margin:0 10px; } + .bp3-dark .bp3-navbar-divider{ + border-left-color:rgba(255, 255, 255, 0.15); } +.bp3-non-ideal-state{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + height:100%; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + text-align:center; + width:100%; } + .bp3-non-ideal-state > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-non-ideal-state > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-non-ideal-state::before, + .bp3-non-ideal-state > *{ + margin-bottom:20px; } + .bp3-non-ideal-state:empty::before, + .bp3-non-ideal-state > :last-child{ + margin-bottom:0; } + .bp3-non-ideal-state > *{ + max-width:400px; } + +.bp3-non-ideal-state-visual{ + color:rgba(92, 112, 128, 0.6); + font-size:60px; } + .bp3-dark .bp3-non-ideal-state-visual{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-overflow-list{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-wrap:nowrap; + flex-wrap:nowrap; + min-width:0; } + +.bp3-overflow-list-spacer{ + -ms-flex-negative:1; + flex-shrink:1; + width:1px; } + +body.bp3-overlay-open{ + overflow:hidden; } + +.bp3-overlay{ + bottom:0; + left:0; + position:static; + right:0; + top:0; + z-index:20; } + .bp3-overlay:not(.bp3-overlay-open){ + pointer-events:none; } + .bp3-overlay.bp3-overlay-container{ + overflow:hidden; + position:fixed; } + .bp3-overlay.bp3-overlay-container.bp3-overlay-inline{ + position:absolute; } + .bp3-overlay.bp3-overlay-scroll-container{ + overflow:auto; + position:fixed; } + .bp3-overlay.bp3-overlay-scroll-container.bp3-overlay-inline{ + position:absolute; } + .bp3-overlay.bp3-overlay-inline{ + display:inline; + overflow:visible; } + +.bp3-overlay-content{ + position:fixed; + z-index:20; } + .bp3-overlay-inline .bp3-overlay-content, + .bp3-overlay-scroll-container .bp3-overlay-content{ + position:absolute; } + +.bp3-overlay-backdrop{ + bottom:0; + left:0; + position:fixed; + right:0; + top:0; + opacity:1; + background-color:rgba(16, 22, 26, 0.7); + overflow:auto; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + z-index:20; } + .bp3-overlay-backdrop.bp3-overlay-enter, .bp3-overlay-backdrop.bp3-overlay-appear{ + opacity:0; } + .bp3-overlay-backdrop.bp3-overlay-enter-active, .bp3-overlay-backdrop.bp3-overlay-appear-active{ + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-overlay-backdrop.bp3-overlay-exit{ + opacity:1; } + .bp3-overlay-backdrop.bp3-overlay-exit-active{ + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-overlay-backdrop:focus{ + outline:none; } + .bp3-overlay-inline .bp3-overlay-backdrop{ + position:absolute; } +.bp3-panel-stack{ + overflow:hidden; + position:relative; } + +.bp3-panel-stack-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + -webkit-box-shadow:0 1px rgba(16, 22, 26, 0.15); + box-shadow:0 1px rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-negative:0; + flex-shrink:0; + height:30px; + z-index:1; } + .bp3-dark .bp3-panel-stack-header{ + -webkit-box-shadow:0 1px rgba(255, 255, 255, 0.15); + box-shadow:0 1px rgba(255, 255, 255, 0.15); } + .bp3-panel-stack-header > span{ + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1; + flex:1; } + .bp3-panel-stack-header .bp3-heading{ + margin:0 5px; } + +.bp3-button.bp3-panel-stack-header-back{ + margin-left:5px; + padding-left:0; + white-space:nowrap; } + .bp3-button.bp3-panel-stack-header-back .bp3-icon{ + margin:0 2px; } + +.bp3-panel-stack-view{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; + background-color:#ffffff; + border-right:1px solid rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin-right:-1px; + overflow-y:auto; + z-index:1; } + .bp3-dark .bp3-panel-stack-view{ + background-color:#30404d; } + .bp3-panel-stack-view:nth-last-child(n + 4){ + display:none; } + +.bp3-panel-stack-push .bp3-panel-stack-enter, .bp3-panel-stack-push .bp3-panel-stack-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; } + +.bp3-panel-stack-push .bp3-panel-stack-enter-active, .bp3-panel-stack-push .bp3-panel-stack-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-push .bp3-panel-stack-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack-push .bp3-panel-stack-exit-active{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-pop .bp3-panel-stack-enter, .bp3-panel-stack-pop .bp3-panel-stack-appear{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; } + +.bp3-panel-stack-pop .bp3-panel-stack-enter-active, .bp3-panel-stack-pop .bp3-panel-stack-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-pop .bp3-panel-stack-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack-pop .bp3-panel-stack-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } +.bp3-popover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + -webkit-transform:scale(1); + transform:scale(1); + border-radius:3px; + display:inline-block; + z-index:20; } + .bp3-popover .bp3-popover-arrow{ + height:30px; + position:absolute; + width:30px; } + .bp3-popover .bp3-popover-arrow::before{ + height:20px; + margin:5px; + width:20px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover{ + margin-bottom:17px; + margin-top:-17px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow{ + bottom:-11px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(-90deg); + transform:rotate(-90deg); } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover{ + margin-left:17px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow{ + left:-11px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(0); + transform:rotate(0); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover{ + margin-top:17px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow{ + top:-11px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover{ + margin-left:-17px; + margin-right:17px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow{ + right:-11px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(180deg); + transform:rotate(180deg); } + .bp3-tether-element-attached-middle > .bp3-popover > .bp3-popover-arrow{ + top:50%; + -webkit-transform:translateY(-50%); + transform:translateY(-50%); } + .bp3-tether-element-attached-center > .bp3-popover > .bp3-popover-arrow{ + right:50%; + -webkit-transform:translateX(50%); + transform:translateX(50%); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow{ + top:-0.3934px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow{ + right:-0.3934px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow{ + left:-0.3934px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow{ + bottom:-0.3934px; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:top left; + transform-origin:top left; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:top center; + transform-origin:top center; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:top right; + transform-origin:top right; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:center left; + transform-origin:center left; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:center center; + transform-origin:center center; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:center right; + transform-origin:center right; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:bottom left; + transform-origin:bottom left; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:bottom center; + transform-origin:bottom center; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:bottom right; + transform-origin:bottom right; } + .bp3-popover .bp3-popover-content{ + background:#ffffff; + color:inherit; } + .bp3-popover .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); } + .bp3-popover .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.1; } + .bp3-popover .bp3-popover-arrow-fill{ + fill:#ffffff; } + .bp3-popover-enter > .bp3-popover, .bp3-popover-appear > .bp3-popover{ + -webkit-transform:scale(0.3); + transform:scale(0.3); } + .bp3-popover-enter-active > .bp3-popover, .bp3-popover-appear-active > .bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-popover-exit > .bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-popover{ + -webkit-transform:scale(0.3); + transform:scale(0.3); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-popover .bp3-popover-content{ + border-radius:3px; + position:relative; } + .bp3-popover.bp3-popover-content-sizing .bp3-popover-content{ + max-width:350px; + padding:20px; } + .bp3-popover-target + .bp3-overlay .bp3-popover.bp3-popover-content-sizing{ + width:350px; } + .bp3-popover.bp3-minimal{ + margin:0 !important; } + .bp3-popover.bp3-minimal .bp3-popover-arrow{ + display:none; } + .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-enter > .bp3-popover.bp3-minimal.bp3-popover, .bp3-popover-appear > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-enter-active > .bp3-popover.bp3-minimal.bp3-popover, .bp3-popover-appear-active > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover-exit > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover.bp3-dark, + .bp3-dark .bp3-popover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-popover.bp3-dark .bp3-popover-content, + .bp3-dark .bp3-popover .bp3-popover-content{ + background:#30404d; + color:inherit; } + .bp3-popover.bp3-dark .bp3-popover-arrow::before, + .bp3-dark .bp3-popover .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); } + .bp3-popover.bp3-dark .bp3-popover-arrow-border, + .bp3-dark .bp3-popover .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.2; } + .bp3-popover.bp3-dark .bp3-popover-arrow-fill, + .bp3-dark .bp3-popover .bp3-popover-arrow-fill{ + fill:#30404d; } + +.bp3-popover-arrow::before{ + border-radius:2px; + content:""; + display:block; + position:absolute; + -webkit-transform:rotate(45deg); + transform:rotate(45deg); } + +.bp3-tether-pinned .bp3-popover-arrow{ + display:none; } + +.bp3-popover-backdrop{ + background:rgba(255, 255, 255, 0); } + +.bp3-transition-container{ + opacity:1; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + z-index:20; } + .bp3-transition-container.bp3-popover-enter, .bp3-transition-container.bp3-popover-appear{ + opacity:0; } + .bp3-transition-container.bp3-popover-enter-active, .bp3-transition-container.bp3-popover-appear-active{ + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-transition-container.bp3-popover-exit{ + opacity:1; } + .bp3-transition-container.bp3-popover-exit-active{ + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-transition-container:focus{ + outline:none; } + .bp3-transition-container.bp3-popover-leave .bp3-popover-content{ + pointer-events:none; } + .bp3-transition-container[data-x-out-of-boundaries]{ + display:none; } + +span.bp3-popover-target{ + display:inline-block; } + +.bp3-popover-wrapper.bp3-fill{ + width:100%; } + +.bp3-portal{ + left:0; + position:absolute; + right:0; + top:0; } +@-webkit-keyframes linear-progress-bar-stripes{ + from{ + background-position:0 0; } + to{ + background-position:30px 0; } } +@keyframes linear-progress-bar-stripes{ + from{ + background-position:0 0; } + to{ + background-position:30px 0; } } + +.bp3-progress-bar{ + background:rgba(92, 112, 128, 0.2); + border-radius:40px; + display:block; + height:8px; + overflow:hidden; + position:relative; + width:100%; } + .bp3-progress-bar .bp3-progress-meter{ + background:linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%); + background-color:rgba(92, 112, 128, 0.8); + background-size:30px 30px; + border-radius:40px; + height:100%; + position:absolute; + -webkit-transition:width 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:width 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:100%; } + .bp3-progress-bar:not(.bp3-no-animation):not(.bp3-no-stripes) .bp3-progress-meter{ + animation:linear-progress-bar-stripes 300ms linear infinite reverse; } + .bp3-progress-bar.bp3-no-stripes .bp3-progress-meter{ + background-image:none; } + +.bp3-dark .bp3-progress-bar{ + background:rgba(16, 22, 26, 0.5); } + .bp3-dark .bp3-progress-bar .bp3-progress-meter{ + background-color:#8a9ba8; } + +.bp3-progress-bar.bp3-intent-primary .bp3-progress-meter{ + background-color:#137cbd; } + +.bp3-progress-bar.bp3-intent-success .bp3-progress-meter{ + background-color:#0f9960; } + +.bp3-progress-bar.bp3-intent-warning .bp3-progress-meter{ + background-color:#d9822b; } + +.bp3-progress-bar.bp3-intent-danger .bp3-progress-meter{ + background-color:#db3737; } +@-webkit-keyframes skeleton-glow{ + from{ + background:rgba(206, 217, 224, 0.2); + border-color:rgba(206, 217, 224, 0.2); } + to{ + background:rgba(92, 112, 128, 0.2); + border-color:rgba(92, 112, 128, 0.2); } } +@keyframes skeleton-glow{ + from{ + background:rgba(206, 217, 224, 0.2); + border-color:rgba(206, 217, 224, 0.2); } + to{ + background:rgba(92, 112, 128, 0.2); + border-color:rgba(92, 112, 128, 0.2); } } +.bp3-skeleton{ + -webkit-animation:1000ms linear infinite alternate skeleton-glow; + animation:1000ms linear infinite alternate skeleton-glow; + background:rgba(206, 217, 224, 0.2); + background-clip:padding-box !important; + border-color:rgba(206, 217, 224, 0.2) !important; + border-radius:2px; + -webkit-box-shadow:none !important; + box-shadow:none !important; + color:transparent !important; + cursor:default; + pointer-events:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-skeleton::before, .bp3-skeleton::after, + .bp3-skeleton *{ + visibility:hidden !important; } +.bp3-slider{ + height:40px; + min-width:150px; + width:100%; + cursor:default; + outline:none; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-slider:hover{ + cursor:pointer; } + .bp3-slider:active{ + cursor:-webkit-grabbing; + cursor:grabbing; } + .bp3-slider.bp3-disabled{ + cursor:not-allowed; + opacity:0.5; } + .bp3-slider.bp3-slider-unlabeled{ + height:16px; } + +.bp3-slider-track, +.bp3-slider-progress{ + height:6px; + left:0; + right:0; + top:5px; + position:absolute; } + +.bp3-slider-track{ + border-radius:3px; + overflow:hidden; } + +.bp3-slider-progress{ + background:rgba(92, 112, 128, 0.2); } + .bp3-dark .bp3-slider-progress{ + background:rgba(16, 22, 26, 0.5); } + .bp3-slider-progress.bp3-intent-primary{ + background-color:#137cbd; } + .bp3-slider-progress.bp3-intent-success{ + background-color:#0f9960; } + .bp3-slider-progress.bp3-intent-warning{ + background-color:#d9822b; } + .bp3-slider-progress.bp3-intent-danger{ + background-color:#db3737; } + +.bp3-slider-handle{ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + cursor:pointer; + height:16px; + left:0; + position:absolute; + top:0; + width:16px; } + .bp3-slider-handle:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-slider-handle:active, .bp3-slider-handle.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-slider-handle:disabled, .bp3-slider-handle.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-slider-handle:disabled.bp3-active, .bp3-slider-handle:disabled.bp3-active:hover, .bp3-slider-handle.bp3-disabled.bp3-active, .bp3-slider-handle.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-slider-handle:focus{ + z-index:1; } + .bp3-slider-handle:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + cursor:-webkit-grab; + cursor:grab; + z-index:2; } + .bp3-slider-handle.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1); + cursor:-webkit-grabbing; + cursor:grabbing; } + .bp3-disabled .bp3-slider-handle{ + background:#bfccd6; + -webkit-box-shadow:none; + box-shadow:none; + pointer-events:none; } + .bp3-dark .bp3-slider-handle{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-slider-handle:hover, .bp3-dark .bp3-slider-handle:active, .bp3-dark .bp3-slider-handle.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-slider-handle:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-slider-handle:active, .bp3-dark .bp3-slider-handle.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-slider-handle:disabled, .bp3-dark .bp3-slider-handle.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-slider-handle:disabled.bp3-active, .bp3-dark .bp3-slider-handle.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-slider-handle .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-slider-handle, .bp3-dark .bp3-slider-handle:hover{ + background-color:#394b59; } + .bp3-dark .bp3-slider-handle.bp3-active{ + background-color:#293742; } + .bp3-dark .bp3-disabled .bp3-slider-handle{ + background:#5c7080; + border-color:#5c7080; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-slider-handle .bp3-slider-label{ + background:#394b59; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + color:#f5f8fa; + margin-left:8px; } + .bp3-dark .bp3-slider-handle .bp3-slider-label{ + background:#e1e8ed; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + color:#394b59; } + .bp3-disabled .bp3-slider-handle .bp3-slider-label{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-slider-handle.bp3-start, .bp3-slider-handle.bp3-end{ + width:8px; } + .bp3-slider-handle.bp3-start{ + border-bottom-right-radius:0; + border-top-right-radius:0; } + .bp3-slider-handle.bp3-end{ + border-bottom-left-radius:0; + border-top-left-radius:0; + margin-left:8px; } + .bp3-slider-handle.bp3-end .bp3-slider-label{ + margin-left:0; } + +.bp3-slider-label{ + -webkit-transform:translate(-50%, 20px); + transform:translate(-50%, 20px); + display:inline-block; + font-size:12px; + line-height:1; + padding:2px 5px; + position:absolute; + vertical-align:top; } + +.bp3-slider.bp3-vertical{ + height:150px; + min-width:40px; + width:40px; } + .bp3-slider.bp3-vertical .bp3-slider-track, + .bp3-slider.bp3-vertical .bp3-slider-progress{ + bottom:0; + height:auto; + left:5px; + top:0; + width:6px; } + .bp3-slider.bp3-vertical .bp3-slider-progress{ + top:auto; } + .bp3-slider.bp3-vertical .bp3-slider-label{ + -webkit-transform:translate(20px, 50%); + transform:translate(20px, 50%); } + .bp3-slider.bp3-vertical .bp3-slider-handle{ + top:auto; } + .bp3-slider.bp3-vertical .bp3-slider-handle .bp3-slider-label{ + margin-left:0; + margin-top:-8px; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end, .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start{ + height:8px; + margin-left:0; + width:16px; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start{ + border-bottom-right-radius:3px; + border-top-left-radius:0; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start .bp3-slider-label{ + -webkit-transform:translate(20px); + transform:translate(20px); } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end{ + border-bottom-left-radius:0; + border-bottom-right-radius:0; + border-top-left-radius:3px; + margin-bottom:8px; } + +@-webkit-keyframes pt-spinner-animation{ + from{ + -webkit-transform:rotate(0deg); + transform:rotate(0deg); } + to{ + -webkit-transform:rotate(360deg); + transform:rotate(360deg); } } + +@keyframes pt-spinner-animation{ + from{ + -webkit-transform:rotate(0deg); + transform:rotate(0deg); } + to{ + -webkit-transform:rotate(360deg); + transform:rotate(360deg); } } + +.bp3-spinner{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + overflow:visible; + vertical-align:middle; } + .bp3-spinner svg{ + display:block; } + .bp3-spinner path{ + fill-opacity:0; } + .bp3-spinner .bp3-spinner-head{ + stroke:rgba(92, 112, 128, 0.8); + stroke-linecap:round; + -webkit-transform-origin:center; + transform-origin:center; + -webkit-transition:stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-spinner .bp3-spinner-track{ + stroke:rgba(92, 112, 128, 0.2); } + +.bp3-spinner-animation{ + -webkit-animation:pt-spinner-animation 500ms linear infinite; + animation:pt-spinner-animation 500ms linear infinite; } + .bp3-no-spin > .bp3-spinner-animation{ + -webkit-animation:none; + animation:none; } + +.bp3-dark .bp3-spinner .bp3-spinner-head{ + stroke:#8a9ba8; } + +.bp3-dark .bp3-spinner .bp3-spinner-track{ + stroke:rgba(16, 22, 26, 0.5); } + +.bp3-spinner.bp3-intent-primary .bp3-spinner-head{ + stroke:#137cbd; } + +.bp3-spinner.bp3-intent-success .bp3-spinner-head{ + stroke:#0f9960; } + +.bp3-spinner.bp3-intent-warning .bp3-spinner-head{ + stroke:#d9822b; } + +.bp3-spinner.bp3-intent-danger .bp3-spinner-head{ + stroke:#db3737; } +.bp3-tabs.bp3-vertical{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-tabs.bp3-vertical > .bp3-tab-list{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab{ + border-radius:3px; + padding:0 10px; + width:100%; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab[aria-selected="true"]{ + background-color:rgba(19, 124, 189, 0.2); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab-indicator-wrapper .bp3-tab-indicator{ + background-color:rgba(19, 124, 189, 0.2); + border-radius:3px; + bottom:0; + height:auto; + left:0; + right:0; + top:0; } + .bp3-tabs.bp3-vertical > .bp3-tab-panel{ + margin-top:0; + padding-left:20px; } + +.bp3-tab-list{ + -webkit-box-align:end; + -ms-flex-align:end; + align-items:flex-end; + border:none; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + list-style:none; + margin:0; + padding:0; + position:relative; } + .bp3-tab-list > *:not(:last-child){ + margin-right:20px; } + +.bp3-tab{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + color:#182026; + cursor:pointer; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + font-size:14px; + line-height:30px; + max-width:100%; + position:relative; + vertical-align:top; } + .bp3-tab a{ + color:inherit; + display:block; + text-decoration:none; } + .bp3-tab-indicator-wrapper ~ .bp3-tab{ + background-color:transparent !important; + -webkit-box-shadow:none !important; + box-shadow:none !important; } + .bp3-tab[aria-disabled="true"]{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-tab[aria-selected="true"]{ + border-radius:0; + -webkit-box-shadow:inset 0 -3px 0 #106ba3; + box-shadow:inset 0 -3px 0 #106ba3; } + .bp3-tab[aria-selected="true"], .bp3-tab:not([aria-disabled="true"]):hover{ + color:#106ba3; } + .bp3-tab:focus{ + -moz-outline-radius:0; } + .bp3-large > .bp3-tab{ + font-size:16px; + line-height:40px; } + +.bp3-tab-panel{ + margin-top:20px; } + .bp3-tab-panel[aria-hidden="true"]{ + display:none; } + +.bp3-tab-indicator-wrapper{ + left:0; + pointer-events:none; + position:absolute; + top:0; + -webkit-transform:translateX(0), translateY(0); + transform:translateX(0), translateY(0); + -webkit-transition:height, width, -webkit-transform; + transition:height, width, -webkit-transform; + transition:height, transform, width; + transition:height, transform, width, -webkit-transform; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tab-indicator-wrapper .bp3-tab-indicator{ + background-color:#106ba3; + bottom:0; + height:3px; + left:0; + position:absolute; + right:0; } + .bp3-tab-indicator-wrapper.bp3-no-animation{ + -webkit-transition:none; + transition:none; } + +.bp3-dark .bp3-tab{ + color:#f5f8fa; } + .bp3-dark .bp3-tab[aria-disabled="true"]{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tab[aria-selected="true"]{ + -webkit-box-shadow:inset 0 -3px 0 #48aff0; + box-shadow:inset 0 -3px 0 #48aff0; } + .bp3-dark .bp3-tab[aria-selected="true"], .bp3-dark .bp3-tab:not([aria-disabled="true"]):hover{ + color:#48aff0; } + +.bp3-dark .bp3-tab-indicator{ + background-color:#48aff0; } + +.bp3-flex-expander{ + -webkit-box-flex:1; + -ms-flex:1 1; + flex:1 1; } +.bp3-tag{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background-color:#5c7080; + border:none; + border-radius:3px; + -webkit-box-shadow:none; + box-shadow:none; + color:#f5f8fa; + font-size:12px; + line-height:16px; + max-width:100%; + min-height:20px; + min-width:20px; + padding:2px 6px; + position:relative; } + .bp3-tag.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-interactive:hover{ + background-color:rgba(92, 112, 128, 0.85); } + .bp3-tag.bp3-interactive.bp3-active, .bp3-tag.bp3-interactive:active{ + background-color:rgba(92, 112, 128, 0.7); } + .bp3-tag > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag::before, + .bp3-tag > *{ + margin-right:4px; } + .bp3-tag:empty::before, + .bp3-tag > :last-child{ + margin-right:0; } + .bp3-tag:focus{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:0; + -moz-outline-radius:6px; } + .bp3-tag.bp3-round{ + border-radius:30px; + padding-left:8px; + padding-right:8px; } + .bp3-dark .bp3-tag{ + background-color:#bfccd6; + color:#182026; } + .bp3-dark .bp3-tag.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-interactive:hover{ + background-color:rgba(191, 204, 214, 0.85); } + .bp3-dark .bp3-tag.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-interactive:active{ + background-color:rgba(191, 204, 214, 0.7); } + .bp3-dark .bp3-tag > .bp3-icon, .bp3-dark .bp3-tag .bp3-icon-standard, .bp3-dark .bp3-tag .bp3-icon-large{ + fill:currentColor; } + .bp3-tag > .bp3-icon, .bp3-tag .bp3-icon-standard, .bp3-tag .bp3-icon-large{ + fill:#ffffff; } + .bp3-tag.bp3-large, + .bp3-large .bp3-tag{ + font-size:14px; + line-height:20px; + min-height:30px; + min-width:30px; + padding:5px 10px; } + .bp3-tag.bp3-large::before, + .bp3-tag.bp3-large > *, + .bp3-large .bp3-tag::before, + .bp3-large .bp3-tag > *{ + margin-right:7px; } + .bp3-tag.bp3-large:empty::before, + .bp3-tag.bp3-large > :last-child, + .bp3-large .bp3-tag:empty::before, + .bp3-large .bp3-tag > :last-child{ + margin-right:0; } + .bp3-tag.bp3-large.bp3-round, + .bp3-large .bp3-tag.bp3-round{ + padding-left:12px; + padding-right:12px; } + .bp3-tag.bp3-intent-primary{ + background:#137cbd; + color:#ffffff; } + .bp3-tag.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.85); } + .bp3-tag.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.7); } + .bp3-tag.bp3-intent-success{ + background:#0f9960; + color:#ffffff; } + .bp3-tag.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.85); } + .bp3-tag.bp3-intent-success.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.7); } + .bp3-tag.bp3-intent-warning{ + background:#d9822b; + color:#ffffff; } + .bp3-tag.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.85); } + .bp3-tag.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.7); } + .bp3-tag.bp3-intent-danger{ + background:#db3737; + color:#ffffff; } + .bp3-tag.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.85); } + .bp3-tag.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.7); } + .bp3-tag.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-tag.bp3-minimal > .bp3-icon, .bp3-tag.bp3-minimal .bp3-icon-standard, .bp3-tag.bp3-minimal .bp3-icon-large{ + fill:#5c7080; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]){ + background-color:rgba(138, 155, 168, 0.2); + color:#182026; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover{ + background-color:rgba(92, 112, 128, 0.3); } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active, .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active{ + background-color:rgba(92, 112, 128, 0.4); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]){ + color:#f5f8fa; } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover{ + background-color:rgba(191, 204, 214, 0.3); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active{ + background-color:rgba(191, 204, 214, 0.4); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) > .bp3-icon, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-standard, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-large{ + fill:#a7b6c2; } + .bp3-tag.bp3-minimal.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-primary > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-large{ + fill:#137cbd; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.25); + color:#48aff0; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-success > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-large{ + fill:#0f9960; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.25); + color:#3dcc91; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-warning > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-large{ + fill:#d9822b; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.25); + color:#ffb366; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-danger > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-large{ + fill:#db3737; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.25); + color:#ff7373; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.45); } + +.bp3-tag-remove{ + background:none; + border:none; + color:inherit; + cursor:pointer; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + margin-bottom:-2px; + margin-right:-6px !important; + margin-top:-2px; + opacity:0.5; + padding:2px; + padding-left:0; } + .bp3-tag-remove:hover{ + background:none; + opacity:0.8; + text-decoration:none; } + .bp3-tag-remove:active{ + opacity:1; } + .bp3-tag-remove:empty::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + content:""; } + .bp3-large .bp3-tag-remove{ + margin-right:-10px !important; + padding:0 5px 0 0; } + .bp3-large .bp3-tag-remove:empty::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; } +.bp3-tag-input{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + cursor:text; + height:auto; + line-height:inherit; + min-height:30px; + padding-left:5px; + padding-right:0; } + .bp3-tag-input > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag-input > .bp3-tag-input-values{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag-input .bp3-tag-input-icon{ + color:#5c7080; + margin-left:2px; + margin-right:7px; + margin-top:7px; } + .bp3-tag-input .bp3-tag-input-values{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + -ms-flex-item-align:stretch; + align-self:stretch; + -ms-flex-wrap:wrap; + flex-wrap:wrap; + margin-right:7px; + margin-top:5px; + min-width:0; } + .bp3-tag-input .bp3-tag-input-values > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag-input .bp3-tag-input-values > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag-input .bp3-tag-input-values::before, + .bp3-tag-input .bp3-tag-input-values > *{ + margin-right:5px; } + .bp3-tag-input .bp3-tag-input-values:empty::before, + .bp3-tag-input .bp3-tag-input-values > :last-child{ + margin-right:0; } + .bp3-tag-input .bp3-tag-input-values:first-child .bp3-input-ghost:first-child{ + padding-left:5px; } + .bp3-tag-input .bp3-tag-input-values > *{ + margin-bottom:5px; } + .bp3-tag-input .bp3-tag{ + overflow-wrap:break-word; } + .bp3-tag-input .bp3-tag.bp3-active{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:0; + -moz-outline-radius:6px; } + .bp3-tag-input .bp3-input-ghost{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:20px; + width:80px; } + .bp3-tag-input .bp3-input-ghost:disabled, .bp3-tag-input .bp3-input-ghost.bp3-disabled{ + cursor:not-allowed; } + .bp3-tag-input .bp3-button, + .bp3-tag-input .bp3-spinner{ + margin:3px; + margin-left:0; } + .bp3-tag-input .bp3-button{ + min-height:24px; + min-width:24px; + padding:0 7px; } + .bp3-tag-input.bp3-large{ + height:auto; + min-height:40px; } + .bp3-tag-input.bp3-large::before, + .bp3-tag-input.bp3-large > *{ + margin-right:10px; } + .bp3-tag-input.bp3-large:empty::before, + .bp3-tag-input.bp3-large > :last-child{ + margin-right:0; } + .bp3-tag-input.bp3-large .bp3-tag-input-icon{ + margin-left:5px; + margin-top:10px; } + .bp3-tag-input.bp3-large .bp3-input-ghost{ + line-height:30px; } + .bp3-tag-input.bp3-large .bp3-button{ + min-height:30px; + min-width:30px; + padding:5px 10px; + margin:5px; + margin-left:0; } + .bp3-tag-input.bp3-large .bp3-spinner{ + margin:8px; + margin-left:0; } + .bp3-tag-input.bp3-active{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-success{ + -webkit-box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-tag-input .bp3-tag-input-icon, .bp3-tag-input.bp3-dark .bp3-tag-input-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-tag-input .bp3-input-ghost, .bp3-tag-input.bp3-dark .bp3-input-ghost{ + color:#f5f8fa; } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-webkit-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-moz-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost:-ms-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-ms-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input.bp3-active, .bp3-tag-input.bp3-dark.bp3-active{ + background-color:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-primary, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-success, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-success{ + -webkit-box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-warning, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-danger, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-input-ghost{ + background:none; + border:none; + -webkit-box-shadow:none; + box-shadow:none; + padding:0; } + .bp3-input-ghost::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost:focus{ + outline:none !important; } +.bp3-toast{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + margin:20px 0 0; + max-width:500px; + min-width:300px; + pointer-events:all; + position:relative !important; } + .bp3-toast.bp3-toast-enter, .bp3-toast.bp3-toast-appear{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); } + .bp3-toast.bp3-toast-enter-active, .bp3-toast.bp3-toast-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-toast.bp3-toast-enter ~ .bp3-toast, .bp3-toast.bp3-toast-appear ~ .bp3-toast{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); } + .bp3-toast.bp3-toast-enter-active ~ .bp3-toast, .bp3-toast.bp3-toast-appear-active ~ .bp3-toast{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-toast.bp3-toast-exit{ + opacity:1; + -webkit-filter:blur(0); + filter:blur(0); } + .bp3-toast.bp3-toast-exit-active{ + opacity:0; + -webkit-filter:blur(10px); + filter:blur(10px); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:opacity, filter; + transition-property:opacity, filter, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-toast.bp3-toast-exit ~ .bp3-toast{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-toast.bp3-toast-exit-active ~ .bp3-toast{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); + -webkit-transition-delay:50ms; + transition-delay:50ms; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-toast .bp3-button-group{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + padding:5px; + padding-left:0; } + .bp3-toast > .bp3-icon{ + color:#5c7080; + margin:12px; + margin-right:0; } + .bp3-toast.bp3-dark, + .bp3-dark .bp3-toast{ + background-color:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-toast.bp3-dark > .bp3-icon, + .bp3-dark .bp3-toast > .bp3-icon{ + color:#a7b6c2; } + .bp3-toast[class*="bp3-intent-"] a{ + color:rgba(255, 255, 255, 0.7); } + .bp3-toast[class*="bp3-intent-"] a:hover{ + color:#ffffff; } + .bp3-toast[class*="bp3-intent-"] > .bp3-icon{ + color:#ffffff; } + .bp3-toast[class*="bp3-intent-"] .bp3-button, .bp3-toast[class*="bp3-intent-"] .bp3-button::before, + .bp3-toast[class*="bp3-intent-"] .bp3-button .bp3-icon, .bp3-toast[class*="bp3-intent-"] .bp3-button:active{ + color:rgba(255, 255, 255, 0.7) !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button:focus{ + outline-color:rgba(255, 255, 255, 0.5); } + .bp3-toast[class*="bp3-intent-"] .bp3-button:hover{ + background-color:rgba(255, 255, 255, 0.15) !important; + color:#ffffff !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button:active{ + background-color:rgba(255, 255, 255, 0.3) !important; + color:#ffffff !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button::after{ + background:rgba(255, 255, 255, 0.3) !important; } + .bp3-toast.bp3-intent-primary{ + background-color:#137cbd; + color:#ffffff; } + .bp3-toast.bp3-intent-success{ + background-color:#0f9960; + color:#ffffff; } + .bp3-toast.bp3-intent-warning{ + background-color:#d9822b; + color:#ffffff; } + .bp3-toast.bp3-intent-danger{ + background-color:#db3737; + color:#ffffff; } + +.bp3-toast-message{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + padding:11px; + word-break:break-word; } + +.bp3-toast-container{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box !important; + display:-ms-flexbox !important; + display:flex !important; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + left:0; + overflow:hidden; + padding:0 20px 20px; + pointer-events:none; + position:fixed; + right:0; + z-index:40; } + .bp3-toast-container.bp3-toast-container-top{ + top:0; } + .bp3-toast-container.bp3-toast-container-bottom{ + bottom:0; + -webkit-box-orient:vertical; + -webkit-box-direction:reverse; + -ms-flex-direction:column-reverse; + flex-direction:column-reverse; + top:auto; } + .bp3-toast-container.bp3-toast-container-left{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; } + .bp3-toast-container.bp3-toast-container-right{ + -webkit-box-align:end; + -ms-flex-align:end; + align-items:flex-end; } + +.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active), +.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active) ~ .bp3-toast, .bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active), +.bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active) ~ .bp3-toast, +.bp3-toast-container-bottom .bp3-toast.bp3-toast-exit-active ~ .bp3-toast, +.bp3-toast-container-bottom .bp3-toast.bp3-toast-leave-active ~ .bp3-toast{ + -webkit-transform:translateY(60px); + transform:translateY(60px); } +.bp3-tooltip{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-tooltip .bp3-popover-arrow{ + height:22px; + position:absolute; + width:22px; } + .bp3-tooltip .bp3-popover-arrow::before{ + height:14px; + margin:4px; + width:14px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip{ + margin-bottom:11px; + margin-top:-11px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow{ + bottom:-8px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(-90deg); + transform:rotate(-90deg); } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip{ + margin-left:11px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow{ + left:-8px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(0); + transform:rotate(0); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip{ + margin-top:11px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow{ + top:-8px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip{ + margin-left:-11px; + margin-right:11px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow{ + right:-8px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(180deg); + transform:rotate(180deg); } + .bp3-tether-element-attached-middle > .bp3-tooltip > .bp3-popover-arrow{ + top:50%; + -webkit-transform:translateY(-50%); + transform:translateY(-50%); } + .bp3-tether-element-attached-center > .bp3-tooltip > .bp3-popover-arrow{ + right:50%; + -webkit-transform:translateX(50%); + transform:translateX(50%); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow{ + top:-0.22183px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow{ + right:-0.22183px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow{ + left:-0.22183px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow{ + bottom:-0.22183px; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:top left; + transform-origin:top left; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:top center; + transform-origin:top center; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:top right; + transform-origin:top right; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:center left; + transform-origin:center left; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:center center; + transform-origin:center center; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:center right; + transform-origin:center right; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:bottom left; + transform-origin:bottom left; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:bottom center; + transform-origin:bottom center; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:bottom right; + transform-origin:bottom right; } + .bp3-tooltip .bp3-popover-content{ + background:#394b59; + color:#f5f8fa; } + .bp3-tooltip .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); } + .bp3-tooltip .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.1; } + .bp3-tooltip .bp3-popover-arrow-fill{ + fill:#394b59; } + .bp3-popover-enter > .bp3-tooltip, .bp3-popover-appear > .bp3-tooltip{ + -webkit-transform:scale(0.8); + transform:scale(0.8); } + .bp3-popover-enter-active > .bp3-tooltip, .bp3-popover-appear-active > .bp3-tooltip{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover-exit > .bp3-tooltip{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-tooltip{ + -webkit-transform:scale(0.8); + transform:scale(0.8); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tooltip .bp3-popover-content{ + padding:10px 12px; } + .bp3-tooltip.bp3-dark, + .bp3-dark .bp3-tooltip{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-tooltip.bp3-dark .bp3-popover-content, + .bp3-dark .bp3-tooltip .bp3-popover-content{ + background:#e1e8ed; + color:#394b59; } + .bp3-tooltip.bp3-dark .bp3-popover-arrow::before, + .bp3-dark .bp3-tooltip .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); } + .bp3-tooltip.bp3-dark .bp3-popover-arrow-border, + .bp3-dark .bp3-tooltip .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.2; } + .bp3-tooltip.bp3-dark .bp3-popover-arrow-fill, + .bp3-dark .bp3-tooltip .bp3-popover-arrow-fill{ + fill:#e1e8ed; } + .bp3-tooltip.bp3-intent-primary .bp3-popover-content{ + background:#137cbd; + color:#ffffff; } + .bp3-tooltip.bp3-intent-primary .bp3-popover-arrow-fill{ + fill:#137cbd; } + .bp3-tooltip.bp3-intent-success .bp3-popover-content{ + background:#0f9960; + color:#ffffff; } + .bp3-tooltip.bp3-intent-success .bp3-popover-arrow-fill{ + fill:#0f9960; } + .bp3-tooltip.bp3-intent-warning .bp3-popover-content{ + background:#d9822b; + color:#ffffff; } + .bp3-tooltip.bp3-intent-warning .bp3-popover-arrow-fill{ + fill:#d9822b; } + .bp3-tooltip.bp3-intent-danger .bp3-popover-content{ + background:#db3737; + color:#ffffff; } + .bp3-tooltip.bp3-intent-danger .bp3-popover-arrow-fill{ + fill:#db3737; } + +.bp3-tooltip-indicator{ + border-bottom:dotted 1px; + cursor:help; } +.bp3-tree .bp3-icon, .bp3-tree .bp3-icon-standard, .bp3-tree .bp3-icon-large{ + color:#5c7080; } + .bp3-tree .bp3-icon.bp3-intent-primary, .bp3-tree .bp3-icon-standard.bp3-intent-primary, .bp3-tree .bp3-icon-large.bp3-intent-primary{ + color:#137cbd; } + .bp3-tree .bp3-icon.bp3-intent-success, .bp3-tree .bp3-icon-standard.bp3-intent-success, .bp3-tree .bp3-icon-large.bp3-intent-success{ + color:#0f9960; } + .bp3-tree .bp3-icon.bp3-intent-warning, .bp3-tree .bp3-icon-standard.bp3-intent-warning, .bp3-tree .bp3-icon-large.bp3-intent-warning{ + color:#d9822b; } + .bp3-tree .bp3-icon.bp3-intent-danger, .bp3-tree .bp3-icon-standard.bp3-intent-danger, .bp3-tree .bp3-icon-large.bp3-intent-danger{ + color:#db3737; } + +.bp3-tree-node-list{ + list-style:none; + margin:0; + padding-left:0; } + +.bp3-tree-root{ + background-color:transparent; + cursor:default; + padding-left:0; + position:relative; } + +.bp3-tree-node-content-0{ + padding-left:0px; } + +.bp3-tree-node-content-1{ + padding-left:23px; } + +.bp3-tree-node-content-2{ + padding-left:46px; } + +.bp3-tree-node-content-3{ + padding-left:69px; } + +.bp3-tree-node-content-4{ + padding-left:92px; } + +.bp3-tree-node-content-5{ + padding-left:115px; } + +.bp3-tree-node-content-6{ + padding-left:138px; } + +.bp3-tree-node-content-7{ + padding-left:161px; } + +.bp3-tree-node-content-8{ + padding-left:184px; } + +.bp3-tree-node-content-9{ + padding-left:207px; } + +.bp3-tree-node-content-10{ + padding-left:230px; } + +.bp3-tree-node-content-11{ + padding-left:253px; } + +.bp3-tree-node-content-12{ + padding-left:276px; } + +.bp3-tree-node-content-13{ + padding-left:299px; } + +.bp3-tree-node-content-14{ + padding-left:322px; } + +.bp3-tree-node-content-15{ + padding-left:345px; } + +.bp3-tree-node-content-16{ + padding-left:368px; } + +.bp3-tree-node-content-17{ + padding-left:391px; } + +.bp3-tree-node-content-18{ + padding-left:414px; } + +.bp3-tree-node-content-19{ + padding-left:437px; } + +.bp3-tree-node-content-20{ + padding-left:460px; } + +.bp3-tree-node-content{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + height:30px; + padding-right:5px; + width:100%; } + .bp3-tree-node-content:hover{ + background-color:rgba(191, 204, 214, 0.4); } + +.bp3-tree-node-caret, +.bp3-tree-node-caret-none{ + min-width:30px; } + +.bp3-tree-node-caret{ + color:#5c7080; + cursor:pointer; + padding:7px; + -webkit-transform:rotate(0deg); + transform:rotate(0deg); + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tree-node-caret:hover{ + color:#182026; } + .bp3-dark .bp3-tree-node-caret{ + color:#a7b6c2; } + .bp3-dark .bp3-tree-node-caret:hover{ + color:#f5f8fa; } + .bp3-tree-node-caret.bp3-tree-node-caret-open{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tree-node-caret.bp3-icon-standard::before{ + content:""; } + +.bp3-tree-node-icon{ + margin-right:7px; + position:relative; } + +.bp3-tree-node-label{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-tree-node-label span{ + display:inline; } + +.bp3-tree-node-secondary-label{ + padding:0 5px; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-tree-node-secondary-label .bp3-popover-wrapper, + .bp3-tree-node-secondary-label .bp3-popover-target{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + +.bp3-tree-node.bp3-disabled .bp3-tree-node-content{ + background-color:inherit; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-tree-node.bp3-disabled .bp3-tree-node-caret, +.bp3-tree-node.bp3-disabled .bp3-tree-node-icon{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content{ + background-color:#137cbd; } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content, + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon, .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon-standard, .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon-large{ + color:#ffffff; } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-tree-node-caret::before{ + color:rgba(255, 255, 255, 0.7); } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-tree-node-caret:hover::before{ + color:#ffffff; } + +.bp3-dark .bp3-tree-node-content:hover{ + background-color:rgba(92, 112, 128, 0.3); } + +.bp3-dark .bp3-tree .bp3-icon, .bp3-dark .bp3-tree .bp3-icon-standard, .bp3-dark .bp3-tree .bp3-icon-large{ + color:#a7b6c2; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-primary, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-primary, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-primary{ + color:#137cbd; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-success, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-success, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-success{ + color:#0f9960; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-warning, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-warning, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-warning{ + color:#d9822b; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-danger, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-danger, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-danger{ + color:#db3737; } + +.bp3-dark .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content{ + background-color:#137cbd; } +.bp3-omnibar{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + left:calc(50% - 250px); + top:20vh; + width:500px; + z-index:21; } + .bp3-omnibar.bp3-overlay-enter, .bp3-omnibar.bp3-overlay-appear{ + -webkit-filter:blur(20px); + filter:blur(20px); + opacity:0.2; } + .bp3-omnibar.bp3-overlay-enter-active, .bp3-omnibar.bp3-overlay-appear-active{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:filter, opacity; + transition-property:filter, opacity, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-omnibar.bp3-overlay-exit{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; } + .bp3-omnibar.bp3-overlay-exit-active{ + -webkit-filter:blur(20px); + filter:blur(20px); + opacity:0.2; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:filter, opacity; + transition-property:filter, opacity, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-omnibar .bp3-input{ + background-color:transparent; + border-radius:0; } + .bp3-omnibar .bp3-input, .bp3-omnibar .bp3-input:focus{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-omnibar .bp3-menu{ + background-color:transparent; + border-radius:0; + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + max-height:calc(60vh - 40px); + overflow:auto; } + .bp3-omnibar .bp3-menu:empty{ + display:none; } + .bp3-dark .bp3-omnibar, .bp3-omnibar.bp3-dark{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); } + +.bp3-omnibar-overlay .bp3-overlay-backdrop{ + background-color:rgba(16, 22, 26, 0.2); } + +.bp3-select-popover .bp3-popover-content{ + padding:5px; } + +.bp3-select-popover .bp3-input-group{ + margin-bottom:0; } + +.bp3-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; + padding:0; } + .bp3-select-popover .bp3-menu:not(:first-child){ + padding-top:5px; } + +.bp3-multi-select{ + min-width:150px; } + +.bp3-multi-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; } + +.bp3-select-popover .bp3-popover-content{ + padding:5px; } + +.bp3-select-popover .bp3-input-group{ + margin-bottom:0; } + +.bp3-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; + padding:0; } + .bp3-select-popover .bp3-menu:not(:first-child){ + padding-top:5px; } +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */ + +/** + * (DEPRECATED) Support for consuming icons as CSS background images + */ + +/* Icons urls */ + +:root { + --jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDhoLTIuODFjLS40NS0uNzgtMS4wNy0xLjQ1LTEuODItMS45NkwxNyA0LjQxIDE1LjU5IDNsLTIuMTcgMi4xN0MxMi45NiA1LjA2IDEyLjQ5IDUgMTIgNWMtLjQ5IDAtLjk2LjA2LTEuNDEuMTdMOC40MSAzIDcgNC40MWwxLjYyIDEuNjNDNy44OCA2LjU1IDcuMjYgNy4yMiA2LjgxIDhINHYyaDIuMDljLS4wNS4zMy0uMDkuNjYtLjA5IDF2MUg0djJoMnYxYzAgLjM0LjA0LjY3LjA5IDFINHYyaDIuODFjMS4wNCAxLjc5IDIuOTcgMyA1LjE5IDNzNC4xNS0xLjIxIDUuMTktM0gyMHYtMmgtMi4wOWMuMDUtLjMzLjA5LS42Ni4wOS0xdi0xaDJ2LTJoLTJ2LTFjMC0uMzQtLjA0LS42Ny0uMDktMUgyMFY4em0tNiA4aC00di0yaDR2MnptMC00aC00di0yaDR2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=); + --jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==); + --jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1pY29uLWJyYW5kMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNmZmYiPgogICAgPHBhdGggZD0iTTEwNSAxMjcuM2g0MHYxMi44aC00MHpNNTEuMSA3N0w3NCA5OS45bC0yMy4zIDIzLjMgMTAuNSAxMC41IDIzLjMtMjMuM0w5NSA5OS45IDg0LjUgODkuNCA2MS42IDY2LjV6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==); + --jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=); + --jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==); + --jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=); + --jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K); + --jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNGOUE4MjUiPgogICAgPHBhdGggZD0iTTIwLjIgMTEuOGMtMS42IDAtMS43LjUtMS43IDEgMCAuNC4xLjkuMSAxLjMuMS41LjEuOS4xIDEuMyAwIDEuNy0xLjQgMi4zLTMuNSAyLjNoLS45di0xLjloLjVjMS4xIDAgMS40IDAgMS40LS44IDAtLjMgMC0uNi0uMS0xIDAtLjQtLjEtLjgtLjEtMS4yIDAtMS4zIDAtMS44IDEuMy0yLTEuMy0uMi0xLjMtLjctMS4zLTIgMC0uNC4xLS44LjEtMS4yLjEtLjQuMS0uNy4xLTEgMC0uOC0uNC0uNy0xLjQtLjhoLS41VjQuMWguOWMyLjIgMCAzLjUuNyAzLjUgMi4zIDAgLjQtLjEuOS0uMSAxLjMtLjEuNS0uMS45LS4xIDEuMyAwIC41LjIgMSAxLjcgMXYxLjh6TTEuOCAxMC4xYzEuNiAwIDEuNy0uNSAxLjctMSAwLS40LS4xLS45LS4xLTEuMy0uMS0uNS0uMS0uOS0uMS0xLjMgMC0xLjYgMS40LTIuMyAzLjUtMi4zaC45djEuOWgtLjVjLTEgMC0xLjQgMC0xLjQuOCAwIC4zIDAgLjYuMSAxIDAgLjIuMS42LjEgMSAwIDEuMyAwIDEuOC0xLjMgMkM2IDExLjIgNiAxMS43IDYgMTNjMCAuNC0uMS44LS4xIDEuMi0uMS4zLS4xLjctLjEgMSAwIC44LjMuOCAxLjQuOGguNXYxLjloLS45Yy0yLjEgMC0zLjUtLjYtMy41LTIuMyAwLS40LjEtLjkuMS0xLjMuMS0uNS4xLS45LjEtMS4zIDAtLjUtLjItMS0xLjctMXYtMS45eiIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSIxMy44IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY3g9IjExIiBjeT0iOC4yIiByPSIyLjEiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgPGcgY2xhc3M9ImpwLWljb24td2FybjAiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=); + --jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K); + --jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==); + --jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==); + --jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=); + --jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4=); + --jp-icon-listings-info: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTAuOTc4IDUwLjk3OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAuOTc4IDUwLjk3ODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPGc+DQoJCTxnPg0KCQkJPHBhdGggc3R5bGU9ImZpbGw6IzAxMDAwMjsiIGQ9Ik00My41Miw3LjQ1OEMzOC43MTEsMi42NDgsMzIuMzA3LDAsMjUuNDg5LDBDMTguNjcsMCwxMi4yNjYsMi42NDgsNy40NTgsNy40NTgNCgkJCQljLTkuOTQzLDkuOTQxLTkuOTQzLDI2LjExOSwwLDM2LjA2MmM0LjgwOSw0LjgwOSwxMS4yMTIsNy40NTYsMTguMDMxLDcuNDU4YzAsMCwwLjAwMSwwLDAuMDAyLDANCgkJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoNCgkJCQkgTTQyLjEwNiw0Mi4xMDVjLTQuNDMyLDQuNDMxLTEwLjMzMiw2Ljg3Mi0xNi42MTUsNi44NzJoLTAuMDAyYy02LjI4NS0wLjAwMS0xMi4xODctMi40NDEtMTYuNjE3LTYuODcyDQoJCQkJYy05LjE2Mi05LjE2My05LjE2Mi0yNC4wNzEsMC0zMy4yMzNDMTMuMzAzLDQuNDQsMTkuMjA0LDIsMjUuNDg5LDJjNi4yODQsMCwxMi4xODYsMi40NCwxNi42MTcsNi44NzINCgkJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4NCgkJPC9nPg0KCQk8Zz4NCgkJCTxwYXRoIHN0eWxlPSJmaWxsOiMwMTAwMDI7IiBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1Mw0KCQkJCWMwLjQ2OC0wLjUzNiwwLjkyMy0xLjA2MiwxLjM2Ny0xLjU3NWMwLjYyNi0wLjc1MywxLjEwNC0xLjQ3OCwxLjQzNi0yLjE3NWMwLjMzMS0wLjcwNywwLjQ5NS0xLjU0MSwwLjQ5NS0yLjUNCgkJCQljMC0xLjA5Ni0wLjI2LTIuMDg4LTAuNzc5LTIuOTc5Yy0wLjU2NS0wLjg3OS0xLjUwMS0xLjMzNi0yLjgwNi0xLjM2OWMtMS44MDIsMC4wNTctMi45ODUsMC42NjctMy41NSwxLjgzMg0KCQkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkNCgkJCQljMS4wNjItMS42NCwyLjg1NS0yLjQ4MSw1LjM3OC0yLjUyN2MyLjE2LDAuMDIzLDMuODc0LDAuNjA4LDUuMTQxLDEuNzU4YzEuMjc4LDEuMTYsMS45MjksMi43NjQsMS45NSw0LjgxMQ0KCQkJCWMwLDEuMTQyLTAuMTM3LDIuMTExLTAuNDEsMi45MTFjLTAuMzA5LDAuODQ1LTAuNzMxLDEuNTkzLTEuMjY4LDIuMjQzYy0wLjQ5MiwwLjY1LTEuMDY4LDEuMzE4LTEuNzMsMi4wMDINCgkJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5DQoJCQkJQzI2LjU4OSwzMi4yMTgsMjMuNTc4LDMyLjIxOCwyMy41NzgsMzIuMjE4eiBNMjMuNTc4LDM4LjIydi0zLjQ4NGgzLjA3NnYzLjQ4NEgyMy41Nzh6Ii8+DQoJCTwvZz4NCgk8L2c+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==); + --jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==); + --jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=); + --jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==); + --jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K); + --jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMEQ0N0ExIj4KICAgIDxwYXRoIGQ9Ik0xMS4xIDYuOVY1LjhINi45YzAtLjUgMC0xLjMuMi0xLjYuNC0uNy44LTEuMSAxLjctMS40IDEuNy0uMyAyLjUtLjMgMy45LS4xIDEgLjEgMS45LjkgMS45IDEuOXY0LjJjMCAuNS0uOSAxLjYtMiAxLjZIOC44Yy0xLjUgMC0yLjQgMS40LTIuNCAyLjh2Mi4ySDQuN0MzLjUgMTUuMSAzIDE0IDMgMTMuMVY5Yy0uMS0xIC42LTIgMS44LTIgMS41LS4xIDYuMy0uMSA2LjMtLjF6Ii8+CiAgICA8cGF0aCBkPSJNMTAuOSAxNS4xdjEuMWg0LjJjMCAuNSAwIDEuMy0uMiAxLjYtLjQuNy0uOCAxLjEtMS43IDEuNC0xLjcuMy0yLjUuMy0zLjkuMS0xLS4xLTEuOS0uOS0xLjktMS45di00LjJjMC0uNS45LTEuNiAyLTEuNmgzLjhjMS41IDAgMi40LTEuNCAyLjQtMi44VjYuNmgxLjdDMTguNSA2LjkgMTkgOCAxOSA4LjlWMTNjMCAxLS43IDIuMS0xLjkgMi4xaC02LjJ6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==); + --jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K); + --jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K); + --jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==); + --jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=); + --jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==); + --jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4=); + --jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMikiIGZpbGw9IiMzMzMzMzMiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uLWFjY2VudDIganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGQ9Ik01LjA1NjY0IDguNzYxNzJDNS4wNTY2NCA4LjU5NzY2IDUuMDMxMjUgOC40NTMxMiA0Ljk4MDQ3IDguMzI4MTJDNC45MzM1OSA4LjE5OTIyIDQuODU1NDcgOC4wODIwMyA0Ljc0NjA5IDcuOTc2NTZDNC42NDA2MiA3Ljg3MTA5IDQuNSA3Ljc3NTM5IDQuMzI0MjIgNy42ODk0NUM0LjE1MjM0IDcuNTk5NjEgMy45NDMzNiA3LjUxMTcyIDMuNjk3MjcgNy40MjU3OEMzLjMwMjczIDcuMjg1MTYgMi45NDMzNiA3LjEzNjcyIDIuNjE5MTQgNi45ODA0N0MyLjI5NDkyIDYuODI0MjIgMi4wMTc1OCA2LjY0MjU4IDEuNzg3MTEgNi40MzU1NUMxLjU2MDU1IDYuMjI4NTIgMS4zODQ3NyA1Ljk4ODI4IDEuMjU5NzcgNS43MTQ4NEMxLjEzNDc3IDUuNDM3NSAxLjA3MjI3IDUuMTA5MzggMS4wNzIyNyA0LjczMDQ3QzEuMDcyMjcgNC4zOTg0NCAxLjEyODkxIDQuMDk1NyAxLjI0MjE5IDMuODIyMjdDMS4zNTU0NyAzLjU0NDkyIDEuNTE1NjIgMy4zMDQ2OSAxLjcyMjY2IDMuMTAxNTZDMS45Mjk2OSAyLjg5ODQ0IDIuMTc5NjkgMi43MzQzNyAyLjQ3MjY2IDIuNjA5MzhDMi43NjU2MiAyLjQ4NDM4IDMuMDkxOCAyLjQwNDMgMy40NTExNyAyLjM2OTE0VjEuMTA5MzhINC4zODg2N1YyLjM4MDg2QzQuNzQwMjMgMi40Mjc3MyA1LjA1NjY0IDIuNTIzNDQgNS4zMzc4OSAyLjY2Nzk3QzUuNjE5MTQgMi44MTI1IDUuODU3NDIgMy4wMDE5NSA2LjA1MjczIDMuMjM2MzNDNi4yNTE5NSAzLjQ2NjggNi40MDQzIDMuNzQwMjMgNi41MDk3NyA0LjA1NjY0QzYuNjE5MTQgNC4zNjkxNCA2LjY3MzgzIDQuNzIwNyA2LjY3MzgzIDUuMTExMzNINS4wNDQ5MkM1LjA0NDkyIDQuNjM4NjcgNC45Mzc1IDQuMjgxMjUgNC43MjI2NiA0LjAzOTA2QzQuNTA3ODEgMy43OTI5NyA0LjIxNjggMy42Njk5MiAzLjg0OTYxIDMuNjY5OTJDMy42NTAzOSAzLjY2OTkyIDMuNDc2NTYgMy42OTcyNyAzLjMyODEyIDMuNzUxOTVDMy4xODM1OSAzLjgwMjczIDMuMDY0NDUgMy44NzY5NSAyLjk3MDcgMy45NzQ2MUMyLjg3Njk1IDQuMDY4MzYgMi44MDY2NCA0LjE3OTY5IDIuNzU5NzcgNC4zMDg1OUMyLjcxNjggNC40Mzc1IDIuNjk1MzEgNC41NzgxMiAyLjY5NTMxIDQuNzMwNDdDMi42OTUzMSA0Ljg4MjgxIDIuNzE2OCA1LjAxOTUzIDIuNzU5NzcgNS4xNDA2MkMyLjgwNjY0IDUuMjU3ODEgMi44ODI4MSA1LjM2NzE5IDIuOTg4MjggNS40Njg3NUMzLjA5NzY2IDUuNTcwMzEgMy4yNDAyMyA1LjY2Nzk3IDMuNDE2MDIgNS43NjE3MkMzLjU5MTggNS44NTE1NiAzLjgxMDU1IDUuOTQzMzYgNC4wNzIyNyA2LjAzNzExQzQuNDY2OCA2LjE4NTU1IDQuODI0MjIgNi4zMzk4NCA1LjE0NDUzIDYuNUM1LjQ2NDg0IDYuNjU2MjUgNS43MzgyOCA2LjgzOTg0IDUuOTY0ODQgNy4wNTA3OEM2LjE5NTMxIDcuMjU3ODEgNi4zNzEwOSA3LjUgNi40OTIxOSA3Ljc3NzM0QzYuNjE3MTkgOC4wNTA3OCA2LjY3OTY5IDguMzc1IDYuNjc5NjkgOC43NUM2LjY3OTY5IDkuMDkzNzUgNi42MjMwNSA5LjQwNDMgNi41MDk3NyA5LjY4MTY0QzYuMzk2NDggOS45NTUwOCA2LjIzNDM4IDEwLjE5MTQgNi4wMjM0NCAxMC4zOTA2QzUuODEyNSAxMC41ODk4IDUuNTU4NTkgMTAuNzUgNS4yNjE3MiAxMC44NzExQzQuOTY0ODQgMTAuOTg4MyA0LjYzMjgxIDExLjA2NDUgNC4yNjU2MiAxMS4wOTk2VjEyLjI0OEgzLjMzMzk4VjExLjA5OTZDMy4wMDE5NSAxMS4wNjg0IDIuNjc5NjkgMTAuOTk2MSAyLjM2NzE5IDEwLjg4MjhDMi4wNTQ2OSAxMC43NjU2IDEuNzc3MzQgMTAuNTk3NyAxLjUzNTE2IDEwLjM3ODlDMS4yOTY4OCAxMC4xNjAyIDEuMTA1NDcgOS44ODQ3NyAwLjk2MDkzOCA5LjU1MjczQzAuODE2NDA2IDkuMjE2OCAwLjc0NDE0MSA4LjgxNDQ1IDAuNzQ0MTQxIDguMzQ1N0gyLjM3ODkxQzIuMzc4OTEgOC42MjY5NSAyLjQxOTkyIDguODYzMjggMi41MDE5NSA5LjA1NDY5QzIuNTgzOTggOS4yNDIxOSAyLjY4OTQ1IDkuMzkyNTggMi44MTgzNiA5LjUwNTg2QzIuOTUxMTcgOS42MTUyMyAzLjEwMTU2IDkuNjkzMzYgMy4yNjk1MyA5Ljc0MDIzQzMuNDM3NSA5Ljc4NzExIDMuNjA5MzggOS44MTA1NSAzLjc4NTE2IDkuODEwNTVDNC4yMDMxMiA5LjgxMDU1IDQuNTE5NTMgOS43MTI4OSA0LjczNDM4IDkuNTE3NThDNC45NDkyMiA5LjMyMjI3IDUuMDU2NjQgOS4wNzAzMSA1LjA1NjY0IDguNzYxNzJaTTEzLjQxOCAxMi4yNzE1SDguMDc0MjJWMTFIMTMuNDE4VjEyLjI3MTVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjk1MjY0IDYpIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K); + --jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTUgMTVIM3YyaDEydi0yem0wLThIM3YyaDEyVjd6TTMgMTNoMTh2LTJIM3Yyem0wIDhoMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6Ii8+Cjwvc3ZnPgo=); + --jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgoJPHBhdGggZD0iTTcsNUgyMVY3SDdWNU03LDEzVjExSDIxVjEzSDdNNCw0LjVBMS41LDEuNSAwIDAsMSA1LjUsNkExLjUsMS41IDAgMCwxIDQsNy41QTEuNSwxLjUgMCAwLDEgMi41LDZBMS41LDEuNSAwIDAsMSA0LDQuNU00LDEwLjVBMS41LDEuNSAwIDAsMSA1LjUsMTJBMS41LDEuNSAwIDAsMSA0LDEzLjVBMS41LDEuNSAwIDAsMSAyLjUsMTJBMS41LDEuNSAwIDAsMSA0LDEwLjVNNywxOVYxN0gyMVYxOUg3TTQsMTYuNUExLjUsMS41IDAgMCwxIDUuNSwxOEExLjUsMS41IDAgMCwxIDQsMTkuNUExLjUsMS41IDAgMCwxIDIuNSwxOEExLjUsMS41IDAgMCwxIDQsMTYuNVoiIC8+Cjwvc3ZnPgo=); + --jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4=); + --jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K); + --jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K); +} + +/* Icon CSS class declarations */ + +.jp-AddIcon { + background-image: var(--jp-icon-add); +} +.jp-BugIcon { + background-image: var(--jp-icon-bug); +} +.jp-BuildIcon { + background-image: var(--jp-icon-build); +} +.jp-CaretDownEmptyIcon { + background-image: var(--jp-icon-caret-down-empty); +} +.jp-CaretDownEmptyThinIcon { + background-image: var(--jp-icon-caret-down-empty-thin); +} +.jp-CaretDownIcon { + background-image: var(--jp-icon-caret-down); +} +.jp-CaretLeftIcon { + background-image: var(--jp-icon-caret-left); +} +.jp-CaretRightIcon { + background-image: var(--jp-icon-caret-right); +} +.jp-CaretUpEmptyThinIcon { + background-image: var(--jp-icon-caret-up-empty-thin); +} +.jp-CaretUpIcon { + background-image: var(--jp-icon-caret-up); +} +.jp-CaseSensitiveIcon { + background-image: var(--jp-icon-case-sensitive); +} +.jp-CheckIcon { + background-image: var(--jp-icon-check); +} +.jp-CircleEmptyIcon { + background-image: var(--jp-icon-circle-empty); +} +.jp-CircleIcon { + background-image: var(--jp-icon-circle); +} +.jp-ClearIcon { + background-image: var(--jp-icon-clear); +} +.jp-CloseIcon { + background-image: var(--jp-icon-close); +} +.jp-CodeIcon { + background-image: var(--jp-icon-code); +} +.jp-ConsoleIcon { + background-image: var(--jp-icon-console); +} +.jp-CopyIcon { + background-image: var(--jp-icon-copy); +} +.jp-CutIcon { + background-image: var(--jp-icon-cut); +} +.jp-DownloadIcon { + background-image: var(--jp-icon-download); +} +.jp-EditIcon { + background-image: var(--jp-icon-edit); +} +.jp-EllipsesIcon { + background-image: var(--jp-icon-ellipses); +} +.jp-ExtensionIcon { + background-image: var(--jp-icon-extension); +} +.jp-FastForwardIcon { + background-image: var(--jp-icon-fast-forward); +} +.jp-FileIcon { + background-image: var(--jp-icon-file); +} +.jp-FileUploadIcon { + background-image: var(--jp-icon-file-upload); +} +.jp-FilterListIcon { + background-image: var(--jp-icon-filter-list); +} +.jp-FolderIcon { + background-image: var(--jp-icon-folder); +} +.jp-Html5Icon { + background-image: var(--jp-icon-html5); +} +.jp-ImageIcon { + background-image: var(--jp-icon-image); +} +.jp-InspectorIcon { + background-image: var(--jp-icon-inspector); +} +.jp-JsonIcon { + background-image: var(--jp-icon-json); +} +.jp-JupyterFaviconIcon { + background-image: var(--jp-icon-jupyter-favicon); +} +.jp-JupyterIcon { + background-image: var(--jp-icon-jupyter); +} +.jp-JupyterlabWordmarkIcon { + background-image: var(--jp-icon-jupyterlab-wordmark); +} +.jp-KernelIcon { + background-image: var(--jp-icon-kernel); +} +.jp-KeyboardIcon { + background-image: var(--jp-icon-keyboard); +} +.jp-LauncherIcon { + background-image: var(--jp-icon-launcher); +} +.jp-LineFormIcon { + background-image: var(--jp-icon-line-form); +} +.jp-LinkIcon { + background-image: var(--jp-icon-link); +} +.jp-ListIcon { + background-image: var(--jp-icon-list); +} +.jp-ListingsInfoIcon { + background-image: var(--jp-icon-listings-info); +} +.jp-MarkdownIcon { + background-image: var(--jp-icon-markdown); +} +.jp-NewFolderIcon { + background-image: var(--jp-icon-new-folder); +} +.jp-NotTrustedIcon { + background-image: var(--jp-icon-not-trusted); +} +.jp-NotebookIcon { + background-image: var(--jp-icon-notebook); +} +.jp-NumberingIcon { + background-image: var(--jp-icon-numbering); +} +.jp-OfflineBoltIcon { + background-image: var(--jp-icon-offline-bolt); +} +.jp-PaletteIcon { + background-image: var(--jp-icon-palette); +} +.jp-PasteIcon { + background-image: var(--jp-icon-paste); +} +.jp-PdfIcon { + background-image: var(--jp-icon-pdf); +} +.jp-PythonIcon { + background-image: var(--jp-icon-python); +} +.jp-RKernelIcon { + background-image: var(--jp-icon-r-kernel); +} +.jp-ReactIcon { + background-image: var(--jp-icon-react); +} +.jp-RedoIcon { + background-image: var(--jp-icon-redo); +} +.jp-RefreshIcon { + background-image: var(--jp-icon-refresh); +} +.jp-RegexIcon { + background-image: var(--jp-icon-regex); +} +.jp-RunIcon { + background-image: var(--jp-icon-run); +} +.jp-RunningIcon { + background-image: var(--jp-icon-running); +} +.jp-SaveIcon { + background-image: var(--jp-icon-save); +} +.jp-SearchIcon { + background-image: var(--jp-icon-search); +} +.jp-SettingsIcon { + background-image: var(--jp-icon-settings); +} +.jp-SpreadsheetIcon { + background-image: var(--jp-icon-spreadsheet); +} +.jp-StopIcon { + background-image: var(--jp-icon-stop); +} +.jp-TabIcon { + background-image: var(--jp-icon-tab); +} +.jp-TableRowsIcon { + background-image: var(--jp-icon-table-rows); +} +.jp-TagIcon { + background-image: var(--jp-icon-tag); +} +.jp-TerminalIcon { + background-image: var(--jp-icon-terminal); +} +.jp-TextEditorIcon { + background-image: var(--jp-icon-text-editor); +} +.jp-TocIcon { + background-image: var(--jp-icon-toc); +} +.jp-TreeViewIcon { + background-image: var(--jp-icon-tree-view); +} +.jp-TrustedIcon { + background-image: var(--jp-icon-trusted); +} +.jp-UndoIcon { + background-image: var(--jp-icon-undo); +} +.jp-VegaIcon { + background-image: var(--jp-icon-vega); +} +.jp-YamlIcon { + background-image: var(--jp-icon-yaml); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * (DEPRECATED) Support for consuming icons as CSS background images + */ + +:root { + --jp-icon-search-white: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==); +} + +.jp-Icon, +.jp-MaterialIcon { + background-position: center; + background-repeat: no-repeat; + background-size: 16px; + min-width: 16px; + min-height: 16px; +} + +.jp-Icon-cover { + background-position: center; + background-repeat: no-repeat; + background-size: cover; +} + +/** + * (DEPRECATED) Support for specific CSS icon sizes + */ + +.jp-Icon-16 { + background-size: 16px; + min-width: 16px; + min-height: 16px; +} + +.jp-Icon-18 { + background-size: 18px; + min-width: 18px; + min-height: 18px; +} + +.jp-Icon-20 { + background-size: 20px; + min-width: 20px; + min-height: 20px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Support for icons as inline SVG HTMLElements + */ + +/* recolor the primary elements of an icon */ +.jp-icon0[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon1[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon2[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon3[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon4[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon0[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon1[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon2[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon3[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon4[stroke] { + stroke: var(--jp-inverse-layout-color4); +} +/* recolor the accent elements of an icon */ +.jp-icon-accent0[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-accent1[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-accent2[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-accent3[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-accent4[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-accent0[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-accent1[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-accent2[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-accent3[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-accent4[stroke] { + stroke: var(--jp-layout-color4); +} +/* set the color of an icon to transparent */ +.jp-icon-none[fill] { + fill: none; +} + +.jp-icon-none[stroke] { + stroke: none; +} +/* brand icon colors. Same for light and dark */ +.jp-icon-brand0[fill] { + fill: var(--jp-brand-color0); +} +.jp-icon-brand1[fill] { + fill: var(--jp-brand-color1); +} +.jp-icon-brand2[fill] { + fill: var(--jp-brand-color2); +} +.jp-icon-brand3[fill] { + fill: var(--jp-brand-color3); +} +.jp-icon-brand4[fill] { + fill: var(--jp-brand-color4); +} + +.jp-icon-brand0[stroke] { + stroke: var(--jp-brand-color0); +} +.jp-icon-brand1[stroke] { + stroke: var(--jp-brand-color1); +} +.jp-icon-brand2[stroke] { + stroke: var(--jp-brand-color2); +} +.jp-icon-brand3[stroke] { + stroke: var(--jp-brand-color3); +} +.jp-icon-brand4[stroke] { + stroke: var(--jp-brand-color4); +} +/* warn icon colors. Same for light and dark */ +.jp-icon-warn0[fill] { + fill: var(--jp-warn-color0); +} +.jp-icon-warn1[fill] { + fill: var(--jp-warn-color1); +} +.jp-icon-warn2[fill] { + fill: var(--jp-warn-color2); +} +.jp-icon-warn3[fill] { + fill: var(--jp-warn-color3); +} + +.jp-icon-warn0[stroke] { + stroke: var(--jp-warn-color0); +} +.jp-icon-warn1[stroke] { + stroke: var(--jp-warn-color1); +} +.jp-icon-warn2[stroke] { + stroke: var(--jp-warn-color2); +} +.jp-icon-warn3[stroke] { + stroke: var(--jp-warn-color3); +} +/* icon colors that contrast well with each other and most backgrounds */ +.jp-icon-contrast0[fill] { + fill: var(--jp-icon-contrast-color0); +} +.jp-icon-contrast1[fill] { + fill: var(--jp-icon-contrast-color1); +} +.jp-icon-contrast2[fill] { + fill: var(--jp-icon-contrast-color2); +} +.jp-icon-contrast3[fill] { + fill: var(--jp-icon-contrast-color3); +} + +.jp-icon-contrast0[stroke] { + stroke: var(--jp-icon-contrast-color0); +} +.jp-icon-contrast1[stroke] { + stroke: var(--jp-icon-contrast-color1); +} +.jp-icon-contrast2[stroke] { + stroke: var(--jp-icon-contrast-color2); +} +.jp-icon-contrast3[stroke] { + stroke: var(--jp-icon-contrast-color3); +} + +/* CSS for icons in selected items in the settings editor */ +#setting-editor .jp-PluginList .jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} +#setting-editor + .jp-PluginList + .jp-mod-selected + .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} + +/* CSS for icons in selected filebrowser listing items */ +.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} +.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} + +/* CSS for icons in selected tabs in the sidebar tab manager */ +#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable[fill] { + fill: #fff; +} + +#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} +#tab-manager + .lm-TabBar-tab.jp-mod-active + .jp-icon-hover + :hover + .jp-icon-selectable[fill] { + fill: var(--jp-brand-color1); +} + +#tab-manager + .lm-TabBar-tab.jp-mod-active + .jp-icon-hover + :hover + .jp-icon-selectable-inverse[fill] { + fill: #fff; +} + +/** + * TODO: come up with non css-hack solution for showing the busy icon on top + * of the close icon + * CSS for complex behavior of close icon of tabs in the sidebar tab manager + */ +#tab-manager + .lm-TabBar-tab.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon3[fill] { + fill: none; +} +#tab-manager + .lm-TabBar-tab.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: var(--jp-inverse-layout-color3); +} + +#tab-manager + .lm-TabBar-tab.jp-mod-dirty.jp-mod-active + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: #fff; +} + +/** +* TODO: come up with non css-hack solution for showing the busy icon on top +* of the close icon +* CSS for complex behavior of close icon of tabs in the main area tabbar +*/ +.lm-DockPanel-tabBar + .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon3[fill] { + fill: none; +} +.lm-DockPanel-tabBar + .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: var(--jp-inverse-layout-color3); +} + +/* CSS for icons in status bar */ +#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} + +#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} +/* special handling for splash icon CSS. While the theme CSS reloads during + splash, the splash icon can loose theming. To prevent that, we set a + default for its color variable */ +:root { + --jp-warn-color0: var(--md-orange-700); +} + +/* not sure what to do with this one, used in filebrowser listing */ +.jp-DragIcon { + margin-right: 4px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Support for alt colors for icons as inline SVG HTMLElements + */ + +/* alt recolor the primary elements of an icon */ +.jp-icon-alt .jp-icon0[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-alt .jp-icon1[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-alt .jp-icon2[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-alt .jp-icon3[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-alt .jp-icon4[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-alt .jp-icon0[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-alt .jp-icon1[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-alt .jp-icon2[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-alt .jp-icon3[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-alt .jp-icon4[stroke] { + stroke: var(--jp-layout-color4); +} + +/* alt recolor the accent elements of an icon */ +.jp-icon-alt .jp-icon-accent0[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-alt .jp-icon-accent1[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-alt .jp-icon-accent2[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-alt .jp-icon-accent3[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-alt .jp-icon-accent4[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-alt .jp-icon-accent0[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-alt .jp-icon-accent1[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-alt .jp-icon-accent2[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-alt .jp-icon-accent3[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-alt .jp-icon-accent4[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-icon-hoverShow:not(:hover) svg { + display: none !important; +} + +/** + * Support for hover colors for icons as inline SVG HTMLElements + */ + +/** + * regular colors + */ + +/* recolor the primary elements of an icon */ +.jp-icon-hover :hover .jp-icon0-hover[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-hover :hover .jp-icon1-hover[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-hover :hover .jp-icon2-hover[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-hover :hover .jp-icon3-hover[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-hover :hover .jp-icon4-hover[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-hover :hover .jp-icon0-hover[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-hover :hover .jp-icon1-hover[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-hover :hover .jp-icon2-hover[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-hover :hover .jp-icon3-hover[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-hover :hover .jp-icon4-hover[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/* recolor the accent elements of an icon */ +.jp-icon-hover :hover .jp-icon-accent0-hover[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-hover :hover .jp-icon-accent1-hover[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-hover :hover .jp-icon-accent2-hover[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-hover :hover .jp-icon-accent3-hover[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-hover :hover .jp-icon-accent4-hover[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] { + stroke: var(--jp-layout-color4); +} + +/* set the color of an icon to transparent */ +.jp-icon-hover :hover .jp-icon-none-hover[fill] { + fill: none; +} + +.jp-icon-hover :hover .jp-icon-none-hover[stroke] { + stroke: none; +} + +/** + * inverse colors + */ + +/* inverse recolor the primary elements of an icon */ +.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] { + stroke: var(--jp-layout-color4); +} + +/* inverse recolor the accent elements of an icon */ +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-switch { + display: flex; + align-items: center; + padding-left: 4px; + padding-right: 4px; + font-size: var(--jp-ui-font-size1); + background-color: transparent; + color: var(--jp-ui-font-color1); + border: none; + height: 20px; +} + +.jp-switch:hover { + background-color: var(--jp-layout-color2); +} + +.jp-switch-label { + margin-right: 5px; +} + +.jp-switch-track { + cursor: pointer; + background-color: var(--jp-border-color1); + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 34px; + height: 16px; + width: 35px; + position: relative; +} + +.jp-switch-track::before { + content: ''; + position: absolute; + height: 10px; + width: 10px; + margin: 3px; + left: 0px; + background-color: var(--jp-ui-inverse-font-color1); + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 50%; +} + +.jp-switch[aria-checked='true'] .jp-switch-track { + background-color: var(--jp-warn-color0); +} + +.jp-switch[aria-checked='true'] .jp-switch-track::before { + /* track width (35) - margins (3 + 3) - thumb width (10) */ + left: 19px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* Sibling imports */ + +/* Override Blueprint's _reset.scss styles */ +html { + box-sizing: unset; +} + +*, +*::before, +*::after { + box-sizing: unset; +} + +body { + color: unset; + font-family: var(--jp-ui-font-family); +} + +p { + margin-top: unset; + margin-bottom: unset; +} + +small { + font-size: unset; +} + +strong { + font-weight: unset; +} + +/* Override Blueprint's _typography.scss styles */ +a { + text-decoration: unset; + color: unset; +} +a:hover { + text-decoration: unset; + color: unset; +} + +/* Override Blueprint's _accessibility.scss styles */ +:focus { + outline: unset; + outline-offset: unset; + -moz-outline-radius: unset; +} + +/* Styles for ui-components */ +.jp-Button { + border-radius: var(--jp-border-radius); + padding: 0px 12px; + font-size: var(--jp-ui-font-size1); +} + +/* Use our own theme for hover styles */ +button.jp-Button.bp3-button.bp3-minimal:hover { + background-color: var(--jp-layout-color2); +} +.jp-Button.minimal { + color: unset !important; +} + +.jp-Button.jp-ToolbarButtonComponent { + text-transform: none; +} + +.jp-InputGroup input { + box-sizing: border-box; + border-radius: 0; + background-color: transparent; + color: var(--jp-ui-font-color0); + box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color); +} + +.jp-InputGroup input:focus { + box-shadow: inset 0 0 0 var(--jp-border-width) + var(--jp-input-active-box-shadow-color), + inset 0 0 0 3px var(--jp-input-active-box-shadow-color); +} + +.jp-InputGroup input::placeholder, +input::placeholder { + color: var(--jp-ui-font-color3); +} + +.jp-BPIcon { + display: inline-block; + vertical-align: middle; + margin: auto; +} + +/* Stop blueprint futzing with our icon fills */ +.bp3-icon.jp-BPIcon > svg:not([fill]) { + fill: var(--jp-inverse-layout-color3); +} + +.jp-InputGroupAction { + padding: 6px; +} + +.jp-HTMLSelect.jp-DefaultStyle select { + background-color: initial; + border: none; + border-radius: 0; + box-shadow: none; + color: var(--jp-ui-font-color0); + display: block; + font-size: var(--jp-ui-font-size1); + height: 24px; + line-height: 14px; + padding: 0 25px 0 10px; + text-align: left; + -moz-appearance: none; + -webkit-appearance: none; +} + +/* Use our own theme for hover and option styles */ +.jp-HTMLSelect.jp-DefaultStyle select:hover, +.jp-HTMLSelect.jp-DefaultStyle select > option { + background-color: var(--jp-layout-color2); + color: var(--jp-ui-font-color0); +} +select { + box-sizing: border-box; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Collapse { + display: flex; + flex-direction: column; + align-items: stretch; + border-top: 1px solid var(--jp-border-color2); + border-bottom: 1px solid var(--jp-border-color2); +} + +.jp-Collapse-header { + padding: 1px 12px; + color: var(--jp-ui-font-color1); + background-color: var(--jp-layout-color1); + font-size: var(--jp-ui-font-size2); +} + +.jp-Collapse-header:hover { + background-color: var(--jp-layout-color2); +} + +.jp-Collapse-contents { + padding: 0px 12px 0px 12px; + background-color: var(--jp-layout-color1); + color: var(--jp-ui-font-color1); + overflow: auto; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-commandpalette-search-height: 28px; +} + +/*----------------------------------------------------------------------------- +| Overall styles +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette { + padding-bottom: 0px; + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); +} + +/*----------------------------------------------------------------------------- +| Modal variant +|----------------------------------------------------------------------------*/ + +.jp-ModalCommandPalette { + position: absolute; + z-index: 10000; + top: 38px; + left: 30%; + margin: 0; + padding: 4px; + width: 40%; + box-shadow: var(--jp-elevation-z4); + border-radius: 4px; + background: var(--jp-layout-color0); +} + +.jp-ModalCommandPalette .lm-CommandPalette { + max-height: 40vh; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after { + display: none; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header { + display: none; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item { + margin-left: 4px; + margin-right: 4px; +} + +.jp-ModalCommandPalette + .lm-CommandPalette + .lm-CommandPalette-item.lm-mod-disabled { + display: none; +} + +/*----------------------------------------------------------------------------- +| Search +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette-search { + padding: 4px; + background-color: var(--jp-layout-color1); + z-index: 2; +} + +.lm-CommandPalette-wrapper { + overflow: overlay; + padding: 0px 9px; + background-color: var(--jp-input-active-background); + height: 30px; + box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color); +} + +.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper { + box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color), + inset 0 0 0 3px var(--jp-input-active-box-shadow-color); +} + +.lm-CommandPalette-wrapper::after { + content: ' '; + color: white; + background-color: var(--jp-brand-color1); + position: absolute; + top: 4px; + right: 4px; + height: 30px; + width: 10px; + padding: 0px 10px; + background-image: var(--jp-icon-search-white); + background-size: 20px; + background-repeat: no-repeat; + background-position: center; +} + +.lm-CommandPalette-input { + background: transparent; + width: calc(100% - 18px); + float: left; + border: none; + outline: none; + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + line-height: var(--jp-private-commandpalette-search-height); +} + +.lm-CommandPalette-input::-webkit-input-placeholder, +.lm-CommandPalette-input::-moz-placeholder, +.lm-CommandPalette-input:-ms-input-placeholder { + color: var(--jp-ui-font-color3); + font-size: var(--jp-ui-font-size1); +} + +/*----------------------------------------------------------------------------- +| Results +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette-header:first-child { + margin-top: 0px; +} + +.lm-CommandPalette-header { + border-bottom: solid var(--jp-border-width) var(--jp-border-color2); + color: var(--jp-ui-font-color1); + cursor: pointer; + display: flex; + font-size: var(--jp-ui-font-size0); + font-weight: 600; + letter-spacing: 1px; + margin-top: 8px; + padding: 8px 0 8px 12px; + text-transform: uppercase; +} + +.lm-CommandPalette-header.lm-mod-active { + background: var(--jp-layout-color2); +} + +.lm-CommandPalette-header > mark { + background-color: transparent; + font-weight: bold; + color: var(--jp-ui-font-color1); +} + +.lm-CommandPalette-item { + padding: 4px 12px 4px 4px; + color: var(--jp-ui-font-color1); + font-size: var(--jp-ui-font-size1); + font-weight: 400; + display: flex; +} + +.lm-CommandPalette-item.lm-mod-disabled { + color: var(--jp-ui-font-color3); +} + +.lm-CommandPalette-item.lm-mod-active { + background: var(--jp-layout-color3); +} + +.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) { + background: var(--jp-layout-color4); +} + +.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) { + background: var(--jp-layout-color2); +} + +.lm-CommandPalette-itemContent { + overflow: hidden; +} + +.lm-CommandPalette-itemLabel > mark { + color: var(--jp-ui-font-color0); + background-color: transparent; + font-weight: bold; +} + +.lm-CommandPalette-item.lm-mod-disabled mark { + color: var(--jp-ui-font-color3); +} + +.lm-CommandPalette-item .lm-CommandPalette-itemIcon { + margin: 0 4px 0 0; + position: relative; + width: 16px; + top: 2px; + flex: 0 0 auto; +} + +.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon { + opacity: 0.4; +} + +.lm-CommandPalette-item .lm-CommandPalette-itemShortcut { + flex: 0 0 auto; +} + +.lm-CommandPalette-itemCaption { + display: none; +} + +.lm-CommandPalette-content { + background-color: var(--jp-layout-color1); +} + +.lm-CommandPalette-content:empty:after { + content: 'No results'; + margin: auto; + margin-top: 20px; + width: 100px; + display: block; + font-size: var(--jp-ui-font-size2); + font-family: var(--jp-ui-font-family); + font-weight: lighter; +} + +.lm-CommandPalette-emptyMessage { + text-align: center; + margin-top: 24px; + line-height: 1.32; + padding: 0px 8px; + color: var(--jp-content-font-color3); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Dialog { + position: absolute; + z-index: 10000; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + top: 0px; + left: 0px; + margin: 0; + padding: 0; + width: 100%; + height: 100%; + background: var(--jp-dialog-background); +} + +.jp-Dialog-content { + display: flex; + flex-direction: column; + margin-left: auto; + margin-right: auto; + background: var(--jp-layout-color1); + padding: 24px; + padding-bottom: 12px; + min-width: 300px; + min-height: 150px; + max-width: 1000px; + max-height: 500px; + box-sizing: border-box; + box-shadow: var(--jp-elevation-z20); + word-wrap: break-word; + border-radius: var(--jp-border-radius); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color1); + resize: both; +} + +.jp-Dialog-button { + overflow: visible; +} + +button.jp-Dialog-button:focus { + outline: 1px solid var(--jp-brand-color1); + outline-offset: 4px; + -moz-outline-radius: 0px; +} + +button.jp-Dialog-button:focus::-moz-focus-inner { + border: 0; +} + +button.jp-Dialog-close-button { + padding: 0; + height: 100%; + min-width: unset; + min-height: unset; +} + +.jp-Dialog-header { + display: flex; + justify-content: space-between; + flex: 0 0 auto; + padding-bottom: 12px; + font-size: var(--jp-ui-font-size3); + font-weight: 400; + color: var(--jp-ui-font-color0); +} + +.jp-Dialog-body { + display: flex; + flex-direction: column; + flex: 1 1 auto; + font-size: var(--jp-ui-font-size1); + background: var(--jp-layout-color1); + overflow: auto; +} + +.jp-Dialog-footer { + display: flex; + flex-direction: row; + justify-content: flex-end; + flex: 0 0 auto; + margin-left: -12px; + margin-right: -12px; + padding: 12px; +} + +.jp-Dialog-title { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.jp-Dialog-body > .jp-select-wrapper { + width: 100%; +} + +.jp-Dialog-body > button { + padding: 0px 16px; +} + +.jp-Dialog-body > label { + line-height: 1.4; + color: var(--jp-ui-font-color0); +} + +.jp-Dialog-button.jp-mod-styled:not(:last-child) { + margin-right: 12px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-HoverBox { + position: fixed; +} + +.jp-HoverBox.jp-mod-outofview { + display: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-IFrame { + width: 100%; + height: 100%; +} + +.jp-IFrame > iframe { + border: none; +} + +/* +When drag events occur, `p-mod-override-cursor` is added to the body. +Because iframes steal all cursor events, the following two rules are necessary +to suppress pointer events while resize drags are occurring. There may be a +better solution to this problem. +*/ +body.lm-mod-override-cursor .jp-IFrame { + position: relative; +} + +body.lm-mod-override-cursor .jp-IFrame:before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-MainAreaWidget > :focus { + outline: none; +} + +/** + * google-material-color v1.2.6 + * https://github.com/danlevan/google-material-color + */ +:root { + --md-red-50: #ffebee; + --md-red-100: #ffcdd2; + --md-red-200: #ef9a9a; + --md-red-300: #e57373; + --md-red-400: #ef5350; + --md-red-500: #f44336; + --md-red-600: #e53935; + --md-red-700: #d32f2f; + --md-red-800: #c62828; + --md-red-900: #b71c1c; + --md-red-A100: #ff8a80; + --md-red-A200: #ff5252; + --md-red-A400: #ff1744; + --md-red-A700: #d50000; + + --md-pink-50: #fce4ec; + --md-pink-100: #f8bbd0; + --md-pink-200: #f48fb1; + --md-pink-300: #f06292; + --md-pink-400: #ec407a; + --md-pink-500: #e91e63; + --md-pink-600: #d81b60; + --md-pink-700: #c2185b; + --md-pink-800: #ad1457; + --md-pink-900: #880e4f; + --md-pink-A100: #ff80ab; + --md-pink-A200: #ff4081; + --md-pink-A400: #f50057; + --md-pink-A700: #c51162; + + --md-purple-50: #f3e5f5; + --md-purple-100: #e1bee7; + --md-purple-200: #ce93d8; + --md-purple-300: #ba68c8; + --md-purple-400: #ab47bc; + --md-purple-500: #9c27b0; + --md-purple-600: #8e24aa; + --md-purple-700: #7b1fa2; + --md-purple-800: #6a1b9a; + --md-purple-900: #4a148c; + --md-purple-A100: #ea80fc; + --md-purple-A200: #e040fb; + --md-purple-A400: #d500f9; + --md-purple-A700: #aa00ff; + + --md-deep-purple-50: #ede7f6; + --md-deep-purple-100: #d1c4e9; + --md-deep-purple-200: #b39ddb; + --md-deep-purple-300: #9575cd; + --md-deep-purple-400: #7e57c2; + --md-deep-purple-500: #673ab7; + --md-deep-purple-600: #5e35b1; + --md-deep-purple-700: #512da8; + --md-deep-purple-800: #4527a0; + --md-deep-purple-900: #311b92; + --md-deep-purple-A100: #b388ff; + --md-deep-purple-A200: #7c4dff; + --md-deep-purple-A400: #651fff; + --md-deep-purple-A700: #6200ea; + + --md-indigo-50: #e8eaf6; + --md-indigo-100: #c5cae9; + --md-indigo-200: #9fa8da; + --md-indigo-300: #7986cb; + --md-indigo-400: #5c6bc0; + --md-indigo-500: #3f51b5; + --md-indigo-600: #3949ab; + --md-indigo-700: #303f9f; + --md-indigo-800: #283593; + --md-indigo-900: #1a237e; + --md-indigo-A100: #8c9eff; + --md-indigo-A200: #536dfe; + --md-indigo-A400: #3d5afe; + --md-indigo-A700: #304ffe; + + --md-blue-50: #e3f2fd; + --md-blue-100: #bbdefb; + --md-blue-200: #90caf9; + --md-blue-300: #64b5f6; + --md-blue-400: #42a5f5; + --md-blue-500: #2196f3; + --md-blue-600: #1e88e5; + --md-blue-700: #1976d2; + --md-blue-800: #1565c0; + --md-blue-900: #0d47a1; + --md-blue-A100: #82b1ff; + --md-blue-A200: #448aff; + --md-blue-A400: #2979ff; + --md-blue-A700: #2962ff; + + --md-light-blue-50: #e1f5fe; + --md-light-blue-100: #b3e5fc; + --md-light-blue-200: #81d4fa; + --md-light-blue-300: #4fc3f7; + --md-light-blue-400: #29b6f6; + --md-light-blue-500: #03a9f4; + --md-light-blue-600: #039be5; + --md-light-blue-700: #0288d1; + --md-light-blue-800: #0277bd; + --md-light-blue-900: #01579b; + --md-light-blue-A100: #80d8ff; + --md-light-blue-A200: #40c4ff; + --md-light-blue-A400: #00b0ff; + --md-light-blue-A700: #0091ea; + + --md-cyan-50: #e0f7fa; + --md-cyan-100: #b2ebf2; + --md-cyan-200: #80deea; + --md-cyan-300: #4dd0e1; + --md-cyan-400: #26c6da; + --md-cyan-500: #00bcd4; + --md-cyan-600: #00acc1; + --md-cyan-700: #0097a7; + --md-cyan-800: #00838f; + --md-cyan-900: #006064; + --md-cyan-A100: #84ffff; + --md-cyan-A200: #18ffff; + --md-cyan-A400: #00e5ff; + --md-cyan-A700: #00b8d4; + + --md-teal-50: #e0f2f1; + --md-teal-100: #b2dfdb; + --md-teal-200: #80cbc4; + --md-teal-300: #4db6ac; + --md-teal-400: #26a69a; + --md-teal-500: #009688; + --md-teal-600: #00897b; + --md-teal-700: #00796b; + --md-teal-800: #00695c; + --md-teal-900: #004d40; + --md-teal-A100: #a7ffeb; + --md-teal-A200: #64ffda; + --md-teal-A400: #1de9b6; + --md-teal-A700: #00bfa5; + + --md-green-50: #e8f5e9; + --md-green-100: #c8e6c9; + --md-green-200: #a5d6a7; + --md-green-300: #81c784; + --md-green-400: #66bb6a; + --md-green-500: #4caf50; + --md-green-600: #43a047; + --md-green-700: #388e3c; + --md-green-800: #2e7d32; + --md-green-900: #1b5e20; + --md-green-A100: #b9f6ca; + --md-green-A200: #69f0ae; + --md-green-A400: #00e676; + --md-green-A700: #00c853; + + --md-light-green-50: #f1f8e9; + --md-light-green-100: #dcedc8; + --md-light-green-200: #c5e1a5; + --md-light-green-300: #aed581; + --md-light-green-400: #9ccc65; + --md-light-green-500: #8bc34a; + --md-light-green-600: #7cb342; + --md-light-green-700: #689f38; + --md-light-green-800: #558b2f; + --md-light-green-900: #33691e; + --md-light-green-A100: #ccff90; + --md-light-green-A200: #b2ff59; + --md-light-green-A400: #76ff03; + --md-light-green-A700: #64dd17; + + --md-lime-50: #f9fbe7; + --md-lime-100: #f0f4c3; + --md-lime-200: #e6ee9c; + --md-lime-300: #dce775; + --md-lime-400: #d4e157; + --md-lime-500: #cddc39; + --md-lime-600: #c0ca33; + --md-lime-700: #afb42b; + --md-lime-800: #9e9d24; + --md-lime-900: #827717; + --md-lime-A100: #f4ff81; + --md-lime-A200: #eeff41; + --md-lime-A400: #c6ff00; + --md-lime-A700: #aeea00; + + --md-yellow-50: #fffde7; + --md-yellow-100: #fff9c4; + --md-yellow-200: #fff59d; + --md-yellow-300: #fff176; + --md-yellow-400: #ffee58; + --md-yellow-500: #ffeb3b; + --md-yellow-600: #fdd835; + --md-yellow-700: #fbc02d; + --md-yellow-800: #f9a825; + --md-yellow-900: #f57f17; + --md-yellow-A100: #ffff8d; + --md-yellow-A200: #ffff00; + --md-yellow-A400: #ffea00; + --md-yellow-A700: #ffd600; + + --md-amber-50: #fff8e1; + --md-amber-100: #ffecb3; + --md-amber-200: #ffe082; + --md-amber-300: #ffd54f; + --md-amber-400: #ffca28; + --md-amber-500: #ffc107; + --md-amber-600: #ffb300; + --md-amber-700: #ffa000; + --md-amber-800: #ff8f00; + --md-amber-900: #ff6f00; + --md-amber-A100: #ffe57f; + --md-amber-A200: #ffd740; + --md-amber-A400: #ffc400; + --md-amber-A700: #ffab00; + + --md-orange-50: #fff3e0; + --md-orange-100: #ffe0b2; + --md-orange-200: #ffcc80; + --md-orange-300: #ffb74d; + --md-orange-400: #ffa726; + --md-orange-500: #ff9800; + --md-orange-600: #fb8c00; + --md-orange-700: #f57c00; + --md-orange-800: #ef6c00; + --md-orange-900: #e65100; + --md-orange-A100: #ffd180; + --md-orange-A200: #ffab40; + --md-orange-A400: #ff9100; + --md-orange-A700: #ff6d00; + + --md-deep-orange-50: #fbe9e7; + --md-deep-orange-100: #ffccbc; + --md-deep-orange-200: #ffab91; + --md-deep-orange-300: #ff8a65; + --md-deep-orange-400: #ff7043; + --md-deep-orange-500: #ff5722; + --md-deep-orange-600: #f4511e; + --md-deep-orange-700: #e64a19; + --md-deep-orange-800: #d84315; + --md-deep-orange-900: #bf360c; + --md-deep-orange-A100: #ff9e80; + --md-deep-orange-A200: #ff6e40; + --md-deep-orange-A400: #ff3d00; + --md-deep-orange-A700: #dd2c00; + + --md-brown-50: #efebe9; + --md-brown-100: #d7ccc8; + --md-brown-200: #bcaaa4; + --md-brown-300: #a1887f; + --md-brown-400: #8d6e63; + --md-brown-500: #795548; + --md-brown-600: #6d4c41; + --md-brown-700: #5d4037; + --md-brown-800: #4e342e; + --md-brown-900: #3e2723; + + --md-grey-50: #fafafa; + --md-grey-100: #f5f5f5; + --md-grey-200: #eeeeee; + --md-grey-300: #e0e0e0; + --md-grey-400: #bdbdbd; + --md-grey-500: #9e9e9e; + --md-grey-600: #757575; + --md-grey-700: #616161; + --md-grey-800: #424242; + --md-grey-900: #212121; + + --md-blue-grey-50: #eceff1; + --md-blue-grey-100: #cfd8dc; + --md-blue-grey-200: #b0bec5; + --md-blue-grey-300: #90a4ae; + --md-blue-grey-400: #78909c; + --md-blue-grey-500: #607d8b; + --md-blue-grey-600: #546e7a; + --md-blue-grey-700: #455a64; + --md-blue-grey-800: #37474f; + --md-blue-grey-900: #263238; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Spinner { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + z-index: 10; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: var(--jp-layout-color0); + outline: none; +} + +.jp-SpinnerContent { + font-size: 10px; + margin: 50px auto; + text-indent: -9999em; + width: 3em; + height: 3em; + border-radius: 50%; + background: var(--jp-brand-color3); + background: linear-gradient( + to right, + #f37626 10%, + rgba(255, 255, 255, 0) 42% + ); + position: relative; + animation: load3 1s infinite linear, fadeIn 1s; +} + +.jp-SpinnerContent:before { + width: 50%; + height: 50%; + background: #f37626; + border-radius: 100% 0 0 0; + position: absolute; + top: 0; + left: 0; + content: ''; +} + +.jp-SpinnerContent:after { + background: var(--jp-layout-color0); + width: 75%; + height: 75%; + border-radius: 50%; + content: ''; + margin: auto; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes load3 { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +button.jp-mod-styled { + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + border: none; + box-sizing: border-box; + text-align: center; + line-height: 32px; + height: 32px; + padding: 0px 12px; + letter-spacing: 0.8px; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +input.jp-mod-styled { + background: var(--jp-input-background); + height: 28px; + box-sizing: border-box; + border: var(--jp-border-width) solid var(--jp-border-color1); + padding-left: 7px; + padding-right: 7px; + font-size: var(--jp-ui-font-size2); + color: var(--jp-ui-font-color0); + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +input.jp-mod-styled:focus { + border: var(--jp-border-width) solid var(--md-blue-500); + box-shadow: inset 0 0 4px var(--md-blue-300); +} + +.jp-select-wrapper { + display: flex; + position: relative; + flex-direction: column; + padding: 1px; + background-color: var(--jp-layout-color1); + height: 28px; + box-sizing: border-box; + margin-bottom: 12px; +} + +.jp-select-wrapper.jp-mod-focused select.jp-mod-styled { + border: var(--jp-border-width) solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); + background-color: var(--jp-input-active-background); +} + +select.jp-mod-styled:hover { + background-color: var(--jp-layout-color1); + cursor: pointer; + color: var(--jp-ui-font-color0); + background-color: var(--jp-input-hover-background); + box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.5); +} + +select.jp-mod-styled { + flex: 1 1 auto; + height: 32px; + width: 100%; + font-size: var(--jp-ui-font-size2); + background: var(--jp-input-background); + color: var(--jp-ui-font-color0); + padding: 0 25px 0 8px; + border: var(--jp-border-width) solid var(--jp-input-border-color); + border-radius: 0px; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-toolbar-height: calc( + 28px + var(--jp-border-width) + ); /* leave 28px for content */ +} + +.jp-Toolbar { + color: var(--jp-ui-font-color1); + flex: 0 0 auto; + display: flex; + flex-direction: row; + border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color); + box-shadow: var(--jp-toolbar-box-shadow); + background: var(--jp-toolbar-background); + min-height: var(--jp-toolbar-micro-height); + padding: 2px; + z-index: 1; + overflow-x: hidden; +} + +.jp-Toolbar:hover { + overflow-x: auto; +} + +/* Toolbar items */ + +.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer { + flex-grow: 1; + flex-shrink: 1; +} + +.jp-Toolbar-item.jp-Toolbar-kernelStatus { + display: inline-block; + width: 32px; + background-repeat: no-repeat; + background-position: center; + background-size: 16px; +} + +.jp-Toolbar > .jp-Toolbar-item { + flex: 0 0 auto; + display: flex; + padding-left: 1px; + padding-right: 1px; + font-size: var(--jp-ui-font-size1); + line-height: var(--jp-private-toolbar-height); + height: 100%; +} + +/* Toolbar buttons */ + +/* This is the div we use to wrap the react component into a Widget */ +div.jp-ToolbarButton { + color: transparent; + border: none; + box-sizing: border-box; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + padding: 0px; + margin: 0px; +} + +button.jp-ToolbarButtonComponent { + background: var(--jp-layout-color1); + border: none; + box-sizing: border-box; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + padding: 0px 6px; + margin: 0px; + height: 24px; + border-radius: var(--jp-border-radius); + display: flex; + align-items: center; + text-align: center; + font-size: 14px; + min-width: unset; + min-height: unset; +} + +button.jp-ToolbarButtonComponent:disabled { + opacity: 0.4; +} + +button.jp-ToolbarButtonComponent span { + padding: 0px; + flex: 0 0 auto; +} + +button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label { + font-size: var(--jp-ui-font-size1); + line-height: 100%; + padding-left: 2px; + color: var(--jp-ui-font-color1); +} + +#jp-main-dock-panel[data-mode='single-document'] + .jp-MainAreaWidget + > .jp-Toolbar.jp-Toolbar-micro { + padding: 0; + min-height: 0; +} + +#jp-main-dock-panel[data-mode='single-document'] + .jp-MainAreaWidget + > .jp-Toolbar { + border: none; + box-shadow: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ body.p-mod-override-cursor *, /* </DEPRECATED> */ +body.lm-mod-override-cursor * { + cursor: inherit !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-JSONEditor { + display: flex; + flex-direction: column; + width: 100%; +} + +.jp-JSONEditor-host { + flex: 1 1 auto; + border: var(--jp-border-width) solid var(--jp-input-border-color); + border-radius: 0px; + background: var(--jp-layout-color0); + min-height: 50px; + padding: 1px; +} + +.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host { + border-color: red; + outline-color: red; +} + +.jp-JSONEditor-header { + display: flex; + flex: 1 0 auto; + padding: 0 0 0 12px; +} + +.jp-JSONEditor-header label { + flex: 0 0 auto; +} + +.jp-JSONEditor-commitButton { + height: 16px; + width: 16px; + background-size: 18px; + background-repeat: no-repeat; + background-position: center; +} + +.jp-JSONEditor-host.jp-mod-focused { + background-color: var(--jp-input-active-background); + border: 1px solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); +} + +.jp-Editor.jp-mod-dropTarget { + border: var(--jp-border-width) solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); +} + +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; + direction: ltr; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} +.cm-fat-cursor-mark { + background-color: rgba(20, 255, 20, 0.5); + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; +} +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: 0; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 50px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -50px; margin-right: -50px; + padding-bottom: 50px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; + border-right: 50px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -50px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre.CodeMirror-line, +.CodeMirror-wrap pre.CodeMirror-line-like { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + padding: 0.1px; /* Force widget margins to stay inside of the container */ +} + +.CodeMirror-widget {} + +.CodeMirror-rtl pre { direction: rtl; } + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } + +.CodeMirror-dialog { + position: absolute; + left: 0; right: 0; + background: inherit; + z-index: 15; + padding: .1em .8em; + overflow: hidden; + color: inherit; +} + +.CodeMirror-dialog-top { + border-bottom: 1px solid #eee; + top: 0; +} + +.CodeMirror-dialog-bottom { + border-top: 1px solid #eee; + bottom: 0; +} + +.CodeMirror-dialog input { + border: none; + outline: none; + background: transparent; + width: 20em; + color: inherit; + font-family: monospace; +} + +.CodeMirror-dialog button { + font-size: 70%; +} + +.CodeMirror-foldmarker { + color: blue; + text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; + font-family: arial; + line-height: .3; + cursor: pointer; +} +.CodeMirror-foldgutter { + width: .7em; +} +.CodeMirror-foldgutter-open, +.CodeMirror-foldgutter-folded { + cursor: pointer; +} +.CodeMirror-foldgutter-open:after { + content: "\25BE"; +} +.CodeMirror-foldgutter-folded:after { + content: "\25B8"; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.CodeMirror { + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + font-family: var(--jp-code-font-family); + border: 0; + border-radius: 0; + height: auto; + /* Changed to auto to autogrow */ +} + +.CodeMirror pre { + padding: 0 var(--jp-code-padding); +} + +.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-dialog { + background-color: var(--jp-layout-color0); + color: var(--jp-content-font-color1); +} + +/* This causes https://github.com/jupyter/jupyterlab/issues/522 */ +/* May not cause it not because we changed it! */ +.CodeMirror-lines { + padding: var(--jp-code-padding) 0; +} + +.CodeMirror-linenumber { + padding: 0 8px; +} + +.jp-CodeMirrorEditor { + cursor: text; +} + +.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color); +} + +/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */ +@media screen and (min-width: 2138px) and (max-width: 4319px) { + .jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width1) solid + var(--jp-editor-cursor-color); + } +} + +/* When zoomed out less than 33% */ +@media screen and (min-width: 4320px) { + .jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width2) solid + var(--jp-editor-cursor-color); + } +} + +.CodeMirror.jp-mod-readOnly .CodeMirror-cursor { + display: none; +} + +.CodeMirror-gutters { + border-right: 1px solid var(--jp-border-color2); + background-color: var(--jp-layout-color0); +} + +.jp-CollaboratorCursor { + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: none; + border-bottom: 3px solid; + background-clip: content-box; + margin-left: -5px; + margin-right: -5px; +} + +.CodeMirror-selectedtext.cm-searching { + background-color: var(--jp-search-selected-match-background-color) !important; + color: var(--jp-search-selected-match-color) !important; +} + +.cm-searching { + background-color: var( + --jp-search-unselected-match-background-color + ) !important; + color: var(--jp-search-unselected-match-color) !important; +} + +.CodeMirror-focused .CodeMirror-selected { + background-color: var(--jp-editor-selected-focused-background); +} + +.CodeMirror-selected { + background-color: var(--jp-editor-selected-background); +} + +.jp-CollaboratorCursor-hover { + position: absolute; + z-index: 1; + transform: translateX(-50%); + color: white; + border-radius: 3px; + padding-left: 4px; + padding-right: 4px; + padding-top: 1px; + padding-bottom: 1px; + text-align: center; + font-size: var(--jp-ui-font-size1); + white-space: nowrap; +} + +.jp-CodeMirror-ruler { + border-left: 1px dashed var(--jp-border-color2); +} + +/** + * Here is our jupyter theme for CodeMirror syntax highlighting + * This is used in our marked.js syntax highlighting and CodeMirror itself + * The string "jupyter" is set in ../codemirror/widget.DEFAULT_CODEMIRROR_THEME + * This came from the classic notebook, which came form highlight.js/GitHub + */ + +/** + * CodeMirror themes are handling the background/color in this way. This works + * fine for CodeMirror editors outside the notebook, but the notebook styles + * these things differently. + */ +.CodeMirror.cm-s-jupyter { + background: var(--jp-layout-color0); + color: var(--jp-content-font-color1); +} + +/* In the notebook, we want this styling to be handled by its container */ +.jp-CodeConsole .CodeMirror.cm-s-jupyter, +.jp-Notebook .CodeMirror.cm-s-jupyter { + background: transparent; +} + +.cm-s-jupyter .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color); +} +.cm-s-jupyter span.cm-keyword { + color: var(--jp-mirror-editor-keyword-color); + font-weight: bold; +} +.cm-s-jupyter span.cm-atom { + color: var(--jp-mirror-editor-atom-color); +} +.cm-s-jupyter span.cm-number { + color: var(--jp-mirror-editor-number-color); +} +.cm-s-jupyter span.cm-def { + color: var(--jp-mirror-editor-def-color); +} +.cm-s-jupyter span.cm-variable { + color: var(--jp-mirror-editor-variable-color); +} +.cm-s-jupyter span.cm-variable-2 { + color: var(--jp-mirror-editor-variable-2-color); +} +.cm-s-jupyter span.cm-variable-3 { + color: var(--jp-mirror-editor-variable-3-color); +} +.cm-s-jupyter span.cm-punctuation { + color: var(--jp-mirror-editor-punctuation-color); +} +.cm-s-jupyter span.cm-property { + color: var(--jp-mirror-editor-property-color); +} +.cm-s-jupyter span.cm-operator { + color: var(--jp-mirror-editor-operator-color); + font-weight: bold; +} +.cm-s-jupyter span.cm-comment { + color: var(--jp-mirror-editor-comment-color); + font-style: italic; +} +.cm-s-jupyter span.cm-string { + color: var(--jp-mirror-editor-string-color); +} +.cm-s-jupyter span.cm-string-2 { + color: var(--jp-mirror-editor-string-2-color); +} +.cm-s-jupyter span.cm-meta { + color: var(--jp-mirror-editor-meta-color); +} +.cm-s-jupyter span.cm-qualifier { + color: var(--jp-mirror-editor-qualifier-color); +} +.cm-s-jupyter span.cm-builtin { + color: var(--jp-mirror-editor-builtin-color); +} +.cm-s-jupyter span.cm-bracket { + color: var(--jp-mirror-editor-bracket-color); +} +.cm-s-jupyter span.cm-tag { + color: var(--jp-mirror-editor-tag-color); +} +.cm-s-jupyter span.cm-attribute { + color: var(--jp-mirror-editor-attribute-color); +} +.cm-s-jupyter span.cm-header { + color: var(--jp-mirror-editor-header-color); +} +.cm-s-jupyter span.cm-quote { + color: var(--jp-mirror-editor-quote-color); +} +.cm-s-jupyter span.cm-link { + color: var(--jp-mirror-editor-link-color); +} +.cm-s-jupyter span.cm-error { + color: var(--jp-mirror-editor-error-color); +} +.cm-s-jupyter span.cm-hr { + color: #999; +} + +.cm-s-jupyter span.cm-tab { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=); + background-position: right; + background-repeat: no-repeat; +} + +.cm-s-jupyter .CodeMirror-activeline-background, +.cm-s-jupyter .CodeMirror-gutter { + background-color: var(--jp-layout-color2); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| RenderedText +|----------------------------------------------------------------------------*/ + +:root { + /* This is the padding value to fill the gaps between lines containing spans with background color. */ + --jp-private-code-span-padding: calc( + (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2 + ); +} + +.jp-RenderedText { + text-align: left; + padding-left: var(--jp-code-padding); + line-height: var(--jp-code-line-height); + font-family: var(--jp-code-font-family); +} + +.jp-RenderedText pre, +.jp-RenderedJavaScript pre, +.jp-RenderedHTMLCommon pre { + color: var(--jp-content-font-color1); + font-size: var(--jp-code-font-size); + border: none; + margin: 0px; + padding: 0px; +} + +.jp-RenderedText pre a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} +.jp-RenderedText pre a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} +.jp-RenderedText pre a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* console foregrounds and backgrounds */ +.jp-RenderedText pre .ansi-black-fg { + color: #3e424d; +} +.jp-RenderedText pre .ansi-red-fg { + color: #e75c58; +} +.jp-RenderedText pre .ansi-green-fg { + color: #00a250; +} +.jp-RenderedText pre .ansi-yellow-fg { + color: #ddb62b; +} +.jp-RenderedText pre .ansi-blue-fg { + color: #208ffb; +} +.jp-RenderedText pre .ansi-magenta-fg { + color: #d160c4; +} +.jp-RenderedText pre .ansi-cyan-fg { + color: #60c6c8; +} +.jp-RenderedText pre .ansi-white-fg { + color: #c5c1b4; +} + +.jp-RenderedText pre .ansi-black-bg { + background-color: #3e424d; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-red-bg { + background-color: #e75c58; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-green-bg { + background-color: #00a250; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-yellow-bg { + background-color: #ddb62b; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-blue-bg { + background-color: #208ffb; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-magenta-bg { + background-color: #d160c4; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-cyan-bg { + background-color: #60c6c8; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-white-bg { + background-color: #c5c1b4; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-black-intense-fg { + color: #282c36; +} +.jp-RenderedText pre .ansi-red-intense-fg { + color: #b22b31; +} +.jp-RenderedText pre .ansi-green-intense-fg { + color: #007427; +} +.jp-RenderedText pre .ansi-yellow-intense-fg { + color: #b27d12; +} +.jp-RenderedText pre .ansi-blue-intense-fg { + color: #0065ca; +} +.jp-RenderedText pre .ansi-magenta-intense-fg { + color: #a03196; +} +.jp-RenderedText pre .ansi-cyan-intense-fg { + color: #258f8f; +} +.jp-RenderedText pre .ansi-white-intense-fg { + color: #a1a6b2; +} + +.jp-RenderedText pre .ansi-black-intense-bg { + background-color: #282c36; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-red-intense-bg { + background-color: #b22b31; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-green-intense-bg { + background-color: #007427; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-yellow-intense-bg { + background-color: #b27d12; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-blue-intense-bg { + background-color: #0065ca; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-magenta-intense-bg { + background-color: #a03196; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-cyan-intense-bg { + background-color: #258f8f; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-white-intense-bg { + background-color: #a1a6b2; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-default-inverse-fg { + color: var(--jp-ui-inverse-font-color0); +} +.jp-RenderedText pre .ansi-default-inverse-bg { + background-color: var(--jp-inverse-layout-color0); + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-bold { + font-weight: bold; +} +.jp-RenderedText pre .ansi-underline { + text-decoration: underline; +} + +.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] { + background: var(--jp-rendermime-error-background); + padding-top: var(--jp-code-padding); +} + +/*----------------------------------------------------------------------------- +| RenderedLatex +|----------------------------------------------------------------------------*/ + +.jp-RenderedLatex { + color: var(--jp-content-font-color1); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); +} + +/* Left-justify outputs.*/ +.jp-OutputArea-output.jp-RenderedLatex { + padding: var(--jp-code-padding); + text-align: left; +} + +/*----------------------------------------------------------------------------- +| RenderedHTML +|----------------------------------------------------------------------------*/ + +.jp-RenderedHTMLCommon { + color: var(--jp-content-font-color1); + font-family: var(--jp-content-font-family); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); + /* Give a bit more R padding on Markdown text to keep line lengths reasonable */ + padding-right: 20px; +} + +.jp-RenderedHTMLCommon em { + font-style: italic; +} + +.jp-RenderedHTMLCommon strong { + font-weight: bold; +} + +.jp-RenderedHTMLCommon u { + text-decoration: underline; +} + +.jp-RenderedHTMLCommon a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* Headings */ + +.jp-RenderedHTMLCommon h1, +.jp-RenderedHTMLCommon h2, +.jp-RenderedHTMLCommon h3, +.jp-RenderedHTMLCommon h4, +.jp-RenderedHTMLCommon h5, +.jp-RenderedHTMLCommon h6 { + line-height: var(--jp-content-heading-line-height); + font-weight: var(--jp-content-heading-font-weight); + font-style: normal; + margin: var(--jp-content-heading-margin-top) 0 + var(--jp-content-heading-margin-bottom) 0; +} + +.jp-RenderedHTMLCommon h1:first-child, +.jp-RenderedHTMLCommon h2:first-child, +.jp-RenderedHTMLCommon h3:first-child, +.jp-RenderedHTMLCommon h4:first-child, +.jp-RenderedHTMLCommon h5:first-child, +.jp-RenderedHTMLCommon h6:first-child { + margin-top: calc(0.5 * var(--jp-content-heading-margin-top)); +} + +.jp-RenderedHTMLCommon h1:last-child, +.jp-RenderedHTMLCommon h2:last-child, +.jp-RenderedHTMLCommon h3:last-child, +.jp-RenderedHTMLCommon h4:last-child, +.jp-RenderedHTMLCommon h5:last-child, +.jp-RenderedHTMLCommon h6:last-child { + margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom)); +} + +.jp-RenderedHTMLCommon h1 { + font-size: var(--jp-content-font-size5); +} + +.jp-RenderedHTMLCommon h2 { + font-size: var(--jp-content-font-size4); +} + +.jp-RenderedHTMLCommon h3 { + font-size: var(--jp-content-font-size3); +} + +.jp-RenderedHTMLCommon h4 { + font-size: var(--jp-content-font-size2); +} + +.jp-RenderedHTMLCommon h5 { + font-size: var(--jp-content-font-size1); +} + +.jp-RenderedHTMLCommon h6 { + font-size: var(--jp-content-font-size0); +} + +/* Lists */ + +.jp-RenderedHTMLCommon ul:not(.list-inline), +.jp-RenderedHTMLCommon ol:not(.list-inline) { + padding-left: 2em; +} + +.jp-RenderedHTMLCommon ul { + list-style: disc; +} + +.jp-RenderedHTMLCommon ul ul { + list-style: square; +} + +.jp-RenderedHTMLCommon ul ul ul { + list-style: circle; +} + +.jp-RenderedHTMLCommon ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol ol { + list-style: upper-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol { + list-style: lower-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol ol { + list-style: lower-roman; +} + +.jp-RenderedHTMLCommon ol ol ol ol ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol, +.jp-RenderedHTMLCommon ul { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon ul ul, +.jp-RenderedHTMLCommon ul ol, +.jp-RenderedHTMLCommon ol ul, +.jp-RenderedHTMLCommon ol ol { + margin-bottom: 0em; +} + +.jp-RenderedHTMLCommon hr { + color: var(--jp-border-color2); + background-color: var(--jp-border-color1); + margin-top: 1em; + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon > pre { + margin: 1.5em 2em; +} + +.jp-RenderedHTMLCommon pre, +.jp-RenderedHTMLCommon code { + border: 0; + background-color: var(--jp-layout-color0); + color: var(--jp-content-font-color1); + font-family: var(--jp-code-font-family); + font-size: inherit; + line-height: var(--jp-code-line-height); + padding: 0; + white-space: pre-wrap; +} + +.jp-RenderedHTMLCommon :not(pre) > code { + background-color: var(--jp-layout-color2); + padding: 1px 5px; +} + +/* Tables */ + +.jp-RenderedHTMLCommon table { + border-collapse: collapse; + border-spacing: 0; + border: none; + color: var(--jp-ui-font-color1); + font-size: 12px; + table-layout: fixed; + margin-left: auto; + margin-right: auto; +} + +.jp-RenderedHTMLCommon thead { + border-bottom: var(--jp-border-width) solid var(--jp-border-color1); + vertical-align: bottom; +} + +.jp-RenderedHTMLCommon td, +.jp-RenderedHTMLCommon th, +.jp-RenderedHTMLCommon tr { + vertical-align: middle; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} + +.jp-RenderedMarkdown.jp-RenderedHTMLCommon td, +.jp-RenderedMarkdown.jp-RenderedHTMLCommon th { + max-width: none; +} + +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr { + text-align: right; +} + +.jp-RenderedHTMLCommon th { + font-weight: bold; +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(odd) { + background: var(--jp-layout-color0); +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(even) { + background: var(--jp-rendermime-table-row-background); +} + +.jp-RenderedHTMLCommon tbody tr:hover { + background: var(--jp-rendermime-table-row-hover-background); +} + +.jp-RenderedHTMLCommon table { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon p { + text-align: left; + margin: 0px; +} + +.jp-RenderedHTMLCommon p { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon img { + -moz-force-broken-image-icon: 1; +} + +/* Restrict to direct children as other images could be nested in other content. */ +.jp-RenderedHTMLCommon > img { + display: block; + margin-left: 0; + margin-right: 0; + margin-bottom: 1em; +} + +/* Change color behind transparent images if they need it... */ +[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background { + background-color: var(--jp-inverse-layout-color1); +} +[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background { + background-color: var(--jp-inverse-layout-color1); +} +/* ...or leave it untouched if they don't */ +[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-dark-background { +} +[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-light-background { +} + +.jp-RenderedHTMLCommon img, +.jp-RenderedImage img, +.jp-RenderedHTMLCommon svg, +.jp-RenderedSVG svg { + max-width: 100%; + height: auto; +} + +.jp-RenderedHTMLCommon img.jp-mod-unconfined, +.jp-RenderedImage img.jp-mod-unconfined, +.jp-RenderedHTMLCommon svg.jp-mod-unconfined, +.jp-RenderedSVG svg.jp-mod-unconfined { + max-width: none; +} + +.jp-RenderedHTMLCommon .alert { + padding: var(--jp-notebook-padding); + border: var(--jp-border-width) solid transparent; + border-radius: var(--jp-border-radius); + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon .alert-info { + color: var(--jp-info-color0); + background-color: var(--jp-info-color3); + border-color: var(--jp-info-color2); +} +.jp-RenderedHTMLCommon .alert-info hr { + border-color: var(--jp-info-color3); +} +.jp-RenderedHTMLCommon .alert-info > p:last-child, +.jp-RenderedHTMLCommon .alert-info > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-warning { + color: var(--jp-warn-color0); + background-color: var(--jp-warn-color3); + border-color: var(--jp-warn-color2); +} +.jp-RenderedHTMLCommon .alert-warning hr { + border-color: var(--jp-warn-color3); +} +.jp-RenderedHTMLCommon .alert-warning > p:last-child, +.jp-RenderedHTMLCommon .alert-warning > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-success { + color: var(--jp-success-color0); + background-color: var(--jp-success-color3); + border-color: var(--jp-success-color2); +} +.jp-RenderedHTMLCommon .alert-success hr { + border-color: var(--jp-success-color3); +} +.jp-RenderedHTMLCommon .alert-success > p:last-child, +.jp-RenderedHTMLCommon .alert-success > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-danger { + color: var(--jp-error-color0); + background-color: var(--jp-error-color3); + border-color: var(--jp-error-color2); +} +.jp-RenderedHTMLCommon .alert-danger hr { + border-color: var(--jp-error-color3); +} +.jp-RenderedHTMLCommon .alert-danger > p:last-child, +.jp-RenderedHTMLCommon .alert-danger > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon blockquote { + margin: 1em 2em; + padding: 0 1em; + border-left: 5px solid var(--jp-border-color2); +} + +a.jp-InternalAnchorLink { + visibility: hidden; + margin-left: 8px; + color: var(--md-blue-800); +} + +h1:hover .jp-InternalAnchorLink, +h2:hover .jp-InternalAnchorLink, +h3:hover .jp-InternalAnchorLink, +h4:hover .jp-InternalAnchorLink, +h5:hover .jp-InternalAnchorLink, +h6:hover .jp-InternalAnchorLink { + visibility: visible; +} + +.jp-RenderedHTMLCommon kbd { + background-color: var(--jp-rendermime-table-row-background); + border: 1px solid var(--jp-border-color0); + border-bottom-color: var(--jp-border-color2); + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + display: inline-block; + font-size: 0.8em; + line-height: 1em; + padding: 0.2em 0.5em; +} + +/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0. + * At the bottom of cells this is a bit too much as there is also spacing + * between cells. Going all the way to 0 gets too tight between markdown and + * code cells. + */ +.jp-RenderedHTMLCommon > *:last-child { + margin-bottom: 0.5em; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-MimeDocument { + outline: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-filebrowser-button-height: 28px; + --jp-private-filebrowser-button-width: 48px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-FileBrowser { + display: flex; + flex-direction: column; + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); +} + +.jp-FileBrowser-toolbar.jp-Toolbar { + border-bottom: none; + height: auto; + margin: var(--jp-toolbar-header-margin); + box-shadow: none; +} + +.jp-BreadCrumbs { + flex: 0 0 auto; + margin: 8px 12px 8px 12px; +} + +.jp-BreadCrumbs-item { + margin: 0px 2px; + padding: 0px 2px; + border-radius: var(--jp-border-radius); + cursor: pointer; +} + +.jp-BreadCrumbs-item:hover { + background-color: var(--jp-layout-color2); +} + +.jp-BreadCrumbs-item:first-child { + margin-left: 0px; +} + +.jp-BreadCrumbs-item.jp-mod-dropTarget { + background-color: var(--jp-brand-color2); + opacity: 0.7; +} + +/*----------------------------------------------------------------------------- +| Buttons +|----------------------------------------------------------------------------*/ + +.jp-FileBrowser-toolbar.jp-Toolbar { + padding: 0px; + margin: 8px 12px 0px 12px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar { + justify-content: flex-start; +} + +.jp-FileBrowser-toolbar.jp-Toolbar .jp-Toolbar-item { + flex: 0 0 auto; + padding-left: 0px; + padding-right: 2px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar .jp-ToolbarButtonComponent { + width: 40px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar + .jp-Toolbar-item:first-child + .jp-ToolbarButtonComponent { + width: 72px; + background: var(--jp-brand-color1); +} + +.jp-FileBrowser-toolbar.jp-Toolbar + .jp-Toolbar-item:first-child + .jp-ToolbarButtonComponent + .jp-icon3 { + fill: white; +} + +/*----------------------------------------------------------------------------- +| Other styles +|----------------------------------------------------------------------------*/ + +.jp-FileDialog.jp-mod-conflict input { + color: red; +} + +.jp-FileDialog .jp-new-name-title { + margin-top: 12px; +} + +.jp-LastModified-hidden { + display: none; +} + +.jp-FileBrowser-filterBox { + padding: 0px; + flex: 0 0 auto; + margin: 8px 12px 0px 12px; +} + +/*----------------------------------------------------------------------------- +| DirListing +|----------------------------------------------------------------------------*/ + +.jp-DirListing { + flex: 1 1 auto; + display: flex; + flex-direction: column; + outline: 0; +} + +.jp-DirListing-header { + flex: 0 0 auto; + display: flex; + flex-direction: row; + overflow: hidden; + border-top: var(--jp-border-width) solid var(--jp-border-color2); + border-bottom: var(--jp-border-width) solid var(--jp-border-color1); + box-shadow: var(--jp-toolbar-box-shadow); + z-index: 2; +} + +.jp-DirListing-headerItem { + padding: 4px 12px 2px 12px; + font-weight: 500; +} + +.jp-DirListing-headerItem:hover { + background: var(--jp-layout-color2); +} + +.jp-DirListing-headerItem.jp-id-name { + flex: 1 0 84px; +} + +.jp-DirListing-headerItem.jp-id-modified { + flex: 0 0 112px; + border-left: var(--jp-border-width) solid var(--jp-border-color2); + text-align: right; +} + +.jp-id-narrow { + display: none; + flex: 0 0 5px; + padding: 4px 4px; + border-left: var(--jp-border-width) solid var(--jp-border-color2); + text-align: right; + color: var(--jp-border-color2); +} + +.jp-DirListing-narrow .jp-id-narrow { + display: block; +} + +.jp-DirListing-narrow .jp-id-modified, +.jp-DirListing-narrow .jp-DirListing-itemModified { + display: none; +} + +.jp-DirListing-headerItem.jp-mod-selected { + font-weight: 600; +} + +/* increase specificity to override bundled default */ +.jp-DirListing-content { + flex: 1 1 auto; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; + background-color: var(--jp-layout-color1); +} + +.jp-DirListing-content mark { + color: var(--jp-ui-font-color0); + background-color: transparent; + font-weight: bold; +} + +/* Style the directory listing content when a user drops a file to upload */ +.jp-DirListing.jp-mod-native-drop .jp-DirListing-content { + outline: 5px dashed rgba(128, 128, 128, 0.5); + outline-offset: -10px; + cursor: copy; +} + +.jp-DirListing-item { + display: flex; + flex-direction: row; + padding: 4px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jp-DirListing-item[data-is-dot] { + opacity: 75%; +} + +.jp-DirListing-item.jp-mod-selected { + color: white; + background: var(--jp-brand-color1); +} + +.jp-DirListing-item.jp-mod-dropTarget { + background: var(--jp-brand-color3); +} + +.jp-DirListing-item:hover:not(.jp-mod-selected) { + background: var(--jp-layout-color2); +} + +.jp-DirListing-itemIcon { + flex: 0 0 20px; + margin-right: 4px; +} + +.jp-DirListing-itemText { + flex: 1 0 64px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + user-select: none; +} + +.jp-DirListing-itemModified { + flex: 0 0 125px; + text-align: right; +} + +.jp-DirListing-editor { + flex: 1 0 64px; + outline: none; + border: none; +} + +.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon:before { + color: limegreen; + content: '\25CF'; + font-size: 8px; + position: absolute; + left: -8px; +} + +.jp-DirListing-item.lm-mod-drag-image, +.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image { + font-size: var(--jp-ui-font-size1); + padding-left: 4px; + margin-left: 4px; + width: 160px; + background-color: var(--jp-ui-inverse-font-color2); + box-shadow: var(--jp-elevation-z2); + border-radius: 0px; + color: var(--jp-ui-font-color1); + transform: translateX(-40%) translateY(-58%); +} + +.jp-DirListing-deadSpace { + flex: 1 1 auto; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; + background-color: var(--jp-layout-color1); +} + +.jp-Document { + min-width: 120px; + min-height: 120px; + outline: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { +} + +/*----------------------------------------------------------------------------- +| Main OutputArea +| OutputArea has a list of Outputs +|----------------------------------------------------------------------------*/ + +.jp-OutputArea { + overflow-y: auto; +} + +.jp-OutputArea-child { + display: flex; + flex-direction: row; +} + +.jp-OutputPrompt { + flex: 0 0 var(--jp-cell-prompt-width); + color: var(--jp-cell-outprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + opacity: var(--jp-cell-prompt-opacity); + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jp-OutputArea-output { + height: auto; + overflow: auto; + user-select: text; + -moz-user-select: text; + -webkit-user-select: text; + -ms-user-select: text; +} + +.jp-OutputArea-child .jp-OutputArea-output { + flex-grow: 1; + flex-shrink: 1; +} + +/** + * Isolated output. + */ +.jp-OutputArea-output.jp-mod-isolated { + width: 100%; + display: block; +} + +/* +When drag events occur, `p-mod-override-cursor` is added to the body. +Because iframes steal all cursor events, the following two rules are necessary +to suppress pointer events while resize drags are occurring. There may be a +better solution to this problem. +*/ +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated { + position: relative; +} + +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated:before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; +} + +/* pre */ + +.jp-OutputArea-output pre { + border: none; + margin: 0px; + padding: 0px; + overflow-x: auto; + overflow-y: auto; + word-break: break-all; + word-wrap: break-word; + white-space: pre-wrap; +} + +/* tables */ + +.jp-OutputArea-output.jp-RenderedHTMLCommon table { + margin-left: 0; + margin-right: 0; +} + +/* description lists */ + +.jp-OutputArea-output dl, +.jp-OutputArea-output dt, +.jp-OutputArea-output dd { + display: block; +} + +.jp-OutputArea-output dl { + width: 100%; + overflow: hidden; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dt { + font-weight: bold; + float: left; + width: 20%; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dd { + float: left; + width: 80%; + padding: 0; + margin: 0; +} + +/* Hide the gutter in case of + * - nested output areas (e.g. in the case of output widgets) + * - mirrored output areas + */ +.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt { + display: none; +} + +/*----------------------------------------------------------------------------- +| executeResult is added to any Output-result for the display of the object +| returned by a cell +|----------------------------------------------------------------------------*/ + +.jp-OutputArea-output.jp-OutputArea-executeResult { + margin-left: 0px; + flex: 1 1 auto; +} + +/* Text output with the Out[] prompt needs a top padding to match the + * alignment of the Out[] prompt itself. + */ +.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output { + padding-top: var(--jp-code-padding); + border-top: var(--jp-border-width) solid transparent; +} + +/*----------------------------------------------------------------------------- +| The Stdin output +|----------------------------------------------------------------------------*/ + +.jp-OutputArea-stdin { + line-height: var(--jp-code-line-height); + padding-top: var(--jp-code-padding); + display: flex; +} + +.jp-Stdin-prompt { + color: var(--jp-content-font-color0); + padding-right: var(--jp-code-padding); + vertical-align: baseline; + flex: 0 0 auto; +} + +.jp-Stdin-input { + font-family: var(--jp-code-font-family); + font-size: inherit; + color: inherit; + background-color: inherit; + width: 42%; + min-width: 200px; + /* make sure input baseline aligns with prompt */ + vertical-align: baseline; + /* padding + margin = 0.5em between prompt and cursor */ + padding: 0em 0.25em; + margin: 0em 0.25em; + flex: 0 0 70%; +} + +.jp-Stdin-input:focus { + box-shadow: none; +} + +/*----------------------------------------------------------------------------- +| Output Area View +|----------------------------------------------------------------------------*/ + +.jp-LinkedOutputView .jp-OutputArea { + height: 100%; + display: block; +} + +.jp-LinkedOutputView .jp-OutputArea-output:only-child { + height: 100%; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Collapser { + flex: 0 0 var(--jp-cell-collapser-width); + padding: 0px; + margin: 0px; + border: none; + outline: none; + background: transparent; + border-radius: var(--jp-border-radius); + opacity: 1; +} + +.jp-Collapser-child { + display: block; + width: 100%; + box-sizing: border-box; + /* height: 100% doesn't work because the height of its parent is computed from content */ + position: absolute; + top: 0px; + bottom: 0px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Header/Footer +|----------------------------------------------------------------------------*/ + +/* Hidden by zero height by default */ +.jp-CellHeader, +.jp-CellFooter { + height: 0px; + width: 100%; + padding: 0px; + margin: 0px; + border: none; + outline: none; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Input +|----------------------------------------------------------------------------*/ + +/* All input areas */ +.jp-InputArea { + display: flex; + flex-direction: row; + overflow: hidden; +} + +.jp-InputArea-editor { + flex: 1 1 auto; + overflow: hidden; +} + +.jp-InputArea-editor { + /* This is the non-active, default styling */ + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + border-radius: 0px; + background: var(--jp-cell-editor-background); +} + +.jp-InputPrompt { + flex: 0 0 var(--jp-cell-prompt-width); + color: var(--jp-cell-inprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + opacity: var(--jp-cell-prompt-opacity); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + opacity: var(--jp-cell-prompt-opacity); + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Placeholder +|----------------------------------------------------------------------------*/ + +.jp-Placeholder { + display: flex; + flex-direction: row; + flex: 1 1 auto; +} + +.jp-Placeholder-prompt { + box-sizing: border-box; +} + +.jp-Placeholder-content { + flex: 1 1 auto; + border: none; + background: transparent; + height: 20px; + box-sizing: border-box; +} + +.jp-Placeholder-content .jp-MoreHorizIcon { + width: 32px; + height: 16px; + border: 1px solid transparent; + border-radius: var(--jp-border-radius); +} + +.jp-Placeholder-content .jp-MoreHorizIcon:hover { + border: 1px solid var(--jp-border-color1); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.25); + background-color: var(--jp-layout-color0); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-cell-scrolling-output-offset: 5px; +} + +/*----------------------------------------------------------------------------- +| Cell +|----------------------------------------------------------------------------*/ + +.jp-Cell { + padding: var(--jp-cell-padding); + margin: 0px; + border: none; + outline: none; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Common input/output +|----------------------------------------------------------------------------*/ + +.jp-Cell-inputWrapper, +.jp-Cell-outputWrapper { + display: flex; + flex-direction: row; + padding: 0px; + margin: 0px; + /* Added to reveal the box-shadow on the input and output collapsers. */ + overflow: visible; +} + +/* Only input/output areas inside cells */ +.jp-Cell-inputArea, +.jp-Cell-outputArea { + flex: 1 1 auto; +} + +/*----------------------------------------------------------------------------- +| Collapser +|----------------------------------------------------------------------------*/ + +/* Make the output collapser disappear when there is not output, but do so + * in a manner that leaves it in the layout and preserves its width. + */ +.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser { + border: none !important; + background: transparent !important; +} + +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser { + min-height: var(--jp-cell-collapser-min-height); +} + +/*----------------------------------------------------------------------------- +| Output +|----------------------------------------------------------------------------*/ + +/* Put a space between input and output when there IS output */ +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper { + margin-top: 5px; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea { + overflow-y: auto; + max-height: 200px; + box-shadow: inset 0 0 6px 2px rgba(0, 0, 0, 0.3); + margin-left: var(--jp-private-cell-scrolling-output-offset); +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt { + flex: 0 0 + calc( + var(--jp-cell-prompt-width) - + var(--jp-private-cell-scrolling-output-offset) + ); +} + +/*----------------------------------------------------------------------------- +| CodeCell +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| MarkdownCell +|----------------------------------------------------------------------------*/ + +.jp-MarkdownOutput { + flex: 1 1 auto; + margin-top: 0; + margin-bottom: 0; + padding-left: var(--jp-code-padding); +} + +.jp-MarkdownOutput.jp-RenderedHTMLCommon { + overflow: auto; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- + +/*----------------------------------------------------------------------------- +| Styles +|----------------------------------------------------------------------------*/ + +.jp-NotebookPanel-toolbar { + padding: 2px; +} + +.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused { + border: none; + box-shadow: none; +} + +.jp-Notebook-toolbarCellTypeDropdown select { + height: 24px; + font-size: var(--jp-ui-font-size1); + line-height: 14px; + border-radius: 0; + display: block; +} + +.jp-Notebook-toolbarCellTypeDropdown span { + top: 5px !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-notebook-dragImage-width: 304px; + --jp-private-notebook-dragImage-height: 36px; + --jp-private-notebook-selected-color: var(--md-blue-400); + --jp-private-notebook-active-color: var(--md-green-400); +} + +/*----------------------------------------------------------------------------- +| Imports +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Notebook +|----------------------------------------------------------------------------*/ + +.jp-NotebookPanel { + display: block; + height: 100%; +} + +.jp-NotebookPanel.jp-Document { + min-width: 240px; + min-height: 120px; +} + +.jp-Notebook { + padding: var(--jp-notebook-padding); + outline: none; + overflow: auto; + background: var(--jp-layout-color0); +} + +.jp-Notebook.jp-mod-scrollPastEnd::after { + display: block; + content: ''; + min-height: var(--jp-notebook-scroll-padding); +} + +.jp-Notebook .jp-Cell { + overflow: visible; +} + +.jp-Notebook .jp-Cell .jp-InputPrompt { + cursor: move; +} + +/*----------------------------------------------------------------------------- +| Notebook state related styling +| +| The notebook and cells each have states, here are the possibilities: +| +| - Notebook +| - Command +| - Edit +| - Cell +| - None +| - Active (only one can be active) +| - Selected (the cells actions are applied to) +| - Multiselected (when multiple selected, the cursor) +| - No outputs +|----------------------------------------------------------------------------*/ + +/* Command or edit modes */ + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +/* cell is active */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser { + background: var(--jp-brand-color1); +} + +/* collapser is hovered */ +.jp-Notebook .jp-Cell .jp-Collapser:hover { + box-shadow: var(--jp-elevation-z2); + background: var(--jp-brand-color1); + opacity: var(--jp-cell-collapser-not-active-hover-opacity); +} + +/* cell is active and collapser is hovered */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover { + background: var(--jp-brand-color0); + opacity: 1; +} + +/* Command mode */ + +.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected { + background: var(--jp-notebook-multiselected-color); +} + +.jp-Notebook.jp-mod-commandMode + .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) { + background: transparent; +} + +/* Edit mode */ + +.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor { + border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color); + box-shadow: var(--jp-input-box-shadow); + background-color: var(--jp-cell-editor-active-background); +} + +/*----------------------------------------------------------------------------- +| Notebook drag and drop +|----------------------------------------------------------------------------*/ + +.jp-Notebook-cell.jp-mod-dropSource { + opacity: 0.5; +} + +.jp-Notebook-cell.jp-mod-dropTarget, +.jp-Notebook.jp-mod-commandMode + .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget { + border-top-color: var(--jp-private-notebook-selected-color); + border-top-style: solid; + border-top-width: 2px; +} + +.jp-dragImage { + display: flex; + flex-direction: row; + width: var(--jp-private-notebook-dragImage-width); + height: var(--jp-private-notebook-dragImage-height); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background); + overflow: visible; +} + +.jp-dragImage-singlePrompt { + box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12); +} + +.jp-dragImage .jp-dragImage-content { + flex: 1 1 auto; + z-index: 2; + font-size: var(--jp-code-font-size); + font-family: var(--jp-code-font-family); + line-height: var(--jp-code-line-height); + padding: var(--jp-code-padding); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background-color); + color: var(--jp-content-font-color3); + text-align: left; + margin: 4px 4px 4px 0px; +} + +.jp-dragImage .jp-dragImage-prompt { + flex: 0 0 auto; + min-width: 36px; + color: var(--jp-cell-inprompt-font-color); + padding: var(--jp-code-padding); + padding-left: 12px; + font-family: var(--jp-cell-prompt-font-family); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: 1.9; + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; +} + +.jp-dragImage-multipleBack { + z-index: -1; + position: absolute; + height: 32px; + width: 300px; + top: 8px; + left: 8px; + background: var(--jp-layout-color2); + border: var(--jp-border-width) solid var(--jp-input-border-color); + box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12); +} + +/*----------------------------------------------------------------------------- +| Cell toolbar +|----------------------------------------------------------------------------*/ + +.jp-NotebookTools { + display: block; + min-width: var(--jp-sidebar-min-width); + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); + overflow: auto; +} + +.jp-NotebookTools-tool { + padding: 0px 12px 0 12px; +} + +.jp-ActiveCellTool { + padding: 12px; + background-color: var(--jp-layout-color1); + border-top: none !important; +} + +.jp-ActiveCellTool .jp-InputArea-prompt { + flex: 0 0 auto; + padding-left: 0px; +} + +.jp-ActiveCellTool .jp-InputArea-editor { + flex: 1 1 auto; + background: var(--jp-cell-editor-background); + border-color: var(--jp-cell-editor-border-color); +} + +.jp-ActiveCellTool .jp-InputArea-editor .CodeMirror { + background: transparent; +} + +.jp-MetadataEditorTool { + flex-direction: column; + padding: 12px 0px 12px 0px; +} + +.jp-RankedPanel > :not(:first-child) { + margin-top: 12px; +} + +.jp-KeySelector select.jp-mod-styled { + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + border: var(--jp-border-width) solid var(--jp-border-color1); +} + +.jp-KeySelector label, +.jp-MetadataEditorTool label { + line-height: 1.4; +} + +.jp-NotebookTools .jp-select-wrapper { + margin-top: 4px; + margin-bottom: 0px; +} + +.jp-NotebookTools .jp-Collapse { + margin-top: 16px; +} + +/*----------------------------------------------------------------------------- +| Presentation Mode (.jp-mod-presentationMode) +|----------------------------------------------------------------------------*/ + +.jp-mod-presentationMode .jp-Notebook { + --jp-content-font-size1: var(--jp-content-presentation-font-size1); + --jp-code-font-size: var(--jp-code-presentation-font-size); +} + +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt, +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt { + flex: 0 0 110px; +} + +</style> + + <style type="text/css"> +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* +The following CSS variables define the main, public API for styling JupyterLab. +These variables should be used by all plugins wherever possible. In other +words, plugins should not define custom colors, sizes, etc unless absolutely +necessary. This enables users to change the visual theme of JupyterLab +by changing these variables. + +Many variables appear in an ordered sequence (0,1,2,3). These sequences +are designed to work well together, so for example, `--jp-border-color1` should +be used with `--jp-layout-color1`. The numbers have the following meanings: + +* 0: super-primary, reserved for special emphasis +* 1: primary, most important under normal situations +* 2: secondary, next most important under normal situations +* 3: tertiary, next most important under normal situations + +Throughout JupyterLab, we are mostly following principles from Google's +Material Design when selecting colors. We are not, however, following +all of MD as it is not optimized for dense, information rich UIs. +*/ + +:root { + /* Elevation + * + * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here: + * + * https://github.com/material-components/material-components-web + * https://material-components-web.appspot.com/elevation.html + */ + + --jp-shadow-base-lightness: 0; + --jp-shadow-umbra-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.2 + ); + --jp-shadow-penumbra-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.14 + ); + --jp-shadow-ambient-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.12 + ); + --jp-elevation-z0: none; + --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color), + 0px 1px 1px 0px var(--jp-shadow-penumbra-color), + 0px 1px 3px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color), + 0px 2px 2px 0px var(--jp-shadow-penumbra-color), + 0px 1px 5px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color), + 0px 4px 5px 0px var(--jp-shadow-penumbra-color), + 0px 1px 10px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color), + 0px 6px 10px 0px var(--jp-shadow-penumbra-color), + 0px 1px 18px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color), + 0px 8px 10px 1px var(--jp-shadow-penumbra-color), + 0px 3px 14px 2px var(--jp-shadow-ambient-color); + --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color), + 0px 12px 17px 2px var(--jp-shadow-penumbra-color), + 0px 5px 22px 4px var(--jp-shadow-ambient-color); + --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color), + 0px 16px 24px 2px var(--jp-shadow-penumbra-color), + 0px 6px 30px 5px var(--jp-shadow-ambient-color); + --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color), + 0px 20px 31px 3px var(--jp-shadow-penumbra-color), + 0px 8px 38px 7px var(--jp-shadow-ambient-color); + --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color), + 0px 24px 38px 3px var(--jp-shadow-penumbra-color), + 0px 9px 46px 8px var(--jp-shadow-ambient-color); + + /* Borders + * + * The following variables, specify the visual styling of borders in JupyterLab. + */ + + --jp-border-width: 1px; + --jp-border-color0: var(--md-grey-400); + --jp-border-color1: var(--md-grey-400); + --jp-border-color2: var(--md-grey-300); + --jp-border-color3: var(--md-grey-200); + --jp-border-radius: 2px; + + /* UI Fonts + * + * The UI font CSS variables are used for the typography all of the JupyterLab + * user interface elements that are not directly user generated content. + * + * The font sizing here is done assuming that the body font size of --jp-ui-font-size1 + * is applied to a parent element. When children elements, such as headings, are sized + * in em all things will be computed relative to that body size. + */ + + --jp-ui-font-scale-factor: 1.2; + --jp-ui-font-size0: 0.83333em; + --jp-ui-font-size1: 13px; /* Base font size */ + --jp-ui-font-size2: 1.2em; + --jp-ui-font-size3: 1.44em; + + --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, + Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + + /* + * Use these font colors against the corresponding main layout colors. + * In a light theme, these go from dark to light. + */ + + /* Defaults use Material Design specification */ + --jp-ui-font-color0: rgba(0, 0, 0, 1); + --jp-ui-font-color1: rgba(0, 0, 0, 0.87); + --jp-ui-font-color2: rgba(0, 0, 0, 0.54); + --jp-ui-font-color3: rgba(0, 0, 0, 0.38); + + /* + * Use these against the brand/accent/warn/error colors. + * These will typically go from light to darker, in both a dark and light theme. + */ + + --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7); + --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5); + + /* Content Fonts + * + * Content font variables are used for typography of user generated content. + * + * The font sizing here is done assuming that the body font size of --jp-content-font-size1 + * is applied to a parent element. When children elements, such as headings, are sized + * in em all things will be computed relative to that body size. + */ + + --jp-content-line-height: 1.6; + --jp-content-font-scale-factor: 1.2; + --jp-content-font-size0: 0.83333em; + --jp-content-font-size1: 14px; /* Base font size */ + --jp-content-font-size2: 1.2em; + --jp-content-font-size3: 1.44em; + --jp-content-font-size4: 1.728em; + --jp-content-font-size5: 2.0736em; + + /* This gives a magnification of about 125% in presentation mode over normal. */ + --jp-content-presentation-font-size1: 17px; + + --jp-content-heading-line-height: 1; + --jp-content-heading-margin-top: 1.2em; + --jp-content-heading-margin-bottom: 0.8em; + --jp-content-heading-font-weight: 500; + + /* Defaults use Material Design specification */ + --jp-content-font-color0: rgba(0, 0, 0, 1); + --jp-content-font-color1: rgba(0, 0, 0, 0.87); + --jp-content-font-color2: rgba(0, 0, 0, 0.54); + --jp-content-font-color3: rgba(0, 0, 0, 0.38); + + --jp-content-link-color: var(--md-blue-700); + + --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', + Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol'; + + /* + * Code Fonts + * + * Code font variables are used for typography of code and other monospaces content. + */ + + --jp-code-font-size: 13px; + --jp-code-line-height: 1.3077; /* 17px for 13px base */ + --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */ + --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace; + --jp-code-font-family: var(--jp-code-font-family-default); + + /* This gives a magnification of about 125% in presentation mode over normal. */ + --jp-code-presentation-font-size: 16px; + + /* may need to tweak cursor width if you change font size */ + --jp-code-cursor-width0: 1.4px; + --jp-code-cursor-width1: 2px; + --jp-code-cursor-width2: 4px; + + /* Layout + * + * The following are the main layout colors use in JupyterLab. In a light + * theme these would go from light to dark. + */ + + --jp-layout-color0: white; + --jp-layout-color1: white; + --jp-layout-color2: var(--md-grey-200); + --jp-layout-color3: var(--md-grey-400); + --jp-layout-color4: var(--md-grey-600); + + /* Inverse Layout + * + * The following are the inverse layout colors use in JupyterLab. In a light + * theme these would go from dark to light. + */ + + --jp-inverse-layout-color0: #111111; + --jp-inverse-layout-color1: var(--md-grey-900); + --jp-inverse-layout-color2: var(--md-grey-800); + --jp-inverse-layout-color3: var(--md-grey-700); + --jp-inverse-layout-color4: var(--md-grey-600); + + /* Brand/accent */ + + --jp-brand-color0: var(--md-blue-700); + --jp-brand-color1: var(--md-blue-500); + --jp-brand-color2: var(--md-blue-300); + --jp-brand-color3: var(--md-blue-100); + --jp-brand-color4: var(--md-blue-50); + + --jp-accent-color0: var(--md-green-700); + --jp-accent-color1: var(--md-green-500); + --jp-accent-color2: var(--md-green-300); + --jp-accent-color3: var(--md-green-100); + + /* State colors (warn, error, success, info) */ + + --jp-warn-color0: var(--md-orange-700); + --jp-warn-color1: var(--md-orange-500); + --jp-warn-color2: var(--md-orange-300); + --jp-warn-color3: var(--md-orange-100); + + --jp-error-color0: var(--md-red-700); + --jp-error-color1: var(--md-red-500); + --jp-error-color2: var(--md-red-300); + --jp-error-color3: var(--md-red-100); + + --jp-success-color0: var(--md-green-700); + --jp-success-color1: var(--md-green-500); + --jp-success-color2: var(--md-green-300); + --jp-success-color3: var(--md-green-100); + + --jp-info-color0: var(--md-cyan-700); + --jp-info-color1: var(--md-cyan-500); + --jp-info-color2: var(--md-cyan-300); + --jp-info-color3: var(--md-cyan-100); + + /* Cell specific styles */ + + --jp-cell-padding: 5px; + + --jp-cell-collapser-width: 8px; + --jp-cell-collapser-min-height: 20px; + --jp-cell-collapser-not-active-hover-opacity: 0.6; + + --jp-cell-editor-background: var(--md-grey-100); + --jp-cell-editor-border-color: var(--md-grey-300); + --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300); + --jp-cell-editor-active-background: var(--jp-layout-color0); + --jp-cell-editor-active-border-color: var(--jp-brand-color1); + + --jp-cell-prompt-width: 64px; + --jp-cell-prompt-font-family: var(--jp-code-font-family-default); + --jp-cell-prompt-letter-spacing: 0px; + --jp-cell-prompt-opacity: 1; + --jp-cell-prompt-not-active-opacity: 0.5; + --jp-cell-prompt-not-active-font-color: var(--md-grey-700); + /* A custom blend of MD grey and blue 600 + * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */ + --jp-cell-inprompt-font-color: #307fc1; + /* A custom blend of MD grey and orange 600 + * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */ + --jp-cell-outprompt-font-color: #bf5b3d; + + /* Notebook specific styles */ + + --jp-notebook-padding: 10px; + --jp-notebook-select-background: var(--jp-layout-color1); + --jp-notebook-multiselected-color: var(--md-blue-50); + + /* The scroll padding is calculated to fill enough space at the bottom of the + notebook to show one single-line cell (with appropriate padding) at the top + when the notebook is scrolled all the way to the bottom. We also subtract one + pixel so that no scrollbar appears if we have just one single-line cell in the + notebook. This padding is to enable a 'scroll past end' feature in a notebook. + */ + --jp-notebook-scroll-padding: calc( + 100% - var(--jp-code-font-size) * var(--jp-code-line-height) - + var(--jp-code-padding) - var(--jp-cell-padding) - 1px + ); + + /* Rendermime styles */ + + --jp-rendermime-error-background: #fdd; + --jp-rendermime-table-row-background: var(--md-grey-100); + --jp-rendermime-table-row-hover-background: var(--md-light-blue-50); + + /* Dialog specific styles */ + + --jp-dialog-background: rgba(0, 0, 0, 0.25); + + /* Console specific styles */ + + --jp-console-padding: 10px; + + /* Toolbar specific styles */ + + --jp-toolbar-border-color: var(--jp-border-color1); + --jp-toolbar-micro-height: 8px; + --jp-toolbar-background: var(--jp-layout-color1); + --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24); + --jp-toolbar-header-margin: 4px 4px 0px 4px; + --jp-toolbar-active-background: var(--md-grey-300); + + /* Input field styles */ + + --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300); + --jp-input-active-background: var(--jp-layout-color1); + --jp-input-hover-background: var(--jp-layout-color1); + --jp-input-background: var(--md-grey-100); + --jp-input-border-color: var(--jp-border-color1); + --jp-input-active-border-color: var(--jp-brand-color1); + --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3); + + /* General editor styles */ + + --jp-editor-selected-background: #d9d9d9; + --jp-editor-selected-focused-background: #d7d4f0; + --jp-editor-cursor-color: var(--jp-ui-font-color0); + + /* Code mirror specific styles */ + + --jp-mirror-editor-keyword-color: #008000; + --jp-mirror-editor-atom-color: #88f; + --jp-mirror-editor-number-color: #080; + --jp-mirror-editor-def-color: #00f; + --jp-mirror-editor-variable-color: var(--md-grey-900); + --jp-mirror-editor-variable-2-color: #05a; + --jp-mirror-editor-variable-3-color: #085; + --jp-mirror-editor-punctuation-color: #05a; + --jp-mirror-editor-property-color: #05a; + --jp-mirror-editor-operator-color: #aa22ff; + --jp-mirror-editor-comment-color: #408080; + --jp-mirror-editor-string-color: #ba2121; + --jp-mirror-editor-string-2-color: #708; + --jp-mirror-editor-meta-color: #aa22ff; + --jp-mirror-editor-qualifier-color: #555; + --jp-mirror-editor-builtin-color: #008000; + --jp-mirror-editor-bracket-color: #997; + --jp-mirror-editor-tag-color: #170; + --jp-mirror-editor-attribute-color: #00c; + --jp-mirror-editor-header-color: blue; + --jp-mirror-editor-quote-color: #090; + --jp-mirror-editor-link-color: #00c; + --jp-mirror-editor-error-color: #f00; + --jp-mirror-editor-hr-color: #999; + + /* Vega extension styles */ + + --jp-vega-background: white; + + /* Sidebar-related styles */ + + --jp-sidebar-min-width: 250px; + + /* Search-related styles */ + + --jp-search-toggle-off-opacity: 0.5; + --jp-search-toggle-hover-opacity: 0.8; + --jp-search-toggle-on-opacity: 1; + --jp-search-selected-match-background-color: rgb(245, 200, 0); + --jp-search-selected-match-color: black; + --jp-search-unselected-match-background-color: var( + --jp-inverse-layout-color0 + ); + --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0); + + /* Icon colors that work well with light or dark backgrounds */ + --jp-icon-contrast-color0: var(--md-purple-600); + --jp-icon-contrast-color1: var(--md-green-600); + --jp-icon-contrast-color2: var(--md-pink-600); + --jp-icon-contrast-color3: var(--md-blue-600); +} +</style> + +<style type="text/css"> +a.anchor-link { + display: none; +} +.highlight { + margin: 0.4em; +} + +/* Input area styling */ +.jp-InputArea { + overflow: hidden; +} + +.jp-InputArea-editor { + overflow: hidden; +} + +@media print { + body { + margin: 0; + } +} +</style> + +<!-- Load mathjax --> + <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML-full,Safe"> </script> + <!-- MathJax configuration --> + <script type="text/x-mathjax-config"> + init_mathjax = function() { + if (window.MathJax) { + // MathJax loaded + MathJax.Hub.Config({ + TeX: { + equationNumbers: { + autoNumber: "AMS", + useLabelIds: true + } + }, + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + displayMath: [ ['$$','$$'], ["\\[","\\]"] ], + processEscapes: true, + processEnvironments: true + }, + displayAlign: 'center', + CommonHTML: { + linebreaks: { + automatic: true + } + }, + "HTML-CSS": { + linebreaks: { + automatic: true + } + } + }); + + MathJax.Hub.Queue(["Typeset", MathJax.Hub]); + } + } + init_mathjax(); + </script> + <!-- End of mathjax configuration --></head> +<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light"> + +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h1 id="Dict-and-Graph-Search">Dict and Graph Search<a class="anchor-link" href="#Dict-and-Graph-Search">¶</a></h1><p>In this reading, we'll do two things:</p> +<ol> +<li>see how we could implement a class that works the same as dict (maps keys to values)</li> +<li>see how we can search more general graphs (that may have cycles)</li> +</ol> +<p>You can download the .ipynb form of this reading <a href="lec-12-dict-graph-search.ipynb">here</a>.</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [1]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">graphviz</span> <span class="kn">import</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">Digraph</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Review">Review<a class="anchor-link" href="#Review">¶</a></h2><p>Carefully read the following code. It's similar to the BST (binary search tree) implementation in the last reading, except that <code>add</code> and <code>contains</code> have been turned into methods in <code>Node</code> (instead of just functions).</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [2]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">class</span> <span class="nc">Node</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">val</span> <span class="o">=</span> <span class="n">val</span> + <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">def</span> <span class="nf">to_graphviz</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">g</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="k">if</span> <span class="n">g</span> <span class="o">==</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">g</span> <span class="o">=</span> <span class="n">Digraph</span><span class="p">()</span> + + <span class="c1"># draw self</span> + <span class="n">g</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="nb">repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">val</span><span class="p">))</span> + + <span class="k">for</span> <span class="n">label</span><span class="p">,</span> <span class="n">child</span> <span class="ow">in</span> <span class="p">[(</span><span class="s2">"L"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="p">),</span> <span class="p">(</span><span class="s2">"R"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span><span class="p">)]:</span> + <span class="k">if</span> <span class="n">child</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="c1"># draw child, recursively</span> + <span class="n">child</span><span class="o">.</span><span class="n">to_graphviz</span><span class="p">(</span><span class="n">g</span><span class="p">)</span> + + <span class="c1"># draw edge from self to child</span> + <span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="nb">repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">val</span><span class="p">),</span> <span class="nb">repr</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">val</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span> + <span class="k">return</span> <span class="n">g</span> + + <span class="k">def</span> <span class="nf">_repr_svg_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_graphviz</span><span class="p">()</span><span class="o">.</span><span class="n">_repr_image_svg_xml</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">val</span> <span class="o">==</span> <span class="n">val</span><span class="p">:</span> + <span class="k">return</span> + <span class="k">elif</span> <span class="n">val</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">val</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">right</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">contains</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span> + <span class="k">if</span> <span class="n">target</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">val</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="o">.</span><span class="n">contains</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">target</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">val</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span><span class="o">.</span><span class="n">contains</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">val</span> <span class="o">==</span> <span class="n">target</span> + +<span class="n">tree</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="s2">"A"</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"D"</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"B"</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"F"</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"E"</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"C"</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"G"</span><span class="p">)</span> +<span class="n">tree</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[2]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="206pt" height="305pt" + viewBox="0.00 0.00 206.00 305.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 301)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-301 202,-301 202,4 -4,4"/> +<!-- 'A' --> +<g id="node1" class="node"> +<title>'A'</title> +<ellipse fill="none" stroke="black" cx="63" cy="-279" rx="27" ry="18"/> +<text text-anchor="middle" x="63" y="-275.3" font-family="Times,serif" font-size="14.00">'A'</text> +</g> +<!-- 'D' --> +<g id="node2" class="node"> +<title>'D'</title> +<ellipse fill="none" stroke="black" cx="63" cy="-192" rx="27" ry="18"/> +<text text-anchor="middle" x="63" y="-188.3" font-family="Times,serif" font-size="14.00">'D'</text> +</g> +<!-- 'A'->'D' --> +<g id="edge6" class="edge"> +<title>'A'->'D'</title> +<path fill="none" stroke="black" d="M63,-260.8C63,-249.16 63,-233.55 63,-220.24"/> +<polygon fill="black" stroke="black" points="66.5,-220.18 63,-210.18 59.5,-220.18 66.5,-220.18"/> +<text text-anchor="middle" x="68" y="-231.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'B' --> +<g id="node3" class="node"> +<title>'B'</title> +<ellipse fill="none" stroke="black" cx="27" cy="-105" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-101.3" font-family="Times,serif" font-size="14.00">'B'</text> +</g> +<!-- 'D'->'B' --> +<g id="edge2" class="edge"> +<title>'D'->'B'</title> +<path fill="none" stroke="black" d="M55.89,-174.21C50.78,-162.14 43.79,-145.64 37.97,-131.89"/> +<polygon fill="black" stroke="black" points="41.1,-130.31 33.98,-122.47 34.65,-133.04 41.1,-130.31"/> +<text text-anchor="middle" x="52.5" y="-144.8" font-family="Times,serif" font-size="14.00">L</text> +</g> +<!-- 'F' --> +<g id="node5" class="node"> +<title>'F'</title> +<ellipse fill="none" stroke="black" cx="99" cy="-105" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-101.3" font-family="Times,serif" font-size="14.00">'F'</text> +</g> +<!-- 'D'->'F' --> +<g id="edge5" class="edge"> +<title>'D'->'F'</title> +<path fill="none" stroke="black" d="M70.11,-174.21C75.22,-162.14 82.21,-145.64 88.03,-131.89"/> +<polygon fill="black" stroke="black" points="91.35,-133.04 92.02,-122.47 84.9,-130.31 91.35,-133.04"/> +<text text-anchor="middle" x="89" y="-144.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'C' --> +<g id="node4" class="node"> +<title>'C'</title> +<ellipse fill="none" stroke="black" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-14.3" font-family="Times,serif" font-size="14.00">'C'</text> +</g> +<!-- 'B'->'C' --> +<g id="edge1" class="edge"> +<title>'B'->'C'</title> +<path fill="none" stroke="black" d="M27,-86.8C27,-75.16 27,-59.55 27,-46.24"/> +<polygon fill="black" stroke="black" points="30.5,-46.18 27,-36.18 23.5,-46.18 30.5,-46.18"/> +<text text-anchor="middle" x="32" y="-57.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'E' --> +<g id="node6" class="node"> +<title>'E'</title> +<ellipse fill="none" stroke="black" cx="99" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-14.3" font-family="Times,serif" font-size="14.00">'E'</text> +</g> +<!-- 'F'->'E' --> +<g id="edge3" class="edge"> +<title>'F'->'E'</title> +<path fill="none" stroke="black" d="M99,-86.8C99,-75.16 99,-59.55 99,-46.24"/> +<polygon fill="black" stroke="black" points="102.5,-46.18 99,-36.18 95.5,-46.18 102.5,-46.18"/> +<text text-anchor="middle" x="103.5" y="-57.8" font-family="Times,serif" font-size="14.00">L</text> +</g> +<!-- 'G' --> +<g id="node7" class="node"> +<title>'G'</title> +<ellipse fill="none" stroke="black" cx="171" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-14.3" font-family="Times,serif" font-size="14.00">'G'</text> +</g> +<!-- 'F'->'G' --> +<g id="edge4" class="edge"> +<title>'F'->'G'</title> +<path fill="none" stroke="black" d="M111.87,-88.8C122.93,-75.75 139.04,-56.74 151.65,-41.85"/> +<polygon fill="black" stroke="black" points="154.45,-43.96 158.24,-34.06 149.11,-39.43 154.45,-43.96"/> +<text text-anchor="middle" x="144" y="-57.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [3]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">tree</span><span class="o">.</span><span class="n">contains</span><span class="p">(</span><span class="s2">"G"</span><span class="p">),</span> <span class="n">tree</span><span class="o">.</span><span class="n">contains</span><span class="p">(</span><span class="s2">"Z"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[3]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>(True, False)</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Part-1:-BST-based-Dictionary">Part 1: BST-based Dictionary<a class="anchor-link" href="#Part-1:-BST-based-Dictionary">¶</a></h2><p>The above BST (binary search tree) is basically acting like a set. We can add values and efficiently check whether certain values have already been added.</p> +<p>What if we want to make it act like a dict? There are a couple things we should do:</p> +<ol> +<li>have both <code>key</code> and <code>val</code> attributes in <code>Node</code></li> +<li>the sort order should be based on <code>key</code>, not <code>val</code></li> +<li>we should implement <code>__getitem__</code> and <code>__setitem__</code></li> +</ol> +<p>Let's do it:</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">class</span> <span class="nc">Node</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span> + <span class="bp">self</span><span class="o">.</span><span class="n">val</span> <span class="o">=</span> <span class="n">val</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="kc">None</span> + + <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"="</span> <span class="o">+</span> <span class="nb">repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">val</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">to_graphviz</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">g</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> + <span class="k">if</span> <span class="n">g</span> <span class="o">==</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">g</span> <span class="o">=</span> <span class="n">Digraph</span><span class="p">()</span> + + <span class="c1"># draw self</span> + <span class="k">for</span> <span class="n">label</span><span class="p">,</span> <span class="n">child</span> <span class="ow">in</span> <span class="p">[(</span><span class="s2">"L"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="p">),</span> <span class="p">(</span><span class="s2">"R"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span><span class="p">)]:</span> + <span class="k">if</span> <span class="n">child</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">child</span><span class="o">.</span><span class="n">to_graphviz</span><span class="p">(</span><span class="n">g</span><span class="p">)</span> + <span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">(),</span> <span class="n">child</span><span class="o">.</span><span class="n">name</span><span class="p">(),</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span> + <span class="k">return</span> <span class="n">g</span> + + <span class="k">def</span> <span class="nf">_repr_svg_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_graphviz</span><span class="p">()</span><span class="o">.</span><span class="n">_repr_image_svg_xml</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">==</span> <span class="n">key</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">val</span> <span class="o">=</span> <span class="n">val</span> + <span class="k">elif</span> <span class="n">key</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">right</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> + + <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span> + <span class="k">if</span> <span class="n">target</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">left</span><span class="p">[</span><span class="n">target</span><span class="p">]</span> + <span class="k">elif</span> <span class="n">target</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">right</span><span class="p">[</span><span class="n">target</span><span class="p">]</span> + <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">==</span> <span class="n">target</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">val</span> + + <span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span> + +<span class="n">tree</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"D"</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"F"</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"E"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> +<span class="n">tree</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"G"</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span> +<span class="n">tree</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[4]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="219pt" height="305pt" + viewBox="0.00 0.00 219.14 305.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 301)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-301 215.14,-301 215.14,4 -4,4"/> +<!-- 'B'=3 --> +<g id="node1" class="node"> +<title>'B'=3</title> +<ellipse fill="none" stroke="black" cx="29.25" cy="-105" rx="29.5" ry="18"/> +<text text-anchor="middle" x="29.25" y="-101.3" font-family="Times,serif" font-size="14.00">'B'=3</text> +</g> +<!-- 'C'=6 --> +<g id="node2" class="node"> +<title>'C'=6</title> +<ellipse fill="none" stroke="black" cx="29.25" cy="-18" rx="29.5" ry="18"/> +<text text-anchor="middle" x="29.25" y="-14.3" font-family="Times,serif" font-size="14.00">'C'=6</text> +</g> +<!-- 'B'=3->'C'=6 --> +<g id="edge1" class="edge"> +<title>'B'=3->'C'=6</title> +<path fill="none" stroke="black" d="M29.25,-86.8C29.25,-75.16 29.25,-59.55 29.25,-46.24"/> +<polygon fill="black" stroke="black" points="32.75,-46.18 29.25,-36.18 25.75,-46.18 32.75,-46.18"/> +<text text-anchor="middle" x="34.25" y="-57.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'D'=2 --> +<g id="node3" class="node"> +<title>'D'=2</title> +<ellipse fill="none" stroke="black" cx="67.25" cy="-192" rx="29.8" ry="18"/> +<text text-anchor="middle" x="67.25" y="-188.3" font-family="Times,serif" font-size="14.00">'D'=2</text> +</g> +<!-- 'D'=2->'B'=3 --> +<g id="edge2" class="edge"> +<title>'D'=2->'B'=3</title> +<path fill="none" stroke="black" d="M59.74,-174.21C54.34,-162.14 46.97,-145.64 40.82,-131.89"/> +<polygon fill="black" stroke="black" points="43.89,-130.17 36.61,-122.47 37.5,-133.03 43.89,-130.17"/> +<text text-anchor="middle" x="55.75" y="-144.8" font-family="Times,serif" font-size="14.00">L</text> +</g> +<!-- 'F'=4 --> +<g id="node4" class="node"> +<title>'F'=4</title> +<ellipse fill="none" stroke="black" cx="105.25" cy="-105" rx="28.7" ry="18"/> +<text text-anchor="middle" x="105.25" y="-101.3" font-family="Times,serif" font-size="14.00">'F'=4</text> +</g> +<!-- 'D'=2->'F'=4 --> +<g id="edge5" class="edge"> +<title>'D'=2->'F'=4</title> +<path fill="none" stroke="black" d="M74.75,-174.21C80.15,-162.14 87.53,-145.64 93.67,-131.89"/> +<polygon fill="black" stroke="black" points="97,-133.03 97.88,-122.47 90.61,-130.17 97,-133.03"/> +<text text-anchor="middle" x="94.25" y="-144.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'E'=5 --> +<g id="node5" class="node"> +<title>'E'=5</title> +<ellipse fill="none" stroke="black" cx="105.25" cy="-18" rx="28.7" ry="18"/> +<text text-anchor="middle" x="105.25" y="-14.3" font-family="Times,serif" font-size="14.00">'E'=5</text> +</g> +<!-- 'F'=4->'E'=5 --> +<g id="edge3" class="edge"> +<title>'F'=4->'E'=5</title> +<path fill="none" stroke="black" d="M105.25,-86.8C105.25,-75.16 105.25,-59.55 105.25,-46.24"/> +<polygon fill="black" stroke="black" points="108.75,-46.18 105.25,-36.18 101.75,-46.18 108.75,-46.18"/> +<text text-anchor="middle" x="109.75" y="-57.8" font-family="Times,serif" font-size="14.00">L</text> +</g> +<!-- 'G'=7 --> +<g id="node6" class="node"> +<title>'G'=7</title> +<ellipse fill="none" stroke="black" cx="181.25" cy="-18" rx="29.8" ry="18"/> +<text text-anchor="middle" x="181.25" y="-14.3" font-family="Times,serif" font-size="14.00">'G'=7</text> +</g> +<!-- 'F'=4->'G'=7 --> +<g id="edge4" class="edge"> +<title>'F'=4->'G'=7</title> +<path fill="none" stroke="black" d="M118.83,-88.8C130.43,-75.83 147.3,-56.97 160.57,-42.12"/> +<polygon fill="black" stroke="black" points="163.47,-44.14 167.52,-34.35 158.25,-39.47 163.47,-44.14"/> +<text text-anchor="middle" x="152.25" y="-57.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'A'=1 --> +<g id="node7" class="node"> +<title>'A'=1</title> +<ellipse fill="none" stroke="black" cx="67.25" cy="-279" rx="29.8" ry="18"/> +<text text-anchor="middle" x="67.25" y="-275.3" font-family="Times,serif" font-size="14.00">'A'=1</text> +</g> +<!-- 'A'=1->'D'=2 --> +<g id="edge6" class="edge"> +<title>'A'=1->'D'=2</title> +<path fill="none" stroke="black" d="M67.25,-260.8C67.25,-249.16 67.25,-233.55 67.25,-220.24"/> +<polygon fill="black" stroke="black" points="70.75,-220.18 67.25,-210.18 63.75,-220.18 70.75,-220.18"/> +<text text-anchor="middle" x="72.25" y="-231.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [5]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">tree</span><span class="p">[</span><span class="s2">"A"</span><span class="p">],</span> <span class="n">tree</span><span class="p">[</span><span class="s2">"C"</span><span class="p">],</span> <span class="n">tree</span><span class="p">[</span><span class="s2">"G"</span><span class="p">]</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[5]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>(1, 6, 7)</pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [6]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">tree</span><span class="p">[</span><span class="s2">"A"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">777</span> +<span class="n">tree</span><span class="p">[</span><span class="s2">"C"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">888</span> +<span class="n">tree</span><span class="p">[</span><span class="s2">"G"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">999</span> +<span class="n">tree</span><span class="p">[</span><span class="s2">"H"</span><span class="p">]</span> <span class="o">=</span> <span class="mi">111</span> +<span class="n">tree</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[6]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="255pt" height="392pt" + viewBox="0.00 0.00 254.69 392.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 388)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-388 250.69,-388 250.69,4 -4,4"/> +<!-- 'B'=3 --> +<g id="node1" class="node"> +<title>'B'=3</title> +<ellipse fill="none" stroke="black" cx="43.35" cy="-192" rx="29.5" ry="18"/> +<text text-anchor="middle" x="43.35" y="-188.3" font-family="Times,serif" font-size="14.00">'B'=3</text> +</g> +<!-- 'C'=888 --> +<g id="node2" class="node"> +<title>'C'=888</title> +<ellipse fill="none" stroke="black" cx="38.35" cy="-105" rx="38.19" ry="18"/> +<text text-anchor="middle" x="38.35" y="-101.3" font-family="Times,serif" font-size="14.00">'C'=888</text> +</g> +<!-- 'B'=3->'C'=888 --> +<g id="edge1" class="edge"> +<title>'B'=3->'C'=888</title> +<path fill="none" stroke="black" d="M42.33,-173.8C41.65,-162.16 40.73,-146.55 39.95,-133.24"/> +<polygon fill="black" stroke="black" points="43.44,-132.95 39.36,-123.18 36.45,-133.36 43.44,-132.95"/> +<text text-anchor="middle" x="46.35" y="-144.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'D'=2 --> +<g id="node3" class="node"> +<title>'D'=2</title> +<ellipse fill="none" stroke="black" cx="81.35" cy="-279" rx="29.8" ry="18"/> +<text text-anchor="middle" x="81.35" y="-275.3" font-family="Times,serif" font-size="14.00">'D'=2</text> +</g> +<!-- 'D'=2->'B'=3 --> +<g id="edge2" class="edge"> +<title>'D'=2->'B'=3</title> +<path fill="none" stroke="black" d="M73.84,-261.21C68.44,-249.14 61.07,-232.64 54.92,-218.89"/> +<polygon fill="black" stroke="black" points="57.99,-217.17 50.71,-209.47 51.6,-220.03 57.99,-217.17"/> +<text text-anchor="middle" x="69.85" y="-231.8" font-family="Times,serif" font-size="14.00">L</text> +</g> +<!-- 'F'=4 --> +<g id="node4" class="node"> +<title>'F'=4</title> +<ellipse fill="none" stroke="black" cx="123.35" cy="-192" rx="28.7" ry="18"/> +<text text-anchor="middle" x="123.35" y="-188.3" font-family="Times,serif" font-size="14.00">'F'=4</text> +</g> +<!-- 'D'=2->'F'=4 --> +<g id="edge6" class="edge"> +<title>'D'=2->'F'=4</title> +<path fill="none" stroke="black" d="M89.44,-261.61C95.49,-249.38 103.86,-232.44 110.77,-218.46"/> +<polygon fill="black" stroke="black" points="113.98,-219.85 115.27,-209.34 107.71,-216.75 113.98,-219.85"/> +<text text-anchor="middle" x="110.35" y="-231.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'E'=5 --> +<g id="node5" class="node"> +<title>'E'=5</title> +<ellipse fill="none" stroke="black" cx="123.35" cy="-105" rx="28.7" ry="18"/> +<text text-anchor="middle" x="123.35" y="-101.3" font-family="Times,serif" font-size="14.00">'E'=5</text> +</g> +<!-- 'F'=4->'E'=5 --> +<g id="edge3" class="edge"> +<title>'F'=4->'E'=5</title> +<path fill="none" stroke="black" d="M123.35,-173.8C123.35,-162.16 123.35,-146.55 123.35,-133.24"/> +<polygon fill="black" stroke="black" points="126.85,-133.18 123.35,-123.18 119.85,-133.18 126.85,-133.18"/> +<text text-anchor="middle" x="127.85" y="-144.8" font-family="Times,serif" font-size="14.00">L</text> +</g> +<!-- 'G'=999 --> +<g id="node6" class="node"> +<title>'G'=999</title> +<ellipse fill="none" stroke="black" cx="208.35" cy="-105" rx="38.19" ry="18"/> +<text text-anchor="middle" x="208.35" y="-101.3" font-family="Times,serif" font-size="14.00">'G'=999</text> +</g> +<!-- 'F'=4->'G'=999 --> +<g id="edge5" class="edge"> +<title>'F'=4->'G'=999</title> +<path fill="none" stroke="black" d="M138.15,-176.19C151.19,-163.15 170.4,-143.95 185.43,-128.92"/> +<polygon fill="black" stroke="black" points="188.25,-131.04 192.85,-121.5 183.3,-126.09 188.25,-131.04"/> +<text text-anchor="middle" x="176.35" y="-144.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'H'=111 --> +<g id="node7" class="node"> +<title>'H'=111</title> +<ellipse fill="none" stroke="black" cx="208.35" cy="-18" rx="38.19" ry="18"/> +<text text-anchor="middle" x="208.35" y="-14.3" font-family="Times,serif" font-size="14.00">'H'=111</text> +</g> +<!-- 'G'=999->'H'=111 --> +<g id="edge4" class="edge"> +<title>'G'=999->'H'=111</title> +<path fill="none" stroke="black" d="M208.35,-86.8C208.35,-75.16 208.35,-59.55 208.35,-46.24"/> +<polygon fill="black" stroke="black" points="211.85,-46.18 208.35,-36.18 204.85,-46.18 211.85,-46.18"/> +<text text-anchor="middle" x="213.35" y="-57.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +<!-- 'A'=777 --> +<g id="node8" class="node"> +<title>'A'=777</title> +<ellipse fill="none" stroke="black" cx="81.35" cy="-366" rx="38.19" ry="18"/> +<text text-anchor="middle" x="81.35" y="-362.3" font-family="Times,serif" font-size="14.00">'A'=777</text> +</g> +<!-- 'A'=777->'D'=2 --> +<g id="edge7" class="edge"> +<title>'A'=777->'D'=2</title> +<path fill="none" stroke="black" d="M81.35,-347.8C81.35,-336.16 81.35,-320.55 81.35,-307.24"/> +<polygon fill="black" stroke="black" points="84.85,-307.18 81.35,-297.18 77.85,-307.18 84.85,-307.18"/> +<text text-anchor="middle" x="86.35" y="-318.8" font-family="Times,serif" font-size="14.00">R</text> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [7]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">tree</span><span class="p">[</span><span class="s2">"A"</span><span class="p">],</span> <span class="n">tree</span><span class="p">[</span><span class="s2">"C"</span><span class="p">],</span> <span class="n">tree</span><span class="p">[</span><span class="s2">"G"</span><span class="p">],</span> <span class="n">tree</span><span class="p">[</span><span class="s2">"H"</span><span class="p">]</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[7]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>(777, 888, 999, 111)</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Our BST-based dictionary may have some advantages over the regular <code>dict</code>. Specifically, which features will be easier to add to our version?</p> +<ol> +<li>getting the values corresponding to all keys in some range</li> +<li>providing a way to loop over the keys in ascending order</li> +<li>finding the key corresponding to a specific value</li> +</ol> +<details> +<summary>Answers</summary> +(1) yes. Substrees correspond to ranges of keys, so we can efficiently search for all keys in a range (not possible with a regular dict).<br> +(2) yes. We would need to write some tricky code with generators, but the data is already arranged in a sorted order.<br> +(3) no. The same value may appear multiple times anywhere in the tree. There is no way to efficiently find all nodes with a given value without checking all the nodes.<br> +</details> +</div> +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Part-2:-Graph-Search">Part 2: Graph Search<a class="anchor-link" href="#Part-2:-Graph-Search">¶</a></h2><p>Checking whether a tree has a value is an example of a search problem.</p> +<p>What if we want to search a more general graph for a particular value, from a particular starting node? There are many use cases for this:</p> +<ol> +<li>looking for a route between two cities</li> +<li>looking through different move choices in a game (each board state is a node; an edge represents a legal move)</li> +<li>cycle detection, perhaps representing incoherent preferences we want to identify (do people claim to like chocolate more than vanilla, vanilla more than strawberry, and strawberry more than chocolate?)</li> +</ol> +<p>We can force a loop with our Node objects, complicating the search problem.</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [8]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">A</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> +<span class="n">B</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> +<span class="n">A</span><span class="o">.</span><span class="n">right</span> <span class="o">=</span> <span class="n">B</span> +<span class="n">B</span><span class="o">.</span><span class="n">left</span> <span class="o">=</span> <span class="n">A</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [9]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">search</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> + <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">key</span> <span class="o">==</span> <span class="n">key</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="p">[</span><span class="n">node</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">node</span><span class="o">.</span><span class="n">right</span><span class="p">]:</span> + <span class="k">if</span> <span class="n">child</span> <span class="o">!=</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">search</span><span class="p">(</span><span class="n">child</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">return</span> <span class="kc">False</span> + +<span class="c1"># does it work?</span> +<span class="n">search</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[9]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>True</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>It worked there, but we're going to have a problem if we look for something we can't find. Searching A will make us search B. Searching B will make us search A.</p> +<p>This will cause infinite recusion:</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [10]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">try</span><span class="p">:</span> + <span class="n">search</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="s2">"Z"</span><span class="p">)</span> +<span class="k">except</span> <span class="ne">RecursionError</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"I warned you!"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + +<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain"> +<pre>I warned you! +</pre> +</div> +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h3 id="Graph-Search,-Done-Right">Graph Search, Done Right<a class="anchor-link" href="#Graph-Search,-Done-Right">¶</a></h3><p>To avoid getting trapped in cycles, we'll need to keep track of which nodes we have visited in our search and make sure we don't visit them more than once.</p> +<p>Let's write a Node class for a general directed graph (each node can have any other node as a child) and a Graph class that can keep graph-wide state, like a set of nodes that have been visited during a recursive search.</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [11]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">class</span> <span class="nc">mygraph</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="k">def</span> <span class="nf">node</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">edge</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">[</span><span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">]:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">src</span><span class="p">]</span><span class="o">.</span><span class="n">children</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">dst</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">_repr_svg_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">g</span> <span class="o">=</span> <span class="n">Digraph</span><span class="p">()</span> + <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">:</span> + <span class="n">g</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="o">.</span><span class="n">children</span><span class="p">:</span> + <span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">_repr_image_svg_xml</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visited</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">src</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">dst</span><span class="p">)</span> + +<span class="k">class</span> <span class="nc">Node</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">graph</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">graph</span> <span class="o">=</span> <span class="n">graph</span> + <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> + <span class="bp">self</span><span class="o">.</span><span class="n">children</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">False</span> + <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">dst</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">children</span><span class="p">:</span> + <span class="k">if</span> <span class="n">child</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">dst</span><span class="p">):</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">return</span> <span class="kc">False</span> + +<span class="n">g</span> <span class="o">=</span> <span class="n">mygraph</span><span class="p">()</span> +<span class="n">g</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s2">"A"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"D"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[11]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="134pt" height="188pt" + viewBox="0.00 0.00 134.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-184 130,-184 130,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="27" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-158.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- B --> +<g id="node2" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="99" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-158.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- C --> +<g id="node3" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="71" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="71" y="-86.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- B->C --> +<g id="edge1" class="edge"> +<title>B->C</title> +<path fill="none" stroke="black" d="M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95"/> +<polygon fill="black" stroke="black" points="84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45"/> +</g> +<!-- D --> +<g id="node4" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="98" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="98" y="-14.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- C->D --> +<g id="edge2" class="edge"> +<title>C->D</title> +<path fill="none" stroke="black" d="M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35"/> +<polygon fill="black" stroke="black" points="91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55"/> +</g> +<!-- D->B --> +<g id="edge3" class="edge"> +<title>D->B</title> +<path fill="none" stroke="black" d="M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96"/> +<polygon fill="black" stroke="black" points="100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [12]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"A"</span><span class="p">),</span> <span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">),</span> <span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">),</span> <span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"A"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[12]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>(True, False, True, False)</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Challenge: can you modify the find method, so that instead of returning False or True, it returns None (could not find from the starting point) or a list (indicating the path from the src to the dst)?</p> + +</div> +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h1 id="Conclusion">Conclusion<a class="anchor-link" href="#Conclusion">¶</a></h1><p>There are many ways to search through graph structures to find specific nodes/values. In this reading, we learned two new techniques:</p> +<ol> +<li>if the graph is a binary search tree, we can efficiently find what we want, without checking each node. This is because we know an upper/lower bound on a subtree, so we can skip it if it can't contain what we want.</li> +<li>if a graph has cycles, it's easy to write search code that results in infinite recursion. The trick is to keep a set of visited nodes, to make sure we don't keep searching over the same ones infinitely.</li> +</ol> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +</body> + + + + + + + +</html> diff --git a/lecture_material/09-Graph-Search-1/reading1.ipynb b/lecture_material/09-Graph-Search-1/reading1.ipynb new file mode 100644 index 0000000..6500537 --- /dev/null +++ b/lecture_material/09-Graph-Search-1/reading1.ipynb @@ -0,0 +1,901 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dict and Graph Search\n", + "\n", + "In this reading, we'll do two things:\n", + "\n", + "1. see how we could implement a class that works the same as dict (maps keys to values)\n", + "2. see how we can search more general graphs (that may have cycles)\n", + "\n", + "You can download the .ipynb form of this reading [here](lec-12-dict-graph-search.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from graphviz import Graph, Digraph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Review\n", + "\n", + "Carefully read the following code. It's similar to the BST (binary search tree) implementation in the last reading, except that `add` and `contains` have been turned into methods in `Node` (instead of just functions)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"206pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 206.00 305.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 301)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 202,-301 202,4 -4,4\"/>\n", + "<!-- 'A' -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>'A'</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"63\" cy=\"-279\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"63\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">'A'</text>\n", + "</g>\n", + "<!-- 'D' -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>'D'</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"63\" cy=\"-192\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"63\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">'D'</text>\n", + "</g>\n", + "<!-- 'A'->'D' -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>'A'->'D'</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M63,-260.8C63,-249.16 63,-233.55 63,-220.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"66.5,-220.18 63,-210.18 59.5,-220.18 66.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"68\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'B' -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>'B'</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-105\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">'B'</text>\n", + "</g>\n", + "<!-- 'D'->'B' -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>'D'->'B'</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M55.89,-174.21C50.78,-162.14 43.79,-145.64 37.97,-131.89\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"41.1,-130.31 33.98,-122.47 34.65,-133.04 41.1,-130.31\"/>\n", + "<text text-anchor=\"middle\" x=\"52.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">L</text>\n", + "</g>\n", + "<!-- 'F' -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>'F'</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-105\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">'F'</text>\n", + "</g>\n", + "<!-- 'D'->'F' -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>'D'->'F'</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M70.11,-174.21C75.22,-162.14 82.21,-145.64 88.03,-131.89\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"91.35,-133.04 92.02,-122.47 84.9,-130.31 91.35,-133.04\"/>\n", + "<text text-anchor=\"middle\" x=\"89\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'C' -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>'C'</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">'C'</text>\n", + "</g>\n", + "<!-- 'B'->'C' -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>'B'->'C'</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M27,-86.8C27,-75.16 27,-59.55 27,-46.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"30.5,-46.18 27,-36.18 23.5,-46.18 30.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"32\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'E' -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>'E'</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">'E'</text>\n", + "</g>\n", + "<!-- 'F'->'E' -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>'F'->'E'</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M99,-86.8C99,-75.16 99,-59.55 99,-46.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"102.5,-46.18 99,-36.18 95.5,-46.18 102.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"103.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">L</text>\n", + "</g>\n", + "<!-- 'G' -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>'G'</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">'G'</text>\n", + "</g>\n", + "<!-- 'F'->'G' -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>'F'->'G'</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M111.87,-88.8C122.93,-75.75 139.04,-56.74 151.65,-41.85\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"154.45,-43.96 158.24,-34.06 149.11,-39.43 154.45,-43.96\"/>\n", + "<text text-anchor=\"middle\" x=\"144\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.Node at 0x7face1386fd0>" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class Node:\n", + " def __init__(self, val):\n", + " self.val = val\n", + " self.left = None\n", + " self.right = None\n", + " \n", + " def to_graphviz(self, g=None):\n", + " if g == None:\n", + " g = Digraph()\n", + " \n", + " # draw self\n", + " g.node(repr(self.val))\n", + " \n", + " for label, child in [(\"L\", self.left), (\"R\", self.right)]:\n", + " if child != None:\n", + " # draw child, recursively\n", + " child.to_graphviz(g)\n", + " \n", + " # draw edge from self to child\n", + " g.edge(repr(self.val), repr(child.val), label=label)\n", + " return g\n", + " \n", + " def _repr_svg_(self):\n", + " return self.to_graphviz()._repr_image_svg_xml()\n", + " \n", + " def add(self, val):\n", + " if self.val == val:\n", + " return\n", + " elif val < self.val:\n", + " if self.left != None:\n", + " self.left.add(val)\n", + " else:\n", + " self.left = Node(val)\n", + " else:\n", + " if self.right != None:\n", + " self.right.add(val)\n", + " else:\n", + " self.right = Node(val)\n", + "\n", + " def contains(self, target):\n", + " if target < self.val and self.left != None:\n", + " return self.left.contains(target)\n", + " elif target > self.val and self.right != None:\n", + " return self.right.contains(target)\n", + " return self.val == target\n", + " \n", + "tree = Node(\"A\")\n", + "tree.add(\"D\")\n", + "tree.add(\"B\")\n", + "tree.add(\"F\")\n", + "tree.add(\"E\")\n", + "tree.add(\"C\")\n", + "tree.add(\"G\")\n", + "tree" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(True, False)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tree.contains(\"G\"), tree.contains(\"Z\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 1: BST-based Dictionary\n", + "\n", + "The above BST (binary search tree) is basically acting like a set. We can add values and efficiently check whether certain values have already been added.\n", + "\n", + "What if we want to make it act like a dict? There are a couple things we should do:\n", + "\n", + "1. have both `key` and `val` attributes in `Node`\n", + "2. the sort order should be based on `key`, not `val`\n", + "3. we should implement `__getitem__` and `__setitem__`\n", + "\n", + "Let's do it:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"219pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 219.14 305.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 301)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 215.14,-301 215.14,4 -4,4\"/>\n", + "<!-- 'B'=3 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>'B'=3</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"29.25\" cy=\"-105\" rx=\"29.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"29.25\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">'B'=3</text>\n", + "</g>\n", + "<!-- 'C'=6 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>'C'=6</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"29.25\" cy=\"-18\" rx=\"29.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"29.25\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">'C'=6</text>\n", + "</g>\n", + "<!-- 'B'=3->'C'=6 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>'B'=3->'C'=6</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M29.25,-86.8C29.25,-75.16 29.25,-59.55 29.25,-46.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"32.75,-46.18 29.25,-36.18 25.75,-46.18 32.75,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"34.25\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'D'=2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>'D'=2</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"67.25\" cy=\"-192\" rx=\"29.8\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"67.25\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">'D'=2</text>\n", + "</g>\n", + "<!-- 'D'=2->'B'=3 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>'D'=2->'B'=3</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M59.74,-174.21C54.34,-162.14 46.97,-145.64 40.82,-131.89\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"43.89,-130.17 36.61,-122.47 37.5,-133.03 43.89,-130.17\"/>\n", + "<text text-anchor=\"middle\" x=\"55.75\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">L</text>\n", + "</g>\n", + "<!-- 'F'=4 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>'F'=4</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"105.25\" cy=\"-105\" rx=\"28.7\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"105.25\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">'F'=4</text>\n", + "</g>\n", + "<!-- 'D'=2->'F'=4 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>'D'=2->'F'=4</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M74.75,-174.21C80.15,-162.14 87.53,-145.64 93.67,-131.89\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"97,-133.03 97.88,-122.47 90.61,-130.17 97,-133.03\"/>\n", + "<text text-anchor=\"middle\" x=\"94.25\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'E'=5 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>'E'=5</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"105.25\" cy=\"-18\" rx=\"28.7\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"105.25\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">'E'=5</text>\n", + "</g>\n", + "<!-- 'F'=4->'E'=5 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>'F'=4->'E'=5</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M105.25,-86.8C105.25,-75.16 105.25,-59.55 105.25,-46.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"108.75,-46.18 105.25,-36.18 101.75,-46.18 108.75,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"109.75\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">L</text>\n", + "</g>\n", + "<!-- 'G'=7 -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>'G'=7</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"181.25\" cy=\"-18\" rx=\"29.8\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"181.25\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">'G'=7</text>\n", + "</g>\n", + "<!-- 'F'=4->'G'=7 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>'F'=4->'G'=7</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M118.83,-88.8C130.43,-75.83 147.3,-56.97 160.57,-42.12\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"163.47,-44.14 167.52,-34.35 158.25,-39.47 163.47,-44.14\"/>\n", + "<text text-anchor=\"middle\" x=\"152.25\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'A'=1 -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>'A'=1</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"67.25\" cy=\"-279\" rx=\"29.8\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"67.25\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">'A'=1</text>\n", + "</g>\n", + "<!-- 'A'=1->'D'=2 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>'A'=1->'D'=2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M67.25,-260.8C67.25,-249.16 67.25,-233.55 67.25,-220.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"70.75,-220.18 67.25,-210.18 63.75,-220.18 70.75,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"72.25\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.Node at 0x7face1386310>" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class Node:\n", + " def __init__(self, key, val):\n", + " self.key = key\n", + " self.val = val\n", + " \n", + " self.left = None\n", + " self.right = None\n", + " \n", + " def name(self):\n", + " return repr(self.key) + \"=\" + repr(self.val)\n", + " \n", + " def to_graphviz(self, g=None):\n", + " if g == None:\n", + " g = Digraph()\n", + "\n", + " # draw self\n", + " for label, child in [(\"L\", self.left), (\"R\", self.right)]:\n", + " if child != None:\n", + " child.to_graphviz(g)\n", + " g.edge(self.name(), child.name(), label=label)\n", + " return g\n", + " \n", + " def _repr_svg_(self):\n", + " return self.to_graphviz()._repr_image_svg_xml()\n", + " \n", + " def add(self, key, val):\n", + " if self.key == key:\n", + " self.val = val\n", + " elif key < self.key:\n", + " if self.left != None:\n", + " self.left.add(key, val)\n", + " else:\n", + " self.left = Node(key, val)\n", + " else:\n", + " if self.right != None:\n", + " self.right.add(key, val)\n", + " else:\n", + " self.right = Node(key, val)\n", + "\n", + " def __getitem__(self, target):\n", + " if target < self.key and self.left != None:\n", + " return self.left[target]\n", + " elif target > self.key and self.right != None:\n", + " return self.right[target]\n", + " assert self.key == target\n", + " return self.val\n", + " \n", + " def __setitem__(self, target, val):\n", + " self.add(target, val)\n", + "\n", + "tree = Node(\"A\", 1)\n", + "tree.add(\"D\", 2)\n", + "tree.add(\"B\", 3)\n", + "tree.add(\"F\", 4)\n", + "tree.add(\"E\", 5)\n", + "tree.add(\"C\", 6)\n", + "tree.add(\"G\", 7)\n", + "tree" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1, 6, 7)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tree[\"A\"], tree[\"C\"], tree[\"G\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"255pt\" height=\"392pt\"\n", + " viewBox=\"0.00 0.00 254.69 392.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 388)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-388 250.69,-388 250.69,4 -4,4\"/>\n", + "<!-- 'B'=3 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>'B'=3</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"43.35\" cy=\"-192\" rx=\"29.5\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"43.35\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">'B'=3</text>\n", + "</g>\n", + "<!-- 'C'=888 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>'C'=888</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"38.35\" cy=\"-105\" rx=\"38.19\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"38.35\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">'C'=888</text>\n", + "</g>\n", + "<!-- 'B'=3->'C'=888 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>'B'=3->'C'=888</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M42.33,-173.8C41.65,-162.16 40.73,-146.55 39.95,-133.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"43.44,-132.95 39.36,-123.18 36.45,-133.36 43.44,-132.95\"/>\n", + "<text text-anchor=\"middle\" x=\"46.35\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'D'=2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>'D'=2</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"81.35\" cy=\"-279\" rx=\"29.8\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"81.35\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">'D'=2</text>\n", + "</g>\n", + "<!-- 'D'=2->'B'=3 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>'D'=2->'B'=3</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M73.84,-261.21C68.44,-249.14 61.07,-232.64 54.92,-218.89\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"57.99,-217.17 50.71,-209.47 51.6,-220.03 57.99,-217.17\"/>\n", + "<text text-anchor=\"middle\" x=\"69.85\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">L</text>\n", + "</g>\n", + "<!-- 'F'=4 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>'F'=4</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"123.35\" cy=\"-192\" rx=\"28.7\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"123.35\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">'F'=4</text>\n", + "</g>\n", + "<!-- 'D'=2->'F'=4 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>'D'=2->'F'=4</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M89.44,-261.61C95.49,-249.38 103.86,-232.44 110.77,-218.46\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"113.98,-219.85 115.27,-209.34 107.71,-216.75 113.98,-219.85\"/>\n", + "<text text-anchor=\"middle\" x=\"110.35\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'E'=5 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>'E'=5</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"123.35\" cy=\"-105\" rx=\"28.7\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"123.35\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">'E'=5</text>\n", + "</g>\n", + "<!-- 'F'=4->'E'=5 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>'F'=4->'E'=5</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M123.35,-173.8C123.35,-162.16 123.35,-146.55 123.35,-133.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"126.85,-133.18 123.35,-123.18 119.85,-133.18 126.85,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"127.85\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">L</text>\n", + "</g>\n", + "<!-- 'G'=999 -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>'G'=999</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"208.35\" cy=\"-105\" rx=\"38.19\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"208.35\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">'G'=999</text>\n", + "</g>\n", + "<!-- 'F'=4->'G'=999 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>'F'=4->'G'=999</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M138.15,-176.19C151.19,-163.15 170.4,-143.95 185.43,-128.92\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"188.25,-131.04 192.85,-121.5 183.3,-126.09 188.25,-131.04\"/>\n", + "<text text-anchor=\"middle\" x=\"176.35\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'H'=111 -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>'H'=111</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"208.35\" cy=\"-18\" rx=\"38.19\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"208.35\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">'H'=111</text>\n", + "</g>\n", + "<!-- 'G'=999->'H'=111 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>'G'=999->'H'=111</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M208.35,-86.8C208.35,-75.16 208.35,-59.55 208.35,-46.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"211.85,-46.18 208.35,-36.18 204.85,-46.18 211.85,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"213.35\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "<!-- 'A'=777 -->\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>'A'=777</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"81.35\" cy=\"-366\" rx=\"38.19\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"81.35\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">'A'=777</text>\n", + "</g>\n", + "<!-- 'A'=777->'D'=2 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>'A'=777->'D'=2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M81.35,-347.8C81.35,-336.16 81.35,-320.55 81.35,-307.24\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"84.85,-307.18 81.35,-297.18 77.85,-307.18 84.85,-307.18\"/>\n", + "<text text-anchor=\"middle\" x=\"86.35\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">R</text>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.Node at 0x7face1386310>" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tree[\"A\"] = 777\n", + "tree[\"C\"] = 888\n", + "tree[\"G\"] = 999\n", + "tree[\"H\"] = 111\n", + "tree" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(777, 888, 999, 111)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tree[\"A\"], tree[\"C\"], tree[\"G\"], tree[\"H\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our BST-based dictionary may have some advantages over the regular `dict`. Specifically, which features will be easier to add to our version?\n", + "\n", + "1. getting the values corresponding to all keys in some range\n", + "2. providing a way to loop over the keys in ascending order\n", + "3. finding the key corresponding to a specific value\n", + "\n", + "<details>\n", + "<summary>Answers</summary>\n", + "(1) yes. Substrees correspond to ranges of keys, so we can efficiently search for all keys in a range (not possible with a regular dict).<br>\n", + "(2) yes. We would need to write some tricky code with generators, but the data is already arranged in a sorted order.<br>\n", + "(3) no. The same value may appear multiple times anywhere in the tree. There is no way to efficiently find all nodes with a given value without checking all the nodes.<br>\n", + "</details>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 2: Graph Search\n", + "\n", + "Checking whether a tree has a value is an example of a search problem.\n", + "\n", + "What if we want to search a more general graph for a particular value, from a particular starting node? There are many use cases for this:\n", + "\n", + "1. looking for a route between two cities\n", + "2. looking through different move choices in a game (each board state is a node; an edge represents a legal move)\n", + "3. cycle detection, perhaps representing incoherent preferences we want to identify (do people claim to like chocolate more than vanilla, vanilla more than strawberry, and strawberry more than chocolate?)\n", + "\n", + "We can force a loop with our Node objects, complicating the search problem." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "A = Node(\"A\", 1)\n", + "B = Node(\"B\", 2)\n", + "A.right = B\n", + "B.left = A" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def search(node, key):\n", + " if node.key == key:\n", + " return True\n", + " for child in [node.left, node.right]:\n", + " if child != None and search(child, key):\n", + " return True\n", + " return False\n", + "\n", + "# does it work?\n", + "search(A, \"B\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It worked there, but we're going to have a problem if we look for something we can't find. Searching A will make us search B. Searching B will make us search A.\n", + "\n", + "This will cause infinite recusion:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I warned you!\n" + ] + } + ], + "source": [ + "try:\n", + " search(A, \"Z\")\n", + "except RecursionError:\n", + " print(\"I warned you!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Graph Search, Done Right\n", + "\n", + "To avoid getting trapped in cycles, we'll need to keep track of which nodes we have visited in our search and make sure we don't visit them more than once.\n", + "\n", + "Let's write a Node class for a general directed graph (each node can have any other node as a child) and a Graph class that can keep graph-wide state, like a set of nodes that have been visited during a recursive search." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"134pt\" height=\"188pt\"\n", + " viewBox=\"0.00 0.00 134.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 130,-184 130,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"71\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"71\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"98\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"98\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55\"/>\n", + "</g>\n", + "<!-- D->B -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>D->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7face13a77f0>" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class mygraph:\n", + " def __init__(self):\n", + " self.nodes = {}\n", + " \n", + " def node(self, name):\n", + " self.nodes[name] = Node(self, name)\n", + " \n", + " def edge(self, src, dst):\n", + " for name in [src, dst]:\n", + " if not name in self.nodes:\n", + " self.node(name)\n", + " self.nodes[src].children.append(self.nodes[dst])\n", + " \n", + " def _repr_svg_(self):\n", + " g = Digraph()\n", + " for n in self.nodes:\n", + " g.node(n)\n", + " for child in self.nodes[n].children:\n", + " g.edge(n, child.name)\n", + " return g._repr_image_svg_xml()\n", + " \n", + " def find(self, src, dst):\n", + " self.visited = set()\n", + " return self.nodes[src].find(dst)\n", + "\n", + "class Node:\n", + " def __init__(self, graph, name):\n", + " self.graph = graph\n", + " self.name = name\n", + " self.children = []\n", + " \n", + " def find(self, dst):\n", + " if self.name in self.graph.visited:\n", + " return False\n", + " self.graph.visited.add(self.name)\n", + "\n", + " if self.name == dst:\n", + " return True\n", + " for child in self.children:\n", + " if child.find(dst):\n", + " return True\n", + " return False\n", + "\n", + "g = mygraph()\n", + "g.node(\"A\")\n", + "g.edge(\"B\", \"C\")\n", + "g.edge(\"C\", \"D\")\n", + "g.edge(\"D\", \"B\")\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(True, False, True, False)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g.find(\"A\", \"A\"), g.find(\"A\", \"B\"), g.find(\"B\", \"D\"), g.find(\"B\", \"A\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Challenge: can you modify the find method, so that instead of returning False or True, it returns None (could not find from the starting point) or a list (indicating the path from the src to the dst)?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conclusion\n", + "\n", + "There are many ways to search through graph structures to find specific nodes/values. In this reading, we learned two new techniques:\n", + "\n", + "1. if the graph is a binary search tree, we can efficiently find what we want, without checking each node. This is because we know an upper/lower bound on a subtree, so we can skip it if it can't contain what we want.\n", + "2. if a graph has cycles, it's easy to write search code that results in infinite recursion. The trick is to keep a set of visited nodes, to make sure we don't keep searching over the same ones infinitely." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_material/09-Graph-Search-1/reading2.html b/lecture_material/09-Graph-Search-1/reading2.html new file mode 100644 index 0000000..f6a9005 --- /dev/null +++ b/lecture_material/09-Graph-Search-1/reading2.html @@ -0,0 +1,15426 @@ +<!DOCTYPE html> +<html> +<head><meta charset="utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<title>reading</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script> + + + + +<style type="text/css"> + pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: var(--jp-cell-editor-active-background) } +.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) } +.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */ +.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */ +.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */ +.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */ +.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */ +.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */ +.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */ +.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */ +.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */ +.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */ +.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */ +.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */ +.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */ +.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */ +.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */ +.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */ +.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */ +.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */ +.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */ +.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */ +.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */ +.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */ +.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */ +.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */ +.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */ +.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */ +.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */ +.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */ +.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */ +.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */ +.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */ + </style> +<style type="text/css"> + .container { width:99.5% !important; } + + </style> + + + +<style type="text/css"> +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* + * Mozilla scrollbar styling + */ + +/* use standard opaque scrollbars for most nodes */ +[data-jp-theme-scrollbars='true'] { + scrollbar-color: rgb(var(--jp-scrollbar-thumb-color)) + var(--jp-scrollbar-background-color); +} + +/* for code nodes, use a transparent style of scrollbar. These selectors + * will match lower in the tree, and so will override the above */ +[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar, +[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar { + scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent; +} + +/* tiny scrollbar */ + +.jp-scrollbar-tiny { + scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent; + scrollbar-width: thin; +} + +/* + * Webkit scrollbar styling + */ + +/* use standard opaque scrollbars for most nodes */ + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-corner { + background: var(--jp-scrollbar-background-color); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-thumb { + background: rgb(var(--jp-scrollbar-thumb-color)); + border: var(--jp-scrollbar-thumb-margin) solid transparent; + background-clip: content-box; + border-radius: var(--jp-scrollbar-thumb-radius); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:horizontal { + border-left: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); + border-right: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:vertical { + border-top: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); + border-bottom: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); +} + +/* for code nodes, use a transparent style of scrollbar */ + +[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-corner, +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-corner { + background-color: transparent; +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-thumb, +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-thumb { + background: rgba(var(--jp-scrollbar-thumb-color), 0.5); + border: var(--jp-scrollbar-thumb-margin) solid transparent; + background-clip: content-box; + border-radius: var(--jp-scrollbar-thumb-radius); +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-track:horizontal { + border-left: var(--jp-scrollbar-endpad) solid transparent; + border-right: var(--jp-scrollbar-endpad) solid transparent; +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-track:vertical { + border-top: var(--jp-scrollbar-endpad) solid transparent; + border-bottom: var(--jp-scrollbar-endpad) solid transparent; +} + +/* tiny scrollbar */ + +.jp-scrollbar-tiny::-webkit-scrollbar, +.jp-scrollbar-tiny::-webkit-scrollbar-corner { + background-color: transparent; + height: 4px; + width: 4px; +} + +.jp-scrollbar-tiny::-webkit-scrollbar-thumb { + background: rgba(var(--jp-scrollbar-thumb-color), 0.5); +} + +.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal { + border-left: 0px solid transparent; + border-right: 0px solid transparent; +} + +.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical { + border-top: 0px solid transparent; + border-bottom: 0px solid transparent; +} + +/* + * Phosphor + */ + +.lm-ScrollBar[data-orientation='horizontal'] { + min-height: 16px; + max-height: 16px; + min-width: 45px; + border-top: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='vertical'] { + min-width: 16px; + max-width: 16px; + min-height: 45px; + border-left: 1px solid #a0a0a0; +} + +.lm-ScrollBar-button { + background-color: #f0f0f0; + background-position: center center; + min-height: 15px; + max-height: 15px; + min-width: 15px; + max-width: 15px; +} + +.lm-ScrollBar-button:hover { + background-color: #dadada; +} + +.lm-ScrollBar-button.lm-mod-active { + background-color: #cdcdcd; +} + +.lm-ScrollBar-track { + background: #f0f0f0; +} + +.lm-ScrollBar-thumb { + background: #cdcdcd; +} + +.lm-ScrollBar-thumb:hover { + background: #bababa; +} + +.lm-ScrollBar-thumb.lm-mod-active { + background: #a0a0a0; +} + +.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb { + height: 100%; + min-width: 15px; + border-left: 1px solid #a0a0a0; + border-right: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb { + width: 100%; + min-height: 15px; + border-top: 1px solid #a0a0a0; + border-bottom: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='horizontal'] + .lm-ScrollBar-button[data-action='decrement'] { + background-image: var(--jp-icon-caret-left); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='horizontal'] + .lm-ScrollBar-button[data-action='increment'] { + background-image: var(--jp-icon-caret-right); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='vertical'] + .lm-ScrollBar-button[data-action='decrement'] { + background-image: var(--jp-icon-caret-up); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='vertical'] + .lm-ScrollBar-button[data-action='increment'] { + background-image: var(--jp-icon-caret-down); + background-size: 17px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-Widget, /* </DEPRECATED> */ +.lm-Widget { + box-sizing: border-box; + position: relative; + overflow: hidden; + cursor: default; +} + + +/* <DEPRECATED> */ .p-Widget.p-mod-hidden, /* </DEPRECATED> */ +.lm-Widget.lm-mod-hidden { + display: none !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-CommandPalette, /* </DEPRECATED> */ +.lm-CommandPalette { + display: flex; + flex-direction: column; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-CommandPalette-search, /* </DEPRECATED> */ +.lm-CommandPalette-search { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-content, /* </DEPRECATED> */ +.lm-CommandPalette-content { + flex: 1 1 auto; + margin: 0; + padding: 0; + min-height: 0; + overflow: auto; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p-CommandPalette-header, /* </DEPRECATED> */ +.lm-CommandPalette-header { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + + +/* <DEPRECATED> */ .p-CommandPalette-item, /* </DEPRECATED> */ +.lm-CommandPalette-item { + display: flex; + flex-direction: row; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemIcon, /* </DEPRECATED> */ +.lm-CommandPalette-itemIcon { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemContent, /* </DEPRECATED> */ +.lm-CommandPalette-itemContent { + flex: 1 1 auto; + overflow: hidden; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemShortcut, /* </DEPRECATED> */ +.lm-CommandPalette-itemShortcut { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemLabel, /* </DEPRECATED> */ +.lm-CommandPalette-itemLabel { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.lm-close-icon { + border:1px solid transparent; + background-color: transparent; + position: absolute; + z-index:1; + right:3%; + top: 0; + bottom: 0; + margin: auto; + padding: 7px 0; + display: none; + vertical-align: middle; + outline: 0; + cursor: pointer; +} +.lm-close-icon:after { + content: "X"; + display: block; + width: 15px; + height: 15px; + text-align: center; + color:#000; + font-weight: normal; + font-size: 12px; + cursor: pointer; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-DockPanel, /* </DEPRECATED> */ +.lm-DockPanel { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-DockPanel-widget, /* </DEPRECATED> */ +.lm-DockPanel-widget { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-DockPanel-tabBar, /* </DEPRECATED> */ +.lm-DockPanel-tabBar { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle, /* </DEPRECATED> */ +.lm-DockPanel-handle { + z-index: 2; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle.p-mod-hidden, /* </DEPRECATED> */ +.lm-DockPanel-handle.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle:after, /* </DEPRECATED> */ +.lm-DockPanel-handle:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ''; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='horizontal'], +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='horizontal'] { + cursor: ew-resize; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='vertical'], +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='vertical'] { + cursor: ns-resize; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='horizontal']:after, +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='horizontal']:after { + left: 50%; + min-width: 8px; + transform: translateX(-50%); +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='vertical']:after, +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='vertical']:after { + top: 50%; + min-height: 8px; + transform: translateY(-50%); +} + + +/* <DEPRECATED> */ .p-DockPanel-overlay, /* </DEPRECATED> */ +.lm-DockPanel-overlay { + z-index: 3; + box-sizing: border-box; + pointer-events: none; +} + + +/* <DEPRECATED> */ .p-DockPanel-overlay.p-mod-hidden, /* </DEPRECATED> */ +.lm-DockPanel-overlay.lm-mod-hidden { + display: none !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-Menu, /* </DEPRECATED> */ +.lm-Menu { + z-index: 10000; + position: absolute; + white-space: nowrap; + overflow-x: hidden; + overflow-y: auto; + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-Menu-content, /* </DEPRECATED> */ +.lm-Menu-content { + margin: 0; + padding: 0; + display: table; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p-Menu-item, /* </DEPRECATED> */ +.lm-Menu-item { + display: table-row; +} + + +/* <DEPRECATED> */ +.p-Menu-item.p-mod-hidden, +.p-Menu-item.p-mod-collapsed, +/* </DEPRECATED> */ +.lm-Menu-item.lm-mod-hidden, +.lm-Menu-item.lm-mod-collapsed { + display: none !important; +} + + +/* <DEPRECATED> */ +.p-Menu-itemIcon, +.p-Menu-itemSubmenuIcon, +/* </DEPRECATED> */ +.lm-Menu-itemIcon, +.lm-Menu-itemSubmenuIcon { + display: table-cell; + text-align: center; +} + + +/* <DEPRECATED> */ .p-Menu-itemLabel, /* </DEPRECATED> */ +.lm-Menu-itemLabel { + display: table-cell; + text-align: left; +} + + +/* <DEPRECATED> */ .p-Menu-itemShortcut, /* </DEPRECATED> */ +.lm-Menu-itemShortcut { + display: table-cell; + text-align: right; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-MenuBar, /* </DEPRECATED> */ +.lm-MenuBar { + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-MenuBar-content, /* </DEPRECATED> */ +.lm-MenuBar-content { + margin: 0; + padding: 0; + display: flex; + flex-direction: row; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p--MenuBar-item, /* </DEPRECATED> */ +.lm-MenuBar-item { + box-sizing: border-box; +} + + +/* <DEPRECATED> */ +.p-MenuBar-itemIcon, +.p-MenuBar-itemLabel, +/* </DEPRECATED> */ +.lm-MenuBar-itemIcon, +.lm-MenuBar-itemLabel { + display: inline-block; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-ScrollBar, /* </DEPRECATED> */ +.lm-ScrollBar { + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ +.p-ScrollBar[data-orientation='horizontal'], +/* </DEPRECATED> */ +.lm-ScrollBar[data-orientation='horizontal'] { + flex-direction: row; +} + + +/* <DEPRECATED> */ +.p-ScrollBar[data-orientation='vertical'], +/* </DEPRECATED> */ +.lm-ScrollBar[data-orientation='vertical'] { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-ScrollBar-button, /* </DEPRECATED> */ +.lm-ScrollBar-button { + box-sizing: border-box; + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-ScrollBar-track, /* </DEPRECATED> */ +.lm-ScrollBar-track { + box-sizing: border-box; + position: relative; + overflow: hidden; + flex: 1 1 auto; +} + + +/* <DEPRECATED> */ .p-ScrollBar-thumb, /* </DEPRECATED> */ +.lm-ScrollBar-thumb { + box-sizing: border-box; + position: absolute; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-SplitPanel-child, /* </DEPRECATED> */ +.lm-SplitPanel-child { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle, /* </DEPRECATED> */ +.lm-SplitPanel-handle { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle.p-mod-hidden, /* </DEPRECATED> */ +.lm-SplitPanel-handle.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle:after, /* </DEPRECATED> */ +.lm-SplitPanel-handle:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ''; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle { + cursor: ew-resize; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle { + cursor: ns-resize; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle:after, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after { + left: 50%; + min-width: 8px; + transform: translateX(-50%); +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle:after, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after { + top: 50%; + min-height: 8px; + transform: translateY(-50%); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-TabBar, /* </DEPRECATED> */ +.lm-TabBar { + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-TabBar[data-orientation='horizontal'], /* </DEPRECATED> */ +.lm-TabBar[data-orientation='horizontal'] { + flex-direction: row; +} + + +/* <DEPRECATED> */ .p-TabBar[data-orientation='vertical'], /* </DEPRECATED> */ +.lm-TabBar[data-orientation='vertical'] { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-TabBar-content, /* </DEPRECATED> */ +.lm-TabBar-content { + margin: 0; + padding: 0; + display: flex; + flex: 1 1 auto; + list-style-type: none; +} + + +/* <DEPRECATED> */ +.p-TabBar[data-orientation='horizontal'] > .p-TabBar-content, +/* </DEPRECATED> */ +.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content { + flex-direction: row; +} + + +/* <DEPRECATED> */ +.p-TabBar[data-orientation='vertical'] > .p-TabBar-content, +/* </DEPRECATED> */ +.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-TabBar-tab, /* </DEPRECATED> */ +.lm-TabBar-tab { + display: flex; + flex-direction: row; + box-sizing: border-box; + overflow: hidden; +} + + +/* <DEPRECATED> */ +.p-TabBar-tabIcon, +.p-TabBar-tabCloseIcon, +/* </DEPRECATED> */ +.lm-TabBar-tabIcon, +.lm-TabBar-tabCloseIcon { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-TabBar-tabLabel, /* </DEPRECATED> */ +.lm-TabBar-tabLabel { + flex: 1 1 auto; + overflow: hidden; + white-space: nowrap; +} + + +.lm-TabBar-tabInput { + user-select: all; + width: 100%; + box-sizing : border-box; +} + + +/* <DEPRECATED> */ .p-TabBar-tab.p-mod-hidden, /* </DEPRECATED> */ +.lm-TabBar-tab.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-TabBar.p-mod-dragging .p-TabBar-tab, /* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging .lm-TabBar-tab { + position: relative; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab { + left: 0; + transition: left 150ms ease; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab { + top: 0; + transition: top 150ms ease; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging { + transition: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-TabPanel-tabBar, /* </DEPRECATED> */ +.lm-TabPanel-tabBar { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-TabPanel-stackedPanel, /* </DEPRECATED> */ +.lm-TabPanel-stackedPanel { + z-index: 0; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + +@charset "UTF-8"; +html{ + -webkit-box-sizing:border-box; + box-sizing:border-box; } + +*, +*::before, +*::after{ + -webkit-box-sizing:inherit; + box-sizing:inherit; } + +body{ + font-size:14px; + font-weight:400; + letter-spacing:0; + line-height:1.28581; + text-transform:none; + color:#182026; + font-family:-apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", "Icons16", sans-serif; } + +p{ + margin-bottom:10px; + margin-top:0; } + +small{ + font-size:12px; } + +strong{ + font-weight:600; } + +::-moz-selection{ + background:rgba(125, 188, 255, 0.6); } + +::selection{ + background:rgba(125, 188, 255, 0.6); } +.bp3-heading{ + color:#182026; + font-weight:600; + margin:0 0 10px; + padding:0; } + .bp3-dark .bp3-heading{ + color:#f5f8fa; } + +h1.bp3-heading, .bp3-running-text h1{ + font-size:36px; + line-height:40px; } + +h2.bp3-heading, .bp3-running-text h2{ + font-size:28px; + line-height:32px; } + +h3.bp3-heading, .bp3-running-text h3{ + font-size:22px; + line-height:25px; } + +h4.bp3-heading, .bp3-running-text h4{ + font-size:18px; + line-height:21px; } + +h5.bp3-heading, .bp3-running-text h5{ + font-size:16px; + line-height:19px; } + +h6.bp3-heading, .bp3-running-text h6{ + font-size:14px; + line-height:16px; } +.bp3-ui-text{ + font-size:14px; + font-weight:400; + letter-spacing:0; + line-height:1.28581; + text-transform:none; } + +.bp3-monospace-text{ + font-family:monospace; + text-transform:none; } + +.bp3-text-muted{ + color:#5c7080; } + .bp3-dark .bp3-text-muted{ + color:#a7b6c2; } + +.bp3-text-disabled{ + color:rgba(92, 112, 128, 0.6); } + .bp3-dark .bp3-text-disabled{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-text-overflow-ellipsis{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; } +.bp3-running-text{ + font-size:14px; + line-height:1.5; } + .bp3-running-text h1{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h1{ + color:#f5f8fa; } + .bp3-running-text h2{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h2{ + color:#f5f8fa; } + .bp3-running-text h3{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h3{ + color:#f5f8fa; } + .bp3-running-text h4{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h4{ + color:#f5f8fa; } + .bp3-running-text h5{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h5{ + color:#f5f8fa; } + .bp3-running-text h6{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h6{ + color:#f5f8fa; } + .bp3-running-text hr{ + border:none; + border-bottom:1px solid rgba(16, 22, 26, 0.15); + margin:20px 0; } + .bp3-dark .bp3-running-text hr{ + border-color:rgba(255, 255, 255, 0.15); } + .bp3-running-text p{ + margin:0 0 10px; + padding:0; } + +.bp3-text-large{ + font-size:16px; } + +.bp3-text-small{ + font-size:12px; } +a{ + color:#106ba3; + text-decoration:none; } + a:hover{ + color:#106ba3; + cursor:pointer; + text-decoration:underline; } + a .bp3-icon, a .bp3-icon-standard, a .bp3-icon-large{ + color:inherit; } + a code, + .bp3-dark a code{ + color:inherit; } + .bp3-dark a, + .bp3-dark a:hover{ + color:#48aff0; } + .bp3-dark a .bp3-icon, .bp3-dark a .bp3-icon-standard, .bp3-dark a .bp3-icon-large, + .bp3-dark a:hover .bp3-icon, + .bp3-dark a:hover .bp3-icon-standard, + .bp3-dark a:hover .bp3-icon-large{ + color:inherit; } +.bp3-running-text code, .bp3-code{ + font-family:monospace; + text-transform:none; + background:rgba(255, 255, 255, 0.7); + border-radius:3px; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2); + color:#5c7080; + font-size:smaller; + padding:2px 5px; } + .bp3-dark .bp3-running-text code, .bp3-running-text .bp3-dark code, .bp3-dark .bp3-code{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + color:#a7b6c2; } + .bp3-running-text a > code, a > .bp3-code{ + color:#137cbd; } + .bp3-dark .bp3-running-text a > code, .bp3-running-text .bp3-dark a > code, .bp3-dark a > .bp3-code{ + color:inherit; } + +.bp3-running-text pre, .bp3-code-block{ + font-family:monospace; + text-transform:none; + background:rgba(255, 255, 255, 0.7); + border-radius:3px; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + color:#182026; + display:block; + font-size:13px; + line-height:1.4; + margin:10px 0; + padding:13px 15px 12px; + word-break:break-all; + word-wrap:break-word; } + .bp3-dark .bp3-running-text pre, .bp3-running-text .bp3-dark pre, .bp3-dark .bp3-code-block{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-running-text pre > code, .bp3-code-block > code{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; + font-size:inherit; + padding:0; } + +.bp3-running-text kbd, .bp3-key{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + color:#5c7080; + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + font-family:inherit; + font-size:12px; + height:24px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + line-height:24px; + min-width:24px; + padding:3px 6px; + vertical-align:middle; } + .bp3-running-text kbd .bp3-icon, .bp3-key .bp3-icon, .bp3-running-text kbd .bp3-icon-standard, .bp3-key .bp3-icon-standard, .bp3-running-text kbd .bp3-icon-large, .bp3-key .bp3-icon-large{ + margin-right:5px; } + .bp3-dark .bp3-running-text kbd, .bp3-running-text .bp3-dark kbd, .bp3-dark .bp3-key{ + background:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + color:#a7b6c2; } +.bp3-running-text blockquote, .bp3-blockquote{ + border-left:solid 4px rgba(167, 182, 194, 0.5); + margin:0 0 10px; + padding:0 20px; } + .bp3-dark .bp3-running-text blockquote, .bp3-running-text .bp3-dark blockquote, .bp3-dark .bp3-blockquote{ + border-color:rgba(115, 134, 148, 0.5); } +.bp3-running-text ul, +.bp3-running-text ol, .bp3-list{ + margin:10px 0; + padding-left:30px; } + .bp3-running-text ul li:not(:last-child), .bp3-running-text ol li:not(:last-child), .bp3-list li:not(:last-child){ + margin-bottom:5px; } + .bp3-running-text ul ol, .bp3-running-text ol ol, .bp3-list ol, + .bp3-running-text ul ul, + .bp3-running-text ol ul, + .bp3-list ul{ + margin-top:5px; } + +.bp3-list-unstyled{ + list-style:none; + margin:0; + padding:0; } + .bp3-list-unstyled li{ + padding:0; } +.bp3-rtl{ + text-align:right; } + +.bp3-dark{ + color:#f5f8fa; } + +:focus{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:2px; + -moz-outline-radius:6px; } + +.bp3-focus-disabled :focus{ + outline:none !important; } + .bp3-focus-disabled :focus ~ .bp3-control-indicator{ + outline:none !important; } + +.bp3-alert{ + max-width:400px; + padding:20px; } + +.bp3-alert-body{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-alert-body .bp3-icon{ + font-size:40px; + margin-right:20px; + margin-top:0; } + +.bp3-alert-contents{ + word-break:break-word; } + +.bp3-alert-footer{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:reverse; + -ms-flex-direction:row-reverse; + flex-direction:row-reverse; + margin-top:10px; } + .bp3-alert-footer .bp3-button{ + margin-left:10px; } +.bp3-breadcrumbs{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + cursor:default; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-wrap:wrap; + flex-wrap:wrap; + height:30px; + list-style:none; + margin:0; + padding:0; } + .bp3-breadcrumbs > li{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-breadcrumbs > li::after{ + background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42L8.59 8 5.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z' fill='%235C7080'/%3e%3c/svg%3e"); + content:""; + display:block; + height:16px; + margin:0 5px; + width:16px; } + .bp3-breadcrumbs > li:last-of-type::after{ + display:none; } + +.bp3-breadcrumb, +.bp3-breadcrumb-current, +.bp3-breadcrumbs-collapsed{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + font-size:16px; } + +.bp3-breadcrumb, +.bp3-breadcrumbs-collapsed{ + color:#5c7080; } + +.bp3-breadcrumb:hover{ + text-decoration:none; } + +.bp3-breadcrumb.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-breadcrumb .bp3-icon{ + margin-right:5px; } + +.bp3-breadcrumb-current{ + color:inherit; + font-weight:600; } + .bp3-breadcrumb-current .bp3-input{ + font-size:inherit; + font-weight:inherit; + vertical-align:baseline; } + +.bp3-breadcrumbs-collapsed{ + background:#ced9e0; + border:none; + border-radius:3px; + cursor:pointer; + margin-right:2px; + padding:1px 5px; + vertical-align:text-bottom; } + .bp3-breadcrumbs-collapsed::before{ + background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%235C7080'%3e%3ccircle cx='2' cy='8.03' r='2'/%3e%3ccircle cx='14' cy='8.03' r='2'/%3e%3ccircle cx='8' cy='8.03' r='2'/%3e%3c/g%3e%3c/svg%3e") center no-repeat; + content:""; + display:block; + height:16px; + width:16px; } + .bp3-breadcrumbs-collapsed:hover{ + background:#bfccd6; + color:#182026; + text-decoration:none; } + +.bp3-dark .bp3-breadcrumb, +.bp3-dark .bp3-breadcrumbs-collapsed{ + color:#a7b6c2; } + +.bp3-dark .bp3-breadcrumbs > li::after{ + color:#a7b6c2; } + +.bp3-dark .bp3-breadcrumb.bp3-disabled{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-dark .bp3-breadcrumb-current{ + color:#f5f8fa; } + +.bp3-dark .bp3-breadcrumbs-collapsed{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-breadcrumbs-collapsed:hover{ + background:rgba(16, 22, 26, 0.6); + color:#f5f8fa; } +.bp3-button{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border:none; + border-radius:3px; + cursor:pointer; + font-size:14px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + padding:5px 10px; + text-align:left; + vertical-align:middle; + min-height:30px; + min-width:30px; } + .bp3-button > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-button > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-button::before, + .bp3-button > *{ + margin-right:7px; } + .bp3-button:empty::before, + .bp3-button > :last-child{ + margin-right:0; } + .bp3-button:empty{ + padding:0 !important; } + .bp3-button:disabled, .bp3-button.bp3-disabled{ + cursor:not-allowed; } + .bp3-button.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-button.bp3-align-right, + .bp3-align-right .bp3-button{ + text-align:right; } + .bp3-button.bp3-align-left, + .bp3-align-left .bp3-button{ + text-align:left; } + .bp3-button:not([class*="bp3-intent-"]){ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; } + .bp3-button:not([class*="bp3-intent-"]):hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-button:not([class*="bp3-intent-"]):active, .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active:hover, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-button.bp3-intent-primary{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-primary:hover, .bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-primary:hover{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{ + background-color:#0e5a8a; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-primary:disabled, .bp3-button.bp3-intent-primary.bp3-disabled{ + background-color:rgba(19, 124, 189, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-success{ + background-color:#0f9960; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-success:hover, .bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-success:hover{ + background-color:#0d8050; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{ + background-color:#0a6640; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-success:disabled, .bp3-button.bp3-intent-success.bp3-disabled{ + background-color:rgba(15, 153, 96, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-warning{ + background-color:#d9822b; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-warning:hover, .bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-warning:hover{ + background-color:#bf7326; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{ + background-color:#a66321; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-warning:disabled, .bp3-button.bp3-intent-warning.bp3-disabled{ + background-color:rgba(217, 130, 43, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-danger{ + background-color:#db3737; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-danger:hover, .bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-danger:hover{ + background-color:#c23030; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{ + background-color:#a82a2a; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-danger:disabled, .bp3-button.bp3-intent-danger.bp3-disabled{ + background-color:rgba(219, 55, 55, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{ + stroke:#ffffff; } + .bp3-button.bp3-large, + .bp3-large .bp3-button{ + min-height:40px; + min-width:40px; + font-size:16px; + padding:5px 15px; } + .bp3-button.bp3-large::before, + .bp3-button.bp3-large > *, + .bp3-large .bp3-button::before, + .bp3-large .bp3-button > *{ + margin-right:10px; } + .bp3-button.bp3-large:empty::before, + .bp3-button.bp3-large > :last-child, + .bp3-large .bp3-button:empty::before, + .bp3-large .bp3-button > :last-child{ + margin-right:0; } + .bp3-button.bp3-small, + .bp3-small .bp3-button{ + min-height:24px; + min-width:24px; + padding:0 7px; } + .bp3-button.bp3-loading{ + position:relative; } + .bp3-button.bp3-loading[class*="bp3-icon-"]::before{ + visibility:hidden; } + .bp3-button.bp3-loading .bp3-button-spinner{ + margin:0; + position:absolute; } + .bp3-button.bp3-loading > :not(.bp3-button-spinner){ + visibility:hidden; } + .bp3-button[class*="bp3-icon-"]::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + color:#5c7080; } + .bp3-button .bp3-icon, .bp3-button .bp3-icon-standard, .bp3-button .bp3-icon-large{ + color:#5c7080; } + .bp3-button .bp3-icon.bp3-align-right, .bp3-button .bp3-icon-standard.bp3-align-right, .bp3-button .bp3-icon-large.bp3-align-right{ + margin-left:7px; } + .bp3-button .bp3-icon:first-child:last-child, + .bp3-button .bp3-spinner + .bp3-icon:last-child{ + margin:0 -7px; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]){ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover, .bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"])[class*="bp3-icon-"]::before{ + color:#a7b6c2; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-standard, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-large{ + color:#a7b6c2; } + .bp3-dark .bp3-button[class*="bp3-intent-"]{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:active, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:disabled, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-disabled{ + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.3); } + .bp3-dark .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{ + stroke:#8a9ba8; } + .bp3-button:disabled::before, + .bp3-button:disabled .bp3-icon, .bp3-button:disabled .bp3-icon-standard, .bp3-button:disabled .bp3-icon-large, .bp3-button.bp3-disabled::before, + .bp3-button.bp3-disabled .bp3-icon, .bp3-button.bp3-disabled .bp3-icon-standard, .bp3-button.bp3-disabled .bp3-icon-large, .bp3-button[class*="bp3-intent-"]::before, + .bp3-button[class*="bp3-intent-"] .bp3-icon, .bp3-button[class*="bp3-intent-"] .bp3-icon-standard, .bp3-button[class*="bp3-intent-"] .bp3-icon-large{ + color:inherit !important; } + .bp3-button.bp3-minimal{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-button.bp3-minimal:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button.bp3-minimal:active, .bp3-button.bp3-minimal.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button.bp3-minimal:disabled, .bp3-button.bp3-minimal:disabled:hover, .bp3-button.bp3-minimal.bp3-disabled, .bp3-button.bp3-minimal.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button.bp3-minimal:disabled.bp3-active, .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button.bp3-minimal{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button.bp3-minimal:hover, .bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button.bp3-minimal:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button.bp3-minimal:disabled, .bp3-dark .bp3-button.bp3-minimal:disabled:hover, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button.bp3-minimal:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-primary{ + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:hover, .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-success{ + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:hover, .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-warning{ + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:hover, .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-danger{ + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:hover, .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + border:1px solid rgba(24, 32, 38, 0.2); + -webkit-box-sizing:border-box; + box-sizing:border-box; } + .bp3-button.bp3-outlined:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button.bp3-outlined:active, .bp3-button.bp3-outlined.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button.bp3-outlined:disabled.bp3-active, .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button.bp3-outlined{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button.bp3-outlined:hover, .bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button.bp3-outlined:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button.bp3-outlined:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-primary{ + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:hover, .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-success{ + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:hover, .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-warning{ + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:hover, .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-danger{ + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:hover, .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled:hover{ + border-color:rgba(92, 112, 128, 0.1); } + .bp3-dark .bp3-button.bp3-outlined{ + border-color:rgba(255, 255, 255, 0.4); } + .bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{ + border-color:rgba(255, 255, 255, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-primary{ + border-color:rgba(16, 107, 163, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + border-color:rgba(16, 107, 163, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{ + border-color:rgba(72, 175, 240, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + border-color:rgba(72, 175, 240, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-success{ + border-color:rgba(13, 128, 80, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + border-color:rgba(13, 128, 80, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{ + border-color:rgba(61, 204, 145, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + border-color:rgba(61, 204, 145, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-warning{ + border-color:rgba(191, 115, 38, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + border-color:rgba(191, 115, 38, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{ + border-color:rgba(255, 179, 102, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + border-color:rgba(255, 179, 102, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-danger{ + border-color:rgba(194, 48, 48, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + border-color:rgba(194, 48, 48, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{ + border-color:rgba(255, 115, 115, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + border-color:rgba(255, 115, 115, 0.2); } + +a.bp3-button{ + text-align:center; + text-decoration:none; + -webkit-transition:none; + transition:none; } + a.bp3-button, a.bp3-button:hover, a.bp3-button:active{ + color:#182026; } + a.bp3-button.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); } + +.bp3-button-text{ + -webkit-box-flex:0; + -ms-flex:0 1 auto; + flex:0 1 auto; } + +.bp3-button.bp3-align-left .bp3-button-text, .bp3-button.bp3-align-right .bp3-button-text, +.bp3-button-group.bp3-align-left .bp3-button-text, +.bp3-button-group.bp3-align-right .bp3-button-text{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } +.bp3-button-group{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; } + .bp3-button-group .bp3-button{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + position:relative; + z-index:4; } + .bp3-button-group .bp3-button:focus{ + z-index:5; } + .bp3-button-group .bp3-button:hover{ + z-index:6; } + .bp3-button-group .bp3-button:active, .bp3-button-group .bp3-button.bp3-active{ + z-index:7; } + .bp3-button-group .bp3-button:disabled, .bp3-button-group .bp3-button.bp3-disabled{ + z-index:3; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]{ + z-index:9; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:focus{ + z-index:10; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:hover{ + z-index:11; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:active, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-active{ + z-index:12; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:disabled, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-disabled{ + z-index:8; } + .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:first-child) .bp3-button, + .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:first-child){ + border-bottom-left-radius:0; + border-top-left-radius:0; } + .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){ + border-bottom-right-radius:0; + border-top-right-radius:0; + margin-right:-1px; } + .bp3-button-group.bp3-minimal .bp3-button{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-button-group.bp3-minimal .bp3-button:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{ + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{ + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{ + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{ + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button-group .bp3-popover-wrapper, + .bp3-button-group .bp3-popover-target{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-button-group.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-button-group .bp3-button.bp3-fill, + .bp3-button-group.bp3-fill .bp3-button:not(.bp3-fixed){ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-button-group.bp3-vertical{ + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + vertical-align:top; } + .bp3-button-group.bp3-vertical.bp3-fill{ + height:100%; + width:unset; } + .bp3-button-group.bp3-vertical .bp3-button{ + margin-right:0 !important; + width:100%; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:first-child .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:first-child{ + border-radius:3px 3px 0 0; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:last-child .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:last-child{ + border-radius:0 0 3px 3px; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:not(:last-child){ + margin-bottom:-1px; } + .bp3-button-group.bp3-align-left .bp3-button{ + text-align:left; } + .bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){ + margin-right:1px; } + .bp3-dark .bp3-button-group.bp3-vertical > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-dark .bp3-button-group.bp3-vertical > .bp3-button:not(:last-child){ + margin-bottom:1px; } +.bp3-callout{ + font-size:14px; + line-height:1.5; + background-color:rgba(138, 155, 168, 0.15); + border-radius:3px; + padding:10px 12px 9px; + position:relative; + width:100%; } + .bp3-callout[class*="bp3-icon-"]{ + padding-left:40px; } + .bp3-callout[class*="bp3-icon-"]::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + color:#5c7080; + left:10px; + position:absolute; + top:10px; } + .bp3-callout.bp3-callout-icon{ + padding-left:40px; } + .bp3-callout.bp3-callout-icon > .bp3-icon:first-child{ + color:#5c7080; + left:10px; + position:absolute; + top:10px; } + .bp3-callout .bp3-heading{ + line-height:20px; + margin-bottom:5px; + margin-top:0; } + .bp3-callout .bp3-heading:last-child{ + margin-bottom:0; } + .bp3-dark .bp3-callout{ + background-color:rgba(138, 155, 168, 0.2); } + .bp3-dark .bp3-callout[class*="bp3-icon-"]::before{ + color:#a7b6c2; } + .bp3-callout.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.15); } + .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-primary > .bp3-icon:first-child, + .bp3-callout.bp3-intent-primary .bp3-heading{ + color:#106ba3; } + .bp3-dark .bp3-callout.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-primary > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-primary .bp3-heading{ + color:#48aff0; } + .bp3-callout.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.15); } + .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-success > .bp3-icon:first-child, + .bp3-callout.bp3-intent-success .bp3-heading{ + color:#0d8050; } + .bp3-dark .bp3-callout.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-success > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-success .bp3-heading{ + color:#3dcc91; } + .bp3-callout.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.15); } + .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-warning > .bp3-icon:first-child, + .bp3-callout.bp3-intent-warning .bp3-heading{ + color:#bf7326; } + .bp3-dark .bp3-callout.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-warning > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-warning .bp3-heading{ + color:#ffb366; } + .bp3-callout.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.15); } + .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-danger > .bp3-icon:first-child, + .bp3-callout.bp3-intent-danger .bp3-heading{ + color:#c23030; } + .bp3-dark .bp3-callout.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-danger > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-danger .bp3-heading{ + color:#ff7373; } + .bp3-running-text .bp3-callout{ + margin:20px 0; } +.bp3-card{ + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + padding:20px; + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-card.bp3-dark, + .bp3-dark .bp3-card{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + +.bp3-elevation-0{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + .bp3-elevation-0.bp3-dark, + .bp3-dark .bp3-elevation-0{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + +.bp3-elevation-1{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-elevation-1.bp3-dark, + .bp3-dark .bp3-elevation-1{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-2{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2); } + .bp3-elevation-2.bp3-dark, + .bp3-dark .bp3-elevation-2{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-3{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); } + .bp3-elevation-3.bp3-dark, + .bp3-dark .bp3-elevation-3{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-4{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); } + .bp3-elevation-4.bp3-dark, + .bp3-dark .bp3-elevation-4{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); } + +.bp3-card.bp3-interactive:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + cursor:pointer; } + .bp3-card.bp3-interactive:hover.bp3-dark, + .bp3-dark .bp3-card.bp3-interactive:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + +.bp3-card.bp3-interactive:active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + opacity:0.9; + -webkit-transition-duration:0; + transition-duration:0; } + .bp3-card.bp3-interactive:active.bp3-dark, + .bp3-dark .bp3-card.bp3-interactive:active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-collapse{ + height:0; + overflow-y:hidden; + -webkit-transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-collapse .bp3-collapse-body{ + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-collapse .bp3-collapse-body[aria-hidden="true"]{ + display:none; } + +.bp3-context-menu .bp3-popover-target{ + display:block; } + +.bp3-context-menu-popover-target{ + position:fixed; } + +.bp3-divider{ + border-bottom:1px solid rgba(16, 22, 26, 0.15); + border-right:1px solid rgba(16, 22, 26, 0.15); + margin:5px; } + .bp3-dark .bp3-divider{ + border-color:rgba(16, 22, 26, 0.4); } +.bp3-dialog-container{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + min-height:100%; + pointer-events:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + width:100%; } + .bp3-dialog-container.bp3-overlay-enter > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear > .bp3-dialog{ + opacity:0; + -webkit-transform:scale(0.5); + transform:scale(0.5); } + .bp3-dialog-container.bp3-overlay-enter-active > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear-active > .bp3-dialog{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:opacity, transform; + transition-property:opacity, transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-dialog-container.bp3-overlay-exit > .bp3-dialog{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-dialog-container.bp3-overlay-exit-active > .bp3-dialog{ + opacity:0; + -webkit-transform:scale(0.5); + transform:scale(0.5); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:opacity, transform; + transition-property:opacity, transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + +.bp3-dialog{ + background:#ebf1f5; + border-radius:6px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:30px 0; + padding-bottom:20px; + pointer-events:all; + -webkit-user-select:text; + -moz-user-select:text; + -ms-user-select:text; + user-select:text; + width:500px; } + .bp3-dialog:focus{ + outline:0; } + .bp3-dialog.bp3-dark, + .bp3-dark .bp3-dialog{ + background:#293742; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + +.bp3-dialog-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background:#ffffff; + border-radius:6px 6px 0 0; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + min-height:40px; + padding-left:20px; + padding-right:5px; } + .bp3-dialog-header .bp3-icon-large, + .bp3-dialog-header .bp3-icon{ + color:#5c7080; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin-right:10px; } + .bp3-dialog-header .bp3-heading{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:inherit; + margin:0; } + .bp3-dialog-header .bp3-heading:last-child{ + margin-right:20px; } + .bp3-dark .bp3-dialog-header{ + background:#30404d; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-dialog-header .bp3-icon-large, + .bp3-dark .bp3-dialog-header .bp3-icon{ + color:#a7b6c2; } + +.bp3-dialog-body{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:18px; + margin:20px; } + +.bp3-dialog-footer{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin:0 20px; } + +.bp3-dialog-footer-actions{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:end; + -ms-flex-pack:end; + justify-content:flex-end; } + .bp3-dialog-footer-actions .bp3-button{ + margin-left:10px; } +.bp3-drawer{ + background:#ffffff; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:0; + padding:0; } + .bp3-drawer:focus{ + outline:0; } + .bp3-drawer.bp3-position-top{ + height:50%; + left:0; + right:0; + top:0; } + .bp3-drawer.bp3-position-top.bp3-overlay-enter, .bp3-drawer.bp3-position-top.bp3-overlay-appear{ + -webkit-transform:translateY(-100%); + transform:translateY(-100%); } + .bp3-drawer.bp3-position-top.bp3-overlay-enter-active, .bp3-drawer.bp3-position-top.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-top.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer.bp3-position-top.bp3-overlay-exit-active{ + -webkit-transform:translateY(-100%); + transform:translateY(-100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-bottom{ + bottom:0; + height:50%; + left:0; + right:0; } + .bp3-drawer.bp3-position-bottom.bp3-overlay-enter, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear{ + -webkit-transform:translateY(100%); + transform:translateY(100%); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-enter-active, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-exit-active{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-left{ + bottom:0; + left:0; + top:0; + width:50%; } + .bp3-drawer.bp3-position-left.bp3-overlay-enter, .bp3-drawer.bp3-position-left.bp3-overlay-appear{ + -webkit-transform:translateX(-100%); + transform:translateX(-100%); } + .bp3-drawer.bp3-position-left.bp3-overlay-enter-active, .bp3-drawer.bp3-position-left.bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-left.bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer.bp3-position-left.bp3-overlay-exit-active{ + -webkit-transform:translateX(-100%); + transform:translateX(-100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-right{ + bottom:0; + right:0; + top:0; + width:50%; } + .bp3-drawer.bp3-position-right.bp3-overlay-enter, .bp3-drawer.bp3-position-right.bp3-overlay-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); } + .bp3-drawer.bp3-position-right.bp3-overlay-enter-active, .bp3-drawer.bp3-position-right.bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-right.bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer.bp3-position-right.bp3-overlay-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical){ + bottom:0; + right:0; + top:0; + width:50%; } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical{ + bottom:0; + height:50%; + left:0; + right:0; } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-appear{ + -webkit-transform:translateY(100%); + transform:translateY(100%); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-exit-active{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-dark, + .bp3-dark .bp3-drawer{ + background:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + +.bp3-drawer-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border-radius:0; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + min-height:40px; + padding:5px; + padding-left:20px; + position:relative; } + .bp3-drawer-header .bp3-icon-large, + .bp3-drawer-header .bp3-icon{ + color:#5c7080; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin-right:10px; } + .bp3-drawer-header .bp3-heading{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:inherit; + margin:0; } + .bp3-drawer-header .bp3-heading:last-child{ + margin-right:20px; } + .bp3-dark .bp3-drawer-header{ + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-drawer-header .bp3-icon-large, + .bp3-dark .bp3-drawer-header .bp3-icon{ + color:#a7b6c2; } + +.bp3-drawer-body{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:18px; + overflow:auto; } + +.bp3-drawer-footer{ + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + padding:10px 20px; + position:relative; } + .bp3-dark .bp3-drawer-footer{ + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4); } +.bp3-editable-text{ + cursor:text; + display:inline-block; + max-width:100%; + position:relative; + vertical-align:top; + white-space:nowrap; } + .bp3-editable-text::before{ + bottom:-3px; + left:-3px; + position:absolute; + right:-3px; + top:-3px; + border-radius:3px; + content:""; + -webkit-transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-editable-text:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-editable-text.bp3-editable-text-editing::before{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-disabled::before{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-editable-text.bp3-intent-primary .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{ + color:#137cbd; } + .bp3-editable-text.bp3-intent-primary:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4); } + .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-success .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-success .bp3-editable-text-content{ + color:#0f9960; } + .bp3-editable-text.bp3-intent-success:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4); } + .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-warning .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{ + color:#d9822b; } + .bp3-editable-text.bp3-intent-warning:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4); } + .bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-danger .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-danger .bp3-editable-text-content{ + color:#db3737; } + .bp3-editable-text.bp3-intent-danger:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4); } + .bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-editable-text:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15); } + .bp3-dark .bp3-editable-text.bp3-editable-text-editing::before{ + background-color:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-disabled::before{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{ + color:#48aff0; } + .bp3-dark .bp3-editable-text.bp3-intent-primary:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4); + box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-success .bp3-editable-text-content{ + color:#3dcc91; } + .bp3-dark .bp3-editable-text.bp3-intent-success:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4); + box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{ + color:#ffb366; } + .bp3-dark .bp3-editable-text.bp3-intent-warning:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4); + box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-danger .bp3-editable-text-content{ + color:#ff7373; } + .bp3-dark .bp3-editable-text.bp3-intent-danger:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4); + box-shadow:0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-editable-text-input, +.bp3-editable-text-content{ + color:inherit; + display:inherit; + font:inherit; + letter-spacing:inherit; + max-width:inherit; + min-width:inherit; + position:relative; + resize:none; + text-transform:inherit; + vertical-align:top; } + +.bp3-editable-text-input{ + background:none; + border:none; + -webkit-box-shadow:none; + box-shadow:none; + padding:0; + white-space:pre-wrap; + width:100%; } + .bp3-editable-text-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input:focus{ + outline:none; } + .bp3-editable-text-input::-ms-clear{ + display:none; } + +.bp3-editable-text-content{ + overflow:hidden; + padding-right:2px; + text-overflow:ellipsis; + white-space:pre; } + .bp3-editable-text-editing > .bp3-editable-text-content{ + left:0; + position:absolute; + visibility:hidden; } + .bp3-editable-text-placeholder > .bp3-editable-text-content{ + color:rgba(92, 112, 128, 0.6); } + .bp3-dark .bp3-editable-text-placeholder > .bp3-editable-text-content{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-editable-text.bp3-multiline{ + display:block; } + .bp3-editable-text.bp3-multiline .bp3-editable-text-content{ + overflow:auto; + white-space:pre-wrap; + word-wrap:break-word; } +.bp3-divider{ + border-bottom:1px solid rgba(16, 22, 26, 0.15); + border-right:1px solid rgba(16, 22, 26, 0.15); + margin:5px; } + .bp3-dark .bp3-divider{ + border-color:rgba(16, 22, 26, 0.4); } +.bp3-control-group{ + -webkit-transform:translateZ(0); + transform:translateZ(0); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; } + .bp3-control-group > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-control-group > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-control-group .bp3-button, + .bp3-control-group .bp3-html-select, + .bp3-control-group .bp3-input, + .bp3-control-group .bp3-select{ + position:relative; } + .bp3-control-group .bp3-input{ + border-radius:inherit; + z-index:2; } + .bp3-control-group .bp3-input:focus{ + border-radius:3px; + z-index:14; } + .bp3-control-group .bp3-input[class*="bp3-intent"]{ + z-index:13; } + .bp3-control-group .bp3-input[class*="bp3-intent"]:focus{ + z-index:15; } + .bp3-control-group .bp3-input[readonly], .bp3-control-group .bp3-input:disabled, .bp3-control-group .bp3-input.bp3-disabled{ + z-index:1; } + .bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input{ + z-index:13; } + .bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input:focus{ + z-index:15; } + .bp3-control-group .bp3-button, + .bp3-control-group .bp3-html-select select, + .bp3-control-group .bp3-select select{ + -webkit-transform:translateZ(0); + transform:translateZ(0); + border-radius:inherit; + z-index:4; } + .bp3-control-group .bp3-button:focus, + .bp3-control-group .bp3-html-select select:focus, + .bp3-control-group .bp3-select select:focus{ + z-index:5; } + .bp3-control-group .bp3-button:hover, + .bp3-control-group .bp3-html-select select:hover, + .bp3-control-group .bp3-select select:hover{ + z-index:6; } + .bp3-control-group .bp3-button:active, + .bp3-control-group .bp3-html-select select:active, + .bp3-control-group .bp3-select select:active{ + z-index:7; } + .bp3-control-group .bp3-button[readonly], .bp3-control-group .bp3-button:disabled, .bp3-control-group .bp3-button.bp3-disabled, + .bp3-control-group .bp3-html-select select[readonly], + .bp3-control-group .bp3-html-select select:disabled, + .bp3-control-group .bp3-html-select select.bp3-disabled, + .bp3-control-group .bp3-select select[readonly], + .bp3-control-group .bp3-select select:disabled, + .bp3-control-group .bp3-select select.bp3-disabled{ + z-index:3; } + .bp3-control-group .bp3-button[class*="bp3-intent"], + .bp3-control-group .bp3-html-select select[class*="bp3-intent"], + .bp3-control-group .bp3-select select[class*="bp3-intent"]{ + z-index:9; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:focus, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:focus, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:focus{ + z-index:10; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:hover, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:hover, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:hover{ + z-index:11; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:active, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:active, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:active{ + z-index:12; } + .bp3-control-group .bp3-button[class*="bp3-intent"][readonly], .bp3-control-group .bp3-button[class*="bp3-intent"]:disabled, .bp3-control-group .bp3-button[class*="bp3-intent"].bp3-disabled, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"][readonly], + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:disabled, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"].bp3-disabled, + .bp3-control-group .bp3-select select[class*="bp3-intent"][readonly], + .bp3-control-group .bp3-select select[class*="bp3-intent"]:disabled, + .bp3-control-group .bp3-select select[class*="bp3-intent"].bp3-disabled{ + z-index:8; } + .bp3-control-group .bp3-input-group > .bp3-icon, + .bp3-control-group .bp3-input-group > .bp3-button, + .bp3-control-group .bp3-input-group > .bp3-input-action{ + z-index:16; } + .bp3-control-group .bp3-select::after, + .bp3-control-group .bp3-html-select::after, + .bp3-control-group .bp3-select > .bp3-icon, + .bp3-control-group .bp3-html-select > .bp3-icon{ + z-index:17; } + .bp3-control-group .bp3-select:focus-within{ + z-index:5; } + .bp3-control-group:not(.bp3-vertical) > *:not(.bp3-divider){ + margin-right:-1px; } + .bp3-control-group:not(.bp3-vertical) > .bp3-divider:not(:first-child){ + margin-left:6px; } + .bp3-dark .bp3-control-group:not(.bp3-vertical) > *:not(.bp3-divider){ + margin-right:0; } + .bp3-dark .bp3-control-group:not(.bp3-vertical) > .bp3-button + .bp3-button{ + margin-left:1px; } + .bp3-control-group .bp3-popover-wrapper, + .bp3-control-group .bp3-popover-target{ + border-radius:inherit; } + .bp3-control-group > :first-child{ + border-radius:3px 0 0 3px; } + .bp3-control-group > :last-child{ + border-radius:0 3px 3px 0; + margin-right:0; } + .bp3-control-group > :only-child{ + border-radius:3px; + margin-right:0; } + .bp3-control-group .bp3-input-group .bp3-button{ + border-radius:3px; } + .bp3-control-group .bp3-numeric-input:not(:first-child) .bp3-input-group{ + border-bottom-left-radius:0; + border-top-left-radius:0; } + .bp3-control-group.bp3-fill{ + width:100%; } + .bp3-control-group > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-control-group.bp3-fill > *:not(.bp3-fixed){ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-control-group.bp3-vertical{ + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; } + .bp3-control-group.bp3-vertical > *{ + margin-top:-1px; } + .bp3-control-group.bp3-vertical > :first-child{ + border-radius:3px 3px 0 0; + margin-top:0; } + .bp3-control-group.bp3-vertical > :last-child{ + border-radius:0 0 3px 3px; } +.bp3-control{ + cursor:pointer; + display:block; + margin-bottom:10px; + position:relative; + text-transform:none; } + .bp3-control input:checked ~ .bp3-control-indicator{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-control:hover input:checked ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-control input:not(:disabled):active:checked ~ .bp3-control-indicator{ + background:#0e5a8a; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control input:disabled:checked ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-control input:checked ~ .bp3-control-indicator{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control:hover input:checked ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control input:not(:disabled):active:checked ~ .bp3-control-indicator{ + background-color:#0e5a8a; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control input:disabled:checked ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-control:not(.bp3-align-right){ + padding-left:26px; } + .bp3-control:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-26px; } + .bp3-control.bp3-align-right{ + padding-right:26px; } + .bp3-control.bp3-align-right .bp3-control-indicator{ + margin-right:-26px; } + .bp3-control.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-control.bp3-inline{ + display:inline-block; + margin-right:20px; } + .bp3-control input{ + left:0; + opacity:0; + position:absolute; + top:0; + z-index:-1; } + .bp3-control .bp3-control-indicator{ + background-clip:padding-box; + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + border:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + cursor:pointer; + display:inline-block; + font-size:16px; + height:1em; + margin-right:10px; + margin-top:-3px; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + vertical-align:middle; + width:1em; } + .bp3-control .bp3-control-indicator::before{ + content:""; + display:block; + height:1em; + width:1em; } + .bp3-control:hover .bp3-control-indicator{ + background-color:#ebf1f5; } + .bp3-control input:not(:disabled):active ~ .bp3-control-indicator{ + background:#d8e1e8; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control input:disabled ~ .bp3-control-indicator{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + cursor:not-allowed; } + .bp3-control input:focus ~ .bp3-control-indicator{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:2px; + -moz-outline-radius:6px; } + .bp3-control.bp3-align-right .bp3-control-indicator{ + float:right; + margin-left:10px; + margin-top:1px; } + .bp3-control.bp3-large{ + font-size:16px; } + .bp3-control.bp3-large:not(.bp3-align-right){ + padding-left:30px; } + .bp3-control.bp3-large:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-30px; } + .bp3-control.bp3-large.bp3-align-right{ + padding-right:30px; } + .bp3-control.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-right:-30px; } + .bp3-control.bp3-large .bp3-control-indicator{ + font-size:20px; } + .bp3-control.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-top:0; } + .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-control.bp3-checkbox:hover input:indeterminate ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate ~ .bp3-control-indicator{ + background:#0e5a8a; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-checkbox:hover input:indeterminate ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate ~ .bp3-control-indicator{ + background-color:#0e5a8a; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-control.bp3-checkbox .bp3-control-indicator{ + border-radius:3px; } + .bp3-control.bp3-checkbox input:checked ~ .bp3-control-indicator::before{ + background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z' fill='white'/%3e%3c/svg%3e"); } + .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator::before{ + background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1z' fill='white'/%3e%3c/svg%3e"); } + .bp3-control.bp3-radio .bp3-control-indicator{ + border-radius:50%; } + .bp3-control.bp3-radio input:checked ~ .bp3-control-indicator::before{ + background-image:radial-gradient(#ffffff, #ffffff 28%, transparent 32%); } + .bp3-control.bp3-radio input:checked:disabled ~ .bp3-control-indicator::before{ + opacity:0.5; } + .bp3-control.bp3-radio input:focus ~ .bp3-control-indicator{ + -moz-outline-radius:16px; } + .bp3-control.bp3-switch input ~ .bp3-control-indicator{ + background:rgba(167, 182, 194, 0.5); } + .bp3-control.bp3-switch:hover input ~ .bp3-control-indicator{ + background:rgba(115, 134, 148, 0.5); } + .bp3-control.bp3-switch input:not(:disabled):active ~ .bp3-control-indicator{ + background:rgba(92, 112, 128, 0.5); } + .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator{ + background:rgba(206, 217, 224, 0.5); } + .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator::before{ + background:rgba(255, 255, 255, 0.8); } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator{ + background:#137cbd; } + .bp3-control.bp3-switch:hover input:checked ~ .bp3-control-indicator{ + background:#106ba3; } + .bp3-control.bp3-switch input:checked:not(:disabled):active ~ .bp3-control-indicator{ + background:#0e5a8a; } + .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); } + .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator::before{ + background:rgba(255, 255, 255, 0.8); } + .bp3-control.bp3-switch:not(.bp3-align-right){ + padding-left:38px; } + .bp3-control.bp3-switch:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-38px; } + .bp3-control.bp3-switch.bp3-align-right{ + padding-right:38px; } + .bp3-control.bp3-switch.bp3-align-right .bp3-control-indicator{ + margin-right:-38px; } + .bp3-control.bp3-switch .bp3-control-indicator{ + border:none; + border-radius:1.75em; + -webkit-box-shadow:none !important; + box-shadow:none !important; + min-width:1.75em; + -webkit-transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:auto; } + .bp3-control.bp3-switch .bp3-control-indicator::before{ + background:#ffffff; + border-radius:50%; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + height:calc(1em - 4px); + left:0; + margin:2px; + position:absolute; + -webkit-transition:left 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:left 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:calc(1em - 4px); } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator::before{ + left:calc(100% - 1em); } + .bp3-control.bp3-switch.bp3-large:not(.bp3-align-right){ + padding-left:45px; } + .bp3-control.bp3-switch.bp3-large:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-45px; } + .bp3-control.bp3-switch.bp3-large.bp3-align-right{ + padding-right:45px; } + .bp3-control.bp3-switch.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-right:-45px; } + .bp3-dark .bp3-control.bp3-switch input ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.5); } + .bp3-dark .bp3-control.bp3-switch:hover input ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.7); } + .bp3-dark .bp3-control.bp3-switch input:not(:disabled):active ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.9); } + .bp3-dark .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator{ + background:rgba(57, 75, 89, 0.5); } + .bp3-dark .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator::before{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator{ + background:#137cbd; } + .bp3-dark .bp3-control.bp3-switch:hover input:checked ~ .bp3-control-indicator{ + background:#106ba3; } + .bp3-dark .bp3-control.bp3-switch input:checked:not(:disabled):active ~ .bp3-control-indicator{ + background:#0e5a8a; } + .bp3-dark .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); } + .bp3-dark .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator::before{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch .bp3-control-indicator::before{ + background:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator::before{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-control.bp3-switch .bp3-switch-inner-text{ + font-size:0.7em; + text-align:center; } + .bp3-control.bp3-switch .bp3-control-indicator-child:first-child{ + line-height:0; + margin-left:0.5em; + margin-right:1.2em; + visibility:hidden; } + .bp3-control.bp3-switch .bp3-control-indicator-child:last-child{ + line-height:1em; + margin-left:1.2em; + margin-right:0.5em; + visibility:visible; } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator .bp3-control-indicator-child:first-child{ + line-height:1em; + visibility:visible; } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator .bp3-control-indicator-child:last-child{ + line-height:0; + visibility:hidden; } + .bp3-dark .bp3-control{ + color:#f5f8fa; } + .bp3-dark .bp3-control.bp3-disabled{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-control .bp3-control-indicator{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control:hover .bp3-control-indicator{ + background-color:#30404d; } + .bp3-dark .bp3-control input:not(:disabled):active ~ .bp3-control-indicator{ + background:#202b33; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control input:disabled ~ .bp3-control-indicator{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + cursor:not-allowed; } + .bp3-dark .bp3-control.bp3-checkbox input:disabled:checked ~ .bp3-control-indicator, .bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + color:rgba(167, 182, 194, 0.6); } +.bp3-file-input{ + cursor:pointer; + display:inline-block; + height:30px; + position:relative; } + .bp3-file-input input{ + margin:0; + min-width:200px; + opacity:0; } + .bp3-file-input input:disabled + .bp3-file-upload-input, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-file-input input:disabled + .bp3-file-upload-input::after, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active, .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active:hover, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input::after, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input{ + color:#182026; } + .bp3-dark .bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input{ + color:#f5f8fa; } + .bp3-file-input.bp3-fill{ + width:100%; } + .bp3-file-input.bp3-large, + .bp3-large .bp3-file-input{ + height:40px; } + .bp3-file-input .bp3-file-upload-input-custom-text::after{ + content:attr(bp3-button-text); } + +.bp3-file-upload-input{ + -webkit-appearance:none; + -moz-appearance:none; + appearance:none; + background:#ffffff; + border:none; + border-radius:3px; + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + color:#182026; + font-size:14px; + font-weight:400; + height:30px; + line-height:30px; + outline:none; + padding:0 10px; + -webkit-transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + vertical-align:middle; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + color:rgba(92, 112, 128, 0.6); + left:0; + padding-right:80px; + position:absolute; + right:0; + top:0; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-file-upload-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input:focus, .bp3-file-upload-input.bp3-active{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-file-upload-input[type="search"], .bp3-file-upload-input.bp3-round{ + border-radius:30px; + -webkit-box-sizing:border-box; + box-sizing:border-box; + padding-left:10px; } + .bp3-file-upload-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-file-upload-input:disabled, .bp3-file-upload-input.bp3-disabled{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-file-upload-input::after{ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + min-height:24px; + min-width:24px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + border-radius:3px; + content:"Browse"; + line-height:24px; + margin:3px; + position:absolute; + right:0; + text-align:center; + top:0; + width:70px; } + .bp3-file-upload-input::after:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-file-upload-input::after:active, .bp3-file-upload-input::after.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-file-upload-input::after:disabled, .bp3-file-upload-input::after.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-file-upload-input::after:disabled.bp3-active, .bp3-file-upload-input::after:disabled.bp3-active:hover, .bp3-file-upload-input::after.bp3-disabled.bp3-active, .bp3-file-upload-input::after.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-file-upload-input:hover::after{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-file-upload-input:active::after{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-large .bp3-file-upload-input{ + font-size:16px; + height:40px; + line-height:40px; + padding-right:95px; } + .bp3-large .bp3-file-upload-input[type="search"], .bp3-large .bp3-file-upload-input.bp3-round{ + padding:0 15px; } + .bp3-large .bp3-file-upload-input::after{ + min-height:30px; + min-width:30px; + line-height:30px; + margin:5px; + width:85px; } + .bp3-dark .bp3-file-upload-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input:disabled, .bp3-dark .bp3-file-upload-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::after{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-file-upload-input::after:hover, .bp3-dark .bp3-file-upload-input::after:active, .bp3-dark .bp3-file-upload-input::after.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-file-upload-input::after:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input::after:active, .bp3-dark .bp3-file-upload-input::after.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-file-upload-input::after:disabled, .bp3-dark .bp3-file-upload-input::after.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::after:disabled.bp3-active, .bp3-dark .bp3-file-upload-input::after.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-file-upload-input::after .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-file-upload-input:hover::after{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input:active::after{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } +.bp3-file-upload-input::after{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } +.bp3-form-group{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:0 0 15px; } + .bp3-form-group label.bp3-label{ + margin-bottom:5px; } + .bp3-form-group .bp3-control{ + margin-top:7px; } + .bp3-form-group .bp3-form-helper-text{ + color:#5c7080; + font-size:12px; + margin-top:5px; } + .bp3-form-group.bp3-intent-primary .bp3-form-helper-text{ + color:#106ba3; } + .bp3-form-group.bp3-intent-success .bp3-form-helper-text{ + color:#0d8050; } + .bp3-form-group.bp3-intent-warning .bp3-form-helper-text{ + color:#bf7326; } + .bp3-form-group.bp3-intent-danger .bp3-form-helper-text{ + color:#c23030; } + .bp3-form-group.bp3-inline{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; } + .bp3-form-group.bp3-inline.bp3-large label.bp3-label{ + line-height:40px; + margin:0 10px 0 0; } + .bp3-form-group.bp3-inline label.bp3-label{ + line-height:30px; + margin:0 10px 0 0; } + .bp3-form-group.bp3-disabled .bp3-label, + .bp3-form-group.bp3-disabled .bp3-text-muted, + .bp3-form-group.bp3-disabled .bp3-form-helper-text{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-dark .bp3-form-group.bp3-intent-primary .bp3-form-helper-text{ + color:#48aff0; } + .bp3-dark .bp3-form-group.bp3-intent-success .bp3-form-helper-text{ + color:#3dcc91; } + .bp3-dark .bp3-form-group.bp3-intent-warning .bp3-form-helper-text{ + color:#ffb366; } + .bp3-dark .bp3-form-group.bp3-intent-danger .bp3-form-helper-text{ + color:#ff7373; } + .bp3-dark .bp3-form-group .bp3-form-helper-text{ + color:#a7b6c2; } + .bp3-dark .bp3-form-group.bp3-disabled .bp3-label, + .bp3-dark .bp3-form-group.bp3-disabled .bp3-text-muted, + .bp3-dark .bp3-form-group.bp3-disabled .bp3-form-helper-text{ + color:rgba(167, 182, 194, 0.6) !important; } +.bp3-input-group{ + display:block; + position:relative; } + .bp3-input-group .bp3-input{ + position:relative; + width:100%; } + .bp3-input-group .bp3-input:not(:first-child){ + padding-left:30px; } + .bp3-input-group .bp3-input:not(:last-child){ + padding-right:30px; } + .bp3-input-group .bp3-input-action, + .bp3-input-group > .bp3-input-left-container, + .bp3-input-group > .bp3-button, + .bp3-input-group > .bp3-icon{ + position:absolute; + top:0; } + .bp3-input-group .bp3-input-action:first-child, + .bp3-input-group > .bp3-input-left-container:first-child, + .bp3-input-group > .bp3-button:first-child, + .bp3-input-group > .bp3-icon:first-child{ + left:0; } + .bp3-input-group .bp3-input-action:last-child, + .bp3-input-group > .bp3-input-left-container:last-child, + .bp3-input-group > .bp3-button:last-child, + .bp3-input-group > .bp3-icon:last-child{ + right:0; } + .bp3-input-group .bp3-button{ + min-height:24px; + min-width:24px; + margin:3px; + padding:0 7px; } + .bp3-input-group .bp3-button:empty{ + padding:0; } + .bp3-input-group > .bp3-input-left-container, + .bp3-input-group > .bp3-icon{ + z-index:1; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon, + .bp3-input-group > .bp3-icon{ + color:#5c7080; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon:empty, + .bp3-input-group > .bp3-icon:empty{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon, + .bp3-input-group > .bp3-icon, + .bp3-input-group .bp3-input-action > .bp3-spinner{ + margin:7px; } + .bp3-input-group .bp3-tag{ + margin:5px; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus), + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus){ + color:#5c7080; } + .bp3-dark .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus), .bp3-dark + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus){ + color:#a7b6c2; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large{ + color:#5c7080; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon-standard, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon-large, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-standard, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-large{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-input-group.bp3-disabled{ + cursor:not-allowed; } + .bp3-input-group.bp3-disabled .bp3-icon{ + color:rgba(92, 112, 128, 0.6); } + .bp3-input-group.bp3-large .bp3-button{ + min-height:30px; + min-width:30px; + margin:5px; } + .bp3-input-group.bp3-large > .bp3-input-left-container > .bp3-icon, + .bp3-input-group.bp3-large > .bp3-icon, + .bp3-input-group.bp3-large .bp3-input-action > .bp3-spinner{ + margin:12px; } + .bp3-input-group.bp3-large .bp3-input{ + font-size:16px; + height:40px; + line-height:40px; } + .bp3-input-group.bp3-large .bp3-input[type="search"], .bp3-input-group.bp3-large .bp3-input.bp3-round{ + padding:0 15px; } + .bp3-input-group.bp3-large .bp3-input:not(:first-child){ + padding-left:40px; } + .bp3-input-group.bp3-large .bp3-input:not(:last-child){ + padding-right:40px; } + .bp3-input-group.bp3-small .bp3-button{ + min-height:20px; + min-width:20px; + margin:2px; } + .bp3-input-group.bp3-small .bp3-tag{ + min-height:20px; + min-width:20px; + margin:2px; } + .bp3-input-group.bp3-small > .bp3-input-left-container > .bp3-icon, + .bp3-input-group.bp3-small > .bp3-icon, + .bp3-input-group.bp3-small .bp3-input-action > .bp3-spinner{ + margin:4px; } + .bp3-input-group.bp3-small .bp3-input{ + font-size:12px; + height:24px; + line-height:24px; + padding-left:8px; + padding-right:8px; } + .bp3-input-group.bp3-small .bp3-input[type="search"], .bp3-input-group.bp3-small .bp3-input.bp3-round{ + padding:0 12px; } + .bp3-input-group.bp3-small .bp3-input:not(:first-child){ + padding-left:24px; } + .bp3-input-group.bp3-small .bp3-input:not(:last-child){ + padding-right:24px; } + .bp3-input-group.bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + width:100%; } + .bp3-input-group.bp3-round .bp3-button, + .bp3-input-group.bp3-round .bp3-input, + .bp3-input-group.bp3-round .bp3-tag{ + border-radius:30px; } + .bp3-dark .bp3-input-group .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-input-group.bp3-disabled .bp3-icon{ + color:rgba(167, 182, 194, 0.6); } + .bp3-input-group.bp3-intent-primary .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-primary .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-primary .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-input-group.bp3-intent-primary .bp3-input:disabled, .bp3-input-group.bp3-intent-primary .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-primary > .bp3-icon{ + color:#106ba3; } + .bp3-dark .bp3-input-group.bp3-intent-primary > .bp3-icon{ + color:#48aff0; } + .bp3-input-group.bp3-intent-success .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-success .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-success .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-input-group.bp3-intent-success .bp3-input:disabled, .bp3-input-group.bp3-intent-success .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-success > .bp3-icon{ + color:#0d8050; } + .bp3-dark .bp3-input-group.bp3-intent-success > .bp3-icon{ + color:#3dcc91; } + .bp3-input-group.bp3-intent-warning .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-warning .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-warning .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-input-group.bp3-intent-warning .bp3-input:disabled, .bp3-input-group.bp3-intent-warning .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-warning > .bp3-icon{ + color:#bf7326; } + .bp3-dark .bp3-input-group.bp3-intent-warning > .bp3-icon{ + color:#ffb366; } + .bp3-input-group.bp3-intent-danger .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-danger .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-danger .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-input-group.bp3-intent-danger .bp3-input:disabled, .bp3-input-group.bp3-intent-danger .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-danger > .bp3-icon{ + color:#c23030; } + .bp3-dark .bp3-input-group.bp3-intent-danger > .bp3-icon{ + color:#ff7373; } +.bp3-input{ + -webkit-appearance:none; + -moz-appearance:none; + appearance:none; + background:#ffffff; + border:none; + border-radius:3px; + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + color:#182026; + font-size:14px; + font-weight:400; + height:30px; + line-height:30px; + outline:none; + padding:0 10px; + -webkit-transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + vertical-align:middle; } + .bp3-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input:focus, .bp3-input.bp3-active{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input[type="search"], .bp3-input.bp3-round{ + border-radius:30px; + -webkit-box-sizing:border-box; + box-sizing:border-box; + padding-left:10px; } + .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-input:disabled, .bp3-input.bp3-disabled{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-input.bp3-large{ + font-size:16px; + height:40px; + line-height:40px; } + .bp3-input.bp3-large[type="search"], .bp3-input.bp3-large.bp3-round{ + padding:0 15px; } + .bp3-input.bp3-small{ + font-size:12px; + height:24px; + line-height:24px; + padding-left:8px; + padding-right:8px; } + .bp3-input.bp3-small[type="search"], .bp3-input.bp3-small.bp3-round{ + padding:0 12px; } + .bp3-input.bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + width:100%; } + .bp3-dark .bp3-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input:disabled, .bp3-dark .bp3-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-input.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-primary:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-primary[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-input.bp3-intent-primary:disabled, .bp3-input.bp3-intent-primary.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-primary:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-primary[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-dark .bp3-input.bp3-intent-primary:disabled, .bp3-dark .bp3-input.bp3-intent-primary.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-success{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-success:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-success[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-input.bp3-intent-success:disabled, .bp3-input.bp3-intent-success.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-success{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-success:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-success[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-dark .bp3-input.bp3-intent-success:disabled, .bp3-dark .bp3-input.bp3-intent-success.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-warning:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-warning[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-input.bp3-intent-warning:disabled, .bp3-input.bp3-intent-warning.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-warning:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-warning[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-dark .bp3-input.bp3-intent-warning:disabled, .bp3-dark .bp3-input.bp3-intent-warning.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-danger:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-danger[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-input.bp3-intent-danger:disabled, .bp3-input.bp3-intent-danger.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-danger:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-danger[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-dark .bp3-input.bp3-intent-danger:disabled, .bp3-dark .bp3-input.bp3-intent-danger.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input::-ms-clear{ + display:none; } +textarea.bp3-input{ + max-width:100%; + padding:10px; } + textarea.bp3-input, textarea.bp3-input.bp3-large, textarea.bp3-input.bp3-small{ + height:auto; + line-height:inherit; } + textarea.bp3-input.bp3-small{ + padding:8px; } + .bp3-dark textarea.bp3-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark textarea.bp3-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark textarea.bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark textarea.bp3-input:disabled, .bp3-dark textarea.bp3-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } +label.bp3-label{ + display:block; + margin-bottom:15px; + margin-top:0; } + label.bp3-label .bp3-html-select, + label.bp3-label .bp3-input, + label.bp3-label .bp3-select, + label.bp3-label .bp3-slider, + label.bp3-label .bp3-popover-wrapper{ + display:block; + margin-top:5px; + text-transform:none; } + label.bp3-label .bp3-button-group{ + margin-top:5px; } + label.bp3-label .bp3-select select, + label.bp3-label .bp3-html-select select{ + font-weight:400; + vertical-align:top; + width:100%; } + label.bp3-label.bp3-disabled, + label.bp3-label.bp3-disabled .bp3-text-muted{ + color:rgba(92, 112, 128, 0.6); } + label.bp3-label.bp3-inline{ + line-height:30px; } + label.bp3-label.bp3-inline .bp3-html-select, + label.bp3-label.bp3-inline .bp3-input, + label.bp3-label.bp3-inline .bp3-input-group, + label.bp3-label.bp3-inline .bp3-select, + label.bp3-label.bp3-inline .bp3-popover-wrapper{ + display:inline-block; + margin:0 0 0 5px; + vertical-align:top; } + label.bp3-label.bp3-inline .bp3-button-group{ + margin:0 0 0 5px; } + label.bp3-label.bp3-inline .bp3-input-group .bp3-input{ + margin-left:0; } + label.bp3-label.bp3-inline.bp3-large{ + line-height:40px; } + label.bp3-label:not(.bp3-inline) .bp3-popover-target{ + display:block; } + .bp3-dark label.bp3-label{ + color:#f5f8fa; } + .bp3-dark label.bp3-label.bp3-disabled, + .bp3-dark label.bp3-label.bp3-disabled .bp3-text-muted{ + color:rgba(167, 182, 194, 0.6); } +.bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button{ + -webkit-box-flex:1; + -ms-flex:1 1 14px; + flex:1 1 14px; + min-height:0; + padding:0; + width:30px; } + .bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button:first-child{ + border-radius:0 3px 0 0; } + .bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button:last-child{ + border-radius:0 0 3px 0; } + +.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child > .bp3-button:first-child{ + border-radius:3px 0 0 0; } + +.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child > .bp3-button:last-child{ + border-radius:0 0 0 3px; } + +.bp3-numeric-input.bp3-large .bp3-button-group.bp3-vertical > .bp3-button{ + width:40px; } + +form{ + display:block; } +.bp3-html-select select, +.bp3-select select{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border:none; + border-radius:3px; + cursor:pointer; + font-size:14px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + padding:5px 10px; + text-align:left; + vertical-align:middle; + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + -moz-appearance:none; + -webkit-appearance:none; + border-radius:3px; + height:30px; + padding:0 25px 0 10px; + width:100%; } + .bp3-html-select select > *, .bp3-select select > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-html-select select > .bp3-fill, .bp3-select select > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-html-select select::before, + .bp3-select select::before, .bp3-html-select select > *, .bp3-select select > *{ + margin-right:7px; } + .bp3-html-select select:empty::before, + .bp3-select select:empty::before, + .bp3-html-select select > :last-child, + .bp3-select select > :last-child{ + margin-right:0; } + .bp3-html-select select:hover, + .bp3-select select:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-html-select select:active, + .bp3-select select:active, .bp3-html-select select.bp3-active, + .bp3-select select.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-html-select select:disabled, + .bp3-select select:disabled, .bp3-html-select select.bp3-disabled, + .bp3-select select.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-html-select select:disabled.bp3-active, + .bp3-select select:disabled.bp3-active, .bp3-html-select select:disabled.bp3-active:hover, + .bp3-select select:disabled.bp3-active:hover, .bp3-html-select select.bp3-disabled.bp3-active, + .bp3-select select.bp3-disabled.bp3-active, .bp3-html-select select.bp3-disabled.bp3-active:hover, + .bp3-select select.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + +.bp3-html-select.bp3-minimal select, +.bp3-select.bp3-minimal select{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-html-select.bp3-minimal select:hover, + .bp3-select.bp3-minimal select:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-html-select.bp3-minimal select:active, + .bp3-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal select.bp3-active, + .bp3-select.bp3-minimal select.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-html-select.bp3-minimal select:disabled, + .bp3-select.bp3-minimal select:disabled, .bp3-html-select.bp3-minimal select:disabled:hover, + .bp3-select.bp3-minimal select:disabled:hover, .bp3-html-select.bp3-minimal select.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-disabled, .bp3-html-select.bp3-minimal select.bp3-disabled:hover, + .bp3-select.bp3-minimal select.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-html-select.bp3-minimal select:disabled.bp3-active, + .bp3-select.bp3-minimal select:disabled.bp3-active, .bp3-html-select.bp3-minimal select:disabled:hover.bp3-active, + .bp3-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active, + .bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-html-select.bp3-minimal select, .bp3-html-select.bp3-minimal .bp3-dark select, + .bp3-dark .bp3-select.bp3-minimal select, .bp3-select.bp3-minimal .bp3-dark select{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-html-select.bp3-minimal select:hover, .bp3-html-select.bp3-minimal .bp3-dark select:hover, + .bp3-dark .bp3-select.bp3-minimal select:hover, .bp3-select.bp3-minimal .bp3-dark select:hover, .bp3-dark .bp3-html-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal .bp3-dark select:active, + .bp3-dark .bp3-select.bp3-minimal select:active, .bp3-select.bp3-minimal .bp3-dark select:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-html-select.bp3-minimal select:hover, .bp3-html-select.bp3-minimal .bp3-dark select:hover, + .bp3-dark .bp3-select.bp3-minimal select:hover, .bp3-select.bp3-minimal .bp3-dark select:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-html-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal .bp3-dark select:active, + .bp3-dark .bp3-select.bp3-minimal select:active, .bp3-select.bp3-minimal .bp3-dark select:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-html-select.bp3-minimal select:disabled, .bp3-html-select.bp3-minimal .bp3-dark select:disabled, + .bp3-dark .bp3-select.bp3-minimal select:disabled, .bp3-select.bp3-minimal .bp3-dark select:disabled, .bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover, .bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover, + .bp3-dark .bp3-select.bp3-minimal select:disabled:hover, .bp3-select.bp3-minimal .bp3-dark select:disabled:hover, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-html-select.bp3-minimal select:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary, + .bp3-select.bp3-minimal select.bp3-intent-primary{ + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, + .bp3-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, + .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, + .bp3-select.bp3-minimal select.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, + .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled, + .bp3-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-success, + .bp3-select.bp3-minimal select.bp3-intent-success{ + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, + .bp3-select.bp3-minimal select.bp3-intent-success:hover, .bp3-html-select.bp3-minimal select.bp3-intent-success:active, + .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, + .bp3-select.bp3-minimal select.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:active, + .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled, + .bp3-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning, + .bp3-select.bp3-minimal select.bp3-intent-warning{ + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, + .bp3-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, + .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, + .bp3-select.bp3-minimal select.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, + .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled, + .bp3-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger, + .bp3-select.bp3-minimal select.bp3-intent-danger{ + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, + .bp3-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, + .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, + .bp3-select.bp3-minimal select.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, + .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled, + .bp3-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + +.bp3-html-select.bp3-large select, +.bp3-select.bp3-large select{ + font-size:16px; + height:40px; + padding-right:35px; } + +.bp3-dark .bp3-html-select select, .bp3-dark .bp3-select select{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-html-select select:hover, .bp3-dark .bp3-select select:hover, .bp3-dark .bp3-html-select select:active, .bp3-dark .bp3-select select:active, .bp3-dark .bp3-html-select select.bp3-active, .bp3-dark .bp3-select select.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-html-select select:hover, .bp3-dark .bp3-select select:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-html-select select:active, .bp3-dark .bp3-select select:active, .bp3-dark .bp3-html-select select.bp3-active, .bp3-dark .bp3-select select.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-html-select select:disabled, .bp3-dark .bp3-select select:disabled, .bp3-dark .bp3-html-select select.bp3-disabled, .bp3-dark .bp3-select select.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-html-select select:disabled.bp3-active, .bp3-dark .bp3-select select:disabled.bp3-active, .bp3-dark .bp3-html-select select.bp3-disabled.bp3-active, .bp3-dark .bp3-select select.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-html-select select .bp3-button-spinner .bp3-spinner-head, .bp3-dark .bp3-select select .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + +.bp3-html-select select:disabled, +.bp3-select select:disabled{ + background-color:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-html-select .bp3-icon, +.bp3-select .bp3-icon, .bp3-select::after{ + color:#5c7080; + pointer-events:none; + position:absolute; + right:7px; + top:7px; } + .bp3-html-select .bp3-disabled.bp3-icon, + .bp3-select .bp3-disabled.bp3-icon, .bp3-disabled.bp3-select::after{ + color:rgba(92, 112, 128, 0.6); } +.bp3-html-select, +.bp3-select{ + display:inline-block; + letter-spacing:normal; + position:relative; + vertical-align:middle; } + .bp3-html-select select::-ms-expand, + .bp3-select select::-ms-expand{ + display:none; } + .bp3-html-select .bp3-icon, + .bp3-select .bp3-icon{ + color:#5c7080; } + .bp3-html-select .bp3-icon:hover, + .bp3-select .bp3-icon:hover{ + color:#182026; } + .bp3-dark .bp3-html-select .bp3-icon, .bp3-dark + .bp3-select .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-html-select .bp3-icon:hover, .bp3-dark + .bp3-select .bp3-icon:hover{ + color:#f5f8fa; } + .bp3-html-select.bp3-large::after, + .bp3-html-select.bp3-large .bp3-icon, + .bp3-select.bp3-large::after, + .bp3-select.bp3-large .bp3-icon{ + right:12px; + top:12px; } + .bp3-html-select.bp3-fill, + .bp3-html-select.bp3-fill select, + .bp3-select.bp3-fill, + .bp3-select.bp3-fill select{ + width:100%; } + .bp3-dark .bp3-html-select option, .bp3-dark + .bp3-select option{ + background-color:#30404d; + color:#f5f8fa; } + .bp3-dark .bp3-html-select option:disabled, .bp3-dark + .bp3-select option:disabled{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-html-select::after, .bp3-dark + .bp3-select::after{ + color:#a7b6c2; } + +.bp3-select::after{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + content:""; } +.bp3-running-text table, table.bp3-html-table{ + border-spacing:0; + font-size:14px; } + .bp3-running-text table th, table.bp3-html-table th, + .bp3-running-text table td, + table.bp3-html-table td{ + padding:11px; + text-align:left; + vertical-align:top; } + .bp3-running-text table th, table.bp3-html-table th{ + color:#182026; + font-weight:600; } + + .bp3-running-text table td, + table.bp3-html-table td{ + color:#182026; } + .bp3-running-text table tbody tr:first-child th, table.bp3-html-table tbody tr:first-child th, + .bp3-running-text table tbody tr:first-child td, + table.bp3-html-table tbody tr:first-child td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); } + .bp3-dark .bp3-running-text table th, .bp3-running-text .bp3-dark table th, .bp3-dark table.bp3-html-table th{ + color:#f5f8fa; } + .bp3-dark .bp3-running-text table td, .bp3-running-text .bp3-dark table td, .bp3-dark table.bp3-html-table td{ + color:#f5f8fa; } + .bp3-dark .bp3-running-text table tbody tr:first-child th, .bp3-running-text .bp3-dark table tbody tr:first-child th, .bp3-dark table.bp3-html-table tbody tr:first-child th, + .bp3-dark .bp3-running-text table tbody tr:first-child td, + .bp3-running-text .bp3-dark table tbody tr:first-child td, + .bp3-dark table.bp3-html-table tbody tr:first-child td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); } + +table.bp3-html-table.bp3-html-table-condensed th, +table.bp3-html-table.bp3-html-table-condensed td, table.bp3-html-table.bp3-small th, +table.bp3-html-table.bp3-small td{ + padding-bottom:6px; + padding-top:6px; } + +table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td{ + background:rgba(191, 204, 214, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered th:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered tbody tr td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); } + table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child){ + -webkit-box-shadow:inset 1px 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 1px 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td{ + -webkit-box-shadow:none; + box-shadow:none; } + table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-interactive tbody tr:hover td{ + background-color:rgba(191, 204, 214, 0.3); + cursor:pointer; } + +table.bp3-html-table.bp3-interactive tbody tr:active td{ + background-color:rgba(191, 204, 214, 0.4); } + +.bp3-dark table.bp3-html-table{ } + .bp3-dark table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td{ + background:rgba(92, 112, 128, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered th:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child){ + -webkit-box-shadow:inset 1px 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 1px 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td{ + -webkit-box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:first-child{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark table.bp3-html-table.bp3-interactive tbody tr:hover td{ + background-color:rgba(92, 112, 128, 0.3); + cursor:pointer; } + .bp3-dark table.bp3-html-table.bp3-interactive tbody tr:active td{ + background-color:rgba(92, 112, 128, 0.4); } + +.bp3-key-combo{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; } + .bp3-key-combo > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-key-combo > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-key-combo::before, + .bp3-key-combo > *{ + margin-right:5px; } + .bp3-key-combo:empty::before, + .bp3-key-combo > :last-child{ + margin-right:0; } + +.bp3-hotkey-dialog{ + padding-bottom:0; + top:40px; } + .bp3-hotkey-dialog .bp3-dialog-body{ + margin:0; + padding:0; } + .bp3-hotkey-dialog .bp3-hotkey-label{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; } + +.bp3-hotkey-column{ + margin:auto; + max-height:80vh; + overflow-y:auto; + padding:30px; } + .bp3-hotkey-column .bp3-heading{ + margin-bottom:20px; } + .bp3-hotkey-column .bp3-heading:not(:first-child){ + margin-top:40px; } + +.bp3-hotkey{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:justify; + -ms-flex-pack:justify; + justify-content:space-between; + margin-left:0; + margin-right:0; } + .bp3-hotkey:not(:last-child){ + margin-bottom:10px; } +.bp3-icon{ + display:inline-block; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + vertical-align:text-bottom; } + .bp3-icon:not(:empty)::before{ + content:"" !important; + content:unset !important; } + .bp3-icon > svg{ + display:block; } + .bp3-icon > svg:not([fill]){ + fill:currentColor; } + +.bp3-icon.bp3-intent-primary, .bp3-icon-standard.bp3-intent-primary, .bp3-icon-large.bp3-intent-primary{ + color:#106ba3; } + .bp3-dark .bp3-icon.bp3-intent-primary, .bp3-dark .bp3-icon-standard.bp3-intent-primary, .bp3-dark .bp3-icon-large.bp3-intent-primary{ + color:#48aff0; } + +.bp3-icon.bp3-intent-success, .bp3-icon-standard.bp3-intent-success, .bp3-icon-large.bp3-intent-success{ + color:#0d8050; } + .bp3-dark .bp3-icon.bp3-intent-success, .bp3-dark .bp3-icon-standard.bp3-intent-success, .bp3-dark .bp3-icon-large.bp3-intent-success{ + color:#3dcc91; } + +.bp3-icon.bp3-intent-warning, .bp3-icon-standard.bp3-intent-warning, .bp3-icon-large.bp3-intent-warning{ + color:#bf7326; } + .bp3-dark .bp3-icon.bp3-intent-warning, .bp3-dark .bp3-icon-standard.bp3-intent-warning, .bp3-dark .bp3-icon-large.bp3-intent-warning{ + color:#ffb366; } + +.bp3-icon.bp3-intent-danger, .bp3-icon-standard.bp3-intent-danger, .bp3-icon-large.bp3-intent-danger{ + color:#c23030; } + .bp3-dark .bp3-icon.bp3-intent-danger, .bp3-dark .bp3-icon-standard.bp3-intent-danger, .bp3-dark .bp3-icon-large.bp3-intent-danger{ + color:#ff7373; } + +span.bp3-icon-standard{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + display:inline-block; } + +span.bp3-icon-large{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + display:inline-block; } + +span.bp3-icon:empty{ + font-family:"Icons20"; + font-size:inherit; + font-style:normal; + font-weight:400; + line-height:1; } + span.bp3-icon:empty::before{ + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; } + +.bp3-icon-add::before{ + content:""; } + +.bp3-icon-add-column-left::before{ + content:""; } + +.bp3-icon-add-column-right::before{ + content:""; } + +.bp3-icon-add-row-bottom::before{ + content:""; } + +.bp3-icon-add-row-top::before{ + content:""; } + +.bp3-icon-add-to-artifact::before{ + content:""; } + +.bp3-icon-add-to-folder::before{ + content:""; } + +.bp3-icon-airplane::before{ + content:""; } + +.bp3-icon-align-center::before{ + content:""; } + +.bp3-icon-align-justify::before{ + content:""; } + +.bp3-icon-align-left::before{ + content:""; } + +.bp3-icon-align-right::before{ + content:""; } + +.bp3-icon-alignment-bottom::before{ + content:""; } + +.bp3-icon-alignment-horizontal-center::before{ + content:""; } + +.bp3-icon-alignment-left::before{ + content:""; } + +.bp3-icon-alignment-right::before{ + content:""; } + +.bp3-icon-alignment-top::before{ + content:""; } + +.bp3-icon-alignment-vertical-center::before{ + content:""; } + +.bp3-icon-annotation::before{ + content:""; } + +.bp3-icon-application::before{ + content:""; } + +.bp3-icon-applications::before{ + content:""; } + +.bp3-icon-archive::before{ + content:""; } + +.bp3-icon-arrow-bottom-left::before{ + content:"↙"; } + +.bp3-icon-arrow-bottom-right::before{ + content:"↘"; } + +.bp3-icon-arrow-down::before{ + content:"↓"; } + +.bp3-icon-arrow-left::before{ + content:"←"; } + +.bp3-icon-arrow-right::before{ + content:"→"; } + +.bp3-icon-arrow-top-left::before{ + content:"↖"; } + +.bp3-icon-arrow-top-right::before{ + content:"↗"; } + +.bp3-icon-arrow-up::before{ + content:"↑"; } + +.bp3-icon-arrows-horizontal::before{ + content:"↔"; } + +.bp3-icon-arrows-vertical::before{ + content:"↕"; } + +.bp3-icon-asterisk::before{ + content:"*"; } + +.bp3-icon-automatic-updates::before{ + content:""; } + +.bp3-icon-badge::before{ + content:""; } + +.bp3-icon-ban-circle::before{ + content:""; } + +.bp3-icon-bank-account::before{ + content:""; } + +.bp3-icon-barcode::before{ + content:""; } + +.bp3-icon-blank::before{ + content:""; } + +.bp3-icon-blocked-person::before{ + content:""; } + +.bp3-icon-bold::before{ + content:""; } + +.bp3-icon-book::before{ + content:""; } + +.bp3-icon-bookmark::before{ + content:""; } + +.bp3-icon-box::before{ + content:""; } + +.bp3-icon-briefcase::before{ + content:""; } + +.bp3-icon-bring-data::before{ + content:""; } + +.bp3-icon-build::before{ + content:""; } + +.bp3-icon-calculator::before{ + content:""; } + +.bp3-icon-calendar::before{ + content:""; } + +.bp3-icon-camera::before{ + content:""; } + +.bp3-icon-caret-down::before{ + content:"⌄"; } + +.bp3-icon-caret-left::before{ + content:"〈"; } + +.bp3-icon-caret-right::before{ + content:"〉"; } + +.bp3-icon-caret-up::before{ + content:"⌃"; } + +.bp3-icon-cell-tower::before{ + content:""; } + +.bp3-icon-changes::before{ + content:""; } + +.bp3-icon-chart::before{ + content:""; } + +.bp3-icon-chat::before{ + content:""; } + +.bp3-icon-chevron-backward::before{ + content:""; } + +.bp3-icon-chevron-down::before{ + content:""; } + +.bp3-icon-chevron-forward::before{ + content:""; } + +.bp3-icon-chevron-left::before{ + content:""; } + +.bp3-icon-chevron-right::before{ + content:""; } + +.bp3-icon-chevron-up::before{ + content:""; } + +.bp3-icon-circle::before{ + content:""; } + +.bp3-icon-circle-arrow-down::before{ + content:""; } + +.bp3-icon-circle-arrow-left::before{ + content:""; } + +.bp3-icon-circle-arrow-right::before{ + content:""; } + +.bp3-icon-circle-arrow-up::before{ + content:""; } + +.bp3-icon-citation::before{ + content:""; } + +.bp3-icon-clean::before{ + content:""; } + +.bp3-icon-clipboard::before{ + content:""; } + +.bp3-icon-cloud::before{ + content:"☁"; } + +.bp3-icon-cloud-download::before{ + content:""; } + +.bp3-icon-cloud-upload::before{ + content:""; } + +.bp3-icon-code::before{ + content:""; } + +.bp3-icon-code-block::before{ + content:""; } + +.bp3-icon-cog::before{ + content:""; } + +.bp3-icon-collapse-all::before{ + content:""; } + +.bp3-icon-column-layout::before{ + content:""; } + +.bp3-icon-comment::before{ + content:""; } + +.bp3-icon-comparison::before{ + content:""; } + +.bp3-icon-compass::before{ + content:""; } + +.bp3-icon-compressed::before{ + content:""; } + +.bp3-icon-confirm::before{ + content:""; } + +.bp3-icon-console::before{ + content:""; } + +.bp3-icon-contrast::before{ + content:""; } + +.bp3-icon-control::before{ + content:""; } + +.bp3-icon-credit-card::before{ + content:""; } + +.bp3-icon-cross::before{ + content:"✗"; } + +.bp3-icon-crown::before{ + content:""; } + +.bp3-icon-cube::before{ + content:""; } + +.bp3-icon-cube-add::before{ + content:""; } + +.bp3-icon-cube-remove::before{ + content:""; } + +.bp3-icon-curved-range-chart::before{ + content:""; } + +.bp3-icon-cut::before{ + content:""; } + +.bp3-icon-dashboard::before{ + content:""; } + +.bp3-icon-data-lineage::before{ + content:""; } + +.bp3-icon-database::before{ + content:""; } + +.bp3-icon-delete::before{ + content:""; } + +.bp3-icon-delta::before{ + content:"Δ"; } + +.bp3-icon-derive-column::before{ + content:""; } + +.bp3-icon-desktop::before{ + content:""; } + +.bp3-icon-diagnosis::before{ + content:""; } + +.bp3-icon-diagram-tree::before{ + content:""; } + +.bp3-icon-direction-left::before{ + content:""; } + +.bp3-icon-direction-right::before{ + content:""; } + +.bp3-icon-disable::before{ + content:""; } + +.bp3-icon-document::before{ + content:""; } + +.bp3-icon-document-open::before{ + content:""; } + +.bp3-icon-document-share::before{ + content:""; } + +.bp3-icon-dollar::before{ + content:"$"; } + +.bp3-icon-dot::before{ + content:"•"; } + +.bp3-icon-double-caret-horizontal::before{ + content:""; } + +.bp3-icon-double-caret-vertical::before{ + content:""; } + +.bp3-icon-double-chevron-down::before{ + content:""; } + +.bp3-icon-double-chevron-left::before{ + content:""; } + +.bp3-icon-double-chevron-right::before{ + content:""; } + +.bp3-icon-double-chevron-up::before{ + content:""; } + +.bp3-icon-doughnut-chart::before{ + content:""; } + +.bp3-icon-download::before{ + content:""; } + +.bp3-icon-drag-handle-horizontal::before{ + content:""; } + +.bp3-icon-drag-handle-vertical::before{ + content:""; } + +.bp3-icon-draw::before{ + content:""; } + +.bp3-icon-drive-time::before{ + content:""; } + +.bp3-icon-duplicate::before{ + content:""; } + +.bp3-icon-edit::before{ + content:"✎"; } + +.bp3-icon-eject::before{ + content:"⏏"; } + +.bp3-icon-endorsed::before{ + content:""; } + +.bp3-icon-envelope::before{ + content:"✉"; } + +.bp3-icon-equals::before{ + content:""; } + +.bp3-icon-eraser::before{ + content:""; } + +.bp3-icon-error::before{ + content:""; } + +.bp3-icon-euro::before{ + content:"€"; } + +.bp3-icon-exchange::before{ + content:""; } + +.bp3-icon-exclude-row::before{ + content:""; } + +.bp3-icon-expand-all::before{ + content:""; } + +.bp3-icon-export::before{ + content:""; } + +.bp3-icon-eye-off::before{ + content:""; } + +.bp3-icon-eye-on::before{ + content:""; } + +.bp3-icon-eye-open::before{ + content:""; } + +.bp3-icon-fast-backward::before{ + content:""; } + +.bp3-icon-fast-forward::before{ + content:""; } + +.bp3-icon-feed::before{ + content:""; } + +.bp3-icon-feed-subscribed::before{ + content:""; } + +.bp3-icon-film::before{ + content:""; } + +.bp3-icon-filter::before{ + content:""; } + +.bp3-icon-filter-keep::before{ + content:""; } + +.bp3-icon-filter-list::before{ + content:""; } + +.bp3-icon-filter-open::before{ + content:""; } + +.bp3-icon-filter-remove::before{ + content:""; } + +.bp3-icon-flag::before{ + content:"⚑"; } + +.bp3-icon-flame::before{ + content:""; } + +.bp3-icon-flash::before{ + content:""; } + +.bp3-icon-floppy-disk::before{ + content:""; } + +.bp3-icon-flow-branch::before{ + content:""; } + +.bp3-icon-flow-end::before{ + content:""; } + +.bp3-icon-flow-linear::before{ + content:""; } + +.bp3-icon-flow-review::before{ + content:""; } + +.bp3-icon-flow-review-branch::before{ + content:""; } + +.bp3-icon-flows::before{ + content:""; } + +.bp3-icon-folder-close::before{ + content:""; } + +.bp3-icon-folder-new::before{ + content:""; } + +.bp3-icon-folder-open::before{ + content:""; } + +.bp3-icon-folder-shared::before{ + content:""; } + +.bp3-icon-folder-shared-open::before{ + content:""; } + +.bp3-icon-follower::before{ + content:""; } + +.bp3-icon-following::before{ + content:""; } + +.bp3-icon-font::before{ + content:""; } + +.bp3-icon-fork::before{ + content:""; } + +.bp3-icon-form::before{ + content:""; } + +.bp3-icon-full-circle::before{ + content:""; } + +.bp3-icon-full-stacked-chart::before{ + content:""; } + +.bp3-icon-fullscreen::before{ + content:""; } + +.bp3-icon-function::before{ + content:""; } + +.bp3-icon-gantt-chart::before{ + content:""; } + +.bp3-icon-geolocation::before{ + content:""; } + +.bp3-icon-geosearch::before{ + content:""; } + +.bp3-icon-git-branch::before{ + content:""; } + +.bp3-icon-git-commit::before{ + content:""; } + +.bp3-icon-git-merge::before{ + content:""; } + +.bp3-icon-git-new-branch::before{ + content:""; } + +.bp3-icon-git-pull::before{ + content:""; } + +.bp3-icon-git-push::before{ + content:""; } + +.bp3-icon-git-repo::before{ + content:""; } + +.bp3-icon-glass::before{ + content:""; } + +.bp3-icon-globe::before{ + content:""; } + +.bp3-icon-globe-network::before{ + content:""; } + +.bp3-icon-graph::before{ + content:""; } + +.bp3-icon-graph-remove::before{ + content:""; } + +.bp3-icon-greater-than::before{ + content:""; } + +.bp3-icon-greater-than-or-equal-to::before{ + content:""; } + +.bp3-icon-grid::before{ + content:""; } + +.bp3-icon-grid-view::before{ + content:""; } + +.bp3-icon-group-objects::before{ + content:""; } + +.bp3-icon-grouped-bar-chart::before{ + content:""; } + +.bp3-icon-hand::before{ + content:""; } + +.bp3-icon-hand-down::before{ + content:""; } + +.bp3-icon-hand-left::before{ + content:""; } + +.bp3-icon-hand-right::before{ + content:""; } + +.bp3-icon-hand-up::before{ + content:""; } + +.bp3-icon-header::before{ + content:""; } + +.bp3-icon-header-one::before{ + content:""; } + +.bp3-icon-header-two::before{ + content:""; } + +.bp3-icon-headset::before{ + content:""; } + +.bp3-icon-heart::before{ + content:"♥"; } + +.bp3-icon-heart-broken::before{ + content:""; } + +.bp3-icon-heat-grid::before{ + content:""; } + +.bp3-icon-heatmap::before{ + content:""; } + +.bp3-icon-help::before{ + content:"?"; } + +.bp3-icon-helper-management::before{ + content:""; } + +.bp3-icon-highlight::before{ + content:""; } + +.bp3-icon-history::before{ + content:""; } + +.bp3-icon-home::before{ + content:"⌂"; } + +.bp3-icon-horizontal-bar-chart::before{ + content:""; } + +.bp3-icon-horizontal-bar-chart-asc::before{ + content:""; } + +.bp3-icon-horizontal-bar-chart-desc::before{ + content:""; } + +.bp3-icon-horizontal-distribution::before{ + content:""; } + +.bp3-icon-id-number::before{ + content:""; } + +.bp3-icon-image-rotate-left::before{ + content:""; } + +.bp3-icon-image-rotate-right::before{ + content:""; } + +.bp3-icon-import::before{ + content:""; } + +.bp3-icon-inbox::before{ + content:""; } + +.bp3-icon-inbox-filtered::before{ + content:""; } + +.bp3-icon-inbox-geo::before{ + content:""; } + +.bp3-icon-inbox-search::before{ + content:""; } + +.bp3-icon-inbox-update::before{ + content:""; } + +.bp3-icon-info-sign::before{ + content:"ℹ"; } + +.bp3-icon-inheritance::before{ + content:""; } + +.bp3-icon-inner-join::before{ + content:""; } + +.bp3-icon-insert::before{ + content:""; } + +.bp3-icon-intersection::before{ + content:""; } + +.bp3-icon-ip-address::before{ + content:""; } + +.bp3-icon-issue::before{ + content:""; } + +.bp3-icon-issue-closed::before{ + content:""; } + +.bp3-icon-issue-new::before{ + content:""; } + +.bp3-icon-italic::before{ + content:""; } + +.bp3-icon-join-table::before{ + content:""; } + +.bp3-icon-key::before{ + content:""; } + +.bp3-icon-key-backspace::before{ + content:""; } + +.bp3-icon-key-command::before{ + content:""; } + +.bp3-icon-key-control::before{ + content:""; } + +.bp3-icon-key-delete::before{ + content:""; } + +.bp3-icon-key-enter::before{ + content:""; } + +.bp3-icon-key-escape::before{ + content:""; } + +.bp3-icon-key-option::before{ + content:""; } + +.bp3-icon-key-shift::before{ + content:""; } + +.bp3-icon-key-tab::before{ + content:""; } + +.bp3-icon-known-vehicle::before{ + content:""; } + +.bp3-icon-lab-test::before{ + content:""; } + +.bp3-icon-label::before{ + content:""; } + +.bp3-icon-layer::before{ + content:""; } + +.bp3-icon-layers::before{ + content:""; } + +.bp3-icon-layout::before{ + content:""; } + +.bp3-icon-layout-auto::before{ + content:""; } + +.bp3-icon-layout-balloon::before{ + content:""; } + +.bp3-icon-layout-circle::before{ + content:""; } + +.bp3-icon-layout-grid::before{ + content:""; } + +.bp3-icon-layout-group-by::before{ + content:""; } + +.bp3-icon-layout-hierarchy::before{ + content:""; } + +.bp3-icon-layout-linear::before{ + content:""; } + +.bp3-icon-layout-skew-grid::before{ + content:""; } + +.bp3-icon-layout-sorted-clusters::before{ + content:""; } + +.bp3-icon-learning::before{ + content:""; } + +.bp3-icon-left-join::before{ + content:""; } + +.bp3-icon-less-than::before{ + content:""; } + +.bp3-icon-less-than-or-equal-to::before{ + content:""; } + +.bp3-icon-lifesaver::before{ + content:""; } + +.bp3-icon-lightbulb::before{ + content:""; } + +.bp3-icon-link::before{ + content:""; } + +.bp3-icon-list::before{ + content:"☰"; } + +.bp3-icon-list-columns::before{ + content:""; } + +.bp3-icon-list-detail-view::before{ + content:""; } + +.bp3-icon-locate::before{ + content:""; } + +.bp3-icon-lock::before{ + content:""; } + +.bp3-icon-log-in::before{ + content:""; } + +.bp3-icon-log-out::before{ + content:""; } + +.bp3-icon-manual::before{ + content:""; } + +.bp3-icon-manually-entered-data::before{ + content:""; } + +.bp3-icon-map::before{ + content:""; } + +.bp3-icon-map-create::before{ + content:""; } + +.bp3-icon-map-marker::before{ + content:""; } + +.bp3-icon-maximize::before{ + content:""; } + +.bp3-icon-media::before{ + content:""; } + +.bp3-icon-menu::before{ + content:""; } + +.bp3-icon-menu-closed::before{ + content:""; } + +.bp3-icon-menu-open::before{ + content:""; } + +.bp3-icon-merge-columns::before{ + content:""; } + +.bp3-icon-merge-links::before{ + content:""; } + +.bp3-icon-minimize::before{ + content:""; } + +.bp3-icon-minus::before{ + content:"−"; } + +.bp3-icon-mobile-phone::before{ + content:""; } + +.bp3-icon-mobile-video::before{ + content:""; } + +.bp3-icon-moon::before{ + content:""; } + +.bp3-icon-more::before{ + content:""; } + +.bp3-icon-mountain::before{ + content:""; } + +.bp3-icon-move::before{ + content:""; } + +.bp3-icon-mugshot::before{ + content:""; } + +.bp3-icon-multi-select::before{ + content:""; } + +.bp3-icon-music::before{ + content:""; } + +.bp3-icon-new-drawing::before{ + content:""; } + +.bp3-icon-new-grid-item::before{ + content:""; } + +.bp3-icon-new-layer::before{ + content:""; } + +.bp3-icon-new-layers::before{ + content:""; } + +.bp3-icon-new-link::before{ + content:""; } + +.bp3-icon-new-object::before{ + content:""; } + +.bp3-icon-new-person::before{ + content:""; } + +.bp3-icon-new-prescription::before{ + content:""; } + +.bp3-icon-new-text-box::before{ + content:""; } + +.bp3-icon-ninja::before{ + content:""; } + +.bp3-icon-not-equal-to::before{ + content:""; } + +.bp3-icon-notifications::before{ + content:""; } + +.bp3-icon-notifications-updated::before{ + content:""; } + +.bp3-icon-numbered-list::before{ + content:""; } + +.bp3-icon-numerical::before{ + content:""; } + +.bp3-icon-office::before{ + content:""; } + +.bp3-icon-offline::before{ + content:""; } + +.bp3-icon-oil-field::before{ + content:""; } + +.bp3-icon-one-column::before{ + content:""; } + +.bp3-icon-outdated::before{ + content:""; } + +.bp3-icon-page-layout::before{ + content:""; } + +.bp3-icon-panel-stats::before{ + content:""; } + +.bp3-icon-panel-table::before{ + content:""; } + +.bp3-icon-paperclip::before{ + content:""; } + +.bp3-icon-paragraph::before{ + content:""; } + +.bp3-icon-path::before{ + content:""; } + +.bp3-icon-path-search::before{ + content:""; } + +.bp3-icon-pause::before{ + content:""; } + +.bp3-icon-people::before{ + content:""; } + +.bp3-icon-percentage::before{ + content:""; } + +.bp3-icon-person::before{ + content:""; } + +.bp3-icon-phone::before{ + content:"☎"; } + +.bp3-icon-pie-chart::before{ + content:""; } + +.bp3-icon-pin::before{ + content:""; } + +.bp3-icon-pivot::before{ + content:""; } + +.bp3-icon-pivot-table::before{ + content:""; } + +.bp3-icon-play::before{ + content:""; } + +.bp3-icon-plus::before{ + content:"+"; } + +.bp3-icon-polygon-filter::before{ + content:""; } + +.bp3-icon-power::before{ + content:""; } + +.bp3-icon-predictive-analysis::before{ + content:""; } + +.bp3-icon-prescription::before{ + content:""; } + +.bp3-icon-presentation::before{ + content:""; } + +.bp3-icon-print::before{ + content:"⎙"; } + +.bp3-icon-projects::before{ + content:""; } + +.bp3-icon-properties::before{ + content:""; } + +.bp3-icon-property::before{ + content:""; } + +.bp3-icon-publish-function::before{ + content:""; } + +.bp3-icon-pulse::before{ + content:""; } + +.bp3-icon-random::before{ + content:""; } + +.bp3-icon-record::before{ + content:""; } + +.bp3-icon-redo::before{ + content:""; } + +.bp3-icon-refresh::before{ + content:""; } + +.bp3-icon-regression-chart::before{ + content:""; } + +.bp3-icon-remove::before{ + content:""; } + +.bp3-icon-remove-column::before{ + content:""; } + +.bp3-icon-remove-column-left::before{ + content:""; } + +.bp3-icon-remove-column-right::before{ + content:""; } + +.bp3-icon-remove-row-bottom::before{ + content:""; } + +.bp3-icon-remove-row-top::before{ + content:""; } + +.bp3-icon-repeat::before{ + content:""; } + +.bp3-icon-reset::before{ + content:""; } + +.bp3-icon-resolve::before{ + content:""; } + +.bp3-icon-rig::before{ + content:""; } + +.bp3-icon-right-join::before{ + content:""; } + +.bp3-icon-ring::before{ + content:""; } + +.bp3-icon-rotate-document::before{ + content:""; } + +.bp3-icon-rotate-page::before{ + content:""; } + +.bp3-icon-satellite::before{ + content:""; } + +.bp3-icon-saved::before{ + content:""; } + +.bp3-icon-scatter-plot::before{ + content:""; } + +.bp3-icon-search::before{ + content:""; } + +.bp3-icon-search-around::before{ + content:""; } + +.bp3-icon-search-template::before{ + content:""; } + +.bp3-icon-search-text::before{ + content:""; } + +.bp3-icon-segmented-control::before{ + content:""; } + +.bp3-icon-select::before{ + content:""; } + +.bp3-icon-selection::before{ + content:"⦿"; } + +.bp3-icon-send-to::before{ + content:""; } + +.bp3-icon-send-to-graph::before{ + content:""; } + +.bp3-icon-send-to-map::before{ + content:""; } + +.bp3-icon-series-add::before{ + content:""; } + +.bp3-icon-series-configuration::before{ + content:""; } + +.bp3-icon-series-derived::before{ + content:""; } + +.bp3-icon-series-filtered::before{ + content:""; } + +.bp3-icon-series-search::before{ + content:""; } + +.bp3-icon-settings::before{ + content:""; } + +.bp3-icon-share::before{ + content:""; } + +.bp3-icon-shield::before{ + content:""; } + +.bp3-icon-shop::before{ + content:""; } + +.bp3-icon-shopping-cart::before{ + content:""; } + +.bp3-icon-signal-search::before{ + content:""; } + +.bp3-icon-sim-card::before{ + content:""; } + +.bp3-icon-slash::before{ + content:""; } + +.bp3-icon-small-cross::before{ + content:""; } + +.bp3-icon-small-minus::before{ + content:""; } + +.bp3-icon-small-plus::before{ + content:""; } + +.bp3-icon-small-tick::before{ + content:""; } + +.bp3-icon-snowflake::before{ + content:""; } + +.bp3-icon-social-media::before{ + content:""; } + +.bp3-icon-sort::before{ + content:""; } + +.bp3-icon-sort-alphabetical::before{ + content:""; } + +.bp3-icon-sort-alphabetical-desc::before{ + content:""; } + +.bp3-icon-sort-asc::before{ + content:""; } + +.bp3-icon-sort-desc::before{ + content:""; } + +.bp3-icon-sort-numerical::before{ + content:""; } + +.bp3-icon-sort-numerical-desc::before{ + content:""; } + +.bp3-icon-split-columns::before{ + content:""; } + +.bp3-icon-square::before{ + content:""; } + +.bp3-icon-stacked-chart::before{ + content:""; } + +.bp3-icon-star::before{ + content:"★"; } + +.bp3-icon-star-empty::before{ + content:"☆"; } + +.bp3-icon-step-backward::before{ + content:""; } + +.bp3-icon-step-chart::before{ + content:""; } + +.bp3-icon-step-forward::before{ + content:""; } + +.bp3-icon-stop::before{ + content:""; } + +.bp3-icon-stopwatch::before{ + content:""; } + +.bp3-icon-strikethrough::before{ + content:""; } + +.bp3-icon-style::before{ + content:""; } + +.bp3-icon-swap-horizontal::before{ + content:""; } + +.bp3-icon-swap-vertical::before{ + content:""; } + +.bp3-icon-symbol-circle::before{ + content:""; } + +.bp3-icon-symbol-cross::before{ + content:""; } + +.bp3-icon-symbol-diamond::before{ + content:""; } + +.bp3-icon-symbol-square::before{ + content:""; } + +.bp3-icon-symbol-triangle-down::before{ + content:""; } + +.bp3-icon-symbol-triangle-up::before{ + content:""; } + +.bp3-icon-tag::before{ + content:""; } + +.bp3-icon-take-action::before{ + content:""; } + +.bp3-icon-taxi::before{ + content:""; } + +.bp3-icon-text-highlight::before{ + content:""; } + +.bp3-icon-th::before{ + content:""; } + +.bp3-icon-th-derived::before{ + content:""; } + +.bp3-icon-th-disconnect::before{ + content:""; } + +.bp3-icon-th-filtered::before{ + content:""; } + +.bp3-icon-th-list::before{ + content:""; } + +.bp3-icon-thumbs-down::before{ + content:""; } + +.bp3-icon-thumbs-up::before{ + content:""; } + +.bp3-icon-tick::before{ + content:"✓"; } + +.bp3-icon-tick-circle::before{ + content:""; } + +.bp3-icon-time::before{ + content:"⏲"; } + +.bp3-icon-timeline-area-chart::before{ + content:""; } + +.bp3-icon-timeline-bar-chart::before{ + content:""; } + +.bp3-icon-timeline-events::before{ + content:""; } + +.bp3-icon-timeline-line-chart::before{ + content:""; } + +.bp3-icon-tint::before{ + content:""; } + +.bp3-icon-torch::before{ + content:""; } + +.bp3-icon-tractor::before{ + content:""; } + +.bp3-icon-train::before{ + content:""; } + +.bp3-icon-translate::before{ + content:""; } + +.bp3-icon-trash::before{ + content:""; } + +.bp3-icon-tree::before{ + content:""; } + +.bp3-icon-trending-down::before{ + content:""; } + +.bp3-icon-trending-up::before{ + content:""; } + +.bp3-icon-truck::before{ + content:""; } + +.bp3-icon-two-columns::before{ + content:""; } + +.bp3-icon-unarchive::before{ + content:""; } + +.bp3-icon-underline::before{ + content:"⎁"; } + +.bp3-icon-undo::before{ + content:"⎌"; } + +.bp3-icon-ungroup-objects::before{ + content:""; } + +.bp3-icon-unknown-vehicle::before{ + content:""; } + +.bp3-icon-unlock::before{ + content:""; } + +.bp3-icon-unpin::before{ + content:""; } + +.bp3-icon-unresolve::before{ + content:""; } + +.bp3-icon-updated::before{ + content:""; } + +.bp3-icon-upload::before{ + content:""; } + +.bp3-icon-user::before{ + content:""; } + +.bp3-icon-variable::before{ + content:""; } + +.bp3-icon-vertical-bar-chart-asc::before{ + content:""; } + +.bp3-icon-vertical-bar-chart-desc::before{ + content:""; } + +.bp3-icon-vertical-distribution::before{ + content:""; } + +.bp3-icon-video::before{ + content:""; } + +.bp3-icon-volume-down::before{ + content:""; } + +.bp3-icon-volume-off::before{ + content:""; } + +.bp3-icon-volume-up::before{ + content:""; } + +.bp3-icon-walk::before{ + content:""; } + +.bp3-icon-warning-sign::before{ + content:""; } + +.bp3-icon-waterfall-chart::before{ + content:""; } + +.bp3-icon-widget::before{ + content:""; } + +.bp3-icon-widget-button::before{ + content:""; } + +.bp3-icon-widget-footer::before{ + content:""; } + +.bp3-icon-widget-header::before{ + content:""; } + +.bp3-icon-wrench::before{ + content:""; } + +.bp3-icon-zoom-in::before{ + content:""; } + +.bp3-icon-zoom-out::before{ + content:""; } + +.bp3-icon-zoom-to-fit::before{ + content:""; } +.bp3-submenu > .bp3-popover-wrapper{ + display:block; } + +.bp3-submenu .bp3-popover-target{ + display:block; } + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ } + +.bp3-submenu.bp3-popover{ + -webkit-box-shadow:none; + box-shadow:none; + padding:0 5px; } + .bp3-submenu.bp3-popover > .bp3-popover-content{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-submenu.bp3-popover, .bp3-submenu.bp3-popover.bp3-dark{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-submenu.bp3-popover > .bp3-popover-content, .bp3-submenu.bp3-popover.bp3-dark > .bp3-popover-content{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } +.bp3-menu{ + background:#ffffff; + border-radius:3px; + color:#182026; + list-style:none; + margin:0; + min-width:180px; + padding:5px; + text-align:left; } + +.bp3-menu-divider{ + border-top:1px solid rgba(16, 22, 26, 0.15); + display:block; + margin:5px; } + .bp3-dark .bp3-menu-divider{ + border-top-color:rgba(255, 255, 255, 0.15); } + +.bp3-menu-item{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + border-radius:2px; + color:inherit; + line-height:20px; + padding:5px 7px; + text-decoration:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-menu-item > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-menu-item > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-menu-item::before, + .bp3-menu-item > *{ + margin-right:7px; } + .bp3-menu-item:empty::before, + .bp3-menu-item > :last-child{ + margin-right:0; } + .bp3-menu-item > .bp3-fill{ + word-break:break-word; } + .bp3-menu-item:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + background-color:rgba(167, 182, 194, 0.3); + cursor:pointer; + text-decoration:none; } + .bp3-menu-item.bp3-disabled{ + background-color:inherit; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-menu-item{ + color:inherit; } + .bp3-dark .bp3-menu-item:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + background-color:rgba(138, 155, 168, 0.15); + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-disabled{ + background-color:inherit; + color:rgba(167, 182, 194, 0.6); } + .bp3-menu-item.bp3-intent-primary{ + color:#106ba3; } + .bp3-menu-item.bp3-intent-primary .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-primary::before, .bp3-menu-item.bp3-intent-primary::after, + .bp3-menu-item.bp3-intent-primary .bp3-menu-item-label{ + color:#106ba3; } + .bp3-menu-item.bp3-intent-primary:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-menu-item.bp3-intent-primary.bp3-active{ + background-color:#137cbd; } + .bp3-menu-item.bp3-intent-primary:active{ + background-color:#106ba3; } + .bp3-menu-item.bp3-intent-primary:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-menu-item.bp3-intent-primary:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-menu-item.bp3-intent-primary:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-primary:active, .bp3-menu-item.bp3-intent-primary:active::before, .bp3-menu-item.bp3-intent-primary:active::after, + .bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-primary.bp3-active, .bp3-menu-item.bp3-intent-primary.bp3-active::before, .bp3-menu-item.bp3-intent-primary.bp3-active::after, + .bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-success{ + color:#0d8050; } + .bp3-menu-item.bp3-intent-success .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-success::before, .bp3-menu-item.bp3-intent-success::after, + .bp3-menu-item.bp3-intent-success .bp3-menu-item-label{ + color:#0d8050; } + .bp3-menu-item.bp3-intent-success:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-menu-item.bp3-intent-success.bp3-active{ + background-color:#0f9960; } + .bp3-menu-item.bp3-intent-success:active{ + background-color:#0d8050; } + .bp3-menu-item.bp3-intent-success:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-menu-item.bp3-intent-success:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-menu-item.bp3-intent-success:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-success:active, .bp3-menu-item.bp3-intent-success:active::before, .bp3-menu-item.bp3-intent-success:active::after, + .bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-success.bp3-active, .bp3-menu-item.bp3-intent-success.bp3-active::before, .bp3-menu-item.bp3-intent-success.bp3-active::after, + .bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-warning{ + color:#bf7326; } + .bp3-menu-item.bp3-intent-warning .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-warning::before, .bp3-menu-item.bp3-intent-warning::after, + .bp3-menu-item.bp3-intent-warning .bp3-menu-item-label{ + color:#bf7326; } + .bp3-menu-item.bp3-intent-warning:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-menu-item.bp3-intent-warning.bp3-active{ + background-color:#d9822b; } + .bp3-menu-item.bp3-intent-warning:active{ + background-color:#bf7326; } + .bp3-menu-item.bp3-intent-warning:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-menu-item.bp3-intent-warning:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-menu-item.bp3-intent-warning:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-warning:active, .bp3-menu-item.bp3-intent-warning:active::before, .bp3-menu-item.bp3-intent-warning:active::after, + .bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-warning.bp3-active, .bp3-menu-item.bp3-intent-warning.bp3-active::before, .bp3-menu-item.bp3-intent-warning.bp3-active::after, + .bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-danger{ + color:#c23030; } + .bp3-menu-item.bp3-intent-danger .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-danger::before, .bp3-menu-item.bp3-intent-danger::after, + .bp3-menu-item.bp3-intent-danger .bp3-menu-item-label{ + color:#c23030; } + .bp3-menu-item.bp3-intent-danger:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-menu-item.bp3-intent-danger.bp3-active{ + background-color:#db3737; } + .bp3-menu-item.bp3-intent-danger:active{ + background-color:#c23030; } + .bp3-menu-item.bp3-intent-danger:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-menu-item.bp3-intent-danger:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-menu-item.bp3-intent-danger:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-danger:active, .bp3-menu-item.bp3-intent-danger:active::before, .bp3-menu-item.bp3-intent-danger:active::after, + .bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-danger.bp3-active, .bp3-menu-item.bp3-intent-danger.bp3-active::before, .bp3-menu-item.bp3-intent-danger.bp3-active::after, + .bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + margin-right:7px; } + .bp3-menu-item::before, + .bp3-menu-item > .bp3-icon{ + color:#5c7080; + margin-top:2px; } + .bp3-menu-item .bp3-menu-item-label{ + color:#5c7080; } + .bp3-menu-item:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + color:inherit; } + .bp3-menu-item.bp3-active, .bp3-menu-item:active{ + background-color:rgba(115, 134, 148, 0.3); } + .bp3-menu-item.bp3-disabled{ + background-color:inherit !important; + color:rgba(92, 112, 128, 0.6) !important; + cursor:not-allowed !important; + outline:none !important; } + .bp3-menu-item.bp3-disabled::before, + .bp3-menu-item.bp3-disabled > .bp3-icon, + .bp3-menu-item.bp3-disabled .bp3-menu-item-label{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-large .bp3-menu-item{ + font-size:16px; + line-height:22px; + padding:9px 7px; } + .bp3-large .bp3-menu-item .bp3-icon{ + margin-top:3px; } + .bp3-large .bp3-menu-item::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + margin-right:10px; + margin-top:1px; } + +button.bp3-menu-item{ + background:none; + border:none; + text-align:left; + width:100%; } +.bp3-menu-header{ + border-top:1px solid rgba(16, 22, 26, 0.15); + display:block; + margin:5px; + cursor:default; + padding-left:2px; } + .bp3-dark .bp3-menu-header{ + border-top-color:rgba(255, 255, 255, 0.15); } + .bp3-menu-header:first-of-type{ + border-top:none; } + .bp3-menu-header > h6{ + color:#182026; + font-weight:600; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + line-height:17px; + margin:0; + padding:10px 7px 0 1px; } + .bp3-dark .bp3-menu-header > h6{ + color:#f5f8fa; } + .bp3-menu-header:first-of-type > h6{ + padding-top:0; } + .bp3-large .bp3-menu-header > h6{ + font-size:18px; + padding-bottom:5px; + padding-top:15px; } + .bp3-large .bp3-menu-header:first-of-type > h6{ + padding-top:0; } + +.bp3-dark .bp3-menu{ + background:#30404d; + color:#f5f8fa; } + +.bp3-dark .bp3-menu-item{ } + .bp3-dark .bp3-menu-item.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-primary::before, .bp3-dark .bp3-menu-item.bp3-intent-primary::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-menu-item-label{ + color:#48aff0; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active{ + background-color:#137cbd; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:active{ + background-color:#106ba3; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-primary:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-primary:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-primary:active, .bp3-dark .bp3-menu-item.bp3-intent-primary:active::before, .bp3-dark .bp3-menu-item.bp3-intent-primary:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-menu-item.bp3-intent-success .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-success::before, .bp3-dark .bp3-menu-item.bp3-intent-success::after, + .bp3-dark .bp3-menu-item.bp3-intent-success .bp3-menu-item-label{ + color:#3dcc91; } + .bp3-dark .bp3-menu-item.bp3-intent-success:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active{ + background-color:#0f9960; } + .bp3-dark .bp3-menu-item.bp3-intent-success:active{ + background-color:#0d8050; } + .bp3-dark .bp3-menu-item.bp3-intent-success:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-success:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-success:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-success:active, .bp3-dark .bp3-menu-item.bp3-intent-success:active::before, .bp3-dark .bp3-menu-item.bp3-intent-success:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-warning::before, .bp3-dark .bp3-menu-item.bp3-intent-warning::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-menu-item-label{ + color:#ffb366; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active{ + background-color:#d9822b; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:active{ + background-color:#bf7326; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-warning:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-warning:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-warning:active, .bp3-dark .bp3-menu-item.bp3-intent-warning:active::before, .bp3-dark .bp3-menu-item.bp3-intent-warning:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-danger::before, .bp3-dark .bp3-menu-item.bp3-intent-danger::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-menu-item-label{ + color:#ff7373; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active{ + background-color:#db3737; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:active{ + background-color:#c23030; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-danger:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-danger:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-danger:active, .bp3-dark .bp3-menu-item.bp3-intent-danger:active::before, .bp3-dark .bp3-menu-item.bp3-intent-danger:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item::before, + .bp3-dark .bp3-menu-item > .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-menu-item .bp3-menu-item-label{ + color:#a7b6c2; } + .bp3-dark .bp3-menu-item.bp3-active, .bp3-dark .bp3-menu-item:active{ + background-color:rgba(138, 155, 168, 0.3); } + .bp3-dark .bp3-menu-item.bp3-disabled{ + color:rgba(167, 182, 194, 0.6) !important; } + .bp3-dark .bp3-menu-item.bp3-disabled::before, + .bp3-dark .bp3-menu-item.bp3-disabled > .bp3-icon, + .bp3-dark .bp3-menu-item.bp3-disabled .bp3-menu-item-label{ + color:rgba(167, 182, 194, 0.6) !important; } + +.bp3-dark .bp3-menu-divider, +.bp3-dark .bp3-menu-header{ + border-color:rgba(255, 255, 255, 0.15); } + +.bp3-dark .bp3-menu-header > h6{ + color:#f5f8fa; } + +.bp3-label .bp3-menu{ + margin-top:5px; } +.bp3-navbar{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + height:50px; + padding:0 15px; + position:relative; + width:100%; + z-index:10; } + .bp3-navbar.bp3-dark, + .bp3-dark .bp3-navbar{ + background-color:#394b59; } + .bp3-navbar.bp3-dark{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-navbar{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-navbar.bp3-fixed-top{ + left:0; + position:fixed; + right:0; + top:0; } + +.bp3-navbar-heading{ + font-size:16px; + margin-right:15px; } + +.bp3-navbar-group{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + height:50px; } + .bp3-navbar-group.bp3-align-left{ + float:left; } + .bp3-navbar-group.bp3-align-right{ + float:right; } + +.bp3-navbar-divider{ + border-left:1px solid rgba(16, 22, 26, 0.15); + height:20px; + margin:0 10px; } + .bp3-dark .bp3-navbar-divider{ + border-left-color:rgba(255, 255, 255, 0.15); } +.bp3-non-ideal-state{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + height:100%; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + text-align:center; + width:100%; } + .bp3-non-ideal-state > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-non-ideal-state > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-non-ideal-state::before, + .bp3-non-ideal-state > *{ + margin-bottom:20px; } + .bp3-non-ideal-state:empty::before, + .bp3-non-ideal-state > :last-child{ + margin-bottom:0; } + .bp3-non-ideal-state > *{ + max-width:400px; } + +.bp3-non-ideal-state-visual{ + color:rgba(92, 112, 128, 0.6); + font-size:60px; } + .bp3-dark .bp3-non-ideal-state-visual{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-overflow-list{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-wrap:nowrap; + flex-wrap:nowrap; + min-width:0; } + +.bp3-overflow-list-spacer{ + -ms-flex-negative:1; + flex-shrink:1; + width:1px; } + +body.bp3-overlay-open{ + overflow:hidden; } + +.bp3-overlay{ + bottom:0; + left:0; + position:static; + right:0; + top:0; + z-index:20; } + .bp3-overlay:not(.bp3-overlay-open){ + pointer-events:none; } + .bp3-overlay.bp3-overlay-container{ + overflow:hidden; + position:fixed; } + .bp3-overlay.bp3-overlay-container.bp3-overlay-inline{ + position:absolute; } + .bp3-overlay.bp3-overlay-scroll-container{ + overflow:auto; + position:fixed; } + .bp3-overlay.bp3-overlay-scroll-container.bp3-overlay-inline{ + position:absolute; } + .bp3-overlay.bp3-overlay-inline{ + display:inline; + overflow:visible; } + +.bp3-overlay-content{ + position:fixed; + z-index:20; } + .bp3-overlay-inline .bp3-overlay-content, + .bp3-overlay-scroll-container .bp3-overlay-content{ + position:absolute; } + +.bp3-overlay-backdrop{ + bottom:0; + left:0; + position:fixed; + right:0; + top:0; + opacity:1; + background-color:rgba(16, 22, 26, 0.7); + overflow:auto; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + z-index:20; } + .bp3-overlay-backdrop.bp3-overlay-enter, .bp3-overlay-backdrop.bp3-overlay-appear{ + opacity:0; } + .bp3-overlay-backdrop.bp3-overlay-enter-active, .bp3-overlay-backdrop.bp3-overlay-appear-active{ + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-overlay-backdrop.bp3-overlay-exit{ + opacity:1; } + .bp3-overlay-backdrop.bp3-overlay-exit-active{ + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-overlay-backdrop:focus{ + outline:none; } + .bp3-overlay-inline .bp3-overlay-backdrop{ + position:absolute; } +.bp3-panel-stack{ + overflow:hidden; + position:relative; } + +.bp3-panel-stack-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + -webkit-box-shadow:0 1px rgba(16, 22, 26, 0.15); + box-shadow:0 1px rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-negative:0; + flex-shrink:0; + height:30px; + z-index:1; } + .bp3-dark .bp3-panel-stack-header{ + -webkit-box-shadow:0 1px rgba(255, 255, 255, 0.15); + box-shadow:0 1px rgba(255, 255, 255, 0.15); } + .bp3-panel-stack-header > span{ + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1; + flex:1; } + .bp3-panel-stack-header .bp3-heading{ + margin:0 5px; } + +.bp3-button.bp3-panel-stack-header-back{ + margin-left:5px; + padding-left:0; + white-space:nowrap; } + .bp3-button.bp3-panel-stack-header-back .bp3-icon{ + margin:0 2px; } + +.bp3-panel-stack-view{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; + background-color:#ffffff; + border-right:1px solid rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin-right:-1px; + overflow-y:auto; + z-index:1; } + .bp3-dark .bp3-panel-stack-view{ + background-color:#30404d; } + .bp3-panel-stack-view:nth-last-child(n + 4){ + display:none; } + +.bp3-panel-stack-push .bp3-panel-stack-enter, .bp3-panel-stack-push .bp3-panel-stack-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; } + +.bp3-panel-stack-push .bp3-panel-stack-enter-active, .bp3-panel-stack-push .bp3-panel-stack-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-push .bp3-panel-stack-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack-push .bp3-panel-stack-exit-active{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-pop .bp3-panel-stack-enter, .bp3-panel-stack-pop .bp3-panel-stack-appear{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; } + +.bp3-panel-stack-pop .bp3-panel-stack-enter-active, .bp3-panel-stack-pop .bp3-panel-stack-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-pop .bp3-panel-stack-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack-pop .bp3-panel-stack-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } +.bp3-popover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + -webkit-transform:scale(1); + transform:scale(1); + border-radius:3px; + display:inline-block; + z-index:20; } + .bp3-popover .bp3-popover-arrow{ + height:30px; + position:absolute; + width:30px; } + .bp3-popover .bp3-popover-arrow::before{ + height:20px; + margin:5px; + width:20px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover{ + margin-bottom:17px; + margin-top:-17px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow{ + bottom:-11px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(-90deg); + transform:rotate(-90deg); } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover{ + margin-left:17px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow{ + left:-11px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(0); + transform:rotate(0); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover{ + margin-top:17px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow{ + top:-11px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover{ + margin-left:-17px; + margin-right:17px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow{ + right:-11px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(180deg); + transform:rotate(180deg); } + .bp3-tether-element-attached-middle > .bp3-popover > .bp3-popover-arrow{ + top:50%; + -webkit-transform:translateY(-50%); + transform:translateY(-50%); } + .bp3-tether-element-attached-center > .bp3-popover > .bp3-popover-arrow{ + right:50%; + -webkit-transform:translateX(50%); + transform:translateX(50%); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow{ + top:-0.3934px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow{ + right:-0.3934px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow{ + left:-0.3934px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow{ + bottom:-0.3934px; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:top left; + transform-origin:top left; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:top center; + transform-origin:top center; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:top right; + transform-origin:top right; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:center left; + transform-origin:center left; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:center center; + transform-origin:center center; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:center right; + transform-origin:center right; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:bottom left; + transform-origin:bottom left; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:bottom center; + transform-origin:bottom center; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:bottom right; + transform-origin:bottom right; } + .bp3-popover .bp3-popover-content{ + background:#ffffff; + color:inherit; } + .bp3-popover .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); } + .bp3-popover .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.1; } + .bp3-popover .bp3-popover-arrow-fill{ + fill:#ffffff; } + .bp3-popover-enter > .bp3-popover, .bp3-popover-appear > .bp3-popover{ + -webkit-transform:scale(0.3); + transform:scale(0.3); } + .bp3-popover-enter-active > .bp3-popover, .bp3-popover-appear-active > .bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-popover-exit > .bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-popover{ + -webkit-transform:scale(0.3); + transform:scale(0.3); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-popover .bp3-popover-content{ + border-radius:3px; + position:relative; } + .bp3-popover.bp3-popover-content-sizing .bp3-popover-content{ + max-width:350px; + padding:20px; } + .bp3-popover-target + .bp3-overlay .bp3-popover.bp3-popover-content-sizing{ + width:350px; } + .bp3-popover.bp3-minimal{ + margin:0 !important; } + .bp3-popover.bp3-minimal .bp3-popover-arrow{ + display:none; } + .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-enter > .bp3-popover.bp3-minimal.bp3-popover, .bp3-popover-appear > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-enter-active > .bp3-popover.bp3-minimal.bp3-popover, .bp3-popover-appear-active > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover-exit > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover.bp3-dark, + .bp3-dark .bp3-popover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-popover.bp3-dark .bp3-popover-content, + .bp3-dark .bp3-popover .bp3-popover-content{ + background:#30404d; + color:inherit; } + .bp3-popover.bp3-dark .bp3-popover-arrow::before, + .bp3-dark .bp3-popover .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); } + .bp3-popover.bp3-dark .bp3-popover-arrow-border, + .bp3-dark .bp3-popover .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.2; } + .bp3-popover.bp3-dark .bp3-popover-arrow-fill, + .bp3-dark .bp3-popover .bp3-popover-arrow-fill{ + fill:#30404d; } + +.bp3-popover-arrow::before{ + border-radius:2px; + content:""; + display:block; + position:absolute; + -webkit-transform:rotate(45deg); + transform:rotate(45deg); } + +.bp3-tether-pinned .bp3-popover-arrow{ + display:none; } + +.bp3-popover-backdrop{ + background:rgba(255, 255, 255, 0); } + +.bp3-transition-container{ + opacity:1; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + z-index:20; } + .bp3-transition-container.bp3-popover-enter, .bp3-transition-container.bp3-popover-appear{ + opacity:0; } + .bp3-transition-container.bp3-popover-enter-active, .bp3-transition-container.bp3-popover-appear-active{ + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-transition-container.bp3-popover-exit{ + opacity:1; } + .bp3-transition-container.bp3-popover-exit-active{ + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-transition-container:focus{ + outline:none; } + .bp3-transition-container.bp3-popover-leave .bp3-popover-content{ + pointer-events:none; } + .bp3-transition-container[data-x-out-of-boundaries]{ + display:none; } + +span.bp3-popover-target{ + display:inline-block; } + +.bp3-popover-wrapper.bp3-fill{ + width:100%; } + +.bp3-portal{ + left:0; + position:absolute; + right:0; + top:0; } +@-webkit-keyframes linear-progress-bar-stripes{ + from{ + background-position:0 0; } + to{ + background-position:30px 0; } } +@keyframes linear-progress-bar-stripes{ + from{ + background-position:0 0; } + to{ + background-position:30px 0; } } + +.bp3-progress-bar{ + background:rgba(92, 112, 128, 0.2); + border-radius:40px; + display:block; + height:8px; + overflow:hidden; + position:relative; + width:100%; } + .bp3-progress-bar .bp3-progress-meter{ + background:linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%); + background-color:rgba(92, 112, 128, 0.8); + background-size:30px 30px; + border-radius:40px; + height:100%; + position:absolute; + -webkit-transition:width 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:width 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:100%; } + .bp3-progress-bar:not(.bp3-no-animation):not(.bp3-no-stripes) .bp3-progress-meter{ + animation:linear-progress-bar-stripes 300ms linear infinite reverse; } + .bp3-progress-bar.bp3-no-stripes .bp3-progress-meter{ + background-image:none; } + +.bp3-dark .bp3-progress-bar{ + background:rgba(16, 22, 26, 0.5); } + .bp3-dark .bp3-progress-bar .bp3-progress-meter{ + background-color:#8a9ba8; } + +.bp3-progress-bar.bp3-intent-primary .bp3-progress-meter{ + background-color:#137cbd; } + +.bp3-progress-bar.bp3-intent-success .bp3-progress-meter{ + background-color:#0f9960; } + +.bp3-progress-bar.bp3-intent-warning .bp3-progress-meter{ + background-color:#d9822b; } + +.bp3-progress-bar.bp3-intent-danger .bp3-progress-meter{ + background-color:#db3737; } +@-webkit-keyframes skeleton-glow{ + from{ + background:rgba(206, 217, 224, 0.2); + border-color:rgba(206, 217, 224, 0.2); } + to{ + background:rgba(92, 112, 128, 0.2); + border-color:rgba(92, 112, 128, 0.2); } } +@keyframes skeleton-glow{ + from{ + background:rgba(206, 217, 224, 0.2); + border-color:rgba(206, 217, 224, 0.2); } + to{ + background:rgba(92, 112, 128, 0.2); + border-color:rgba(92, 112, 128, 0.2); } } +.bp3-skeleton{ + -webkit-animation:1000ms linear infinite alternate skeleton-glow; + animation:1000ms linear infinite alternate skeleton-glow; + background:rgba(206, 217, 224, 0.2); + background-clip:padding-box !important; + border-color:rgba(206, 217, 224, 0.2) !important; + border-radius:2px; + -webkit-box-shadow:none !important; + box-shadow:none !important; + color:transparent !important; + cursor:default; + pointer-events:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-skeleton::before, .bp3-skeleton::after, + .bp3-skeleton *{ + visibility:hidden !important; } +.bp3-slider{ + height:40px; + min-width:150px; + width:100%; + cursor:default; + outline:none; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-slider:hover{ + cursor:pointer; } + .bp3-slider:active{ + cursor:-webkit-grabbing; + cursor:grabbing; } + .bp3-slider.bp3-disabled{ + cursor:not-allowed; + opacity:0.5; } + .bp3-slider.bp3-slider-unlabeled{ + height:16px; } + +.bp3-slider-track, +.bp3-slider-progress{ + height:6px; + left:0; + right:0; + top:5px; + position:absolute; } + +.bp3-slider-track{ + border-radius:3px; + overflow:hidden; } + +.bp3-slider-progress{ + background:rgba(92, 112, 128, 0.2); } + .bp3-dark .bp3-slider-progress{ + background:rgba(16, 22, 26, 0.5); } + .bp3-slider-progress.bp3-intent-primary{ + background-color:#137cbd; } + .bp3-slider-progress.bp3-intent-success{ + background-color:#0f9960; } + .bp3-slider-progress.bp3-intent-warning{ + background-color:#d9822b; } + .bp3-slider-progress.bp3-intent-danger{ + background-color:#db3737; } + +.bp3-slider-handle{ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + cursor:pointer; + height:16px; + left:0; + position:absolute; + top:0; + width:16px; } + .bp3-slider-handle:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-slider-handle:active, .bp3-slider-handle.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-slider-handle:disabled, .bp3-slider-handle.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-slider-handle:disabled.bp3-active, .bp3-slider-handle:disabled.bp3-active:hover, .bp3-slider-handle.bp3-disabled.bp3-active, .bp3-slider-handle.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-slider-handle:focus{ + z-index:1; } + .bp3-slider-handle:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + cursor:-webkit-grab; + cursor:grab; + z-index:2; } + .bp3-slider-handle.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1); + cursor:-webkit-grabbing; + cursor:grabbing; } + .bp3-disabled .bp3-slider-handle{ + background:#bfccd6; + -webkit-box-shadow:none; + box-shadow:none; + pointer-events:none; } + .bp3-dark .bp3-slider-handle{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-slider-handle:hover, .bp3-dark .bp3-slider-handle:active, .bp3-dark .bp3-slider-handle.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-slider-handle:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-slider-handle:active, .bp3-dark .bp3-slider-handle.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-slider-handle:disabled, .bp3-dark .bp3-slider-handle.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-slider-handle:disabled.bp3-active, .bp3-dark .bp3-slider-handle.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-slider-handle .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-slider-handle, .bp3-dark .bp3-slider-handle:hover{ + background-color:#394b59; } + .bp3-dark .bp3-slider-handle.bp3-active{ + background-color:#293742; } + .bp3-dark .bp3-disabled .bp3-slider-handle{ + background:#5c7080; + border-color:#5c7080; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-slider-handle .bp3-slider-label{ + background:#394b59; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + color:#f5f8fa; + margin-left:8px; } + .bp3-dark .bp3-slider-handle .bp3-slider-label{ + background:#e1e8ed; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + color:#394b59; } + .bp3-disabled .bp3-slider-handle .bp3-slider-label{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-slider-handle.bp3-start, .bp3-slider-handle.bp3-end{ + width:8px; } + .bp3-slider-handle.bp3-start{ + border-bottom-right-radius:0; + border-top-right-radius:0; } + .bp3-slider-handle.bp3-end{ + border-bottom-left-radius:0; + border-top-left-radius:0; + margin-left:8px; } + .bp3-slider-handle.bp3-end .bp3-slider-label{ + margin-left:0; } + +.bp3-slider-label{ + -webkit-transform:translate(-50%, 20px); + transform:translate(-50%, 20px); + display:inline-block; + font-size:12px; + line-height:1; + padding:2px 5px; + position:absolute; + vertical-align:top; } + +.bp3-slider.bp3-vertical{ + height:150px; + min-width:40px; + width:40px; } + .bp3-slider.bp3-vertical .bp3-slider-track, + .bp3-slider.bp3-vertical .bp3-slider-progress{ + bottom:0; + height:auto; + left:5px; + top:0; + width:6px; } + .bp3-slider.bp3-vertical .bp3-slider-progress{ + top:auto; } + .bp3-slider.bp3-vertical .bp3-slider-label{ + -webkit-transform:translate(20px, 50%); + transform:translate(20px, 50%); } + .bp3-slider.bp3-vertical .bp3-slider-handle{ + top:auto; } + .bp3-slider.bp3-vertical .bp3-slider-handle .bp3-slider-label{ + margin-left:0; + margin-top:-8px; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end, .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start{ + height:8px; + margin-left:0; + width:16px; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start{ + border-bottom-right-radius:3px; + border-top-left-radius:0; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start .bp3-slider-label{ + -webkit-transform:translate(20px); + transform:translate(20px); } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end{ + border-bottom-left-radius:0; + border-bottom-right-radius:0; + border-top-left-radius:3px; + margin-bottom:8px; } + +@-webkit-keyframes pt-spinner-animation{ + from{ + -webkit-transform:rotate(0deg); + transform:rotate(0deg); } + to{ + -webkit-transform:rotate(360deg); + transform:rotate(360deg); } } + +@keyframes pt-spinner-animation{ + from{ + -webkit-transform:rotate(0deg); + transform:rotate(0deg); } + to{ + -webkit-transform:rotate(360deg); + transform:rotate(360deg); } } + +.bp3-spinner{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + overflow:visible; + vertical-align:middle; } + .bp3-spinner svg{ + display:block; } + .bp3-spinner path{ + fill-opacity:0; } + .bp3-spinner .bp3-spinner-head{ + stroke:rgba(92, 112, 128, 0.8); + stroke-linecap:round; + -webkit-transform-origin:center; + transform-origin:center; + -webkit-transition:stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-spinner .bp3-spinner-track{ + stroke:rgba(92, 112, 128, 0.2); } + +.bp3-spinner-animation{ + -webkit-animation:pt-spinner-animation 500ms linear infinite; + animation:pt-spinner-animation 500ms linear infinite; } + .bp3-no-spin > .bp3-spinner-animation{ + -webkit-animation:none; + animation:none; } + +.bp3-dark .bp3-spinner .bp3-spinner-head{ + stroke:#8a9ba8; } + +.bp3-dark .bp3-spinner .bp3-spinner-track{ + stroke:rgba(16, 22, 26, 0.5); } + +.bp3-spinner.bp3-intent-primary .bp3-spinner-head{ + stroke:#137cbd; } + +.bp3-spinner.bp3-intent-success .bp3-spinner-head{ + stroke:#0f9960; } + +.bp3-spinner.bp3-intent-warning .bp3-spinner-head{ + stroke:#d9822b; } + +.bp3-spinner.bp3-intent-danger .bp3-spinner-head{ + stroke:#db3737; } +.bp3-tabs.bp3-vertical{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-tabs.bp3-vertical > .bp3-tab-list{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab{ + border-radius:3px; + padding:0 10px; + width:100%; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab[aria-selected="true"]{ + background-color:rgba(19, 124, 189, 0.2); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab-indicator-wrapper .bp3-tab-indicator{ + background-color:rgba(19, 124, 189, 0.2); + border-radius:3px; + bottom:0; + height:auto; + left:0; + right:0; + top:0; } + .bp3-tabs.bp3-vertical > .bp3-tab-panel{ + margin-top:0; + padding-left:20px; } + +.bp3-tab-list{ + -webkit-box-align:end; + -ms-flex-align:end; + align-items:flex-end; + border:none; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + list-style:none; + margin:0; + padding:0; + position:relative; } + .bp3-tab-list > *:not(:last-child){ + margin-right:20px; } + +.bp3-tab{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + color:#182026; + cursor:pointer; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + font-size:14px; + line-height:30px; + max-width:100%; + position:relative; + vertical-align:top; } + .bp3-tab a{ + color:inherit; + display:block; + text-decoration:none; } + .bp3-tab-indicator-wrapper ~ .bp3-tab{ + background-color:transparent !important; + -webkit-box-shadow:none !important; + box-shadow:none !important; } + .bp3-tab[aria-disabled="true"]{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-tab[aria-selected="true"]{ + border-radius:0; + -webkit-box-shadow:inset 0 -3px 0 #106ba3; + box-shadow:inset 0 -3px 0 #106ba3; } + .bp3-tab[aria-selected="true"], .bp3-tab:not([aria-disabled="true"]):hover{ + color:#106ba3; } + .bp3-tab:focus{ + -moz-outline-radius:0; } + .bp3-large > .bp3-tab{ + font-size:16px; + line-height:40px; } + +.bp3-tab-panel{ + margin-top:20px; } + .bp3-tab-panel[aria-hidden="true"]{ + display:none; } + +.bp3-tab-indicator-wrapper{ + left:0; + pointer-events:none; + position:absolute; + top:0; + -webkit-transform:translateX(0), translateY(0); + transform:translateX(0), translateY(0); + -webkit-transition:height, width, -webkit-transform; + transition:height, width, -webkit-transform; + transition:height, transform, width; + transition:height, transform, width, -webkit-transform; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tab-indicator-wrapper .bp3-tab-indicator{ + background-color:#106ba3; + bottom:0; + height:3px; + left:0; + position:absolute; + right:0; } + .bp3-tab-indicator-wrapper.bp3-no-animation{ + -webkit-transition:none; + transition:none; } + +.bp3-dark .bp3-tab{ + color:#f5f8fa; } + .bp3-dark .bp3-tab[aria-disabled="true"]{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tab[aria-selected="true"]{ + -webkit-box-shadow:inset 0 -3px 0 #48aff0; + box-shadow:inset 0 -3px 0 #48aff0; } + .bp3-dark .bp3-tab[aria-selected="true"], .bp3-dark .bp3-tab:not([aria-disabled="true"]):hover{ + color:#48aff0; } + +.bp3-dark .bp3-tab-indicator{ + background-color:#48aff0; } + +.bp3-flex-expander{ + -webkit-box-flex:1; + -ms-flex:1 1; + flex:1 1; } +.bp3-tag{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background-color:#5c7080; + border:none; + border-radius:3px; + -webkit-box-shadow:none; + box-shadow:none; + color:#f5f8fa; + font-size:12px; + line-height:16px; + max-width:100%; + min-height:20px; + min-width:20px; + padding:2px 6px; + position:relative; } + .bp3-tag.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-interactive:hover{ + background-color:rgba(92, 112, 128, 0.85); } + .bp3-tag.bp3-interactive.bp3-active, .bp3-tag.bp3-interactive:active{ + background-color:rgba(92, 112, 128, 0.7); } + .bp3-tag > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag::before, + .bp3-tag > *{ + margin-right:4px; } + .bp3-tag:empty::before, + .bp3-tag > :last-child{ + margin-right:0; } + .bp3-tag:focus{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:0; + -moz-outline-radius:6px; } + .bp3-tag.bp3-round{ + border-radius:30px; + padding-left:8px; + padding-right:8px; } + .bp3-dark .bp3-tag{ + background-color:#bfccd6; + color:#182026; } + .bp3-dark .bp3-tag.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-interactive:hover{ + background-color:rgba(191, 204, 214, 0.85); } + .bp3-dark .bp3-tag.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-interactive:active{ + background-color:rgba(191, 204, 214, 0.7); } + .bp3-dark .bp3-tag > .bp3-icon, .bp3-dark .bp3-tag .bp3-icon-standard, .bp3-dark .bp3-tag .bp3-icon-large{ + fill:currentColor; } + .bp3-tag > .bp3-icon, .bp3-tag .bp3-icon-standard, .bp3-tag .bp3-icon-large{ + fill:#ffffff; } + .bp3-tag.bp3-large, + .bp3-large .bp3-tag{ + font-size:14px; + line-height:20px; + min-height:30px; + min-width:30px; + padding:5px 10px; } + .bp3-tag.bp3-large::before, + .bp3-tag.bp3-large > *, + .bp3-large .bp3-tag::before, + .bp3-large .bp3-tag > *{ + margin-right:7px; } + .bp3-tag.bp3-large:empty::before, + .bp3-tag.bp3-large > :last-child, + .bp3-large .bp3-tag:empty::before, + .bp3-large .bp3-tag > :last-child{ + margin-right:0; } + .bp3-tag.bp3-large.bp3-round, + .bp3-large .bp3-tag.bp3-round{ + padding-left:12px; + padding-right:12px; } + .bp3-tag.bp3-intent-primary{ + background:#137cbd; + color:#ffffff; } + .bp3-tag.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.85); } + .bp3-tag.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.7); } + .bp3-tag.bp3-intent-success{ + background:#0f9960; + color:#ffffff; } + .bp3-tag.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.85); } + .bp3-tag.bp3-intent-success.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.7); } + .bp3-tag.bp3-intent-warning{ + background:#d9822b; + color:#ffffff; } + .bp3-tag.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.85); } + .bp3-tag.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.7); } + .bp3-tag.bp3-intent-danger{ + background:#db3737; + color:#ffffff; } + .bp3-tag.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.85); } + .bp3-tag.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.7); } + .bp3-tag.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-tag.bp3-minimal > .bp3-icon, .bp3-tag.bp3-minimal .bp3-icon-standard, .bp3-tag.bp3-minimal .bp3-icon-large{ + fill:#5c7080; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]){ + background-color:rgba(138, 155, 168, 0.2); + color:#182026; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover{ + background-color:rgba(92, 112, 128, 0.3); } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active, .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active{ + background-color:rgba(92, 112, 128, 0.4); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]){ + color:#f5f8fa; } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover{ + background-color:rgba(191, 204, 214, 0.3); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active{ + background-color:rgba(191, 204, 214, 0.4); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) > .bp3-icon, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-standard, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-large{ + fill:#a7b6c2; } + .bp3-tag.bp3-minimal.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-primary > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-large{ + fill:#137cbd; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.25); + color:#48aff0; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-success > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-large{ + fill:#0f9960; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.25); + color:#3dcc91; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-warning > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-large{ + fill:#d9822b; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.25); + color:#ffb366; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-danger > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-large{ + fill:#db3737; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.25); + color:#ff7373; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.45); } + +.bp3-tag-remove{ + background:none; + border:none; + color:inherit; + cursor:pointer; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + margin-bottom:-2px; + margin-right:-6px !important; + margin-top:-2px; + opacity:0.5; + padding:2px; + padding-left:0; } + .bp3-tag-remove:hover{ + background:none; + opacity:0.8; + text-decoration:none; } + .bp3-tag-remove:active{ + opacity:1; } + .bp3-tag-remove:empty::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + content:""; } + .bp3-large .bp3-tag-remove{ + margin-right:-10px !important; + padding:0 5px 0 0; } + .bp3-large .bp3-tag-remove:empty::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; } +.bp3-tag-input{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + cursor:text; + height:auto; + line-height:inherit; + min-height:30px; + padding-left:5px; + padding-right:0; } + .bp3-tag-input > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag-input > .bp3-tag-input-values{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag-input .bp3-tag-input-icon{ + color:#5c7080; + margin-left:2px; + margin-right:7px; + margin-top:7px; } + .bp3-tag-input .bp3-tag-input-values{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + -ms-flex-item-align:stretch; + align-self:stretch; + -ms-flex-wrap:wrap; + flex-wrap:wrap; + margin-right:7px; + margin-top:5px; + min-width:0; } + .bp3-tag-input .bp3-tag-input-values > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag-input .bp3-tag-input-values > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag-input .bp3-tag-input-values::before, + .bp3-tag-input .bp3-tag-input-values > *{ + margin-right:5px; } + .bp3-tag-input .bp3-tag-input-values:empty::before, + .bp3-tag-input .bp3-tag-input-values > :last-child{ + margin-right:0; } + .bp3-tag-input .bp3-tag-input-values:first-child .bp3-input-ghost:first-child{ + padding-left:5px; } + .bp3-tag-input .bp3-tag-input-values > *{ + margin-bottom:5px; } + .bp3-tag-input .bp3-tag{ + overflow-wrap:break-word; } + .bp3-tag-input .bp3-tag.bp3-active{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:0; + -moz-outline-radius:6px; } + .bp3-tag-input .bp3-input-ghost{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:20px; + width:80px; } + .bp3-tag-input .bp3-input-ghost:disabled, .bp3-tag-input .bp3-input-ghost.bp3-disabled{ + cursor:not-allowed; } + .bp3-tag-input .bp3-button, + .bp3-tag-input .bp3-spinner{ + margin:3px; + margin-left:0; } + .bp3-tag-input .bp3-button{ + min-height:24px; + min-width:24px; + padding:0 7px; } + .bp3-tag-input.bp3-large{ + height:auto; + min-height:40px; } + .bp3-tag-input.bp3-large::before, + .bp3-tag-input.bp3-large > *{ + margin-right:10px; } + .bp3-tag-input.bp3-large:empty::before, + .bp3-tag-input.bp3-large > :last-child{ + margin-right:0; } + .bp3-tag-input.bp3-large .bp3-tag-input-icon{ + margin-left:5px; + margin-top:10px; } + .bp3-tag-input.bp3-large .bp3-input-ghost{ + line-height:30px; } + .bp3-tag-input.bp3-large .bp3-button{ + min-height:30px; + min-width:30px; + padding:5px 10px; + margin:5px; + margin-left:0; } + .bp3-tag-input.bp3-large .bp3-spinner{ + margin:8px; + margin-left:0; } + .bp3-tag-input.bp3-active{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-success{ + -webkit-box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-tag-input .bp3-tag-input-icon, .bp3-tag-input.bp3-dark .bp3-tag-input-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-tag-input .bp3-input-ghost, .bp3-tag-input.bp3-dark .bp3-input-ghost{ + color:#f5f8fa; } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-webkit-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-moz-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost:-ms-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-ms-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input.bp3-active, .bp3-tag-input.bp3-dark.bp3-active{ + background-color:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-primary, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-success, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-success{ + -webkit-box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-warning, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-danger, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-input-ghost{ + background:none; + border:none; + -webkit-box-shadow:none; + box-shadow:none; + padding:0; } + .bp3-input-ghost::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost:focus{ + outline:none !important; } +.bp3-toast{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + margin:20px 0 0; + max-width:500px; + min-width:300px; + pointer-events:all; + position:relative !important; } + .bp3-toast.bp3-toast-enter, .bp3-toast.bp3-toast-appear{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); } + .bp3-toast.bp3-toast-enter-active, .bp3-toast.bp3-toast-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-toast.bp3-toast-enter ~ .bp3-toast, .bp3-toast.bp3-toast-appear ~ .bp3-toast{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); } + .bp3-toast.bp3-toast-enter-active ~ .bp3-toast, .bp3-toast.bp3-toast-appear-active ~ .bp3-toast{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-toast.bp3-toast-exit{ + opacity:1; + -webkit-filter:blur(0); + filter:blur(0); } + .bp3-toast.bp3-toast-exit-active{ + opacity:0; + -webkit-filter:blur(10px); + filter:blur(10px); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:opacity, filter; + transition-property:opacity, filter, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-toast.bp3-toast-exit ~ .bp3-toast{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-toast.bp3-toast-exit-active ~ .bp3-toast{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); + -webkit-transition-delay:50ms; + transition-delay:50ms; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-toast .bp3-button-group{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + padding:5px; + padding-left:0; } + .bp3-toast > .bp3-icon{ + color:#5c7080; + margin:12px; + margin-right:0; } + .bp3-toast.bp3-dark, + .bp3-dark .bp3-toast{ + background-color:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-toast.bp3-dark > .bp3-icon, + .bp3-dark .bp3-toast > .bp3-icon{ + color:#a7b6c2; } + .bp3-toast[class*="bp3-intent-"] a{ + color:rgba(255, 255, 255, 0.7); } + .bp3-toast[class*="bp3-intent-"] a:hover{ + color:#ffffff; } + .bp3-toast[class*="bp3-intent-"] > .bp3-icon{ + color:#ffffff; } + .bp3-toast[class*="bp3-intent-"] .bp3-button, .bp3-toast[class*="bp3-intent-"] .bp3-button::before, + .bp3-toast[class*="bp3-intent-"] .bp3-button .bp3-icon, .bp3-toast[class*="bp3-intent-"] .bp3-button:active{ + color:rgba(255, 255, 255, 0.7) !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button:focus{ + outline-color:rgba(255, 255, 255, 0.5); } + .bp3-toast[class*="bp3-intent-"] .bp3-button:hover{ + background-color:rgba(255, 255, 255, 0.15) !important; + color:#ffffff !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button:active{ + background-color:rgba(255, 255, 255, 0.3) !important; + color:#ffffff !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button::after{ + background:rgba(255, 255, 255, 0.3) !important; } + .bp3-toast.bp3-intent-primary{ + background-color:#137cbd; + color:#ffffff; } + .bp3-toast.bp3-intent-success{ + background-color:#0f9960; + color:#ffffff; } + .bp3-toast.bp3-intent-warning{ + background-color:#d9822b; + color:#ffffff; } + .bp3-toast.bp3-intent-danger{ + background-color:#db3737; + color:#ffffff; } + +.bp3-toast-message{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + padding:11px; + word-break:break-word; } + +.bp3-toast-container{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box !important; + display:-ms-flexbox !important; + display:flex !important; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + left:0; + overflow:hidden; + padding:0 20px 20px; + pointer-events:none; + position:fixed; + right:0; + z-index:40; } + .bp3-toast-container.bp3-toast-container-top{ + top:0; } + .bp3-toast-container.bp3-toast-container-bottom{ + bottom:0; + -webkit-box-orient:vertical; + -webkit-box-direction:reverse; + -ms-flex-direction:column-reverse; + flex-direction:column-reverse; + top:auto; } + .bp3-toast-container.bp3-toast-container-left{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; } + .bp3-toast-container.bp3-toast-container-right{ + -webkit-box-align:end; + -ms-flex-align:end; + align-items:flex-end; } + +.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active), +.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active) ~ .bp3-toast, .bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active), +.bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active) ~ .bp3-toast, +.bp3-toast-container-bottom .bp3-toast.bp3-toast-exit-active ~ .bp3-toast, +.bp3-toast-container-bottom .bp3-toast.bp3-toast-leave-active ~ .bp3-toast{ + -webkit-transform:translateY(60px); + transform:translateY(60px); } +.bp3-tooltip{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-tooltip .bp3-popover-arrow{ + height:22px; + position:absolute; + width:22px; } + .bp3-tooltip .bp3-popover-arrow::before{ + height:14px; + margin:4px; + width:14px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip{ + margin-bottom:11px; + margin-top:-11px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow{ + bottom:-8px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(-90deg); + transform:rotate(-90deg); } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip{ + margin-left:11px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow{ + left:-8px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(0); + transform:rotate(0); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip{ + margin-top:11px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow{ + top:-8px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip{ + margin-left:-11px; + margin-right:11px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow{ + right:-8px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(180deg); + transform:rotate(180deg); } + .bp3-tether-element-attached-middle > .bp3-tooltip > .bp3-popover-arrow{ + top:50%; + -webkit-transform:translateY(-50%); + transform:translateY(-50%); } + .bp3-tether-element-attached-center > .bp3-tooltip > .bp3-popover-arrow{ + right:50%; + -webkit-transform:translateX(50%); + transform:translateX(50%); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow{ + top:-0.22183px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow{ + right:-0.22183px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow{ + left:-0.22183px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow{ + bottom:-0.22183px; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:top left; + transform-origin:top left; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:top center; + transform-origin:top center; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:top right; + transform-origin:top right; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:center left; + transform-origin:center left; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:center center; + transform-origin:center center; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:center right; + transform-origin:center right; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:bottom left; + transform-origin:bottom left; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:bottom center; + transform-origin:bottom center; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:bottom right; + transform-origin:bottom right; } + .bp3-tooltip .bp3-popover-content{ + background:#394b59; + color:#f5f8fa; } + .bp3-tooltip .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); } + .bp3-tooltip .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.1; } + .bp3-tooltip .bp3-popover-arrow-fill{ + fill:#394b59; } + .bp3-popover-enter > .bp3-tooltip, .bp3-popover-appear > .bp3-tooltip{ + -webkit-transform:scale(0.8); + transform:scale(0.8); } + .bp3-popover-enter-active > .bp3-tooltip, .bp3-popover-appear-active > .bp3-tooltip{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover-exit > .bp3-tooltip{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-tooltip{ + -webkit-transform:scale(0.8); + transform:scale(0.8); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tooltip .bp3-popover-content{ + padding:10px 12px; } + .bp3-tooltip.bp3-dark, + .bp3-dark .bp3-tooltip{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-tooltip.bp3-dark .bp3-popover-content, + .bp3-dark .bp3-tooltip .bp3-popover-content{ + background:#e1e8ed; + color:#394b59; } + .bp3-tooltip.bp3-dark .bp3-popover-arrow::before, + .bp3-dark .bp3-tooltip .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); } + .bp3-tooltip.bp3-dark .bp3-popover-arrow-border, + .bp3-dark .bp3-tooltip .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.2; } + .bp3-tooltip.bp3-dark .bp3-popover-arrow-fill, + .bp3-dark .bp3-tooltip .bp3-popover-arrow-fill{ + fill:#e1e8ed; } + .bp3-tooltip.bp3-intent-primary .bp3-popover-content{ + background:#137cbd; + color:#ffffff; } + .bp3-tooltip.bp3-intent-primary .bp3-popover-arrow-fill{ + fill:#137cbd; } + .bp3-tooltip.bp3-intent-success .bp3-popover-content{ + background:#0f9960; + color:#ffffff; } + .bp3-tooltip.bp3-intent-success .bp3-popover-arrow-fill{ + fill:#0f9960; } + .bp3-tooltip.bp3-intent-warning .bp3-popover-content{ + background:#d9822b; + color:#ffffff; } + .bp3-tooltip.bp3-intent-warning .bp3-popover-arrow-fill{ + fill:#d9822b; } + .bp3-tooltip.bp3-intent-danger .bp3-popover-content{ + background:#db3737; + color:#ffffff; } + .bp3-tooltip.bp3-intent-danger .bp3-popover-arrow-fill{ + fill:#db3737; } + +.bp3-tooltip-indicator{ + border-bottom:dotted 1px; + cursor:help; } +.bp3-tree .bp3-icon, .bp3-tree .bp3-icon-standard, .bp3-tree .bp3-icon-large{ + color:#5c7080; } + .bp3-tree .bp3-icon.bp3-intent-primary, .bp3-tree .bp3-icon-standard.bp3-intent-primary, .bp3-tree .bp3-icon-large.bp3-intent-primary{ + color:#137cbd; } + .bp3-tree .bp3-icon.bp3-intent-success, .bp3-tree .bp3-icon-standard.bp3-intent-success, .bp3-tree .bp3-icon-large.bp3-intent-success{ + color:#0f9960; } + .bp3-tree .bp3-icon.bp3-intent-warning, .bp3-tree .bp3-icon-standard.bp3-intent-warning, .bp3-tree .bp3-icon-large.bp3-intent-warning{ + color:#d9822b; } + .bp3-tree .bp3-icon.bp3-intent-danger, .bp3-tree .bp3-icon-standard.bp3-intent-danger, .bp3-tree .bp3-icon-large.bp3-intent-danger{ + color:#db3737; } + +.bp3-tree-node-list{ + list-style:none; + margin:0; + padding-left:0; } + +.bp3-tree-root{ + background-color:transparent; + cursor:default; + padding-left:0; + position:relative; } + +.bp3-tree-node-content-0{ + padding-left:0px; } + +.bp3-tree-node-content-1{ + padding-left:23px; } + +.bp3-tree-node-content-2{ + padding-left:46px; } + +.bp3-tree-node-content-3{ + padding-left:69px; } + +.bp3-tree-node-content-4{ + padding-left:92px; } + +.bp3-tree-node-content-5{ + padding-left:115px; } + +.bp3-tree-node-content-6{ + padding-left:138px; } + +.bp3-tree-node-content-7{ + padding-left:161px; } + +.bp3-tree-node-content-8{ + padding-left:184px; } + +.bp3-tree-node-content-9{ + padding-left:207px; } + +.bp3-tree-node-content-10{ + padding-left:230px; } + +.bp3-tree-node-content-11{ + padding-left:253px; } + +.bp3-tree-node-content-12{ + padding-left:276px; } + +.bp3-tree-node-content-13{ + padding-left:299px; } + +.bp3-tree-node-content-14{ + padding-left:322px; } + +.bp3-tree-node-content-15{ + padding-left:345px; } + +.bp3-tree-node-content-16{ + padding-left:368px; } + +.bp3-tree-node-content-17{ + padding-left:391px; } + +.bp3-tree-node-content-18{ + padding-left:414px; } + +.bp3-tree-node-content-19{ + padding-left:437px; } + +.bp3-tree-node-content-20{ + padding-left:460px; } + +.bp3-tree-node-content{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + height:30px; + padding-right:5px; + width:100%; } + .bp3-tree-node-content:hover{ + background-color:rgba(191, 204, 214, 0.4); } + +.bp3-tree-node-caret, +.bp3-tree-node-caret-none{ + min-width:30px; } + +.bp3-tree-node-caret{ + color:#5c7080; + cursor:pointer; + padding:7px; + -webkit-transform:rotate(0deg); + transform:rotate(0deg); + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tree-node-caret:hover{ + color:#182026; } + .bp3-dark .bp3-tree-node-caret{ + color:#a7b6c2; } + .bp3-dark .bp3-tree-node-caret:hover{ + color:#f5f8fa; } + .bp3-tree-node-caret.bp3-tree-node-caret-open{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tree-node-caret.bp3-icon-standard::before{ + content:""; } + +.bp3-tree-node-icon{ + margin-right:7px; + position:relative; } + +.bp3-tree-node-label{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-tree-node-label span{ + display:inline; } + +.bp3-tree-node-secondary-label{ + padding:0 5px; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-tree-node-secondary-label .bp3-popover-wrapper, + .bp3-tree-node-secondary-label .bp3-popover-target{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + +.bp3-tree-node.bp3-disabled .bp3-tree-node-content{ + background-color:inherit; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-tree-node.bp3-disabled .bp3-tree-node-caret, +.bp3-tree-node.bp3-disabled .bp3-tree-node-icon{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content{ + background-color:#137cbd; } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content, + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon, .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon-standard, .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon-large{ + color:#ffffff; } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-tree-node-caret::before{ + color:rgba(255, 255, 255, 0.7); } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-tree-node-caret:hover::before{ + color:#ffffff; } + +.bp3-dark .bp3-tree-node-content:hover{ + background-color:rgba(92, 112, 128, 0.3); } + +.bp3-dark .bp3-tree .bp3-icon, .bp3-dark .bp3-tree .bp3-icon-standard, .bp3-dark .bp3-tree .bp3-icon-large{ + color:#a7b6c2; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-primary, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-primary, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-primary{ + color:#137cbd; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-success, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-success, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-success{ + color:#0f9960; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-warning, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-warning, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-warning{ + color:#d9822b; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-danger, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-danger, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-danger{ + color:#db3737; } + +.bp3-dark .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content{ + background-color:#137cbd; } +.bp3-omnibar{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + left:calc(50% - 250px); + top:20vh; + width:500px; + z-index:21; } + .bp3-omnibar.bp3-overlay-enter, .bp3-omnibar.bp3-overlay-appear{ + -webkit-filter:blur(20px); + filter:blur(20px); + opacity:0.2; } + .bp3-omnibar.bp3-overlay-enter-active, .bp3-omnibar.bp3-overlay-appear-active{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:filter, opacity; + transition-property:filter, opacity, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-omnibar.bp3-overlay-exit{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; } + .bp3-omnibar.bp3-overlay-exit-active{ + -webkit-filter:blur(20px); + filter:blur(20px); + opacity:0.2; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:filter, opacity; + transition-property:filter, opacity, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-omnibar .bp3-input{ + background-color:transparent; + border-radius:0; } + .bp3-omnibar .bp3-input, .bp3-omnibar .bp3-input:focus{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-omnibar .bp3-menu{ + background-color:transparent; + border-radius:0; + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + max-height:calc(60vh - 40px); + overflow:auto; } + .bp3-omnibar .bp3-menu:empty{ + display:none; } + .bp3-dark .bp3-omnibar, .bp3-omnibar.bp3-dark{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); } + +.bp3-omnibar-overlay .bp3-overlay-backdrop{ + background-color:rgba(16, 22, 26, 0.2); } + +.bp3-select-popover .bp3-popover-content{ + padding:5px; } + +.bp3-select-popover .bp3-input-group{ + margin-bottom:0; } + +.bp3-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; + padding:0; } + .bp3-select-popover .bp3-menu:not(:first-child){ + padding-top:5px; } + +.bp3-multi-select{ + min-width:150px; } + +.bp3-multi-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; } + +.bp3-select-popover .bp3-popover-content{ + padding:5px; } + +.bp3-select-popover .bp3-input-group{ + margin-bottom:0; } + +.bp3-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; + padding:0; } + .bp3-select-popover .bp3-menu:not(:first-child){ + padding-top:5px; } +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */ + +/** + * (DEPRECATED) Support for consuming icons as CSS background images + */ + +/* Icons urls */ + +:root { + --jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDhoLTIuODFjLS40NS0uNzgtMS4wNy0xLjQ1LTEuODItMS45NkwxNyA0LjQxIDE1LjU5IDNsLTIuMTcgMi4xN0MxMi45NiA1LjA2IDEyLjQ5IDUgMTIgNWMtLjQ5IDAtLjk2LjA2LTEuNDEuMTdMOC40MSAzIDcgNC40MWwxLjYyIDEuNjNDNy44OCA2LjU1IDcuMjYgNy4yMiA2LjgxIDhINHYyaDIuMDljLS4wNS4zMy0uMDkuNjYtLjA5IDF2MUg0djJoMnYxYzAgLjM0LjA0LjY3LjA5IDFINHYyaDIuODFjMS4wNCAxLjc5IDIuOTcgMyA1LjE5IDNzNC4xNS0xLjIxIDUuMTktM0gyMHYtMmgtMi4wOWMuMDUtLjMzLjA5LS42Ni4wOS0xdi0xaDJ2LTJoLTJ2LTFjMC0uMzQtLjA0LS42Ny0uMDktMUgyMFY4em0tNiA4aC00di0yaDR2MnptMC00aC00di0yaDR2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=); + --jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTYuMTdMNC44MyAxMmwtMS40MiAxLjQxTDkgMTkgMjEgN2wtMS40MS0xLjQxeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==); + --jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1pY29uLWJyYW5kMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNmZmYiPgogICAgPHBhdGggZD0iTTEwNSAxMjcuM2g0MHYxMi44aC00MHpNNTEuMSA3N0w3NCA5OS45bC0yMy4zIDIzLjMgMTAuNSAxMC41IDIzLjMtMjMuM0w5NSA5OS45IDg0LjUgODkuNCA2MS42IDY2LjV6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==); + --jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=); + --jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==); + --jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=); + --jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K); + --jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNGOUE4MjUiPgogICAgPHBhdGggZD0iTTIwLjIgMTEuOGMtMS42IDAtMS43LjUtMS43IDEgMCAuNC4xLjkuMSAxLjMuMS41LjEuOS4xIDEuMyAwIDEuNy0xLjQgMi4zLTMuNSAyLjNoLS45di0xLjloLjVjMS4xIDAgMS40IDAgMS40LS44IDAtLjMgMC0uNi0uMS0xIDAtLjQtLjEtLjgtLjEtMS4yIDAtMS4zIDAtMS44IDEuMy0yLTEuMy0uMi0xLjMtLjctMS4zLTIgMC0uNC4xLS44LjEtMS4yLjEtLjQuMS0uNy4xLTEgMC0uOC0uNC0uNy0xLjQtLjhoLS41VjQuMWguOWMyLjIgMCAzLjUuNyAzLjUgMi4zIDAgLjQtLjEuOS0uMSAxLjMtLjEuNS0uMS45LS4xIDEuMyAwIC41LjIgMSAxLjcgMXYxLjh6TTEuOCAxMC4xYzEuNiAwIDEuNy0uNSAxLjctMSAwLS40LS4xLS45LS4xLTEuMy0uMS0uNS0uMS0uOS0uMS0xLjMgMC0xLjYgMS40LTIuMyAzLjUtMi4zaC45djEuOWgtLjVjLTEgMC0xLjQgMC0xLjQuOCAwIC4zIDAgLjYuMSAxIDAgLjIuMS42LjEgMSAwIDEuMyAwIDEuOC0xLjMgMkM2IDExLjIgNiAxMS43IDYgMTNjMCAuNC0uMS44LS4xIDEuMi0uMS4zLS4xLjctLjEgMSAwIC44LjMuOCAxLjQuOGguNXYxLjloLS45Yy0yLjEgMC0zLjUtLjYtMy41LTIuMyAwLS40LjEtLjkuMS0xLjMuMS0uNS4xLS45LjEtMS4zIDAtLjUtLjItMS0xLjctMXYtMS45eiIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSIxMy44IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY3g9IjExIiBjeT0iOC4yIiByPSIyLjEiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgPGcgY2xhc3M9ImpwLWljb24td2FybjAiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=); + --jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K); + --jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==); + --jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==); + --jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=); + --jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4=); + --jp-icon-listings-info: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTAuOTc4IDUwLjk3OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAuOTc4IDUwLjk3ODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPGc+DQoJCTxnPg0KCQkJPHBhdGggc3R5bGU9ImZpbGw6IzAxMDAwMjsiIGQ9Ik00My41Miw3LjQ1OEMzOC43MTEsMi42NDgsMzIuMzA3LDAsMjUuNDg5LDBDMTguNjcsMCwxMi4yNjYsMi42NDgsNy40NTgsNy40NTgNCgkJCQljLTkuOTQzLDkuOTQxLTkuOTQzLDI2LjExOSwwLDM2LjA2MmM0LjgwOSw0LjgwOSwxMS4yMTIsNy40NTYsMTguMDMxLDcuNDU4YzAsMCwwLjAwMSwwLDAuMDAyLDANCgkJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoNCgkJCQkgTTQyLjEwNiw0Mi4xMDVjLTQuNDMyLDQuNDMxLTEwLjMzMiw2Ljg3Mi0xNi42MTUsNi44NzJoLTAuMDAyYy02LjI4NS0wLjAwMS0xMi4xODctMi40NDEtMTYuNjE3LTYuODcyDQoJCQkJYy05LjE2Mi05LjE2My05LjE2Mi0yNC4wNzEsMC0zMy4yMzNDMTMuMzAzLDQuNDQsMTkuMjA0LDIsMjUuNDg5LDJjNi4yODQsMCwxMi4xODYsMi40NCwxNi42MTcsNi44NzINCgkJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4NCgkJPC9nPg0KCQk8Zz4NCgkJCTxwYXRoIHN0eWxlPSJmaWxsOiMwMTAwMDI7IiBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1Mw0KCQkJCWMwLjQ2OC0wLjUzNiwwLjkyMy0xLjA2MiwxLjM2Ny0xLjU3NWMwLjYyNi0wLjc1MywxLjEwNC0xLjQ3OCwxLjQzNi0yLjE3NWMwLjMzMS0wLjcwNywwLjQ5NS0xLjU0MSwwLjQ5NS0yLjUNCgkJCQljMC0xLjA5Ni0wLjI2LTIuMDg4LTAuNzc5LTIuOTc5Yy0wLjU2NS0wLjg3OS0xLjUwMS0xLjMzNi0yLjgwNi0xLjM2OWMtMS44MDIsMC4wNTctMi45ODUsMC42NjctMy41NSwxLjgzMg0KCQkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkNCgkJCQljMS4wNjItMS42NCwyLjg1NS0yLjQ4MSw1LjM3OC0yLjUyN2MyLjE2LDAuMDIzLDMuODc0LDAuNjA4LDUuMTQxLDEuNzU4YzEuMjc4LDEuMTYsMS45MjksMi43NjQsMS45NSw0LjgxMQ0KCQkJCWMwLDEuMTQyLTAuMTM3LDIuMTExLTAuNDEsMi45MTFjLTAuMzA5LDAuODQ1LTAuNzMxLDEuNTkzLTEuMjY4LDIuMjQzYy0wLjQ5MiwwLjY1LTEuMDY4LDEuMzE4LTEuNzMsMi4wMDINCgkJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5DQoJCQkJQzI2LjU4OSwzMi4yMTgsMjMuNTc4LDMyLjIxOCwyMy41NzgsMzIuMjE4eiBNMjMuNTc4LDM4LjIydi0zLjQ4NGgzLjA3NnYzLjQ4NEgyMy41Nzh6Ii8+DQoJCTwvZz4NCgk8L2c+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==); + --jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==); + --jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=); + --jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==); + --jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K); + --jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMEQ0N0ExIj4KICAgIDxwYXRoIGQ9Ik0xMS4xIDYuOVY1LjhINi45YzAtLjUgMC0xLjMuMi0xLjYuNC0uNy44LTEuMSAxLjctMS40IDEuNy0uMyAyLjUtLjMgMy45LS4xIDEgLjEgMS45LjkgMS45IDEuOXY0LjJjMCAuNS0uOSAxLjYtMiAxLjZIOC44Yy0xLjUgMC0yLjQgMS40LTIuNCAyLjh2Mi4ySDQuN0MzLjUgMTUuMSAzIDE0IDMgMTMuMVY5Yy0uMS0xIC42LTIgMS44LTIgMS41LS4xIDYuMy0uMSA2LjMtLjF6Ii8+CiAgICA8cGF0aCBkPSJNMTAuOSAxNS4xdjEuMWg0LjJjMCAuNSAwIDEuMy0uMiAxLjYtLjQuNy0uOCAxLjEtMS43IDEuNC0xLjcuMy0yLjUuMy0zLjkuMS0xLS4xLTEuOS0uOS0xLjktMS45di00LjJjMC0uNS45LTEuNiAyLTEuNmgzLjhjMS41IDAgMi40LTEuNCAyLjQtMi44VjYuNmgxLjdDMTguNSA2LjkgMTkgOCAxOSA4LjlWMTNjMCAxLS43IDIuMS0xLjkgMi4xaC02LjJ6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==); + --jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K); + --jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K); + --jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==); + --jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=); + --jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==); + --jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4=); + --jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMikiIGZpbGw9IiMzMzMzMzMiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uLWFjY2VudDIganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGQ9Ik01LjA1NjY0IDguNzYxNzJDNS4wNTY2NCA4LjU5NzY2IDUuMDMxMjUgOC40NTMxMiA0Ljk4MDQ3IDguMzI4MTJDNC45MzM1OSA4LjE5OTIyIDQuODU1NDcgOC4wODIwMyA0Ljc0NjA5IDcuOTc2NTZDNC42NDA2MiA3Ljg3MTA5IDQuNSA3Ljc3NTM5IDQuMzI0MjIgNy42ODk0NUM0LjE1MjM0IDcuNTk5NjEgMy45NDMzNiA3LjUxMTcyIDMuNjk3MjcgNy40MjU3OEMzLjMwMjczIDcuMjg1MTYgMi45NDMzNiA3LjEzNjcyIDIuNjE5MTQgNi45ODA0N0MyLjI5NDkyIDYuODI0MjIgMi4wMTc1OCA2LjY0MjU4IDEuNzg3MTEgNi40MzU1NUMxLjU2MDU1IDYuMjI4NTIgMS4zODQ3NyA1Ljk4ODI4IDEuMjU5NzcgNS43MTQ4NEMxLjEzNDc3IDUuNDM3NSAxLjA3MjI3IDUuMTA5MzggMS4wNzIyNyA0LjczMDQ3QzEuMDcyMjcgNC4zOTg0NCAxLjEyODkxIDQuMDk1NyAxLjI0MjE5IDMuODIyMjdDMS4zNTU0NyAzLjU0NDkyIDEuNTE1NjIgMy4zMDQ2OSAxLjcyMjY2IDMuMTAxNTZDMS45Mjk2OSAyLjg5ODQ0IDIuMTc5NjkgMi43MzQzNyAyLjQ3MjY2IDIuNjA5MzhDMi43NjU2MiAyLjQ4NDM4IDMuMDkxOCAyLjQwNDMgMy40NTExNyAyLjM2OTE0VjEuMTA5MzhINC4zODg2N1YyLjM4MDg2QzQuNzQwMjMgMi40Mjc3MyA1LjA1NjY0IDIuNTIzNDQgNS4zMzc4OSAyLjY2Nzk3QzUuNjE5MTQgMi44MTI1IDUuODU3NDIgMy4wMDE5NSA2LjA1MjczIDMuMjM2MzNDNi4yNTE5NSAzLjQ2NjggNi40MDQzIDMuNzQwMjMgNi41MDk3NyA0LjA1NjY0QzYuNjE5MTQgNC4zNjkxNCA2LjY3MzgzIDQuNzIwNyA2LjY3MzgzIDUuMTExMzNINS4wNDQ5MkM1LjA0NDkyIDQuNjM4NjcgNC45Mzc1IDQuMjgxMjUgNC43MjI2NiA0LjAzOTA2QzQuNTA3ODEgMy43OTI5NyA0LjIxNjggMy42Njk5MiAzLjg0OTYxIDMuNjY5OTJDMy42NTAzOSAzLjY2OTkyIDMuNDc2NTYgMy42OTcyNyAzLjMyODEyIDMuNzUxOTVDMy4xODM1OSAzLjgwMjczIDMuMDY0NDUgMy44NzY5NSAyLjk3MDcgMy45NzQ2MUMyLjg3Njk1IDQuMDY4MzYgMi44MDY2NCA0LjE3OTY5IDIuNzU5NzcgNC4zMDg1OUMyLjcxNjggNC40Mzc1IDIuNjk1MzEgNC41NzgxMiAyLjY5NTMxIDQuNzMwNDdDMi42OTUzMSA0Ljg4MjgxIDIuNzE2OCA1LjAxOTUzIDIuNzU5NzcgNS4xNDA2MkMyLjgwNjY0IDUuMjU3ODEgMi44ODI4MSA1LjM2NzE5IDIuOTg4MjggNS40Njg3NUMzLjA5NzY2IDUuNTcwMzEgMy4yNDAyMyA1LjY2Nzk3IDMuNDE2MDIgNS43NjE3MkMzLjU5MTggNS44NTE1NiAzLjgxMDU1IDUuOTQzMzYgNC4wNzIyNyA2LjAzNzExQzQuNDY2OCA2LjE4NTU1IDQuODI0MjIgNi4zMzk4NCA1LjE0NDUzIDYuNUM1LjQ2NDg0IDYuNjU2MjUgNS43MzgyOCA2LjgzOTg0IDUuOTY0ODQgNy4wNTA3OEM2LjE5NTMxIDcuMjU3ODEgNi4zNzEwOSA3LjUgNi40OTIxOSA3Ljc3NzM0QzYuNjE3MTkgOC4wNTA3OCA2LjY3OTY5IDguMzc1IDYuNjc5NjkgOC43NUM2LjY3OTY5IDkuMDkzNzUgNi42MjMwNSA5LjQwNDMgNi41MDk3NyA5LjY4MTY0QzYuMzk2NDggOS45NTUwOCA2LjIzNDM4IDEwLjE5MTQgNi4wMjM0NCAxMC4zOTA2QzUuODEyNSAxMC41ODk4IDUuNTU4NTkgMTAuNzUgNS4yNjE3MiAxMC44NzExQzQuOTY0ODQgMTAuOTg4MyA0LjYzMjgxIDExLjA2NDUgNC4yNjU2MiAxMS4wOTk2VjEyLjI0OEgzLjMzMzk4VjExLjA5OTZDMy4wMDE5NSAxMS4wNjg0IDIuNjc5NjkgMTAuOTk2MSAyLjM2NzE5IDEwLjg4MjhDMi4wNTQ2OSAxMC43NjU2IDEuNzc3MzQgMTAuNTk3NyAxLjUzNTE2IDEwLjM3ODlDMS4yOTY4OCAxMC4xNjAyIDEuMTA1NDcgOS44ODQ3NyAwLjk2MDkzOCA5LjU1MjczQzAuODE2NDA2IDkuMjE2OCAwLjc0NDE0MSA4LjgxNDQ1IDAuNzQ0MTQxIDguMzQ1N0gyLjM3ODkxQzIuMzc4OTEgOC42MjY5NSAyLjQxOTkyIDguODYzMjggMi41MDE5NSA5LjA1NDY5QzIuNTgzOTggOS4yNDIxOSAyLjY4OTQ1IDkuMzkyNTggMi44MTgzNiA5LjUwNTg2QzIuOTUxMTcgOS42MTUyMyAzLjEwMTU2IDkuNjkzMzYgMy4yNjk1MyA5Ljc0MDIzQzMuNDM3NSA5Ljc4NzExIDMuNjA5MzggOS44MTA1NSAzLjc4NTE2IDkuODEwNTVDNC4yMDMxMiA5LjgxMDU1IDQuNTE5NTMgOS43MTI4OSA0LjczNDM4IDkuNTE3NThDNC45NDkyMiA5LjMyMjI3IDUuMDU2NjQgOS4wNzAzMSA1LjA1NjY0IDguNzYxNzJaTTEzLjQxOCAxMi4yNzE1SDguMDc0MjJWMTFIMTMuNDE4VjEyLjI3MTVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjk1MjY0IDYpIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K); + --jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTUgMTVIM3YyaDEydi0yem0wLThIM3YyaDEyVjd6TTMgMTNoMTh2LTJIM3Yyem0wIDhoMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6Ii8+Cjwvc3ZnPgo=); + --jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgoJPHBhdGggZD0iTTcsNUgyMVY3SDdWNU03LDEzVjExSDIxVjEzSDdNNCw0LjVBMS41LDEuNSAwIDAsMSA1LjUsNkExLjUsMS41IDAgMCwxIDQsNy41QTEuNSwxLjUgMCAwLDEgMi41LDZBMS41LDEuNSAwIDAsMSA0LDQuNU00LDEwLjVBMS41LDEuNSAwIDAsMSA1LjUsMTJBMS41LDEuNSAwIDAsMSA0LDEzLjVBMS41LDEuNSAwIDAsMSAyLjUsMTJBMS41LDEuNSAwIDAsMSA0LDEwLjVNNywxOVYxN0gyMVYxOUg3TTQsMTYuNUExLjUsMS41IDAgMCwxIDUuNSwxOEExLjUsMS41IDAgMCwxIDQsMTkuNUExLjUsMS41IDAgMCwxIDIuNSwxOEExLjUsMS41IDAgMCwxIDQsMTYuNVoiIC8+Cjwvc3ZnPgo=); + --jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4=); + --jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K); + --jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K); +} + +/* Icon CSS class declarations */ + +.jp-AddIcon { + background-image: var(--jp-icon-add); +} +.jp-BugIcon { + background-image: var(--jp-icon-bug); +} +.jp-BuildIcon { + background-image: var(--jp-icon-build); +} +.jp-CaretDownEmptyIcon { + background-image: var(--jp-icon-caret-down-empty); +} +.jp-CaretDownEmptyThinIcon { + background-image: var(--jp-icon-caret-down-empty-thin); +} +.jp-CaretDownIcon { + background-image: var(--jp-icon-caret-down); +} +.jp-CaretLeftIcon { + background-image: var(--jp-icon-caret-left); +} +.jp-CaretRightIcon { + background-image: var(--jp-icon-caret-right); +} +.jp-CaretUpEmptyThinIcon { + background-image: var(--jp-icon-caret-up-empty-thin); +} +.jp-CaretUpIcon { + background-image: var(--jp-icon-caret-up); +} +.jp-CaseSensitiveIcon { + background-image: var(--jp-icon-case-sensitive); +} +.jp-CheckIcon { + background-image: var(--jp-icon-check); +} +.jp-CircleEmptyIcon { + background-image: var(--jp-icon-circle-empty); +} +.jp-CircleIcon { + background-image: var(--jp-icon-circle); +} +.jp-ClearIcon { + background-image: var(--jp-icon-clear); +} +.jp-CloseIcon { + background-image: var(--jp-icon-close); +} +.jp-CodeIcon { + background-image: var(--jp-icon-code); +} +.jp-ConsoleIcon { + background-image: var(--jp-icon-console); +} +.jp-CopyIcon { + background-image: var(--jp-icon-copy); +} +.jp-CutIcon { + background-image: var(--jp-icon-cut); +} +.jp-DownloadIcon { + background-image: var(--jp-icon-download); +} +.jp-EditIcon { + background-image: var(--jp-icon-edit); +} +.jp-EllipsesIcon { + background-image: var(--jp-icon-ellipses); +} +.jp-ExtensionIcon { + background-image: var(--jp-icon-extension); +} +.jp-FastForwardIcon { + background-image: var(--jp-icon-fast-forward); +} +.jp-FileIcon { + background-image: var(--jp-icon-file); +} +.jp-FileUploadIcon { + background-image: var(--jp-icon-file-upload); +} +.jp-FilterListIcon { + background-image: var(--jp-icon-filter-list); +} +.jp-FolderIcon { + background-image: var(--jp-icon-folder); +} +.jp-Html5Icon { + background-image: var(--jp-icon-html5); +} +.jp-ImageIcon { + background-image: var(--jp-icon-image); +} +.jp-InspectorIcon { + background-image: var(--jp-icon-inspector); +} +.jp-JsonIcon { + background-image: var(--jp-icon-json); +} +.jp-JupyterFaviconIcon { + background-image: var(--jp-icon-jupyter-favicon); +} +.jp-JupyterIcon { + background-image: var(--jp-icon-jupyter); +} +.jp-JupyterlabWordmarkIcon { + background-image: var(--jp-icon-jupyterlab-wordmark); +} +.jp-KernelIcon { + background-image: var(--jp-icon-kernel); +} +.jp-KeyboardIcon { + background-image: var(--jp-icon-keyboard); +} +.jp-LauncherIcon { + background-image: var(--jp-icon-launcher); +} +.jp-LineFormIcon { + background-image: var(--jp-icon-line-form); +} +.jp-LinkIcon { + background-image: var(--jp-icon-link); +} +.jp-ListIcon { + background-image: var(--jp-icon-list); +} +.jp-ListingsInfoIcon { + background-image: var(--jp-icon-listings-info); +} +.jp-MarkdownIcon { + background-image: var(--jp-icon-markdown); +} +.jp-NewFolderIcon { + background-image: var(--jp-icon-new-folder); +} +.jp-NotTrustedIcon { + background-image: var(--jp-icon-not-trusted); +} +.jp-NotebookIcon { + background-image: var(--jp-icon-notebook); +} +.jp-NumberingIcon { + background-image: var(--jp-icon-numbering); +} +.jp-OfflineBoltIcon { + background-image: var(--jp-icon-offline-bolt); +} +.jp-PaletteIcon { + background-image: var(--jp-icon-palette); +} +.jp-PasteIcon { + background-image: var(--jp-icon-paste); +} +.jp-PdfIcon { + background-image: var(--jp-icon-pdf); +} +.jp-PythonIcon { + background-image: var(--jp-icon-python); +} +.jp-RKernelIcon { + background-image: var(--jp-icon-r-kernel); +} +.jp-ReactIcon { + background-image: var(--jp-icon-react); +} +.jp-RedoIcon { + background-image: var(--jp-icon-redo); +} +.jp-RefreshIcon { + background-image: var(--jp-icon-refresh); +} +.jp-RegexIcon { + background-image: var(--jp-icon-regex); +} +.jp-RunIcon { + background-image: var(--jp-icon-run); +} +.jp-RunningIcon { + background-image: var(--jp-icon-running); +} +.jp-SaveIcon { + background-image: var(--jp-icon-save); +} +.jp-SearchIcon { + background-image: var(--jp-icon-search); +} +.jp-SettingsIcon { + background-image: var(--jp-icon-settings); +} +.jp-SpreadsheetIcon { + background-image: var(--jp-icon-spreadsheet); +} +.jp-StopIcon { + background-image: var(--jp-icon-stop); +} +.jp-TabIcon { + background-image: var(--jp-icon-tab); +} +.jp-TableRowsIcon { + background-image: var(--jp-icon-table-rows); +} +.jp-TagIcon { + background-image: var(--jp-icon-tag); +} +.jp-TerminalIcon { + background-image: var(--jp-icon-terminal); +} +.jp-TextEditorIcon { + background-image: var(--jp-icon-text-editor); +} +.jp-TocIcon { + background-image: var(--jp-icon-toc); +} +.jp-TreeViewIcon { + background-image: var(--jp-icon-tree-view); +} +.jp-TrustedIcon { + background-image: var(--jp-icon-trusted); +} +.jp-UndoIcon { + background-image: var(--jp-icon-undo); +} +.jp-VegaIcon { + background-image: var(--jp-icon-vega); +} +.jp-YamlIcon { + background-image: var(--jp-icon-yaml); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * (DEPRECATED) Support for consuming icons as CSS background images + */ + +:root { + --jp-icon-search-white: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==); +} + +.jp-Icon, +.jp-MaterialIcon { + background-position: center; + background-repeat: no-repeat; + background-size: 16px; + min-width: 16px; + min-height: 16px; +} + +.jp-Icon-cover { + background-position: center; + background-repeat: no-repeat; + background-size: cover; +} + +/** + * (DEPRECATED) Support for specific CSS icon sizes + */ + +.jp-Icon-16 { + background-size: 16px; + min-width: 16px; + min-height: 16px; +} + +.jp-Icon-18 { + background-size: 18px; + min-width: 18px; + min-height: 18px; +} + +.jp-Icon-20 { + background-size: 20px; + min-width: 20px; + min-height: 20px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Support for icons as inline SVG HTMLElements + */ + +/* recolor the primary elements of an icon */ +.jp-icon0[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon1[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon2[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon3[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon4[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon0[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon1[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon2[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon3[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon4[stroke] { + stroke: var(--jp-inverse-layout-color4); +} +/* recolor the accent elements of an icon */ +.jp-icon-accent0[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-accent1[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-accent2[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-accent3[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-accent4[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-accent0[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-accent1[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-accent2[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-accent3[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-accent4[stroke] { + stroke: var(--jp-layout-color4); +} +/* set the color of an icon to transparent */ +.jp-icon-none[fill] { + fill: none; +} + +.jp-icon-none[stroke] { + stroke: none; +} +/* brand icon colors. Same for light and dark */ +.jp-icon-brand0[fill] { + fill: var(--jp-brand-color0); +} +.jp-icon-brand1[fill] { + fill: var(--jp-brand-color1); +} +.jp-icon-brand2[fill] { + fill: var(--jp-brand-color2); +} +.jp-icon-brand3[fill] { + fill: var(--jp-brand-color3); +} +.jp-icon-brand4[fill] { + fill: var(--jp-brand-color4); +} + +.jp-icon-brand0[stroke] { + stroke: var(--jp-brand-color0); +} +.jp-icon-brand1[stroke] { + stroke: var(--jp-brand-color1); +} +.jp-icon-brand2[stroke] { + stroke: var(--jp-brand-color2); +} +.jp-icon-brand3[stroke] { + stroke: var(--jp-brand-color3); +} +.jp-icon-brand4[stroke] { + stroke: var(--jp-brand-color4); +} +/* warn icon colors. Same for light and dark */ +.jp-icon-warn0[fill] { + fill: var(--jp-warn-color0); +} +.jp-icon-warn1[fill] { + fill: var(--jp-warn-color1); +} +.jp-icon-warn2[fill] { + fill: var(--jp-warn-color2); +} +.jp-icon-warn3[fill] { + fill: var(--jp-warn-color3); +} + +.jp-icon-warn0[stroke] { + stroke: var(--jp-warn-color0); +} +.jp-icon-warn1[stroke] { + stroke: var(--jp-warn-color1); +} +.jp-icon-warn2[stroke] { + stroke: var(--jp-warn-color2); +} +.jp-icon-warn3[stroke] { + stroke: var(--jp-warn-color3); +} +/* icon colors that contrast well with each other and most backgrounds */ +.jp-icon-contrast0[fill] { + fill: var(--jp-icon-contrast-color0); +} +.jp-icon-contrast1[fill] { + fill: var(--jp-icon-contrast-color1); +} +.jp-icon-contrast2[fill] { + fill: var(--jp-icon-contrast-color2); +} +.jp-icon-contrast3[fill] { + fill: var(--jp-icon-contrast-color3); +} + +.jp-icon-contrast0[stroke] { + stroke: var(--jp-icon-contrast-color0); +} +.jp-icon-contrast1[stroke] { + stroke: var(--jp-icon-contrast-color1); +} +.jp-icon-contrast2[stroke] { + stroke: var(--jp-icon-contrast-color2); +} +.jp-icon-contrast3[stroke] { + stroke: var(--jp-icon-contrast-color3); +} + +/* CSS for icons in selected items in the settings editor */ +#setting-editor .jp-PluginList .jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} +#setting-editor + .jp-PluginList + .jp-mod-selected + .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} + +/* CSS for icons in selected filebrowser listing items */ +.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} +.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} + +/* CSS for icons in selected tabs in the sidebar tab manager */ +#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable[fill] { + fill: #fff; +} + +#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} +#tab-manager + .lm-TabBar-tab.jp-mod-active + .jp-icon-hover + :hover + .jp-icon-selectable[fill] { + fill: var(--jp-brand-color1); +} + +#tab-manager + .lm-TabBar-tab.jp-mod-active + .jp-icon-hover + :hover + .jp-icon-selectable-inverse[fill] { + fill: #fff; +} + +/** + * TODO: come up with non css-hack solution for showing the busy icon on top + * of the close icon + * CSS for complex behavior of close icon of tabs in the sidebar tab manager + */ +#tab-manager + .lm-TabBar-tab.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon3[fill] { + fill: none; +} +#tab-manager + .lm-TabBar-tab.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: var(--jp-inverse-layout-color3); +} + +#tab-manager + .lm-TabBar-tab.jp-mod-dirty.jp-mod-active + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: #fff; +} + +/** +* TODO: come up with non css-hack solution for showing the busy icon on top +* of the close icon +* CSS for complex behavior of close icon of tabs in the main area tabbar +*/ +.lm-DockPanel-tabBar + .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon3[fill] { + fill: none; +} +.lm-DockPanel-tabBar + .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: var(--jp-inverse-layout-color3); +} + +/* CSS for icons in status bar */ +#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} + +#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} +/* special handling for splash icon CSS. While the theme CSS reloads during + splash, the splash icon can loose theming. To prevent that, we set a + default for its color variable */ +:root { + --jp-warn-color0: var(--md-orange-700); +} + +/* not sure what to do with this one, used in filebrowser listing */ +.jp-DragIcon { + margin-right: 4px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Support for alt colors for icons as inline SVG HTMLElements + */ + +/* alt recolor the primary elements of an icon */ +.jp-icon-alt .jp-icon0[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-alt .jp-icon1[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-alt .jp-icon2[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-alt .jp-icon3[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-alt .jp-icon4[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-alt .jp-icon0[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-alt .jp-icon1[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-alt .jp-icon2[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-alt .jp-icon3[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-alt .jp-icon4[stroke] { + stroke: var(--jp-layout-color4); +} + +/* alt recolor the accent elements of an icon */ +.jp-icon-alt .jp-icon-accent0[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-alt .jp-icon-accent1[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-alt .jp-icon-accent2[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-alt .jp-icon-accent3[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-alt .jp-icon-accent4[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-alt .jp-icon-accent0[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-alt .jp-icon-accent1[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-alt .jp-icon-accent2[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-alt .jp-icon-accent3[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-alt .jp-icon-accent4[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-icon-hoverShow:not(:hover) svg { + display: none !important; +} + +/** + * Support for hover colors for icons as inline SVG HTMLElements + */ + +/** + * regular colors + */ + +/* recolor the primary elements of an icon */ +.jp-icon-hover :hover .jp-icon0-hover[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-hover :hover .jp-icon1-hover[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-hover :hover .jp-icon2-hover[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-hover :hover .jp-icon3-hover[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-hover :hover .jp-icon4-hover[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-hover :hover .jp-icon0-hover[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-hover :hover .jp-icon1-hover[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-hover :hover .jp-icon2-hover[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-hover :hover .jp-icon3-hover[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-hover :hover .jp-icon4-hover[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/* recolor the accent elements of an icon */ +.jp-icon-hover :hover .jp-icon-accent0-hover[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-hover :hover .jp-icon-accent1-hover[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-hover :hover .jp-icon-accent2-hover[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-hover :hover .jp-icon-accent3-hover[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-hover :hover .jp-icon-accent4-hover[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] { + stroke: var(--jp-layout-color4); +} + +/* set the color of an icon to transparent */ +.jp-icon-hover :hover .jp-icon-none-hover[fill] { + fill: none; +} + +.jp-icon-hover :hover .jp-icon-none-hover[stroke] { + stroke: none; +} + +/** + * inverse colors + */ + +/* inverse recolor the primary elements of an icon */ +.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] { + stroke: var(--jp-layout-color4); +} + +/* inverse recolor the accent elements of an icon */ +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-switch { + display: flex; + align-items: center; + padding-left: 4px; + padding-right: 4px; + font-size: var(--jp-ui-font-size1); + background-color: transparent; + color: var(--jp-ui-font-color1); + border: none; + height: 20px; +} + +.jp-switch:hover { + background-color: var(--jp-layout-color2); +} + +.jp-switch-label { + margin-right: 5px; +} + +.jp-switch-track { + cursor: pointer; + background-color: var(--jp-border-color1); + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 34px; + height: 16px; + width: 35px; + position: relative; +} + +.jp-switch-track::before { + content: ''; + position: absolute; + height: 10px; + width: 10px; + margin: 3px; + left: 0px; + background-color: var(--jp-ui-inverse-font-color1); + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 50%; +} + +.jp-switch[aria-checked='true'] .jp-switch-track { + background-color: var(--jp-warn-color0); +} + +.jp-switch[aria-checked='true'] .jp-switch-track::before { + /* track width (35) - margins (3 + 3) - thumb width (10) */ + left: 19px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* Sibling imports */ + +/* Override Blueprint's _reset.scss styles */ +html { + box-sizing: unset; +} + +*, +*::before, +*::after { + box-sizing: unset; +} + +body { + color: unset; + font-family: var(--jp-ui-font-family); +} + +p { + margin-top: unset; + margin-bottom: unset; +} + +small { + font-size: unset; +} + +strong { + font-weight: unset; +} + +/* Override Blueprint's _typography.scss styles */ +a { + text-decoration: unset; + color: unset; +} +a:hover { + text-decoration: unset; + color: unset; +} + +/* Override Blueprint's _accessibility.scss styles */ +:focus { + outline: unset; + outline-offset: unset; + -moz-outline-radius: unset; +} + +/* Styles for ui-components */ +.jp-Button { + border-radius: var(--jp-border-radius); + padding: 0px 12px; + font-size: var(--jp-ui-font-size1); +} + +/* Use our own theme for hover styles */ +button.jp-Button.bp3-button.bp3-minimal:hover { + background-color: var(--jp-layout-color2); +} +.jp-Button.minimal { + color: unset !important; +} + +.jp-Button.jp-ToolbarButtonComponent { + text-transform: none; +} + +.jp-InputGroup input { + box-sizing: border-box; + border-radius: 0; + background-color: transparent; + color: var(--jp-ui-font-color0); + box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color); +} + +.jp-InputGroup input:focus { + box-shadow: inset 0 0 0 var(--jp-border-width) + var(--jp-input-active-box-shadow-color), + inset 0 0 0 3px var(--jp-input-active-box-shadow-color); +} + +.jp-InputGroup input::placeholder, +input::placeholder { + color: var(--jp-ui-font-color3); +} + +.jp-BPIcon { + display: inline-block; + vertical-align: middle; + margin: auto; +} + +/* Stop blueprint futzing with our icon fills */ +.bp3-icon.jp-BPIcon > svg:not([fill]) { + fill: var(--jp-inverse-layout-color3); +} + +.jp-InputGroupAction { + padding: 6px; +} + +.jp-HTMLSelect.jp-DefaultStyle select { + background-color: initial; + border: none; + border-radius: 0; + box-shadow: none; + color: var(--jp-ui-font-color0); + display: block; + font-size: var(--jp-ui-font-size1); + height: 24px; + line-height: 14px; + padding: 0 25px 0 10px; + text-align: left; + -moz-appearance: none; + -webkit-appearance: none; +} + +/* Use our own theme for hover and option styles */ +.jp-HTMLSelect.jp-DefaultStyle select:hover, +.jp-HTMLSelect.jp-DefaultStyle select > option { + background-color: var(--jp-layout-color2); + color: var(--jp-ui-font-color0); +} +select { + box-sizing: border-box; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Collapse { + display: flex; + flex-direction: column; + align-items: stretch; + border-top: 1px solid var(--jp-border-color2); + border-bottom: 1px solid var(--jp-border-color2); +} + +.jp-Collapse-header { + padding: 1px 12px; + color: var(--jp-ui-font-color1); + background-color: var(--jp-layout-color1); + font-size: var(--jp-ui-font-size2); +} + +.jp-Collapse-header:hover { + background-color: var(--jp-layout-color2); +} + +.jp-Collapse-contents { + padding: 0px 12px 0px 12px; + background-color: var(--jp-layout-color1); + color: var(--jp-ui-font-color1); + overflow: auto; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-commandpalette-search-height: 28px; +} + +/*----------------------------------------------------------------------------- +| Overall styles +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette { + padding-bottom: 0px; + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); +} + +/*----------------------------------------------------------------------------- +| Modal variant +|----------------------------------------------------------------------------*/ + +.jp-ModalCommandPalette { + position: absolute; + z-index: 10000; + top: 38px; + left: 30%; + margin: 0; + padding: 4px; + width: 40%; + box-shadow: var(--jp-elevation-z4); + border-radius: 4px; + background: var(--jp-layout-color0); +} + +.jp-ModalCommandPalette .lm-CommandPalette { + max-height: 40vh; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after { + display: none; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header { + display: none; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item { + margin-left: 4px; + margin-right: 4px; +} + +.jp-ModalCommandPalette + .lm-CommandPalette + .lm-CommandPalette-item.lm-mod-disabled { + display: none; +} + +/*----------------------------------------------------------------------------- +| Search +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette-search { + padding: 4px; + background-color: var(--jp-layout-color1); + z-index: 2; +} + +.lm-CommandPalette-wrapper { + overflow: overlay; + padding: 0px 9px; + background-color: var(--jp-input-active-background); + height: 30px; + box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color); +} + +.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper { + box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color), + inset 0 0 0 3px var(--jp-input-active-box-shadow-color); +} + +.lm-CommandPalette-wrapper::after { + content: ' '; + color: white; + background-color: var(--jp-brand-color1); + position: absolute; + top: 4px; + right: 4px; + height: 30px; + width: 10px; + padding: 0px 10px; + background-image: var(--jp-icon-search-white); + background-size: 20px; + background-repeat: no-repeat; + background-position: center; +} + +.lm-CommandPalette-input { + background: transparent; + width: calc(100% - 18px); + float: left; + border: none; + outline: none; + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + line-height: var(--jp-private-commandpalette-search-height); +} + +.lm-CommandPalette-input::-webkit-input-placeholder, +.lm-CommandPalette-input::-moz-placeholder, +.lm-CommandPalette-input:-ms-input-placeholder { + color: var(--jp-ui-font-color3); + font-size: var(--jp-ui-font-size1); +} + +/*----------------------------------------------------------------------------- +| Results +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette-header:first-child { + margin-top: 0px; +} + +.lm-CommandPalette-header { + border-bottom: solid var(--jp-border-width) var(--jp-border-color2); + color: var(--jp-ui-font-color1); + cursor: pointer; + display: flex; + font-size: var(--jp-ui-font-size0); + font-weight: 600; + letter-spacing: 1px; + margin-top: 8px; + padding: 8px 0 8px 12px; + text-transform: uppercase; +} + +.lm-CommandPalette-header.lm-mod-active { + background: var(--jp-layout-color2); +} + +.lm-CommandPalette-header > mark { + background-color: transparent; + font-weight: bold; + color: var(--jp-ui-font-color1); +} + +.lm-CommandPalette-item { + padding: 4px 12px 4px 4px; + color: var(--jp-ui-font-color1); + font-size: var(--jp-ui-font-size1); + font-weight: 400; + display: flex; +} + +.lm-CommandPalette-item.lm-mod-disabled { + color: var(--jp-ui-font-color3); +} + +.lm-CommandPalette-item.lm-mod-active { + background: var(--jp-layout-color3); +} + +.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) { + background: var(--jp-layout-color4); +} + +.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) { + background: var(--jp-layout-color2); +} + +.lm-CommandPalette-itemContent { + overflow: hidden; +} + +.lm-CommandPalette-itemLabel > mark { + color: var(--jp-ui-font-color0); + background-color: transparent; + font-weight: bold; +} + +.lm-CommandPalette-item.lm-mod-disabled mark { + color: var(--jp-ui-font-color3); +} + +.lm-CommandPalette-item .lm-CommandPalette-itemIcon { + margin: 0 4px 0 0; + position: relative; + width: 16px; + top: 2px; + flex: 0 0 auto; +} + +.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon { + opacity: 0.4; +} + +.lm-CommandPalette-item .lm-CommandPalette-itemShortcut { + flex: 0 0 auto; +} + +.lm-CommandPalette-itemCaption { + display: none; +} + +.lm-CommandPalette-content { + background-color: var(--jp-layout-color1); +} + +.lm-CommandPalette-content:empty:after { + content: 'No results'; + margin: auto; + margin-top: 20px; + width: 100px; + display: block; + font-size: var(--jp-ui-font-size2); + font-family: var(--jp-ui-font-family); + font-weight: lighter; +} + +.lm-CommandPalette-emptyMessage { + text-align: center; + margin-top: 24px; + line-height: 1.32; + padding: 0px 8px; + color: var(--jp-content-font-color3); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Dialog { + position: absolute; + z-index: 10000; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + top: 0px; + left: 0px; + margin: 0; + padding: 0; + width: 100%; + height: 100%; + background: var(--jp-dialog-background); +} + +.jp-Dialog-content { + display: flex; + flex-direction: column; + margin-left: auto; + margin-right: auto; + background: var(--jp-layout-color1); + padding: 24px; + padding-bottom: 12px; + min-width: 300px; + min-height: 150px; + max-width: 1000px; + max-height: 500px; + box-sizing: border-box; + box-shadow: var(--jp-elevation-z20); + word-wrap: break-word; + border-radius: var(--jp-border-radius); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color1); + resize: both; +} + +.jp-Dialog-button { + overflow: visible; +} + +button.jp-Dialog-button:focus { + outline: 1px solid var(--jp-brand-color1); + outline-offset: 4px; + -moz-outline-radius: 0px; +} + +button.jp-Dialog-button:focus::-moz-focus-inner { + border: 0; +} + +button.jp-Dialog-close-button { + padding: 0; + height: 100%; + min-width: unset; + min-height: unset; +} + +.jp-Dialog-header { + display: flex; + justify-content: space-between; + flex: 0 0 auto; + padding-bottom: 12px; + font-size: var(--jp-ui-font-size3); + font-weight: 400; + color: var(--jp-ui-font-color0); +} + +.jp-Dialog-body { + display: flex; + flex-direction: column; + flex: 1 1 auto; + font-size: var(--jp-ui-font-size1); + background: var(--jp-layout-color1); + overflow: auto; +} + +.jp-Dialog-footer { + display: flex; + flex-direction: row; + justify-content: flex-end; + flex: 0 0 auto; + margin-left: -12px; + margin-right: -12px; + padding: 12px; +} + +.jp-Dialog-title { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.jp-Dialog-body > .jp-select-wrapper { + width: 100%; +} + +.jp-Dialog-body > button { + padding: 0px 16px; +} + +.jp-Dialog-body > label { + line-height: 1.4; + color: var(--jp-ui-font-color0); +} + +.jp-Dialog-button.jp-mod-styled:not(:last-child) { + margin-right: 12px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-HoverBox { + position: fixed; +} + +.jp-HoverBox.jp-mod-outofview { + display: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-IFrame { + width: 100%; + height: 100%; +} + +.jp-IFrame > iframe { + border: none; +} + +/* +When drag events occur, `p-mod-override-cursor` is added to the body. +Because iframes steal all cursor events, the following two rules are necessary +to suppress pointer events while resize drags are occurring. There may be a +better solution to this problem. +*/ +body.lm-mod-override-cursor .jp-IFrame { + position: relative; +} + +body.lm-mod-override-cursor .jp-IFrame:before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-MainAreaWidget > :focus { + outline: none; +} + +/** + * google-material-color v1.2.6 + * https://github.com/danlevan/google-material-color + */ +:root { + --md-red-50: #ffebee; + --md-red-100: #ffcdd2; + --md-red-200: #ef9a9a; + --md-red-300: #e57373; + --md-red-400: #ef5350; + --md-red-500: #f44336; + --md-red-600: #e53935; + --md-red-700: #d32f2f; + --md-red-800: #c62828; + --md-red-900: #b71c1c; + --md-red-A100: #ff8a80; + --md-red-A200: #ff5252; + --md-red-A400: #ff1744; + --md-red-A700: #d50000; + + --md-pink-50: #fce4ec; + --md-pink-100: #f8bbd0; + --md-pink-200: #f48fb1; + --md-pink-300: #f06292; + --md-pink-400: #ec407a; + --md-pink-500: #e91e63; + --md-pink-600: #d81b60; + --md-pink-700: #c2185b; + --md-pink-800: #ad1457; + --md-pink-900: #880e4f; + --md-pink-A100: #ff80ab; + --md-pink-A200: #ff4081; + --md-pink-A400: #f50057; + --md-pink-A700: #c51162; + + --md-purple-50: #f3e5f5; + --md-purple-100: #e1bee7; + --md-purple-200: #ce93d8; + --md-purple-300: #ba68c8; + --md-purple-400: #ab47bc; + --md-purple-500: #9c27b0; + --md-purple-600: #8e24aa; + --md-purple-700: #7b1fa2; + --md-purple-800: #6a1b9a; + --md-purple-900: #4a148c; + --md-purple-A100: #ea80fc; + --md-purple-A200: #e040fb; + --md-purple-A400: #d500f9; + --md-purple-A700: #aa00ff; + + --md-deep-purple-50: #ede7f6; + --md-deep-purple-100: #d1c4e9; + --md-deep-purple-200: #b39ddb; + --md-deep-purple-300: #9575cd; + --md-deep-purple-400: #7e57c2; + --md-deep-purple-500: #673ab7; + --md-deep-purple-600: #5e35b1; + --md-deep-purple-700: #512da8; + --md-deep-purple-800: #4527a0; + --md-deep-purple-900: #311b92; + --md-deep-purple-A100: #b388ff; + --md-deep-purple-A200: #7c4dff; + --md-deep-purple-A400: #651fff; + --md-deep-purple-A700: #6200ea; + + --md-indigo-50: #e8eaf6; + --md-indigo-100: #c5cae9; + --md-indigo-200: #9fa8da; + --md-indigo-300: #7986cb; + --md-indigo-400: #5c6bc0; + --md-indigo-500: #3f51b5; + --md-indigo-600: #3949ab; + --md-indigo-700: #303f9f; + --md-indigo-800: #283593; + --md-indigo-900: #1a237e; + --md-indigo-A100: #8c9eff; + --md-indigo-A200: #536dfe; + --md-indigo-A400: #3d5afe; + --md-indigo-A700: #304ffe; + + --md-blue-50: #e3f2fd; + --md-blue-100: #bbdefb; + --md-blue-200: #90caf9; + --md-blue-300: #64b5f6; + --md-blue-400: #42a5f5; + --md-blue-500: #2196f3; + --md-blue-600: #1e88e5; + --md-blue-700: #1976d2; + --md-blue-800: #1565c0; + --md-blue-900: #0d47a1; + --md-blue-A100: #82b1ff; + --md-blue-A200: #448aff; + --md-blue-A400: #2979ff; + --md-blue-A700: #2962ff; + + --md-light-blue-50: #e1f5fe; + --md-light-blue-100: #b3e5fc; + --md-light-blue-200: #81d4fa; + --md-light-blue-300: #4fc3f7; + --md-light-blue-400: #29b6f6; + --md-light-blue-500: #03a9f4; + --md-light-blue-600: #039be5; + --md-light-blue-700: #0288d1; + --md-light-blue-800: #0277bd; + --md-light-blue-900: #01579b; + --md-light-blue-A100: #80d8ff; + --md-light-blue-A200: #40c4ff; + --md-light-blue-A400: #00b0ff; + --md-light-blue-A700: #0091ea; + + --md-cyan-50: #e0f7fa; + --md-cyan-100: #b2ebf2; + --md-cyan-200: #80deea; + --md-cyan-300: #4dd0e1; + --md-cyan-400: #26c6da; + --md-cyan-500: #00bcd4; + --md-cyan-600: #00acc1; + --md-cyan-700: #0097a7; + --md-cyan-800: #00838f; + --md-cyan-900: #006064; + --md-cyan-A100: #84ffff; + --md-cyan-A200: #18ffff; + --md-cyan-A400: #00e5ff; + --md-cyan-A700: #00b8d4; + + --md-teal-50: #e0f2f1; + --md-teal-100: #b2dfdb; + --md-teal-200: #80cbc4; + --md-teal-300: #4db6ac; + --md-teal-400: #26a69a; + --md-teal-500: #009688; + --md-teal-600: #00897b; + --md-teal-700: #00796b; + --md-teal-800: #00695c; + --md-teal-900: #004d40; + --md-teal-A100: #a7ffeb; + --md-teal-A200: #64ffda; + --md-teal-A400: #1de9b6; + --md-teal-A700: #00bfa5; + + --md-green-50: #e8f5e9; + --md-green-100: #c8e6c9; + --md-green-200: #a5d6a7; + --md-green-300: #81c784; + --md-green-400: #66bb6a; + --md-green-500: #4caf50; + --md-green-600: #43a047; + --md-green-700: #388e3c; + --md-green-800: #2e7d32; + --md-green-900: #1b5e20; + --md-green-A100: #b9f6ca; + --md-green-A200: #69f0ae; + --md-green-A400: #00e676; + --md-green-A700: #00c853; + + --md-light-green-50: #f1f8e9; + --md-light-green-100: #dcedc8; + --md-light-green-200: #c5e1a5; + --md-light-green-300: #aed581; + --md-light-green-400: #9ccc65; + --md-light-green-500: #8bc34a; + --md-light-green-600: #7cb342; + --md-light-green-700: #689f38; + --md-light-green-800: #558b2f; + --md-light-green-900: #33691e; + --md-light-green-A100: #ccff90; + --md-light-green-A200: #b2ff59; + --md-light-green-A400: #76ff03; + --md-light-green-A700: #64dd17; + + --md-lime-50: #f9fbe7; + --md-lime-100: #f0f4c3; + --md-lime-200: #e6ee9c; + --md-lime-300: #dce775; + --md-lime-400: #d4e157; + --md-lime-500: #cddc39; + --md-lime-600: #c0ca33; + --md-lime-700: #afb42b; + --md-lime-800: #9e9d24; + --md-lime-900: #827717; + --md-lime-A100: #f4ff81; + --md-lime-A200: #eeff41; + --md-lime-A400: #c6ff00; + --md-lime-A700: #aeea00; + + --md-yellow-50: #fffde7; + --md-yellow-100: #fff9c4; + --md-yellow-200: #fff59d; + --md-yellow-300: #fff176; + --md-yellow-400: #ffee58; + --md-yellow-500: #ffeb3b; + --md-yellow-600: #fdd835; + --md-yellow-700: #fbc02d; + --md-yellow-800: #f9a825; + --md-yellow-900: #f57f17; + --md-yellow-A100: #ffff8d; + --md-yellow-A200: #ffff00; + --md-yellow-A400: #ffea00; + --md-yellow-A700: #ffd600; + + --md-amber-50: #fff8e1; + --md-amber-100: #ffecb3; + --md-amber-200: #ffe082; + --md-amber-300: #ffd54f; + --md-amber-400: #ffca28; + --md-amber-500: #ffc107; + --md-amber-600: #ffb300; + --md-amber-700: #ffa000; + --md-amber-800: #ff8f00; + --md-amber-900: #ff6f00; + --md-amber-A100: #ffe57f; + --md-amber-A200: #ffd740; + --md-amber-A400: #ffc400; + --md-amber-A700: #ffab00; + + --md-orange-50: #fff3e0; + --md-orange-100: #ffe0b2; + --md-orange-200: #ffcc80; + --md-orange-300: #ffb74d; + --md-orange-400: #ffa726; + --md-orange-500: #ff9800; + --md-orange-600: #fb8c00; + --md-orange-700: #f57c00; + --md-orange-800: #ef6c00; + --md-orange-900: #e65100; + --md-orange-A100: #ffd180; + --md-orange-A200: #ffab40; + --md-orange-A400: #ff9100; + --md-orange-A700: #ff6d00; + + --md-deep-orange-50: #fbe9e7; + --md-deep-orange-100: #ffccbc; + --md-deep-orange-200: #ffab91; + --md-deep-orange-300: #ff8a65; + --md-deep-orange-400: #ff7043; + --md-deep-orange-500: #ff5722; + --md-deep-orange-600: #f4511e; + --md-deep-orange-700: #e64a19; + --md-deep-orange-800: #d84315; + --md-deep-orange-900: #bf360c; + --md-deep-orange-A100: #ff9e80; + --md-deep-orange-A200: #ff6e40; + --md-deep-orange-A400: #ff3d00; + --md-deep-orange-A700: #dd2c00; + + --md-brown-50: #efebe9; + --md-brown-100: #d7ccc8; + --md-brown-200: #bcaaa4; + --md-brown-300: #a1887f; + --md-brown-400: #8d6e63; + --md-brown-500: #795548; + --md-brown-600: #6d4c41; + --md-brown-700: #5d4037; + --md-brown-800: #4e342e; + --md-brown-900: #3e2723; + + --md-grey-50: #fafafa; + --md-grey-100: #f5f5f5; + --md-grey-200: #eeeeee; + --md-grey-300: #e0e0e0; + --md-grey-400: #bdbdbd; + --md-grey-500: #9e9e9e; + --md-grey-600: #757575; + --md-grey-700: #616161; + --md-grey-800: #424242; + --md-grey-900: #212121; + + --md-blue-grey-50: #eceff1; + --md-blue-grey-100: #cfd8dc; + --md-blue-grey-200: #b0bec5; + --md-blue-grey-300: #90a4ae; + --md-blue-grey-400: #78909c; + --md-blue-grey-500: #607d8b; + --md-blue-grey-600: #546e7a; + --md-blue-grey-700: #455a64; + --md-blue-grey-800: #37474f; + --md-blue-grey-900: #263238; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Spinner { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + z-index: 10; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: var(--jp-layout-color0); + outline: none; +} + +.jp-SpinnerContent { + font-size: 10px; + margin: 50px auto; + text-indent: -9999em; + width: 3em; + height: 3em; + border-radius: 50%; + background: var(--jp-brand-color3); + background: linear-gradient( + to right, + #f37626 10%, + rgba(255, 255, 255, 0) 42% + ); + position: relative; + animation: load3 1s infinite linear, fadeIn 1s; +} + +.jp-SpinnerContent:before { + width: 50%; + height: 50%; + background: #f37626; + border-radius: 100% 0 0 0; + position: absolute; + top: 0; + left: 0; + content: ''; +} + +.jp-SpinnerContent:after { + background: var(--jp-layout-color0); + width: 75%; + height: 75%; + border-radius: 50%; + content: ''; + margin: auto; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes load3 { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +button.jp-mod-styled { + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + border: none; + box-sizing: border-box; + text-align: center; + line-height: 32px; + height: 32px; + padding: 0px 12px; + letter-spacing: 0.8px; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +input.jp-mod-styled { + background: var(--jp-input-background); + height: 28px; + box-sizing: border-box; + border: var(--jp-border-width) solid var(--jp-border-color1); + padding-left: 7px; + padding-right: 7px; + font-size: var(--jp-ui-font-size2); + color: var(--jp-ui-font-color0); + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +input.jp-mod-styled:focus { + border: var(--jp-border-width) solid var(--md-blue-500); + box-shadow: inset 0 0 4px var(--md-blue-300); +} + +.jp-select-wrapper { + display: flex; + position: relative; + flex-direction: column; + padding: 1px; + background-color: var(--jp-layout-color1); + height: 28px; + box-sizing: border-box; + margin-bottom: 12px; +} + +.jp-select-wrapper.jp-mod-focused select.jp-mod-styled { + border: var(--jp-border-width) solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); + background-color: var(--jp-input-active-background); +} + +select.jp-mod-styled:hover { + background-color: var(--jp-layout-color1); + cursor: pointer; + color: var(--jp-ui-font-color0); + background-color: var(--jp-input-hover-background); + box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.5); +} + +select.jp-mod-styled { + flex: 1 1 auto; + height: 32px; + width: 100%; + font-size: var(--jp-ui-font-size2); + background: var(--jp-input-background); + color: var(--jp-ui-font-color0); + padding: 0 25px 0 8px; + border: var(--jp-border-width) solid var(--jp-input-border-color); + border-radius: 0px; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-toolbar-height: calc( + 28px + var(--jp-border-width) + ); /* leave 28px for content */ +} + +.jp-Toolbar { + color: var(--jp-ui-font-color1); + flex: 0 0 auto; + display: flex; + flex-direction: row; + border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color); + box-shadow: var(--jp-toolbar-box-shadow); + background: var(--jp-toolbar-background); + min-height: var(--jp-toolbar-micro-height); + padding: 2px; + z-index: 1; + overflow-x: hidden; +} + +.jp-Toolbar:hover { + overflow-x: auto; +} + +/* Toolbar items */ + +.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer { + flex-grow: 1; + flex-shrink: 1; +} + +.jp-Toolbar-item.jp-Toolbar-kernelStatus { + display: inline-block; + width: 32px; + background-repeat: no-repeat; + background-position: center; + background-size: 16px; +} + +.jp-Toolbar > .jp-Toolbar-item { + flex: 0 0 auto; + display: flex; + padding-left: 1px; + padding-right: 1px; + font-size: var(--jp-ui-font-size1); + line-height: var(--jp-private-toolbar-height); + height: 100%; +} + +/* Toolbar buttons */ + +/* This is the div we use to wrap the react component into a Widget */ +div.jp-ToolbarButton { + color: transparent; + border: none; + box-sizing: border-box; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + padding: 0px; + margin: 0px; +} + +button.jp-ToolbarButtonComponent { + background: var(--jp-layout-color1); + border: none; + box-sizing: border-box; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + padding: 0px 6px; + margin: 0px; + height: 24px; + border-radius: var(--jp-border-radius); + display: flex; + align-items: center; + text-align: center; + font-size: 14px; + min-width: unset; + min-height: unset; +} + +button.jp-ToolbarButtonComponent:disabled { + opacity: 0.4; +} + +button.jp-ToolbarButtonComponent span { + padding: 0px; + flex: 0 0 auto; +} + +button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label { + font-size: var(--jp-ui-font-size1); + line-height: 100%; + padding-left: 2px; + color: var(--jp-ui-font-color1); +} + +#jp-main-dock-panel[data-mode='single-document'] + .jp-MainAreaWidget + > .jp-Toolbar.jp-Toolbar-micro { + padding: 0; + min-height: 0; +} + +#jp-main-dock-panel[data-mode='single-document'] + .jp-MainAreaWidget + > .jp-Toolbar { + border: none; + box-shadow: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ body.p-mod-override-cursor *, /* </DEPRECATED> */ +body.lm-mod-override-cursor * { + cursor: inherit !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-JSONEditor { + display: flex; + flex-direction: column; + width: 100%; +} + +.jp-JSONEditor-host { + flex: 1 1 auto; + border: var(--jp-border-width) solid var(--jp-input-border-color); + border-radius: 0px; + background: var(--jp-layout-color0); + min-height: 50px; + padding: 1px; +} + +.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host { + border-color: red; + outline-color: red; +} + +.jp-JSONEditor-header { + display: flex; + flex: 1 0 auto; + padding: 0 0 0 12px; +} + +.jp-JSONEditor-header label { + flex: 0 0 auto; +} + +.jp-JSONEditor-commitButton { + height: 16px; + width: 16px; + background-size: 18px; + background-repeat: no-repeat; + background-position: center; +} + +.jp-JSONEditor-host.jp-mod-focused { + background-color: var(--jp-input-active-background); + border: 1px solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); +} + +.jp-Editor.jp-mod-dropTarget { + border: var(--jp-border-width) solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); +} + +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; + direction: ltr; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} +.cm-fat-cursor-mark { + background-color: rgba(20, 255, 20, 0.5); + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; +} +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: 0; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 50px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -50px; margin-right: -50px; + padding-bottom: 50px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; + border-right: 50px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -50px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre.CodeMirror-line, +.CodeMirror-wrap pre.CodeMirror-line-like { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + padding: 0.1px; /* Force widget margins to stay inside of the container */ +} + +.CodeMirror-widget {} + +.CodeMirror-rtl pre { direction: rtl; } + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } + +.CodeMirror-dialog { + position: absolute; + left: 0; right: 0; + background: inherit; + z-index: 15; + padding: .1em .8em; + overflow: hidden; + color: inherit; +} + +.CodeMirror-dialog-top { + border-bottom: 1px solid #eee; + top: 0; +} + +.CodeMirror-dialog-bottom { + border-top: 1px solid #eee; + bottom: 0; +} + +.CodeMirror-dialog input { + border: none; + outline: none; + background: transparent; + width: 20em; + color: inherit; + font-family: monospace; +} + +.CodeMirror-dialog button { + font-size: 70%; +} + +.CodeMirror-foldmarker { + color: blue; + text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; + font-family: arial; + line-height: .3; + cursor: pointer; +} +.CodeMirror-foldgutter { + width: .7em; +} +.CodeMirror-foldgutter-open, +.CodeMirror-foldgutter-folded { + cursor: pointer; +} +.CodeMirror-foldgutter-open:after { + content: "\25BE"; +} +.CodeMirror-foldgutter-folded:after { + content: "\25B8"; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.CodeMirror { + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + font-family: var(--jp-code-font-family); + border: 0; + border-radius: 0; + height: auto; + /* Changed to auto to autogrow */ +} + +.CodeMirror pre { + padding: 0 var(--jp-code-padding); +} + +.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-dialog { + background-color: var(--jp-layout-color0); + color: var(--jp-content-font-color1); +} + +/* This causes https://github.com/jupyter/jupyterlab/issues/522 */ +/* May not cause it not because we changed it! */ +.CodeMirror-lines { + padding: var(--jp-code-padding) 0; +} + +.CodeMirror-linenumber { + padding: 0 8px; +} + +.jp-CodeMirrorEditor { + cursor: text; +} + +.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color); +} + +/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */ +@media screen and (min-width: 2138px) and (max-width: 4319px) { + .jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width1) solid + var(--jp-editor-cursor-color); + } +} + +/* When zoomed out less than 33% */ +@media screen and (min-width: 4320px) { + .jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width2) solid + var(--jp-editor-cursor-color); + } +} + +.CodeMirror.jp-mod-readOnly .CodeMirror-cursor { + display: none; +} + +.CodeMirror-gutters { + border-right: 1px solid var(--jp-border-color2); + background-color: var(--jp-layout-color0); +} + +.jp-CollaboratorCursor { + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: none; + border-bottom: 3px solid; + background-clip: content-box; + margin-left: -5px; + margin-right: -5px; +} + +.CodeMirror-selectedtext.cm-searching { + background-color: var(--jp-search-selected-match-background-color) !important; + color: var(--jp-search-selected-match-color) !important; +} + +.cm-searching { + background-color: var( + --jp-search-unselected-match-background-color + ) !important; + color: var(--jp-search-unselected-match-color) !important; +} + +.CodeMirror-focused .CodeMirror-selected { + background-color: var(--jp-editor-selected-focused-background); +} + +.CodeMirror-selected { + background-color: var(--jp-editor-selected-background); +} + +.jp-CollaboratorCursor-hover { + position: absolute; + z-index: 1; + transform: translateX(-50%); + color: white; + border-radius: 3px; + padding-left: 4px; + padding-right: 4px; + padding-top: 1px; + padding-bottom: 1px; + text-align: center; + font-size: var(--jp-ui-font-size1); + white-space: nowrap; +} + +.jp-CodeMirror-ruler { + border-left: 1px dashed var(--jp-border-color2); +} + +/** + * Here is our jupyter theme for CodeMirror syntax highlighting + * This is used in our marked.js syntax highlighting and CodeMirror itself + * The string "jupyter" is set in ../codemirror/widget.DEFAULT_CODEMIRROR_THEME + * This came from the classic notebook, which came form highlight.js/GitHub + */ + +/** + * CodeMirror themes are handling the background/color in this way. This works + * fine for CodeMirror editors outside the notebook, but the notebook styles + * these things differently. + */ +.CodeMirror.cm-s-jupyter { + background: var(--jp-layout-color0); + color: var(--jp-content-font-color1); +} + +/* In the notebook, we want this styling to be handled by its container */ +.jp-CodeConsole .CodeMirror.cm-s-jupyter, +.jp-Notebook .CodeMirror.cm-s-jupyter { + background: transparent; +} + +.cm-s-jupyter .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color); +} +.cm-s-jupyter span.cm-keyword { + color: var(--jp-mirror-editor-keyword-color); + font-weight: bold; +} +.cm-s-jupyter span.cm-atom { + color: var(--jp-mirror-editor-atom-color); +} +.cm-s-jupyter span.cm-number { + color: var(--jp-mirror-editor-number-color); +} +.cm-s-jupyter span.cm-def { + color: var(--jp-mirror-editor-def-color); +} +.cm-s-jupyter span.cm-variable { + color: var(--jp-mirror-editor-variable-color); +} +.cm-s-jupyter span.cm-variable-2 { + color: var(--jp-mirror-editor-variable-2-color); +} +.cm-s-jupyter span.cm-variable-3 { + color: var(--jp-mirror-editor-variable-3-color); +} +.cm-s-jupyter span.cm-punctuation { + color: var(--jp-mirror-editor-punctuation-color); +} +.cm-s-jupyter span.cm-property { + color: var(--jp-mirror-editor-property-color); +} +.cm-s-jupyter span.cm-operator { + color: var(--jp-mirror-editor-operator-color); + font-weight: bold; +} +.cm-s-jupyter span.cm-comment { + color: var(--jp-mirror-editor-comment-color); + font-style: italic; +} +.cm-s-jupyter span.cm-string { + color: var(--jp-mirror-editor-string-color); +} +.cm-s-jupyter span.cm-string-2 { + color: var(--jp-mirror-editor-string-2-color); +} +.cm-s-jupyter span.cm-meta { + color: var(--jp-mirror-editor-meta-color); +} +.cm-s-jupyter span.cm-qualifier { + color: var(--jp-mirror-editor-qualifier-color); +} +.cm-s-jupyter span.cm-builtin { + color: var(--jp-mirror-editor-builtin-color); +} +.cm-s-jupyter span.cm-bracket { + color: var(--jp-mirror-editor-bracket-color); +} +.cm-s-jupyter span.cm-tag { + color: var(--jp-mirror-editor-tag-color); +} +.cm-s-jupyter span.cm-attribute { + color: var(--jp-mirror-editor-attribute-color); +} +.cm-s-jupyter span.cm-header { + color: var(--jp-mirror-editor-header-color); +} +.cm-s-jupyter span.cm-quote { + color: var(--jp-mirror-editor-quote-color); +} +.cm-s-jupyter span.cm-link { + color: var(--jp-mirror-editor-link-color); +} +.cm-s-jupyter span.cm-error { + color: var(--jp-mirror-editor-error-color); +} +.cm-s-jupyter span.cm-hr { + color: #999; +} + +.cm-s-jupyter span.cm-tab { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=); + background-position: right; + background-repeat: no-repeat; +} + +.cm-s-jupyter .CodeMirror-activeline-background, +.cm-s-jupyter .CodeMirror-gutter { + background-color: var(--jp-layout-color2); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| RenderedText +|----------------------------------------------------------------------------*/ + +:root { + /* This is the padding value to fill the gaps between lines containing spans with background color. */ + --jp-private-code-span-padding: calc( + (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2 + ); +} + +.jp-RenderedText { + text-align: left; + padding-left: var(--jp-code-padding); + line-height: var(--jp-code-line-height); + font-family: var(--jp-code-font-family); +} + +.jp-RenderedText pre, +.jp-RenderedJavaScript pre, +.jp-RenderedHTMLCommon pre { + color: var(--jp-content-font-color1); + font-size: var(--jp-code-font-size); + border: none; + margin: 0px; + padding: 0px; +} + +.jp-RenderedText pre a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} +.jp-RenderedText pre a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} +.jp-RenderedText pre a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* console foregrounds and backgrounds */ +.jp-RenderedText pre .ansi-black-fg { + color: #3e424d; +} +.jp-RenderedText pre .ansi-red-fg { + color: #e75c58; +} +.jp-RenderedText pre .ansi-green-fg { + color: #00a250; +} +.jp-RenderedText pre .ansi-yellow-fg { + color: #ddb62b; +} +.jp-RenderedText pre .ansi-blue-fg { + color: #208ffb; +} +.jp-RenderedText pre .ansi-magenta-fg { + color: #d160c4; +} +.jp-RenderedText pre .ansi-cyan-fg { + color: #60c6c8; +} +.jp-RenderedText pre .ansi-white-fg { + color: #c5c1b4; +} + +.jp-RenderedText pre .ansi-black-bg { + background-color: #3e424d; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-red-bg { + background-color: #e75c58; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-green-bg { + background-color: #00a250; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-yellow-bg { + background-color: #ddb62b; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-blue-bg { + background-color: #208ffb; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-magenta-bg { + background-color: #d160c4; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-cyan-bg { + background-color: #60c6c8; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-white-bg { + background-color: #c5c1b4; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-black-intense-fg { + color: #282c36; +} +.jp-RenderedText pre .ansi-red-intense-fg { + color: #b22b31; +} +.jp-RenderedText pre .ansi-green-intense-fg { + color: #007427; +} +.jp-RenderedText pre .ansi-yellow-intense-fg { + color: #b27d12; +} +.jp-RenderedText pre .ansi-blue-intense-fg { + color: #0065ca; +} +.jp-RenderedText pre .ansi-magenta-intense-fg { + color: #a03196; +} +.jp-RenderedText pre .ansi-cyan-intense-fg { + color: #258f8f; +} +.jp-RenderedText pre .ansi-white-intense-fg { + color: #a1a6b2; +} + +.jp-RenderedText pre .ansi-black-intense-bg { + background-color: #282c36; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-red-intense-bg { + background-color: #b22b31; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-green-intense-bg { + background-color: #007427; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-yellow-intense-bg { + background-color: #b27d12; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-blue-intense-bg { + background-color: #0065ca; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-magenta-intense-bg { + background-color: #a03196; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-cyan-intense-bg { + background-color: #258f8f; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-white-intense-bg { + background-color: #a1a6b2; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-default-inverse-fg { + color: var(--jp-ui-inverse-font-color0); +} +.jp-RenderedText pre .ansi-default-inverse-bg { + background-color: var(--jp-inverse-layout-color0); + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-bold { + font-weight: bold; +} +.jp-RenderedText pre .ansi-underline { + text-decoration: underline; +} + +.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] { + background: var(--jp-rendermime-error-background); + padding-top: var(--jp-code-padding); +} + +/*----------------------------------------------------------------------------- +| RenderedLatex +|----------------------------------------------------------------------------*/ + +.jp-RenderedLatex { + color: var(--jp-content-font-color1); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); +} + +/* Left-justify outputs.*/ +.jp-OutputArea-output.jp-RenderedLatex { + padding: var(--jp-code-padding); + text-align: left; +} + +/*----------------------------------------------------------------------------- +| RenderedHTML +|----------------------------------------------------------------------------*/ + +.jp-RenderedHTMLCommon { + color: var(--jp-content-font-color1); + font-family: var(--jp-content-font-family); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); + /* Give a bit more R padding on Markdown text to keep line lengths reasonable */ + padding-right: 20px; +} + +.jp-RenderedHTMLCommon em { + font-style: italic; +} + +.jp-RenderedHTMLCommon strong { + font-weight: bold; +} + +.jp-RenderedHTMLCommon u { + text-decoration: underline; +} + +.jp-RenderedHTMLCommon a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* Headings */ + +.jp-RenderedHTMLCommon h1, +.jp-RenderedHTMLCommon h2, +.jp-RenderedHTMLCommon h3, +.jp-RenderedHTMLCommon h4, +.jp-RenderedHTMLCommon h5, +.jp-RenderedHTMLCommon h6 { + line-height: var(--jp-content-heading-line-height); + font-weight: var(--jp-content-heading-font-weight); + font-style: normal; + margin: var(--jp-content-heading-margin-top) 0 + var(--jp-content-heading-margin-bottom) 0; +} + +.jp-RenderedHTMLCommon h1:first-child, +.jp-RenderedHTMLCommon h2:first-child, +.jp-RenderedHTMLCommon h3:first-child, +.jp-RenderedHTMLCommon h4:first-child, +.jp-RenderedHTMLCommon h5:first-child, +.jp-RenderedHTMLCommon h6:first-child { + margin-top: calc(0.5 * var(--jp-content-heading-margin-top)); +} + +.jp-RenderedHTMLCommon h1:last-child, +.jp-RenderedHTMLCommon h2:last-child, +.jp-RenderedHTMLCommon h3:last-child, +.jp-RenderedHTMLCommon h4:last-child, +.jp-RenderedHTMLCommon h5:last-child, +.jp-RenderedHTMLCommon h6:last-child { + margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom)); +} + +.jp-RenderedHTMLCommon h1 { + font-size: var(--jp-content-font-size5); +} + +.jp-RenderedHTMLCommon h2 { + font-size: var(--jp-content-font-size4); +} + +.jp-RenderedHTMLCommon h3 { + font-size: var(--jp-content-font-size3); +} + +.jp-RenderedHTMLCommon h4 { + font-size: var(--jp-content-font-size2); +} + +.jp-RenderedHTMLCommon h5 { + font-size: var(--jp-content-font-size1); +} + +.jp-RenderedHTMLCommon h6 { + font-size: var(--jp-content-font-size0); +} + +/* Lists */ + +.jp-RenderedHTMLCommon ul:not(.list-inline), +.jp-RenderedHTMLCommon ol:not(.list-inline) { + padding-left: 2em; +} + +.jp-RenderedHTMLCommon ul { + list-style: disc; +} + +.jp-RenderedHTMLCommon ul ul { + list-style: square; +} + +.jp-RenderedHTMLCommon ul ul ul { + list-style: circle; +} + +.jp-RenderedHTMLCommon ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol ol { + list-style: upper-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol { + list-style: lower-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol ol { + list-style: lower-roman; +} + +.jp-RenderedHTMLCommon ol ol ol ol ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol, +.jp-RenderedHTMLCommon ul { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon ul ul, +.jp-RenderedHTMLCommon ul ol, +.jp-RenderedHTMLCommon ol ul, +.jp-RenderedHTMLCommon ol ol { + margin-bottom: 0em; +} + +.jp-RenderedHTMLCommon hr { + color: var(--jp-border-color2); + background-color: var(--jp-border-color1); + margin-top: 1em; + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon > pre { + margin: 1.5em 2em; +} + +.jp-RenderedHTMLCommon pre, +.jp-RenderedHTMLCommon code { + border: 0; + background-color: var(--jp-layout-color0); + color: var(--jp-content-font-color1); + font-family: var(--jp-code-font-family); + font-size: inherit; + line-height: var(--jp-code-line-height); + padding: 0; + white-space: pre-wrap; +} + +.jp-RenderedHTMLCommon :not(pre) > code { + background-color: var(--jp-layout-color2); + padding: 1px 5px; +} + +/* Tables */ + +.jp-RenderedHTMLCommon table { + border-collapse: collapse; + border-spacing: 0; + border: none; + color: var(--jp-ui-font-color1); + font-size: 12px; + table-layout: fixed; + margin-left: auto; + margin-right: auto; +} + +.jp-RenderedHTMLCommon thead { + border-bottom: var(--jp-border-width) solid var(--jp-border-color1); + vertical-align: bottom; +} + +.jp-RenderedHTMLCommon td, +.jp-RenderedHTMLCommon th, +.jp-RenderedHTMLCommon tr { + vertical-align: middle; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} + +.jp-RenderedMarkdown.jp-RenderedHTMLCommon td, +.jp-RenderedMarkdown.jp-RenderedHTMLCommon th { + max-width: none; +} + +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr { + text-align: right; +} + +.jp-RenderedHTMLCommon th { + font-weight: bold; +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(odd) { + background: var(--jp-layout-color0); +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(even) { + background: var(--jp-rendermime-table-row-background); +} + +.jp-RenderedHTMLCommon tbody tr:hover { + background: var(--jp-rendermime-table-row-hover-background); +} + +.jp-RenderedHTMLCommon table { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon p { + text-align: left; + margin: 0px; +} + +.jp-RenderedHTMLCommon p { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon img { + -moz-force-broken-image-icon: 1; +} + +/* Restrict to direct children as other images could be nested in other content. */ +.jp-RenderedHTMLCommon > img { + display: block; + margin-left: 0; + margin-right: 0; + margin-bottom: 1em; +} + +/* Change color behind transparent images if they need it... */ +[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background { + background-color: var(--jp-inverse-layout-color1); +} +[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background { + background-color: var(--jp-inverse-layout-color1); +} +/* ...or leave it untouched if they don't */ +[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-dark-background { +} +[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-light-background { +} + +.jp-RenderedHTMLCommon img, +.jp-RenderedImage img, +.jp-RenderedHTMLCommon svg, +.jp-RenderedSVG svg { + max-width: 100%; + height: auto; +} + +.jp-RenderedHTMLCommon img.jp-mod-unconfined, +.jp-RenderedImage img.jp-mod-unconfined, +.jp-RenderedHTMLCommon svg.jp-mod-unconfined, +.jp-RenderedSVG svg.jp-mod-unconfined { + max-width: none; +} + +.jp-RenderedHTMLCommon .alert { + padding: var(--jp-notebook-padding); + border: var(--jp-border-width) solid transparent; + border-radius: var(--jp-border-radius); + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon .alert-info { + color: var(--jp-info-color0); + background-color: var(--jp-info-color3); + border-color: var(--jp-info-color2); +} +.jp-RenderedHTMLCommon .alert-info hr { + border-color: var(--jp-info-color3); +} +.jp-RenderedHTMLCommon .alert-info > p:last-child, +.jp-RenderedHTMLCommon .alert-info > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-warning { + color: var(--jp-warn-color0); + background-color: var(--jp-warn-color3); + border-color: var(--jp-warn-color2); +} +.jp-RenderedHTMLCommon .alert-warning hr { + border-color: var(--jp-warn-color3); +} +.jp-RenderedHTMLCommon .alert-warning > p:last-child, +.jp-RenderedHTMLCommon .alert-warning > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-success { + color: var(--jp-success-color0); + background-color: var(--jp-success-color3); + border-color: var(--jp-success-color2); +} +.jp-RenderedHTMLCommon .alert-success hr { + border-color: var(--jp-success-color3); +} +.jp-RenderedHTMLCommon .alert-success > p:last-child, +.jp-RenderedHTMLCommon .alert-success > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-danger { + color: var(--jp-error-color0); + background-color: var(--jp-error-color3); + border-color: var(--jp-error-color2); +} +.jp-RenderedHTMLCommon .alert-danger hr { + border-color: var(--jp-error-color3); +} +.jp-RenderedHTMLCommon .alert-danger > p:last-child, +.jp-RenderedHTMLCommon .alert-danger > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon blockquote { + margin: 1em 2em; + padding: 0 1em; + border-left: 5px solid var(--jp-border-color2); +} + +a.jp-InternalAnchorLink { + visibility: hidden; + margin-left: 8px; + color: var(--md-blue-800); +} + +h1:hover .jp-InternalAnchorLink, +h2:hover .jp-InternalAnchorLink, +h3:hover .jp-InternalAnchorLink, +h4:hover .jp-InternalAnchorLink, +h5:hover .jp-InternalAnchorLink, +h6:hover .jp-InternalAnchorLink { + visibility: visible; +} + +.jp-RenderedHTMLCommon kbd { + background-color: var(--jp-rendermime-table-row-background); + border: 1px solid var(--jp-border-color0); + border-bottom-color: var(--jp-border-color2); + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + display: inline-block; + font-size: 0.8em; + line-height: 1em; + padding: 0.2em 0.5em; +} + +/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0. + * At the bottom of cells this is a bit too much as there is also spacing + * between cells. Going all the way to 0 gets too tight between markdown and + * code cells. + */ +.jp-RenderedHTMLCommon > *:last-child { + margin-bottom: 0.5em; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-MimeDocument { + outline: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-filebrowser-button-height: 28px; + --jp-private-filebrowser-button-width: 48px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-FileBrowser { + display: flex; + flex-direction: column; + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); +} + +.jp-FileBrowser-toolbar.jp-Toolbar { + border-bottom: none; + height: auto; + margin: var(--jp-toolbar-header-margin); + box-shadow: none; +} + +.jp-BreadCrumbs { + flex: 0 0 auto; + margin: 8px 12px 8px 12px; +} + +.jp-BreadCrumbs-item { + margin: 0px 2px; + padding: 0px 2px; + border-radius: var(--jp-border-radius); + cursor: pointer; +} + +.jp-BreadCrumbs-item:hover { + background-color: var(--jp-layout-color2); +} + +.jp-BreadCrumbs-item:first-child { + margin-left: 0px; +} + +.jp-BreadCrumbs-item.jp-mod-dropTarget { + background-color: var(--jp-brand-color2); + opacity: 0.7; +} + +/*----------------------------------------------------------------------------- +| Buttons +|----------------------------------------------------------------------------*/ + +.jp-FileBrowser-toolbar.jp-Toolbar { + padding: 0px; + margin: 8px 12px 0px 12px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar { + justify-content: flex-start; +} + +.jp-FileBrowser-toolbar.jp-Toolbar .jp-Toolbar-item { + flex: 0 0 auto; + padding-left: 0px; + padding-right: 2px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar .jp-ToolbarButtonComponent { + width: 40px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar + .jp-Toolbar-item:first-child + .jp-ToolbarButtonComponent { + width: 72px; + background: var(--jp-brand-color1); +} + +.jp-FileBrowser-toolbar.jp-Toolbar + .jp-Toolbar-item:first-child + .jp-ToolbarButtonComponent + .jp-icon3 { + fill: white; +} + +/*----------------------------------------------------------------------------- +| Other styles +|----------------------------------------------------------------------------*/ + +.jp-FileDialog.jp-mod-conflict input { + color: red; +} + +.jp-FileDialog .jp-new-name-title { + margin-top: 12px; +} + +.jp-LastModified-hidden { + display: none; +} + +.jp-FileBrowser-filterBox { + padding: 0px; + flex: 0 0 auto; + margin: 8px 12px 0px 12px; +} + +/*----------------------------------------------------------------------------- +| DirListing +|----------------------------------------------------------------------------*/ + +.jp-DirListing { + flex: 1 1 auto; + display: flex; + flex-direction: column; + outline: 0; +} + +.jp-DirListing-header { + flex: 0 0 auto; + display: flex; + flex-direction: row; + overflow: hidden; + border-top: var(--jp-border-width) solid var(--jp-border-color2); + border-bottom: var(--jp-border-width) solid var(--jp-border-color1); + box-shadow: var(--jp-toolbar-box-shadow); + z-index: 2; +} + +.jp-DirListing-headerItem { + padding: 4px 12px 2px 12px; + font-weight: 500; +} + +.jp-DirListing-headerItem:hover { + background: var(--jp-layout-color2); +} + +.jp-DirListing-headerItem.jp-id-name { + flex: 1 0 84px; +} + +.jp-DirListing-headerItem.jp-id-modified { + flex: 0 0 112px; + border-left: var(--jp-border-width) solid var(--jp-border-color2); + text-align: right; +} + +.jp-id-narrow { + display: none; + flex: 0 0 5px; + padding: 4px 4px; + border-left: var(--jp-border-width) solid var(--jp-border-color2); + text-align: right; + color: var(--jp-border-color2); +} + +.jp-DirListing-narrow .jp-id-narrow { + display: block; +} + +.jp-DirListing-narrow .jp-id-modified, +.jp-DirListing-narrow .jp-DirListing-itemModified { + display: none; +} + +.jp-DirListing-headerItem.jp-mod-selected { + font-weight: 600; +} + +/* increase specificity to override bundled default */ +.jp-DirListing-content { + flex: 1 1 auto; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; + background-color: var(--jp-layout-color1); +} + +.jp-DirListing-content mark { + color: var(--jp-ui-font-color0); + background-color: transparent; + font-weight: bold; +} + +/* Style the directory listing content when a user drops a file to upload */ +.jp-DirListing.jp-mod-native-drop .jp-DirListing-content { + outline: 5px dashed rgba(128, 128, 128, 0.5); + outline-offset: -10px; + cursor: copy; +} + +.jp-DirListing-item { + display: flex; + flex-direction: row; + padding: 4px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jp-DirListing-item[data-is-dot] { + opacity: 75%; +} + +.jp-DirListing-item.jp-mod-selected { + color: white; + background: var(--jp-brand-color1); +} + +.jp-DirListing-item.jp-mod-dropTarget { + background: var(--jp-brand-color3); +} + +.jp-DirListing-item:hover:not(.jp-mod-selected) { + background: var(--jp-layout-color2); +} + +.jp-DirListing-itemIcon { + flex: 0 0 20px; + margin-right: 4px; +} + +.jp-DirListing-itemText { + flex: 1 0 64px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + user-select: none; +} + +.jp-DirListing-itemModified { + flex: 0 0 125px; + text-align: right; +} + +.jp-DirListing-editor { + flex: 1 0 64px; + outline: none; + border: none; +} + +.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon:before { + color: limegreen; + content: '\25CF'; + font-size: 8px; + position: absolute; + left: -8px; +} + +.jp-DirListing-item.lm-mod-drag-image, +.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image { + font-size: var(--jp-ui-font-size1); + padding-left: 4px; + margin-left: 4px; + width: 160px; + background-color: var(--jp-ui-inverse-font-color2); + box-shadow: var(--jp-elevation-z2); + border-radius: 0px; + color: var(--jp-ui-font-color1); + transform: translateX(-40%) translateY(-58%); +} + +.jp-DirListing-deadSpace { + flex: 1 1 auto; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; + background-color: var(--jp-layout-color1); +} + +.jp-Document { + min-width: 120px; + min-height: 120px; + outline: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { +} + +/*----------------------------------------------------------------------------- +| Main OutputArea +| OutputArea has a list of Outputs +|----------------------------------------------------------------------------*/ + +.jp-OutputArea { + overflow-y: auto; +} + +.jp-OutputArea-child { + display: flex; + flex-direction: row; +} + +.jp-OutputPrompt { + flex: 0 0 var(--jp-cell-prompt-width); + color: var(--jp-cell-outprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + opacity: var(--jp-cell-prompt-opacity); + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jp-OutputArea-output { + height: auto; + overflow: auto; + user-select: text; + -moz-user-select: text; + -webkit-user-select: text; + -ms-user-select: text; +} + +.jp-OutputArea-child .jp-OutputArea-output { + flex-grow: 1; + flex-shrink: 1; +} + +/** + * Isolated output. + */ +.jp-OutputArea-output.jp-mod-isolated { + width: 100%; + display: block; +} + +/* +When drag events occur, `p-mod-override-cursor` is added to the body. +Because iframes steal all cursor events, the following two rules are necessary +to suppress pointer events while resize drags are occurring. There may be a +better solution to this problem. +*/ +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated { + position: relative; +} + +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated:before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; +} + +/* pre */ + +.jp-OutputArea-output pre { + border: none; + margin: 0px; + padding: 0px; + overflow-x: auto; + overflow-y: auto; + word-break: break-all; + word-wrap: break-word; + white-space: pre-wrap; +} + +/* tables */ + +.jp-OutputArea-output.jp-RenderedHTMLCommon table { + margin-left: 0; + margin-right: 0; +} + +/* description lists */ + +.jp-OutputArea-output dl, +.jp-OutputArea-output dt, +.jp-OutputArea-output dd { + display: block; +} + +.jp-OutputArea-output dl { + width: 100%; + overflow: hidden; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dt { + font-weight: bold; + float: left; + width: 20%; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dd { + float: left; + width: 80%; + padding: 0; + margin: 0; +} + +/* Hide the gutter in case of + * - nested output areas (e.g. in the case of output widgets) + * - mirrored output areas + */ +.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt { + display: none; +} + +/*----------------------------------------------------------------------------- +| executeResult is added to any Output-result for the display of the object +| returned by a cell +|----------------------------------------------------------------------------*/ + +.jp-OutputArea-output.jp-OutputArea-executeResult { + margin-left: 0px; + flex: 1 1 auto; +} + +/* Text output with the Out[] prompt needs a top padding to match the + * alignment of the Out[] prompt itself. + */ +.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output { + padding-top: var(--jp-code-padding); + border-top: var(--jp-border-width) solid transparent; +} + +/*----------------------------------------------------------------------------- +| The Stdin output +|----------------------------------------------------------------------------*/ + +.jp-OutputArea-stdin { + line-height: var(--jp-code-line-height); + padding-top: var(--jp-code-padding); + display: flex; +} + +.jp-Stdin-prompt { + color: var(--jp-content-font-color0); + padding-right: var(--jp-code-padding); + vertical-align: baseline; + flex: 0 0 auto; +} + +.jp-Stdin-input { + font-family: var(--jp-code-font-family); + font-size: inherit; + color: inherit; + background-color: inherit; + width: 42%; + min-width: 200px; + /* make sure input baseline aligns with prompt */ + vertical-align: baseline; + /* padding + margin = 0.5em between prompt and cursor */ + padding: 0em 0.25em; + margin: 0em 0.25em; + flex: 0 0 70%; +} + +.jp-Stdin-input:focus { + box-shadow: none; +} + +/*----------------------------------------------------------------------------- +| Output Area View +|----------------------------------------------------------------------------*/ + +.jp-LinkedOutputView .jp-OutputArea { + height: 100%; + display: block; +} + +.jp-LinkedOutputView .jp-OutputArea-output:only-child { + height: 100%; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Collapser { + flex: 0 0 var(--jp-cell-collapser-width); + padding: 0px; + margin: 0px; + border: none; + outline: none; + background: transparent; + border-radius: var(--jp-border-radius); + opacity: 1; +} + +.jp-Collapser-child { + display: block; + width: 100%; + box-sizing: border-box; + /* height: 100% doesn't work because the height of its parent is computed from content */ + position: absolute; + top: 0px; + bottom: 0px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Header/Footer +|----------------------------------------------------------------------------*/ + +/* Hidden by zero height by default */ +.jp-CellHeader, +.jp-CellFooter { + height: 0px; + width: 100%; + padding: 0px; + margin: 0px; + border: none; + outline: none; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Input +|----------------------------------------------------------------------------*/ + +/* All input areas */ +.jp-InputArea { + display: flex; + flex-direction: row; + overflow: hidden; +} + +.jp-InputArea-editor { + flex: 1 1 auto; + overflow: hidden; +} + +.jp-InputArea-editor { + /* This is the non-active, default styling */ + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + border-radius: 0px; + background: var(--jp-cell-editor-background); +} + +.jp-InputPrompt { + flex: 0 0 var(--jp-cell-prompt-width); + color: var(--jp-cell-inprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + opacity: var(--jp-cell-prompt-opacity); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + opacity: var(--jp-cell-prompt-opacity); + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Placeholder +|----------------------------------------------------------------------------*/ + +.jp-Placeholder { + display: flex; + flex-direction: row; + flex: 1 1 auto; +} + +.jp-Placeholder-prompt { + box-sizing: border-box; +} + +.jp-Placeholder-content { + flex: 1 1 auto; + border: none; + background: transparent; + height: 20px; + box-sizing: border-box; +} + +.jp-Placeholder-content .jp-MoreHorizIcon { + width: 32px; + height: 16px; + border: 1px solid transparent; + border-radius: var(--jp-border-radius); +} + +.jp-Placeholder-content .jp-MoreHorizIcon:hover { + border: 1px solid var(--jp-border-color1); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.25); + background-color: var(--jp-layout-color0); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-cell-scrolling-output-offset: 5px; +} + +/*----------------------------------------------------------------------------- +| Cell +|----------------------------------------------------------------------------*/ + +.jp-Cell { + padding: var(--jp-cell-padding); + margin: 0px; + border: none; + outline: none; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Common input/output +|----------------------------------------------------------------------------*/ + +.jp-Cell-inputWrapper, +.jp-Cell-outputWrapper { + display: flex; + flex-direction: row; + padding: 0px; + margin: 0px; + /* Added to reveal the box-shadow on the input and output collapsers. */ + overflow: visible; +} + +/* Only input/output areas inside cells */ +.jp-Cell-inputArea, +.jp-Cell-outputArea { + flex: 1 1 auto; +} + +/*----------------------------------------------------------------------------- +| Collapser +|----------------------------------------------------------------------------*/ + +/* Make the output collapser disappear when there is not output, but do so + * in a manner that leaves it in the layout and preserves its width. + */ +.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser { + border: none !important; + background: transparent !important; +} + +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser { + min-height: var(--jp-cell-collapser-min-height); +} + +/*----------------------------------------------------------------------------- +| Output +|----------------------------------------------------------------------------*/ + +/* Put a space between input and output when there IS output */ +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper { + margin-top: 5px; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea { + overflow-y: auto; + max-height: 200px; + box-shadow: inset 0 0 6px 2px rgba(0, 0, 0, 0.3); + margin-left: var(--jp-private-cell-scrolling-output-offset); +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt { + flex: 0 0 + calc( + var(--jp-cell-prompt-width) - + var(--jp-private-cell-scrolling-output-offset) + ); +} + +/*----------------------------------------------------------------------------- +| CodeCell +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| MarkdownCell +|----------------------------------------------------------------------------*/ + +.jp-MarkdownOutput { + flex: 1 1 auto; + margin-top: 0; + margin-bottom: 0; + padding-left: var(--jp-code-padding); +} + +.jp-MarkdownOutput.jp-RenderedHTMLCommon { + overflow: auto; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- + +/*----------------------------------------------------------------------------- +| Styles +|----------------------------------------------------------------------------*/ + +.jp-NotebookPanel-toolbar { + padding: 2px; +} + +.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused { + border: none; + box-shadow: none; +} + +.jp-Notebook-toolbarCellTypeDropdown select { + height: 24px; + font-size: var(--jp-ui-font-size1); + line-height: 14px; + border-radius: 0; + display: block; +} + +.jp-Notebook-toolbarCellTypeDropdown span { + top: 5px !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-notebook-dragImage-width: 304px; + --jp-private-notebook-dragImage-height: 36px; + --jp-private-notebook-selected-color: var(--md-blue-400); + --jp-private-notebook-active-color: var(--md-green-400); +} + +/*----------------------------------------------------------------------------- +| Imports +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Notebook +|----------------------------------------------------------------------------*/ + +.jp-NotebookPanel { + display: block; + height: 100%; +} + +.jp-NotebookPanel.jp-Document { + min-width: 240px; + min-height: 120px; +} + +.jp-Notebook { + padding: var(--jp-notebook-padding); + outline: none; + overflow: auto; + background: var(--jp-layout-color0); +} + +.jp-Notebook.jp-mod-scrollPastEnd::after { + display: block; + content: ''; + min-height: var(--jp-notebook-scroll-padding); +} + +.jp-Notebook .jp-Cell { + overflow: visible; +} + +.jp-Notebook .jp-Cell .jp-InputPrompt { + cursor: move; +} + +/*----------------------------------------------------------------------------- +| Notebook state related styling +| +| The notebook and cells each have states, here are the possibilities: +| +| - Notebook +| - Command +| - Edit +| - Cell +| - None +| - Active (only one can be active) +| - Selected (the cells actions are applied to) +| - Multiselected (when multiple selected, the cursor) +| - No outputs +|----------------------------------------------------------------------------*/ + +/* Command or edit modes */ + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +/* cell is active */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser { + background: var(--jp-brand-color1); +} + +/* collapser is hovered */ +.jp-Notebook .jp-Cell .jp-Collapser:hover { + box-shadow: var(--jp-elevation-z2); + background: var(--jp-brand-color1); + opacity: var(--jp-cell-collapser-not-active-hover-opacity); +} + +/* cell is active and collapser is hovered */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover { + background: var(--jp-brand-color0); + opacity: 1; +} + +/* Command mode */ + +.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected { + background: var(--jp-notebook-multiselected-color); +} + +.jp-Notebook.jp-mod-commandMode + .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) { + background: transparent; +} + +/* Edit mode */ + +.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor { + border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color); + box-shadow: var(--jp-input-box-shadow); + background-color: var(--jp-cell-editor-active-background); +} + +/*----------------------------------------------------------------------------- +| Notebook drag and drop +|----------------------------------------------------------------------------*/ + +.jp-Notebook-cell.jp-mod-dropSource { + opacity: 0.5; +} + +.jp-Notebook-cell.jp-mod-dropTarget, +.jp-Notebook.jp-mod-commandMode + .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget { + border-top-color: var(--jp-private-notebook-selected-color); + border-top-style: solid; + border-top-width: 2px; +} + +.jp-dragImage { + display: flex; + flex-direction: row; + width: var(--jp-private-notebook-dragImage-width); + height: var(--jp-private-notebook-dragImage-height); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background); + overflow: visible; +} + +.jp-dragImage-singlePrompt { + box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12); +} + +.jp-dragImage .jp-dragImage-content { + flex: 1 1 auto; + z-index: 2; + font-size: var(--jp-code-font-size); + font-family: var(--jp-code-font-family); + line-height: var(--jp-code-line-height); + padding: var(--jp-code-padding); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background-color); + color: var(--jp-content-font-color3); + text-align: left; + margin: 4px 4px 4px 0px; +} + +.jp-dragImage .jp-dragImage-prompt { + flex: 0 0 auto; + min-width: 36px; + color: var(--jp-cell-inprompt-font-color); + padding: var(--jp-code-padding); + padding-left: 12px; + font-family: var(--jp-cell-prompt-font-family); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: 1.9; + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; +} + +.jp-dragImage-multipleBack { + z-index: -1; + position: absolute; + height: 32px; + width: 300px; + top: 8px; + left: 8px; + background: var(--jp-layout-color2); + border: var(--jp-border-width) solid var(--jp-input-border-color); + box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12); +} + +/*----------------------------------------------------------------------------- +| Cell toolbar +|----------------------------------------------------------------------------*/ + +.jp-NotebookTools { + display: block; + min-width: var(--jp-sidebar-min-width); + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); + overflow: auto; +} + +.jp-NotebookTools-tool { + padding: 0px 12px 0 12px; +} + +.jp-ActiveCellTool { + padding: 12px; + background-color: var(--jp-layout-color1); + border-top: none !important; +} + +.jp-ActiveCellTool .jp-InputArea-prompt { + flex: 0 0 auto; + padding-left: 0px; +} + +.jp-ActiveCellTool .jp-InputArea-editor { + flex: 1 1 auto; + background: var(--jp-cell-editor-background); + border-color: var(--jp-cell-editor-border-color); +} + +.jp-ActiveCellTool .jp-InputArea-editor .CodeMirror { + background: transparent; +} + +.jp-MetadataEditorTool { + flex-direction: column; + padding: 12px 0px 12px 0px; +} + +.jp-RankedPanel > :not(:first-child) { + margin-top: 12px; +} + +.jp-KeySelector select.jp-mod-styled { + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + border: var(--jp-border-width) solid var(--jp-border-color1); +} + +.jp-KeySelector label, +.jp-MetadataEditorTool label { + line-height: 1.4; +} + +.jp-NotebookTools .jp-select-wrapper { + margin-top: 4px; + margin-bottom: 0px; +} + +.jp-NotebookTools .jp-Collapse { + margin-top: 16px; +} + +/*----------------------------------------------------------------------------- +| Presentation Mode (.jp-mod-presentationMode) +|----------------------------------------------------------------------------*/ + +.jp-mod-presentationMode .jp-Notebook { + --jp-content-font-size1: var(--jp-content-presentation-font-size1); + --jp-code-font-size: var(--jp-code-presentation-font-size); +} + +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt, +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt { + flex: 0 0 110px; +} + +</style> + + <style type="text/css"> +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* +The following CSS variables define the main, public API for styling JupyterLab. +These variables should be used by all plugins wherever possible. In other +words, plugins should not define custom colors, sizes, etc unless absolutely +necessary. This enables users to change the visual theme of JupyterLab +by changing these variables. + +Many variables appear in an ordered sequence (0,1,2,3). These sequences +are designed to work well together, so for example, `--jp-border-color1` should +be used with `--jp-layout-color1`. The numbers have the following meanings: + +* 0: super-primary, reserved for special emphasis +* 1: primary, most important under normal situations +* 2: secondary, next most important under normal situations +* 3: tertiary, next most important under normal situations + +Throughout JupyterLab, we are mostly following principles from Google's +Material Design when selecting colors. We are not, however, following +all of MD as it is not optimized for dense, information rich UIs. +*/ + +:root { + /* Elevation + * + * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here: + * + * https://github.com/material-components/material-components-web + * https://material-components-web.appspot.com/elevation.html + */ + + --jp-shadow-base-lightness: 0; + --jp-shadow-umbra-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.2 + ); + --jp-shadow-penumbra-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.14 + ); + --jp-shadow-ambient-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.12 + ); + --jp-elevation-z0: none; + --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color), + 0px 1px 1px 0px var(--jp-shadow-penumbra-color), + 0px 1px 3px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color), + 0px 2px 2px 0px var(--jp-shadow-penumbra-color), + 0px 1px 5px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color), + 0px 4px 5px 0px var(--jp-shadow-penumbra-color), + 0px 1px 10px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color), + 0px 6px 10px 0px var(--jp-shadow-penumbra-color), + 0px 1px 18px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color), + 0px 8px 10px 1px var(--jp-shadow-penumbra-color), + 0px 3px 14px 2px var(--jp-shadow-ambient-color); + --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color), + 0px 12px 17px 2px var(--jp-shadow-penumbra-color), + 0px 5px 22px 4px var(--jp-shadow-ambient-color); + --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color), + 0px 16px 24px 2px var(--jp-shadow-penumbra-color), + 0px 6px 30px 5px var(--jp-shadow-ambient-color); + --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color), + 0px 20px 31px 3px var(--jp-shadow-penumbra-color), + 0px 8px 38px 7px var(--jp-shadow-ambient-color); + --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color), + 0px 24px 38px 3px var(--jp-shadow-penumbra-color), + 0px 9px 46px 8px var(--jp-shadow-ambient-color); + + /* Borders + * + * The following variables, specify the visual styling of borders in JupyterLab. + */ + + --jp-border-width: 1px; + --jp-border-color0: var(--md-grey-400); + --jp-border-color1: var(--md-grey-400); + --jp-border-color2: var(--md-grey-300); + --jp-border-color3: var(--md-grey-200); + --jp-border-radius: 2px; + + /* UI Fonts + * + * The UI font CSS variables are used for the typography all of the JupyterLab + * user interface elements that are not directly user generated content. + * + * The font sizing here is done assuming that the body font size of --jp-ui-font-size1 + * is applied to a parent element. When children elements, such as headings, are sized + * in em all things will be computed relative to that body size. + */ + + --jp-ui-font-scale-factor: 1.2; + --jp-ui-font-size0: 0.83333em; + --jp-ui-font-size1: 13px; /* Base font size */ + --jp-ui-font-size2: 1.2em; + --jp-ui-font-size3: 1.44em; + + --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, + Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + + /* + * Use these font colors against the corresponding main layout colors. + * In a light theme, these go from dark to light. + */ + + /* Defaults use Material Design specification */ + --jp-ui-font-color0: rgba(0, 0, 0, 1); + --jp-ui-font-color1: rgba(0, 0, 0, 0.87); + --jp-ui-font-color2: rgba(0, 0, 0, 0.54); + --jp-ui-font-color3: rgba(0, 0, 0, 0.38); + + /* + * Use these against the brand/accent/warn/error colors. + * These will typically go from light to darker, in both a dark and light theme. + */ + + --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7); + --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5); + + /* Content Fonts + * + * Content font variables are used for typography of user generated content. + * + * The font sizing here is done assuming that the body font size of --jp-content-font-size1 + * is applied to a parent element. When children elements, such as headings, are sized + * in em all things will be computed relative to that body size. + */ + + --jp-content-line-height: 1.6; + --jp-content-font-scale-factor: 1.2; + --jp-content-font-size0: 0.83333em; + --jp-content-font-size1: 14px; /* Base font size */ + --jp-content-font-size2: 1.2em; + --jp-content-font-size3: 1.44em; + --jp-content-font-size4: 1.728em; + --jp-content-font-size5: 2.0736em; + + /* This gives a magnification of about 125% in presentation mode over normal. */ + --jp-content-presentation-font-size1: 17px; + + --jp-content-heading-line-height: 1; + --jp-content-heading-margin-top: 1.2em; + --jp-content-heading-margin-bottom: 0.8em; + --jp-content-heading-font-weight: 500; + + /* Defaults use Material Design specification */ + --jp-content-font-color0: rgba(0, 0, 0, 1); + --jp-content-font-color1: rgba(0, 0, 0, 0.87); + --jp-content-font-color2: rgba(0, 0, 0, 0.54); + --jp-content-font-color3: rgba(0, 0, 0, 0.38); + + --jp-content-link-color: var(--md-blue-700); + + --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', + Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol'; + + /* + * Code Fonts + * + * Code font variables are used for typography of code and other monospaces content. + */ + + --jp-code-font-size: 13px; + --jp-code-line-height: 1.3077; /* 17px for 13px base */ + --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */ + --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace; + --jp-code-font-family: var(--jp-code-font-family-default); + + /* This gives a magnification of about 125% in presentation mode over normal. */ + --jp-code-presentation-font-size: 16px; + + /* may need to tweak cursor width if you change font size */ + --jp-code-cursor-width0: 1.4px; + --jp-code-cursor-width1: 2px; + --jp-code-cursor-width2: 4px; + + /* Layout + * + * The following are the main layout colors use in JupyterLab. In a light + * theme these would go from light to dark. + */ + + --jp-layout-color0: white; + --jp-layout-color1: white; + --jp-layout-color2: var(--md-grey-200); + --jp-layout-color3: var(--md-grey-400); + --jp-layout-color4: var(--md-grey-600); + + /* Inverse Layout + * + * The following are the inverse layout colors use in JupyterLab. In a light + * theme these would go from dark to light. + */ + + --jp-inverse-layout-color0: #111111; + --jp-inverse-layout-color1: var(--md-grey-900); + --jp-inverse-layout-color2: var(--md-grey-800); + --jp-inverse-layout-color3: var(--md-grey-700); + --jp-inverse-layout-color4: var(--md-grey-600); + + /* Brand/accent */ + + --jp-brand-color0: var(--md-blue-700); + --jp-brand-color1: var(--md-blue-500); + --jp-brand-color2: var(--md-blue-300); + --jp-brand-color3: var(--md-blue-100); + --jp-brand-color4: var(--md-blue-50); + + --jp-accent-color0: var(--md-green-700); + --jp-accent-color1: var(--md-green-500); + --jp-accent-color2: var(--md-green-300); + --jp-accent-color3: var(--md-green-100); + + /* State colors (warn, error, success, info) */ + + --jp-warn-color0: var(--md-orange-700); + --jp-warn-color1: var(--md-orange-500); + --jp-warn-color2: var(--md-orange-300); + --jp-warn-color3: var(--md-orange-100); + + --jp-error-color0: var(--md-red-700); + --jp-error-color1: var(--md-red-500); + --jp-error-color2: var(--md-red-300); + --jp-error-color3: var(--md-red-100); + + --jp-success-color0: var(--md-green-700); + --jp-success-color1: var(--md-green-500); + --jp-success-color2: var(--md-green-300); + --jp-success-color3: var(--md-green-100); + + --jp-info-color0: var(--md-cyan-700); + --jp-info-color1: var(--md-cyan-500); + --jp-info-color2: var(--md-cyan-300); + --jp-info-color3: var(--md-cyan-100); + + /* Cell specific styles */ + + --jp-cell-padding: 5px; + + --jp-cell-collapser-width: 8px; + --jp-cell-collapser-min-height: 20px; + --jp-cell-collapser-not-active-hover-opacity: 0.6; + + --jp-cell-editor-background: var(--md-grey-100); + --jp-cell-editor-border-color: var(--md-grey-300); + --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300); + --jp-cell-editor-active-background: var(--jp-layout-color0); + --jp-cell-editor-active-border-color: var(--jp-brand-color1); + + --jp-cell-prompt-width: 64px; + --jp-cell-prompt-font-family: var(--jp-code-font-family-default); + --jp-cell-prompt-letter-spacing: 0px; + --jp-cell-prompt-opacity: 1; + --jp-cell-prompt-not-active-opacity: 0.5; + --jp-cell-prompt-not-active-font-color: var(--md-grey-700); + /* A custom blend of MD grey and blue 600 + * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */ + --jp-cell-inprompt-font-color: #307fc1; + /* A custom blend of MD grey and orange 600 + * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */ + --jp-cell-outprompt-font-color: #bf5b3d; + + /* Notebook specific styles */ + + --jp-notebook-padding: 10px; + --jp-notebook-select-background: var(--jp-layout-color1); + --jp-notebook-multiselected-color: var(--md-blue-50); + + /* The scroll padding is calculated to fill enough space at the bottom of the + notebook to show one single-line cell (with appropriate padding) at the top + when the notebook is scrolled all the way to the bottom. We also subtract one + pixel so that no scrollbar appears if we have just one single-line cell in the + notebook. This padding is to enable a 'scroll past end' feature in a notebook. + */ + --jp-notebook-scroll-padding: calc( + 100% - var(--jp-code-font-size) * var(--jp-code-line-height) - + var(--jp-code-padding) - var(--jp-cell-padding) - 1px + ); + + /* Rendermime styles */ + + --jp-rendermime-error-background: #fdd; + --jp-rendermime-table-row-background: var(--md-grey-100); + --jp-rendermime-table-row-hover-background: var(--md-light-blue-50); + + /* Dialog specific styles */ + + --jp-dialog-background: rgba(0, 0, 0, 0.25); + + /* Console specific styles */ + + --jp-console-padding: 10px; + + /* Toolbar specific styles */ + + --jp-toolbar-border-color: var(--jp-border-color1); + --jp-toolbar-micro-height: 8px; + --jp-toolbar-background: var(--jp-layout-color1); + --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24); + --jp-toolbar-header-margin: 4px 4px 0px 4px; + --jp-toolbar-active-background: var(--md-grey-300); + + /* Input field styles */ + + --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300); + --jp-input-active-background: var(--jp-layout-color1); + --jp-input-hover-background: var(--jp-layout-color1); + --jp-input-background: var(--md-grey-100); + --jp-input-border-color: var(--jp-border-color1); + --jp-input-active-border-color: var(--jp-brand-color1); + --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3); + + /* General editor styles */ + + --jp-editor-selected-background: #d9d9d9; + --jp-editor-selected-focused-background: #d7d4f0; + --jp-editor-cursor-color: var(--jp-ui-font-color0); + + /* Code mirror specific styles */ + + --jp-mirror-editor-keyword-color: #008000; + --jp-mirror-editor-atom-color: #88f; + --jp-mirror-editor-number-color: #080; + --jp-mirror-editor-def-color: #00f; + --jp-mirror-editor-variable-color: var(--md-grey-900); + --jp-mirror-editor-variable-2-color: #05a; + --jp-mirror-editor-variable-3-color: #085; + --jp-mirror-editor-punctuation-color: #05a; + --jp-mirror-editor-property-color: #05a; + --jp-mirror-editor-operator-color: #aa22ff; + --jp-mirror-editor-comment-color: #408080; + --jp-mirror-editor-string-color: #ba2121; + --jp-mirror-editor-string-2-color: #708; + --jp-mirror-editor-meta-color: #aa22ff; + --jp-mirror-editor-qualifier-color: #555; + --jp-mirror-editor-builtin-color: #008000; + --jp-mirror-editor-bracket-color: #997; + --jp-mirror-editor-tag-color: #170; + --jp-mirror-editor-attribute-color: #00c; + --jp-mirror-editor-header-color: blue; + --jp-mirror-editor-quote-color: #090; + --jp-mirror-editor-link-color: #00c; + --jp-mirror-editor-error-color: #f00; + --jp-mirror-editor-hr-color: #999; + + /* Vega extension styles */ + + --jp-vega-background: white; + + /* Sidebar-related styles */ + + --jp-sidebar-min-width: 250px; + + /* Search-related styles */ + + --jp-search-toggle-off-opacity: 0.5; + --jp-search-toggle-hover-opacity: 0.8; + --jp-search-toggle-on-opacity: 1; + --jp-search-selected-match-background-color: rgb(245, 200, 0); + --jp-search-selected-match-color: black; + --jp-search-unselected-match-background-color: var( + --jp-inverse-layout-color0 + ); + --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0); + + /* Icon colors that work well with light or dark backgrounds */ + --jp-icon-contrast-color0: var(--md-purple-600); + --jp-icon-contrast-color1: var(--md-green-600); + --jp-icon-contrast-color2: var(--md-pink-600); + --jp-icon-contrast-color3: var(--md-blue-600); +} +</style> + +<style type="text/css"> +a.anchor-link { + display: none; +} +.highlight { + margin: 0.4em; +} + +/* Input area styling */ +.jp-InputArea { + overflow: hidden; +} + +.jp-InputArea-editor { + overflow: hidden; +} + +@media print { + body { + margin: 0; + } +} +</style> + +<!-- Load mathjax --> + <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML-full,Safe"> </script> + <!-- MathJax configuration --> + <script type="text/x-mathjax-config"> + init_mathjax = function() { + if (window.MathJax) { + // MathJax loaded + MathJax.Hub.Config({ + TeX: { + equationNumbers: { + autoNumber: "AMS", + useLabelIds: true + } + }, + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + displayMath: [ ['$$','$$'], ["\\[","\\]"] ], + processEscapes: true, + processEnvironments: true + }, + displayAlign: 'center', + CommonHTML: { + linebreaks: { + automatic: true + } + }, + "HTML-CSS": { + linebreaks: { + automatic: true + } + } + }); + + MathJax.Hub.Queue(["Typeset", MathJax.Hub]); + } + } + init_mathjax(); + </script> + <!-- End of mathjax configuration --></head> +<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light"> + +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h1 id="Search-Paths">Search Paths<a class="anchor-link" href="#Search-Paths">¶</a></h1><p>In the last reading, we learned about how to check whether there is a path from node A to node B.</p> +<p>In this reading, we'll do additional things:</p> +<ol> +<li>return the path (a list of nodes) found instead of just True/False</li> +<li>learn BFS, an alternative to DFS that is guaranteed to find the shortest path</li> +</ol> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [1]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">graphviz</span> <span class="kn">import</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">Digraph</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Review">Review<a class="anchor-link" href="#Review">¶</a></h2><p>Let's revisit the graph search from the end of the last reading (only change is addition of <code>__repr__</code>):</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [2]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">class</span> <span class="nc">mygraph</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span> + + <span class="k">def</span> <span class="nf">node</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">edge</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">[</span><span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">]:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">src</span><span class="p">]</span><span class="o">.</span><span class="n">children</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">dst</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">_repr_svg_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">g</span> <span class="o">=</span> <span class="n">Digraph</span><span class="p">()</span> + <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">:</span> + <span class="n">g</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="o">.</span><span class="n">children</span><span class="p">:</span> + <span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">_repr_image_svg_xml</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visited</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">src</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">dst</span><span class="p">)</span> + +<span class="k">class</span> <span class="nc">Node</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">graph</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">graph</span> <span class="o">=</span> <span class="n">graph</span> + <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> + <span class="bp">self</span><span class="o">.</span><span class="n">children</span> <span class="o">=</span> <span class="p">[]</span> + + <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="s2">"node </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> + + <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">False</span> + <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">dst</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">children</span><span class="p">:</span> + <span class="k">if</span> <span class="n">child</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">dst</span><span class="p">):</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">return</span> <span class="kc">False</span> + +<span class="n">g</span> <span class="o">=</span> <span class="n">mygraph</span><span class="p">()</span> +<span class="n">g</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s2">"A"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"D"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[2]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="134pt" height="188pt" + viewBox="0.00 0.00 134.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-184 130,-184 130,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="27" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-158.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- B --> +<g id="node2" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="99" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-158.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- C --> +<g id="node3" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="71" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="71" y="-86.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- B->C --> +<g id="edge1" class="edge"> +<title>B->C</title> +<path fill="none" stroke="black" d="M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95"/> +<polygon fill="black" stroke="black" points="84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45"/> +</g> +<!-- D --> +<g id="node4" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="98" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="98" y="-14.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- C->D --> +<g id="edge2" class="edge"> +<title>C->D</title> +<path fill="none" stroke="black" d="M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35"/> +<polygon fill="black" stroke="black" points="91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55"/> +</g> +<!-- D->B --> +<g id="edge3" class="edge"> +<title>D->B</title> +<path fill="none" stroke="black" d="M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96"/> +<polygon fill="black" stroke="black" points="100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [3]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"A"</span><span class="p">))</span> +<span class="nb">print</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">))</span> +<span class="nb">print</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">))</span> +<span class="nb">print</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"A"</span><span class="p">))</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + +<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain"> +<pre>True +False +True +False +</pre> +</div> +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Getting-the-Path">Getting the Path<a class="anchor-link" href="#Getting-the-Path">¶</a></h2><p>Rather than just determine if there is a path, let's output what it is. We'll modify the <code>find</code> method. If there's a path, it should return it as a list (or tuple!) of nodes traversed. If there is not a path, it should return None.</p> +<p>The logic works like this: if the X node is a child of the W node, and we've found an <code>(X,Y,Z)</code> path, then <code>(W,X,Y,Z)</code> is also a valid path. On line 11, we're using tuple concatenation to create a new tuple based on the one the child found, but with the parent added to the beginning.</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">find_v2</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">None</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">dst</span><span class="p">:</span> + <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="p">)</span> + + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">children</span><span class="p">:</span> + <span class="n">path</span> <span class="o">=</span> <span class="n">child</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">dst</span><span class="p">)</span> + <span class="k">if</span> <span class="n">path</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="p">)</span> <span class="o">+</span> <span class="n">path</span> + + <span class="k">return</span> <span class="kc">None</span> + +<span class="c1"># monkey patching lets us redefine a method in</span> +<span class="c1"># a class, without recreating the whole class</span> +<span class="c1"># (not a recommended practice, but means we don't</span> +<span class="c1"># need to show the complete new version of Node)</span> +<span class="n">Node</span><span class="o">.</span><span class="n">find</span> <span class="o">=</span> <span class="n">find_v2</span> + +<span class="n">g</span> <span class="o">=</span> <span class="n">mygraph</span><span class="p">()</span> +<span class="n">g</span><span class="o">.</span><span class="n">node</span><span class="p">(</span><span class="s2">"A"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"D"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[4]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="134pt" height="188pt" + viewBox="0.00 0.00 134.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-184 130,-184 130,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="27" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-158.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- B --> +<g id="node2" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="99" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-158.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- C --> +<g id="node3" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="71" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="71" y="-86.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- B->C --> +<g id="edge1" class="edge"> +<title>B->C</title> +<path fill="none" stroke="black" d="M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95"/> +<polygon fill="black" stroke="black" points="84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45"/> +</g> +<!-- D --> +<g id="node4" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="98" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="98" y="-14.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- C->D --> +<g id="edge2" class="edge"> +<title>C->D</title> +<path fill="none" stroke="black" d="M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35"/> +<polygon fill="black" stroke="black" points="91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55"/> +</g> +<!-- D->B --> +<g id="edge3" class="edge"> +<title>D->B</title> +<path fill="none" stroke="black" d="M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96"/> +<polygon fill="black" stroke="black" points="100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [5]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="nb">print</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + +<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain"> +<pre>None +</pre> +</div> +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [6]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="nb">print</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + +<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain"> +<pre>('C', 'D', 'B') +</pre> +</div> +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Multiple-Paths">Multiple Paths<a class="anchor-link" href="#Multiple-Paths">¶</a></h2><p>What if there are multiple paths? Which will we return?</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [7]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span> <span class="o">=</span> <span class="n">mygraph</span><span class="p">()</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"D"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[7]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="90pt" height="332pt" + viewBox="0.00 0.00 90.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-328 86,-328 86,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="27" cy="-306" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-302.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- E --> +<g id="node2" class="node"> +<title>E</title> +<ellipse fill="none" stroke="black" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-14.3" font-family="Times,serif" font-size="14.00">E</text> +</g> +<!-- A->E --> +<g id="edge1" class="edge"> +<title>A->E</title> +<path fill="none" stroke="black" d="M23.75,-287.89C21.95,-277.54 19.91,-264.06 19,-252 13.01,-172.22 13.01,-151.78 19,-72 19.64,-63.52 20.84,-54.34 22.12,-46.04"/> +<polygon fill="black" stroke="black" points="25.58,-46.55 23.75,-36.11 18.68,-45.41 25.58,-46.55"/> +</g> +<!-- B --> +<g id="node3" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="55" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="55" y="-230.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- A->B --> +<g id="edge2" class="edge"> +<title>A->B</title> +<path fill="none" stroke="black" d="M33.64,-288.41C36.91,-280.22 40.94,-270.14 44.62,-260.95"/> +<polygon fill="black" stroke="black" points="47.95,-262.05 48.41,-251.47 41.45,-259.45 47.95,-262.05"/> +</g> +<!-- C --> +<g id="node4" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="55" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="55" y="-158.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- B->C --> +<g id="edge3" class="edge"> +<title>B->C</title> +<path fill="none" stroke="black" d="M55,-215.7C55,-207.98 55,-198.71 55,-190.11"/> +<polygon fill="black" stroke="black" points="58.5,-190.1 55,-180.1 51.5,-190.1 58.5,-190.1"/> +</g> +<!-- D --> +<g id="node5" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="55" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="55" y="-86.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- C->D --> +<g id="edge4" class="edge"> +<title>C->D</title> +<path fill="none" stroke="black" d="M55,-143.7C55,-135.98 55,-126.71 55,-118.11"/> +<polygon fill="black" stroke="black" points="58.5,-118.1 55,-108.1 51.5,-118.1 58.5,-118.1"/> +</g> +<!-- D->E --> +<g id="edge5" class="edge"> +<title>D->E</title> +<path fill="none" stroke="black" d="M48.36,-72.41C45.09,-64.22 41.06,-54.14 37.38,-44.95"/> +<polygon fill="black" stroke="black" points="40.55,-43.45 33.59,-35.47 34.05,-46.05 40.55,-43.45"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [8]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[8]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>('A', 'E')</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Nice, it found the shortest one! But what if we build the same graphs, but adding the edges in a different order?</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [9]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span> <span class="o">=</span> <span class="n">mygraph</span><span class="p">()</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"D"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> <span class="c1"># we used to add this first, now last</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[9]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="89pt" height="332pt" + viewBox="0.00 0.00 89.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-328 85,-328 85,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="54" cy="-306" rx="27" ry="18"/> +<text text-anchor="middle" x="54" y="-302.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- B --> +<g id="node2" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="27" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-230.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- A->B --> +<g id="edge1" class="edge"> +<title>A->B</title> +<path fill="none" stroke="black" d="M47.6,-288.41C44.49,-280.34 40.67,-270.43 37.17,-261.35"/> +<polygon fill="black" stroke="black" points="40.4,-260.03 33.54,-251.96 33.87,-262.55 40.4,-260.03"/> +</g> +<!-- E --> +<g id="node3" class="node"> +<title>E</title> +<ellipse fill="none" stroke="black" cx="54" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="54" y="-14.3" font-family="Times,serif" font-size="14.00">E</text> +</g> +<!-- A->E --> +<g id="edge2" class="edge"> +<title>A->E</title> +<path fill="none" stroke="black" d="M57.65,-287.91C59.68,-277.57 61.98,-264.09 63,-252 69.72,-172.28 69.72,-151.72 63,-72 62.28,-63.5 60.93,-54.31 59.49,-46.01"/> +<polygon fill="black" stroke="black" points="62.91,-45.29 57.65,-36.09 56.03,-46.56 62.91,-45.29"/> +</g> +<!-- C --> +<g id="node4" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="27" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-158.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- B->C --> +<g id="edge3" class="edge"> +<title>B->C</title> +<path fill="none" stroke="black" d="M27,-215.7C27,-207.98 27,-198.71 27,-190.11"/> +<polygon fill="black" stroke="black" points="30.5,-190.1 27,-180.1 23.5,-190.1 30.5,-190.1"/> +</g> +<!-- D --> +<g id="node5" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="27" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-86.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- C->D --> +<g id="edge4" class="edge"> +<title>C->D</title> +<path fill="none" stroke="black" d="M27,-143.7C27,-135.98 27,-126.71 27,-118.11"/> +<polygon fill="black" stroke="black" points="30.5,-118.1 27,-108.1 23.5,-118.1 30.5,-118.1"/> +</g> +<!-- D->E --> +<g id="edge5" class="edge"> +<title>D->E</title> +<path fill="none" stroke="black" d="M33.4,-72.41C36.51,-64.34 40.33,-54.43 43.83,-45.35"/> +<polygon fill="black" stroke="black" points="47.13,-46.55 47.46,-35.96 40.6,-44.03 47.13,-46.55"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [10]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[10]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>('A', 'B', 'C', 'D', 'E')</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Yuck! If Google Maps gave me these directions for getting from city A to E, then I might just switch to Apple Maps.</p> +<p>The search pattern we're using is known as "depth first search", or DFS. It explores one child completely (including all that child's descendents) before checking if the other children know a path.</p> +<p>The alternative to DFS is BFS, or "breadth first search". This algorithm will explore all children before exploring grandchildren, before exploring great grandchildren, etc.</p> +<p>The algorithm for BFS is not recursive, but many find it less intuitive that recursive DFS. The strategy is to keep a "TODO" list of all nodes that need to be visited. The list is used as a <em>queue</em>, meaning the first nodes added to the list will be the first ones visited. When a child is explored, we generally discover grandchildren, but rather than explore those grandchildren immediately (as in DFS), we add those grandchildren to the end of the TODO queue, to be processed eventually after the other children.</p> +<p>Let's try it:</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [11]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">find_bfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="c1"># the first node to explore is the starting point</span> + <span class="n">todo</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="p">]</span> + + <span class="c1"># keep looping while there are unexplored nodes</span> + <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="n">todo</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"TODO:"</span><span class="p">,</span> <span class="n">todo</span><span class="p">)</span> + <span class="n">curr</span> <span class="o">=</span> <span class="n">todo</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># pop from beginning</span> + + <span class="nb">print</span><span class="p">(</span><span class="s2">"VISITING:"</span><span class="p">,</span> <span class="n">curr</span><span class="p">)</span> + <span class="k">if</span> <span class="n">curr</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">dst</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">curr</span><span class="o">.</span><span class="n">children</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">child</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="p">:</span> + <span class="n">todo</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> <span class="c1"># add to end</span> + <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + + <span class="c1"># nothing left to check, and we haven't already returned True</span> + <span class="k">return</span> <span class="kc">False</span> + +<span class="n">Node</span><span class="o">.</span><span class="n">find</span> <span class="o">=</span> <span class="n">find_bfs</span> + +<span class="n">g</span> <span class="o">=</span> <span class="n">mygraph</span><span class="p">()</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"F"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"G"</span><span class="p">)</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[11]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="278pt" height="188pt" + viewBox="0.00 0.00 278.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-184 274,-184 274,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="135" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="135" y="-158.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- B --> +<g id="node2" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="99" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-86.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- A->B --> +<g id="edge1" class="edge"> +<title>A->B</title> +<path fill="none" stroke="black" d="M126.65,-144.76C122.29,-136.28 116.85,-125.71 111.96,-116.2"/> +<polygon fill="black" stroke="black" points="114.99,-114.44 107.3,-107.15 108.77,-117.64 114.99,-114.44"/> +</g> +<!-- C --> +<g id="node3" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="171" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-86.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- A->C --> +<g id="edge2" class="edge"> +<title>A->C</title> +<path fill="none" stroke="black" d="M143.35,-144.76C147.71,-136.28 153.15,-125.71 158.04,-116.2"/> +<polygon fill="black" stroke="black" points="161.23,-117.64 162.7,-107.15 155.01,-114.44 161.23,-117.64"/> +</g> +<!-- D --> +<g id="node4" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-14.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- B->D --> +<g id="edge3" class="edge"> +<title>B->D</title> +<path fill="none" stroke="black" d="M84.43,-74.83C74.25,-64.94 60.48,-51.55 48.97,-40.36"/> +<polygon fill="black" stroke="black" points="51.41,-37.85 41.8,-33.38 46.53,-42.87 51.41,-37.85"/> +</g> +<!-- E --> +<g id="node5" class="node"> +<title>E</title> +<ellipse fill="none" stroke="black" cx="99" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-14.3" font-family="Times,serif" font-size="14.00">E</text> +</g> +<!-- B->E --> +<g id="edge4" class="edge"> +<title>B->E</title> +<path fill="none" stroke="black" d="M99,-71.7C99,-63.98 99,-54.71 99,-46.11"/> +<polygon fill="black" stroke="black" points="102.5,-46.1 99,-36.1 95.5,-46.1 102.5,-46.1"/> +</g> +<!-- F --> +<g id="node6" class="node"> +<title>F</title> +<ellipse fill="none" stroke="black" cx="171" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-14.3" font-family="Times,serif" font-size="14.00">F</text> +</g> +<!-- C->F --> +<g id="edge5" class="edge"> +<title>C->F</title> +<path fill="none" stroke="black" d="M171,-71.7C171,-63.98 171,-54.71 171,-46.11"/> +<polygon fill="black" stroke="black" points="174.5,-46.1 171,-36.1 167.5,-46.1 174.5,-46.1"/> +</g> +<!-- G --> +<g id="node7" class="node"> +<title>G</title> +<ellipse fill="none" stroke="black" cx="243" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-14.3" font-family="Times,serif" font-size="14.00">G</text> +</g> +<!-- C->G --> +<g id="edge6" class="edge"> +<title>C->G</title> +<path fill="none" stroke="black" d="M185.57,-74.83C195.75,-64.94 209.52,-51.55 221.03,-40.36"/> +<polygon fill="black" stroke="black" points="223.47,-42.87 228.2,-33.38 218.59,-37.85 223.47,-42.87"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [12]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"G"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + +<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain"> +<pre>TODO: [node A] +VISITING: node A +TODO: [node B, node C] +VISITING: node B +TODO: [node C, node D, node E] +VISITING: node C +TODO: [node D, node E, node F, node G] +VISITING: node D +TODO: [node E, node F, node G] +VISITING: node E +TODO: [node F, node G] +VISITING: node F +TODO: [node G] +VISITING: node G +</pre> +</div> +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[12]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>True</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Cool! We're searching one level at a time. But did you notice we lost some functionality? We aren't keeping track of how we got to the final node. There are often multiple ways to reach a node, so we should add a <code>back</code> attribute to backtrack how we got there.</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [13]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">backtrace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">):</span> + <span class="n">nodes</span> <span class="o">=</span> <span class="p">[]</span> + <span class="k">while</span> <span class="n">node</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> + <span class="n">node</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">back</span> + <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">reversed</span><span class="p">(</span><span class="n">nodes</span><span class="p">))</span> + +<span class="k">def</span> <span class="nf">find_bfs_v2</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> + <span class="c1"># the first node to explore is the starting point</span> + <span class="n">todo</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">back</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + + <span class="c1"># keep looping while there are unexplored nodes</span> + <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="n">todo</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> + <span class="nb">print</span><span class="p">(</span><span class="s2">"TODO:"</span><span class="p">,</span> <span class="n">todo</span><span class="p">)</span> + <span class="n">curr</span> <span class="o">=</span> <span class="n">todo</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="c1"># pop from beginning</span> + + <span class="nb">print</span><span class="p">(</span><span class="s2">"VISITING:"</span><span class="p">,</span> <span class="n">curr</span><span class="p">)</span> + <span class="k">if</span> <span class="n">curr</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">dst</span><span class="p">:</span> + <span class="k">return</span> <span class="n">backtrace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">curr</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">curr</span><span class="o">.</span><span class="n">children</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">child</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="p">:</span> + <span class="n">todo</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">visited</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + + <span class="c1"># remember we found child via curr</span> + <span class="c1"># (will help us backtrack later!)</span> + <span class="n">child</span><span class="o">.</span><span class="n">back</span> <span class="o">=</span> <span class="n">curr</span> + + <span class="c1"># nothing left to check, and we haven't already returned True</span> + <span class="k">return</span> <span class="kc">None</span> + +<span class="n">Node</span><span class="o">.</span><span class="n">find</span> <span class="o">=</span> <span class="n">find_bfs_v2</span> + +<span class="n">g</span> <span class="o">=</span> <span class="n">mygraph</span><span class="p">()</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"B"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"C"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"D"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"E"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"F"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"G"</span><span class="p">)</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[13]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="278pt" height="188pt" + viewBox="0.00 0.00 278.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-184 274,-184 274,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="135" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="135" y="-158.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- B --> +<g id="node2" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="99" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-86.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- A->B --> +<g id="edge1" class="edge"> +<title>A->B</title> +<path fill="none" stroke="black" d="M126.65,-144.76C122.29,-136.28 116.85,-125.71 111.96,-116.2"/> +<polygon fill="black" stroke="black" points="114.99,-114.44 107.3,-107.15 108.77,-117.64 114.99,-114.44"/> +</g> +<!-- C --> +<g id="node3" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="171" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-86.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- A->C --> +<g id="edge2" class="edge"> +<title>A->C</title> +<path fill="none" stroke="black" d="M143.35,-144.76C147.71,-136.28 153.15,-125.71 158.04,-116.2"/> +<polygon fill="black" stroke="black" points="161.23,-117.64 162.7,-107.15 155.01,-114.44 161.23,-117.64"/> +</g> +<!-- D --> +<g id="node4" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-14.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- B->D --> +<g id="edge3" class="edge"> +<title>B->D</title> +<path fill="none" stroke="black" d="M84.43,-74.83C74.25,-64.94 60.48,-51.55 48.97,-40.36"/> +<polygon fill="black" stroke="black" points="51.41,-37.85 41.8,-33.38 46.53,-42.87 51.41,-37.85"/> +</g> +<!-- E --> +<g id="node5" class="node"> +<title>E</title> +<ellipse fill="none" stroke="black" cx="99" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-14.3" font-family="Times,serif" font-size="14.00">E</text> +</g> +<!-- B->E --> +<g id="edge4" class="edge"> +<title>B->E</title> +<path fill="none" stroke="black" d="M99,-71.7C99,-63.98 99,-54.71 99,-46.11"/> +<polygon fill="black" stroke="black" points="102.5,-46.1 99,-36.1 95.5,-46.1 102.5,-46.1"/> +</g> +<!-- F --> +<g id="node6" class="node"> +<title>F</title> +<ellipse fill="none" stroke="black" cx="171" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-14.3" font-family="Times,serif" font-size="14.00">F</text> +</g> +<!-- C->F --> +<g id="edge5" class="edge"> +<title>C->F</title> +<path fill="none" stroke="black" d="M171,-71.7C171,-63.98 171,-54.71 171,-46.11"/> +<polygon fill="black" stroke="black" points="174.5,-46.1 171,-36.1 167.5,-46.1 174.5,-46.1"/> +</g> +<!-- G --> +<g id="node7" class="node"> +<title>G</title> +<ellipse fill="none" stroke="black" cx="243" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-14.3" font-family="Times,serif" font-size="14.00">G</text> +</g> +<!-- C->G --> +<g id="edge6" class="edge"> +<title>C->G</title> +<path fill="none" stroke="black" d="M185.57,-74.83C195.75,-64.94 209.52,-51.55 221.03,-40.36"/> +<polygon fill="black" stroke="black" points="223.47,-42.87 228.2,-33.38 218.59,-37.85 223.47,-42.87"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [14]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"G"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + +<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain"> +<pre>TODO: [node A] +VISITING: node A +TODO: [node B, node C] +VISITING: node B +TODO: [node C, node D, node E] +VISITING: node C +TODO: [node D, node E, node F, node G] +VISITING: node D +TODO: [node E, node F, node G] +VISITING: node E +TODO: [node F, node G] +VISITING: node F +TODO: [node G] +VISITING: node G +</pre> +</div> +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[14]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>(node A, node C, node G)</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let's make a tougher test case, with the following:</p> +<ol> +<li>cycles</li> +<li>short and long paths to the same target</li> +</ol> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [15]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"E"</span><span class="p">,</span> <span class="s2">"Z"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"C"</span><span class="p">,</span> <span class="s2">"Z"</span><span class="p">)</span> +<span class="n">g</span><span class="o">.</span><span class="n">edge</span><span class="p">(</span><span class="s2">"B"</span><span class="p">,</span> <span class="s2">"A"</span><span class="p">)</span> +<span class="n">g</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[15]:</div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.44.1 (20200629.0846) + --> +<!-- Pages: 1 --> +<svg width="293pt" height="260pt" + viewBox="0.00 0.00 292.61 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-256 288.61,-256 288.61,4 -4,4"/> +<!-- A --> +<g id="node1" class="node"> +<title>A</title> +<ellipse fill="none" stroke="black" cx="99" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-230.3" font-family="Times,serif" font-size="14.00">A</text> +</g> +<!-- B --> +<g id="node2" class="node"> +<title>B</title> +<ellipse fill="none" stroke="black" cx="99" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-158.3" font-family="Times,serif" font-size="14.00">B</text> +</g> +<!-- A->B --> +<g id="edge1" class="edge"> +<title>A->B</title> +<path fill="none" stroke="black" d="M93.16,-216.41C92.3,-208.51 92.05,-198.85 92.41,-189.94"/> +<polygon fill="black" stroke="black" points="95.9,-190.18 93.12,-179.96 88.92,-189.68 95.9,-190.18"/> +</g> +<!-- C --> +<g id="node3" class="node"> +<title>C</title> +<ellipse fill="none" stroke="black" cx="207" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="207" y="-158.3" font-family="Times,serif" font-size="14.00">C</text> +</g> +<!-- A->C --> +<g id="edge2" class="edge"> +<title>A->C</title> +<path fill="none" stroke="black" d="M117.81,-220.81C135,-209.67 160.62,-193.06 179.99,-180.5"/> +<polygon fill="black" stroke="black" points="181.92,-183.43 188.4,-175.05 178.11,-177.56 181.92,-183.43"/> +</g> +<!-- B->A --> +<g id="edge5" class="edge"> +<title>B->A</title> +<path fill="none" stroke="black" d="M104.88,-179.96C105.71,-187.83 105.95,-197.37 105.58,-206.19"/> +<polygon fill="black" stroke="black" points="102.07,-206.18 104.84,-216.41 109.06,-206.69 102.07,-206.18"/> +</g> +<!-- D --> +<g id="node4" class="node"> +<title>D</title> +<ellipse fill="none" stroke="black" cx="27" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-86.3" font-family="Times,serif" font-size="14.00">D</text> +</g> +<!-- B->D --> +<g id="edge3" class="edge"> +<title>B->D</title> +<path fill="none" stroke="black" d="M84.43,-146.83C74.25,-136.94 60.48,-123.55 48.97,-112.36"/> +<polygon fill="black" stroke="black" points="51.41,-109.85 41.8,-105.38 46.53,-114.87 51.41,-109.85"/> +</g> +<!-- E --> +<g id="node5" class="node"> +<title>E</title> +<ellipse fill="none" stroke="black" cx="99" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-86.3" font-family="Times,serif" font-size="14.00">E</text> +</g> +<!-- B->E --> +<g id="edge4" class="edge"> +<title>B->E</title> +<path fill="none" stroke="black" d="M99,-143.7C99,-135.98 99,-126.71 99,-118.11"/> +<polygon fill="black" stroke="black" points="102.5,-118.1 99,-108.1 95.5,-118.1 102.5,-118.1"/> +</g> +<!-- F --> +<g id="node6" class="node"> +<title>F</title> +<ellipse fill="none" stroke="black" cx="171" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-86.3" font-family="Times,serif" font-size="14.00">F</text> +</g> +<!-- C->F --> +<g id="edge6" class="edge"> +<title>C->F</title> +<path fill="none" stroke="black" d="M198.65,-144.76C194.29,-136.28 188.85,-125.71 183.96,-116.2"/> +<polygon fill="black" stroke="black" points="186.99,-114.44 179.3,-107.15 180.77,-117.64 186.99,-114.44"/> +</g> +<!-- G --> +<g id="node7" class="node"> +<title>G</title> +<ellipse fill="none" stroke="black" cx="243" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-86.3" font-family="Times,serif" font-size="14.00">G</text> +</g> +<!-- C->G --> +<g id="edge7" class="edge"> +<title>C->G</title> +<path fill="none" stroke="black" d="M215.35,-144.76C219.71,-136.28 225.15,-125.71 230.04,-116.2"/> +<polygon fill="black" stroke="black" points="233.23,-117.64 234.7,-107.15 227.01,-114.44 233.23,-117.64"/> +</g> +<!-- Z --> +<g id="node8" class="node"> +<title>Z</title> +<ellipse fill="none" stroke="black" cx="198" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="198" y="-14.3" font-family="Times,serif" font-size="14.00">Z</text> +</g> +<!-- C->Z --> +<g id="edge8" class="edge"> +<title>C->Z</title> +<path fill="none" stroke="black" d="M229.1,-151.61C246.19,-143.01 268.63,-128.5 279,-108 286.22,-93.72 286.61,-86.07 279,-72 268.82,-53.17 248.71,-39.95 231.07,-31.43"/> +<polygon fill="black" stroke="black" points="232.17,-28.08 221.61,-27.17 229.29,-34.46 232.17,-28.08"/> +</g> +<!-- E->Z --> +<g id="edge9" class="edge"> +<title>E->Z</title> +<path fill="none" stroke="black" d="M117.16,-76.16C132.37,-65.41 154.29,-49.91 171.47,-37.76"/> +<polygon fill="black" stroke="black" points="173.81,-40.39 179.96,-31.76 169.77,-34.67 173.81,-40.39"/> +</g> +</g> +</svg> + +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Now there are two A-to-Z paths:</p> +<ul> +<li>A,B,E,Z</li> +<li>A,C,Z</li> +</ul> +<p>We ought to find the second one!</p> + +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [16]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-ipython3"><pre><span></span><span class="n">g</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"A"</span><span class="p">,</span> <span class="s2">"Z"</span><span class="p">)</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + +<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain"> +<pre>TODO: [node A] +VISITING: node A +TODO: [node B, node C] +VISITING: node B +TODO: [node C, node D, node E] +VISITING: node C +TODO: [node D, node E, node F, node G, node Z] +VISITING: node D +TODO: [node E, node F, node G, node Z] +VISITING: node E +TODO: [node F, node G, node Z] +VISITING: node F +TODO: [node G, node Z] +VISITING: node G +TODO: [node Z] +VISITING: node Z +</pre> +</div> +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt">Out[16]:</div> + + + + +<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain"> +<pre>(node A, node C, node Z)</pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Just what we wanted.</p> + +</div> +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h1 id="Conclusion">Conclusion<a class="anchor-link" href="#Conclusion">¶</a></h1> +</div> +</div> +<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>We have lots of experience using data structures like lists and dicts to keep track of data. But data structures can also be used to keep track work that a program needs to do. This strategy is used by BFS and many other systems.</p> +<p>Although more complicated to implement, BFS guarantees the shortest path will be found (in contrast to DFS). Of course, significant memory might be required to maintain the queue of nodes to visit if the graph is large. Depending on the shape of the graph, this memory expense may be greater or less than the memory needed for the stack frames necessarly during a recursive depth-first search.</p> + +</div> +</div> +</body> + + + + + + + +</html> diff --git a/lecture_material/09-Graph-Search-1/reading2.ipynb b/lecture_material/09-Graph-Search-1/reading2.ipynb new file mode 100644 index 0000000..7a34cd6 --- /dev/null +++ b/lecture_material/09-Graph-Search-1/reading2.ipynb @@ -0,0 +1,1235 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Search Paths\n", + "\n", + "In the last reading, we learned about how to check whether there is a path from node A to node B.\n", + "\n", + "In this reading, we'll do additional things:\n", + "\n", + "1. return the path (a list of nodes) found instead of just True/False\n", + "2. learn BFS, an alternative to DFS that is guaranteed to find the shortest path" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from graphviz import Graph, Digraph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Review\n", + "\n", + "Let's revisit the graph search from the end of the last reading (only change is addition of `__repr__`):" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"134pt\" height=\"188pt\"\n", + " viewBox=\"0.00 0.00 134.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 130,-184 130,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"71\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"71\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"98\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"98\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55\"/>\n", + "</g>\n", + "<!-- D->B -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>D->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7fd079488790>" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class mygraph:\n", + " def __init__(self):\n", + " self.nodes = {}\n", + " \n", + " def node(self, name):\n", + " self.nodes[name] = Node(self, name)\n", + " \n", + " def edge(self, src, dst):\n", + " for name in [src, dst]:\n", + " if not name in self.nodes:\n", + " self.node(name)\n", + " self.nodes[src].children.append(self.nodes[dst])\n", + " \n", + " def _repr_svg_(self):\n", + " g = Digraph()\n", + " for n in self.nodes:\n", + " g.node(n)\n", + " for child in self.nodes[n].children:\n", + " g.edge(n, child.name)\n", + " return g._repr_image_svg_xml()\n", + " \n", + " def find(self, src, dst):\n", + " self.visited = set()\n", + " return self.nodes[src].find(dst)\n", + "\n", + "class Node:\n", + " def __init__(self, graph, name):\n", + " self.graph = graph\n", + " self.name = name\n", + " self.children = []\n", + " \n", + " def __repr__(self):\n", + " return \"node %s\" % self.name\n", + " \n", + " def find(self, dst):\n", + " if self.name in self.graph.visited:\n", + " return False\n", + " self.graph.visited.add(self.name)\n", + "\n", + " if self.name == dst:\n", + " return True\n", + " for child in self.children:\n", + " if child.find(dst):\n", + " return True\n", + " return False\n", + "\n", + "g = mygraph()\n", + "g.node(\"A\")\n", + "g.edge(\"B\", \"C\")\n", + "g.edge(\"C\", \"D\")\n", + "g.edge(\"D\", \"B\")\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n", + "True\n", + "False\n" + ] + } + ], + "source": [ + "print(g.find(\"A\", \"A\"))\n", + "print(g.find(\"A\", \"B\"))\n", + "print(g.find(\"B\", \"D\"))\n", + "print(g.find(\"B\", \"A\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting the Path\n", + "\n", + "Rather than just determine if there is a path, let's output what it is. We'll modify the `find` method. If there's a path, it should return it as a list (or tuple!) of nodes traversed. If there is not a path, it should return None.\n", + "\n", + "The logic works like this: if the X node is a child of the W node, and we've found an `(X,Y,Z)` path, then `(W,X,Y,Z)` is also a valid path. On line 11, we're using tuple concatenation to create a new tuple based on the one the child found, but with the parent added to the beginning." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"134pt\" height=\"188pt\"\n", + " viewBox=\"0.00 0.00 134.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 130,-184 130,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"71\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"71\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"98\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"98\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55\"/>\n", + "</g>\n", + "<!-- D->B -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>D->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7fd07948ab20>" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def find_v2(self, dst):\n", + " if self.name in self.graph.visited:\n", + " return None\n", + "\n", + " if self.name == dst:\n", + " return (self.name, )\n", + "\n", + " for child in self.children:\n", + " path = child.find(dst)\n", + " if path != None:\n", + " return (self.name, ) + path\n", + "\n", + " return None\n", + "\n", + "# monkey patching lets us redefine a method in\n", + "# a class, without recreating the whole class\n", + "# (not a recommended practice, but means we don't\n", + "# need to show the complete new version of Node)\n", + "Node.find = find_v2\n", + "\n", + "g = mygraph()\n", + "g.node(\"A\")\n", + "g.edge(\"B\", \"C\")\n", + "g.edge(\"C\", \"D\")\n", + "g.edge(\"D\", \"B\")\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] + } + ], + "source": [ + "path = g.find(\"A\", \"B\")\n", + "print(path)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('C', 'D', 'B')\n" + ] + } + ], + "source": [ + "path = g.find(\"C\", \"B\")\n", + "print(path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multiple Paths\n", + "\n", + "What if there are multiple paths? Which will we return?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"90pt\" height=\"332pt\"\n", + " viewBox=\"0.00 0.00 90.00 332.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 328)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-328 86,-328 86,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-306\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-302.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- E -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>E</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">E</text>\n", + "</g>\n", + "<!-- A->E -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>A->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M23.75,-287.89C21.95,-277.54 19.91,-264.06 19,-252 13.01,-172.22 13.01,-151.78 19,-72 19.64,-63.52 20.84,-54.34 22.12,-46.04\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"25.58,-46.55 23.75,-36.11 18.68,-45.41 25.58,-46.55\"/>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"55\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"55\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- A->B -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>A->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M33.64,-288.41C36.91,-280.22 40.94,-270.14 44.62,-260.95\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"47.95,-262.05 48.41,-251.47 41.45,-259.45 47.95,-262.05\"/>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"55\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"55\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M55,-215.7C55,-207.98 55,-198.71 55,-190.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"58.5,-190.1 55,-180.1 51.5,-190.1 58.5,-190.1\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"55\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"55\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M55,-143.7C55,-135.98 55,-126.71 55,-118.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"58.5,-118.1 55,-108.1 51.5,-118.1 58.5,-118.1\"/>\n", + "</g>\n", + "<!-- D->E -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>D->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M48.36,-72.41C45.09,-64.22 41.06,-54.14 37.38,-44.95\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"40.55,-43.45 33.59,-35.47 34.05,-46.05 40.55,-43.45\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7fd07948a940>" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g = mygraph()\n", + "g.edge(\"A\", \"E\")\n", + "g.edge(\"A\", \"B\")\n", + "g.edge(\"B\", \"C\")\n", + "g.edge(\"C\", \"D\")\n", + "g.edge(\"D\", \"E\")\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('A', 'E')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g.find(\"A\", \"E\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nice, it found the shortest one! But what if we build the same graphs, but adding the edges in a different order?" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"89pt\" height=\"332pt\"\n", + " viewBox=\"0.00 0.00 89.00 332.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 328)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-328 85,-328 85,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"54\" cy=\"-306\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"54\" y=\"-302.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- A->B -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>A->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M47.6,-288.41C44.49,-280.34 40.67,-270.43 37.17,-261.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"40.4,-260.03 33.54,-251.96 33.87,-262.55 40.4,-260.03\"/>\n", + "</g>\n", + "<!-- E -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>E</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"54\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"54\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">E</text>\n", + "</g>\n", + "<!-- A->E -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>A->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M57.65,-287.91C59.68,-277.57 61.98,-264.09 63,-252 69.72,-172.28 69.72,-151.72 63,-72 62.28,-63.5 60.93,-54.31 59.49,-46.01\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"62.91,-45.29 57.65,-36.09 56.03,-46.56 62.91,-45.29\"/>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M27,-215.7C27,-207.98 27,-198.71 27,-190.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"30.5,-190.1 27,-180.1 23.5,-190.1 30.5,-190.1\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M27,-143.7C27,-135.98 27,-126.71 27,-118.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"30.5,-118.1 27,-108.1 23.5,-118.1 30.5,-118.1\"/>\n", + "</g>\n", + "<!-- D->E -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>D->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M33.4,-72.41C36.51,-64.34 40.33,-54.43 43.83,-45.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"47.13,-46.55 47.46,-35.96 40.6,-44.03 47.13,-46.55\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7fd079490130>" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g = mygraph()\n", + "g.edge(\"A\", \"B\")\n", + "g.edge(\"B\", \"C\")\n", + "g.edge(\"C\", \"D\")\n", + "g.edge(\"D\", \"E\")\n", + "g.edge(\"A\", \"E\") # we used to add this first, now last\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('A', 'B', 'C', 'D', 'E')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g.find(\"A\", \"E\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Yuck! If Google Maps gave me these directions for getting from city A to E, then I might just switch to Apple Maps.\n", + "\n", + "The search pattern we're using is known as \"depth first search\", or DFS. It explores one child completely (including all that child's descendents) before checking if the other children know a path.\n", + "\n", + "The alternative to DFS is BFS, or \"breadth first search\". This algorithm will explore all children before exploring grandchildren, before exploring great grandchildren, etc.\n", + "\n", + "The algorithm for BFS is not recursive, but many find it less intuitive that recursive DFS. The strategy is to keep a \"TODO\" list of all nodes that need to be visited. The list is used as a *queue*, meaning the first nodes added to the list will be the first ones visited. When a child is explored, we generally discover grandchildren, but rather than explore those grandchildren immediately (as in DFS), we add those grandchildren to the end of the TODO queue, to be processed eventually after the other children.\n", + "\n", + "Let's try it:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"278pt\" height=\"188pt\"\n", + " viewBox=\"0.00 0.00 278.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 274,-184 274,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"135\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"135\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- A->B -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>A->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M126.65,-144.76C122.29,-136.28 116.85,-125.71 111.96,-116.2\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"114.99,-114.44 107.3,-107.15 108.77,-117.64 114.99,-114.44\"/>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- A->C -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>A->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M143.35,-144.76C147.71,-136.28 153.15,-125.71 158.04,-116.2\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"161.23,-117.64 162.7,-107.15 155.01,-114.44 161.23,-117.64\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- B->D -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>B->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M84.43,-74.83C74.25,-64.94 60.48,-51.55 48.97,-40.36\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"51.41,-37.85 41.8,-33.38 46.53,-42.87 51.41,-37.85\"/>\n", + "</g>\n", + "<!-- E -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>E</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">E</text>\n", + "</g>\n", + "<!-- B->E -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>B->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M99,-71.7C99,-63.98 99,-54.71 99,-46.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"102.5,-46.1 99,-36.1 95.5,-46.1 102.5,-46.1\"/>\n", + "</g>\n", + "<!-- F -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>F</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">F</text>\n", + "</g>\n", + "<!-- C->F -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>C->F</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M171,-71.7C171,-63.98 171,-54.71 171,-46.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"174.5,-46.1 171,-36.1 167.5,-46.1 174.5,-46.1\"/>\n", + "</g>\n", + "<!-- G -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>G</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", + "</g>\n", + "<!-- C->G -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>C->G</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M185.57,-74.83C195.75,-64.94 209.52,-51.55 221.03,-40.36\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"223.47,-42.87 228.2,-33.38 218.59,-37.85 223.47,-42.87\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7fd079490220>" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def find_bfs(self, dst):\n", + " # the first node to explore is the starting point\n", + " todo = [self]\n", + "\n", + " # keep looping while there are unexplored nodes\n", + " while len(todo) > 0:\n", + " print(\"TODO:\", todo)\n", + " curr = todo.pop(0) # pop from beginning\n", + "\n", + " print(\"VISITING:\", curr)\n", + " if curr.name == dst:\n", + " return True\n", + " else:\n", + " for child in curr.children:\n", + " if not child.name in self.graph.visited:\n", + " todo.append(child) # add to end\n", + " self.graph.visited.add(child.name)\n", + "\n", + " # nothing left to check, and we haven't already returned True\n", + " return False\n", + "\n", + "Node.find = find_bfs\n", + "\n", + "g = mygraph()\n", + "g.edge(\"A\", \"B\")\n", + "g.edge(\"A\", \"C\")\n", + "g.edge(\"B\", \"D\")\n", + "g.edge(\"B\", \"E\")\n", + "g.edge(\"C\", \"F\")\n", + "g.edge(\"C\", \"G\")\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TODO: [node A]\n", + "VISITING: node A\n", + "TODO: [node B, node C]\n", + "VISITING: node B\n", + "TODO: [node C, node D, node E]\n", + "VISITING: node C\n", + "TODO: [node D, node E, node F, node G]\n", + "VISITING: node D\n", + "TODO: [node E, node F, node G]\n", + "VISITING: node E\n", + "TODO: [node F, node G]\n", + "VISITING: node F\n", + "TODO: [node G]\n", + "VISITING: node G\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g.find(\"A\", \"G\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cool! We're searching one level at a time. But did you notice we lost some functionality? We aren't keeping track of how we got to the final node. There are often multiple ways to reach a node, so we should add a `back` attribute to backtrack how we got there." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"278pt\" height=\"188pt\"\n", + " viewBox=\"0.00 0.00 278.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 274,-184 274,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"135\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"135\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- A->B -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>A->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M126.65,-144.76C122.29,-136.28 116.85,-125.71 111.96,-116.2\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"114.99,-114.44 107.3,-107.15 108.77,-117.64 114.99,-114.44\"/>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- A->C -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>A->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M143.35,-144.76C147.71,-136.28 153.15,-125.71 158.04,-116.2\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"161.23,-117.64 162.7,-107.15 155.01,-114.44 161.23,-117.64\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- B->D -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>B->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M84.43,-74.83C74.25,-64.94 60.48,-51.55 48.97,-40.36\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"51.41,-37.85 41.8,-33.38 46.53,-42.87 51.41,-37.85\"/>\n", + "</g>\n", + "<!-- E -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>E</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">E</text>\n", + "</g>\n", + "<!-- B->E -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>B->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M99,-71.7C99,-63.98 99,-54.71 99,-46.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"102.5,-46.1 99,-36.1 95.5,-46.1 102.5,-46.1\"/>\n", + "</g>\n", + "<!-- F -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>F</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">F</text>\n", + "</g>\n", + "<!-- C->F -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>C->F</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M171,-71.7C171,-63.98 171,-54.71 171,-46.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"174.5,-46.1 171,-36.1 167.5,-46.1 174.5,-46.1\"/>\n", + "</g>\n", + "<!-- G -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>G</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", + "</g>\n", + "<!-- C->G -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>C->G</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M185.57,-74.83C195.75,-64.94 209.52,-51.55 221.03,-40.36\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"223.47,-42.87 228.2,-33.38 218.59,-37.85 223.47,-42.87\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7fd0794b5760>" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def backtrace(self, node):\n", + " nodes = []\n", + " while node != None:\n", + " nodes.append(node)\n", + " node = node.back\n", + " return tuple(reversed(nodes))\n", + "\n", + "def find_bfs_v2(self, dst):\n", + " # the first node to explore is the starting point\n", + " todo = [self]\n", + " self.back = None\n", + " self.graph.visited.add(self.name)\n", + "\n", + " # keep looping while there are unexplored nodes\n", + " while len(todo) > 0:\n", + " print(\"TODO:\", todo)\n", + " curr = todo.pop(0) # pop from beginning\n", + "\n", + " print(\"VISITING:\", curr)\n", + " if curr.name == dst:\n", + " return backtrace(self, curr)\n", + " else:\n", + " for child in curr.children:\n", + " if not child.name in self.graph.visited:\n", + " todo.append(child)\n", + " self.graph.visited.add(child.name)\n", + "\n", + " # remember we found child via curr\n", + " # (will help us backtrack later!)\n", + " child.back = curr\n", + " \n", + " # nothing left to check, and we haven't already returned True\n", + " return None\n", + "\n", + "Node.find = find_bfs_v2\n", + "\n", + "g = mygraph()\n", + "g.edge(\"A\", \"B\")\n", + "g.edge(\"A\", \"C\")\n", + "g.edge(\"B\", \"D\")\n", + "g.edge(\"B\", \"E\")\n", + "g.edge(\"C\", \"F\")\n", + "g.edge(\"C\", \"G\")\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TODO: [node A]\n", + "VISITING: node A\n", + "TODO: [node B, node C]\n", + "VISITING: node B\n", + "TODO: [node C, node D, node E]\n", + "VISITING: node C\n", + "TODO: [node D, node E, node F, node G]\n", + "VISITING: node D\n", + "TODO: [node E, node F, node G]\n", + "VISITING: node E\n", + "TODO: [node F, node G]\n", + "VISITING: node F\n", + "TODO: [node G]\n", + "VISITING: node G\n" + ] + }, + { + "data": { + "text/plain": [ + "(node A, node C, node G)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g.find(\"A\", \"G\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's make a tougher test case, with the following:\n", + "1. cycles\n", + "2. short and long paths to the same target" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.44.1 (20200629.0846)\n", + " -->\n", + "<!-- Pages: 1 -->\n", + "<svg width=\"293pt\" height=\"260pt\"\n", + " viewBox=\"0.00 0.00 292.61 260.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 256)\">\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-256 288.61,-256 288.61,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- A->B -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>A->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M93.16,-216.41C92.3,-208.51 92.05,-198.85 92.41,-189.94\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"95.9,-190.18 93.12,-179.96 88.92,-189.68 95.9,-190.18\"/>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"207\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"207\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- A->C -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>A->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M117.81,-220.81C135,-209.67 160.62,-193.06 179.99,-180.5\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"181.92,-183.43 188.4,-175.05 178.11,-177.56 181.92,-183.43\"/>\n", + "</g>\n", + "<!-- B->A -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>B->A</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M104.88,-179.96C105.71,-187.83 105.95,-197.37 105.58,-206.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"102.07,-206.18 104.84,-216.41 109.06,-206.69 102.07,-206.18\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- B->D -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>B->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M84.43,-146.83C74.25,-136.94 60.48,-123.55 48.97,-112.36\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"51.41,-109.85 41.8,-105.38 46.53,-114.87 51.41,-109.85\"/>\n", + "</g>\n", + "<!-- E -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>E</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">E</text>\n", + "</g>\n", + "<!-- B->E -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>B->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M99,-143.7C99,-135.98 99,-126.71 99,-118.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"102.5,-118.1 99,-108.1 95.5,-118.1 102.5,-118.1\"/>\n", + "</g>\n", + "<!-- F -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>F</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">F</text>\n", + "</g>\n", + "<!-- C->F -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>C->F</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M198.65,-144.76C194.29,-136.28 188.85,-125.71 183.96,-116.2\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"186.99,-114.44 179.3,-107.15 180.77,-117.64 186.99,-114.44\"/>\n", + "</g>\n", + "<!-- G -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>G</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"243\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", + "</g>\n", + "<!-- C->G -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>C->G</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M215.35,-144.76C219.71,-136.28 225.15,-125.71 230.04,-116.2\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"233.23,-117.64 234.7,-107.15 227.01,-114.44 233.23,-117.64\"/>\n", + "</g>\n", + "<!-- Z -->\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>Z</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"198\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"198\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">Z</text>\n", + "</g>\n", + "<!-- C->Z -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>C->Z</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M229.1,-151.61C246.19,-143.01 268.63,-128.5 279,-108 286.22,-93.72 286.61,-86.07 279,-72 268.82,-53.17 248.71,-39.95 231.07,-31.43\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"232.17,-28.08 221.61,-27.17 229.29,-34.46 232.17,-28.08\"/>\n", + "</g>\n", + "<!-- E->Z -->\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>E->Z</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M117.16,-76.16C132.37,-65.41 154.29,-49.91 171.47,-37.76\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"173.81,-40.39 179.96,-31.76 169.77,-34.67 173.81,-40.39\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.mygraph at 0x7fd0794b5760>" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g.edge(\"E\", \"Z\")\n", + "g.edge(\"C\", \"Z\")\n", + "g.edge(\"B\", \"A\")\n", + "g" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now there are two A-to-Z paths:\n", + "* A,B,E,Z\n", + "* A,C,Z\n", + "\n", + "We ought to find the second one!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TODO: [node A]\n", + "VISITING: node A\n", + "TODO: [node B, node C]\n", + "VISITING: node B\n", + "TODO: [node C, node D, node E]\n", + "VISITING: node C\n", + "TODO: [node D, node E, node F, node G, node Z]\n", + "VISITING: node D\n", + "TODO: [node E, node F, node G, node Z]\n", + "VISITING: node E\n", + "TODO: [node F, node G, node Z]\n", + "VISITING: node F\n", + "TODO: [node G, node Z]\n", + "VISITING: node G\n", + "TODO: [node Z]\n", + "VISITING: node Z\n" + ] + }, + { + "data": { + "text/plain": [ + "(node A, node C, node Z)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g.find(\"A\", \"Z\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Just what we wanted." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conclusion\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have lots of experience using data structures like lists and dicts to keep track of data. But data structures can also be used to keep track work that a program needs to do. This strategy is used by BFS and many other systems.\n", + "\n", + "Although more complicated to implement, BFS guarantees the shortest path will be found (in contrast to DFS). Of course, significant memory might be required to maintain the queue of nodes to visit if the graph is large. Depending on the shape of the graph, this memory expense may be greater or less than the memory needed for the stack frames necessarly during a recursive depth-first search." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lecture_material/09-Graph-Search-1/solution.ipynb b/lecture_material/09-Graph-Search-1/solution.ipynb new file mode 100644 index 0000000..1868202 --- /dev/null +++ b/lecture_material/09-Graph-Search-1/solution.ipynb @@ -0,0 +1,1332 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d684d88e-e96d-4392-b4d6-92d3f1669b32", + "metadata": {}, + "source": [ + "# Binary Search Trees\n", + "\n", + "- Recursive `add()` method\n", + "- Recursive `height()` method" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "66ba808a", + "metadata": {}, + "outputs": [], + "source": [ + "from graphviz import Graph, Digraph\n", + "import random\n", + "import math" + ] + }, + { + "cell_type": "markdown", + "id": "3c372194", + "metadata": {}, + "source": [ + "## Binary Search Tree\n", + "\n", + "- special case of *Binary trees*\n", + "- **BST rule**: any node's value is bigger than every value in its left subtree, and and smaller than every value in its right subtree\n", + "- TODO: write an efficient search for a BST (better complexity than O(N)\n", + "- TODO: write a method to add values to a BST, while preserving the BST rule" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "894a39d2-5e3b-4178-bc1b-dedf0b5a86c0", + "metadata": {}, + "outputs": [], + "source": [ + "class BSTNode:\n", + " def __init__(self, label):\n", + " self.label = label\n", + " self.left = None\n", + " self.right = None\n", + " \n", + " # Category 2: functions that do some action\n", + " def dump(self, prefix=\"\", suffix=\"\"):\n", + " \"\"\"\n", + " prints out name of every node in the tree with some basic formatting\n", + " \"\"\"\n", + " print(prefix, self.label, suffix)\n", + " if self.left != None:\n", + " self.left.dump(prefix+\"\\t\", \"(LEFT)\")\n", + " if self.right != None:\n", + " self.right.dump(prefix+\"\\t\", \"(RIGHT)\")\n", + " \n", + " # Category 1: functions that return some computation\n", + " def search(self, target):\n", + " \"\"\"\n", + " returns True/False, if target is somewhere in the tree\n", + " \"\"\"\n", + " if target == self.label:\n", + " return True\n", + " elif target < self.label:\n", + " if self.left != None:\n", + " if self.left.search(target):\n", + " return True\n", + " elif target > self.label:\n", + " if self.right != None:\n", + " if self.right.search(target):\n", + " return True\n", + " \n", + " return False\n", + " \n", + " def add(self, label):\n", + " \"\"\"\n", + " Finds the correct spot for label and adds a new node with it.\n", + " Assumes that tree already contains at least one node -> TODO: discuss why?\n", + " Raises ValueError if label is already on the tree.\n", + " \"\"\"\n", + " if label < self.label:\n", + " # go left\n", + " if self.left == None:\n", + " self.left = BSTNode(label)\n", + " else:\n", + " # recurse left\n", + " self.left.add(label)\n", + " elif label > self.label:\n", + " # go right\n", + " if self.right == None:\n", + " self.right = BSTNode(label)\n", + " else:\n", + " # recurse right\n", + " self.right.add(label)\n", + " else:\n", + " raise ValueError(f\"{label} is already a node on the tree!\")\n", + " \n", + "\n", + " def height(self):\n", + " \"\"\"\n", + " Calculates height of the BST.\n", + " Height: the number of nodes on the longest root-to-leaf path (including the root)\n", + " \"\"\"\n", + " if self.left == None:\n", + " l = 0\n", + " else:\n", + " # recurse left\n", + " l = self.left.height()\n", + " \n", + " if self.right == None:\n", + " r = 0\n", + " else:\n", + " # recurse right\n", + " r = self.right.height()\n", + " \n", + " return max(l, r)+1" + ] + }, + { + "cell_type": "markdown", + "id": "d22c3684", + "metadata": {}, + "source": [ + "### Code folding nbextension\n", + "\n", + "- Go to \"jupyterlab\" > \"Settings\" > \"Advanced Settings Editor\" > \"Notebook\" > \"Rulers\" > enable \"Code Folding\" (there should be three such settings)." + ] + }, + { + "cell_type": "markdown", + "id": "1d6935d8", + "metadata": {}, + "source": [ + "### Recursive `add` method\n", + "- Manually creating a tree is cumbersome and subject to mistakes (violations of BST rule)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7047d184", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 10 (ROOT)\n", + "\t 2 (LEFT)\n", + "\t\t 1 (LEFT)\n", + "\t\t 4 (RIGHT)\n", + "\t\t\t 3 (LEFT)\n", + "\t\t\t 8 (RIGHT)\n", + "\t 15 (RIGHT)\n", + "\t\t 12 (LEFT)\n", + "\t\t 19 (RIGHT)\n" + ] + } + ], + "source": [ + "root = BSTNode(10)\n", + "root.left = BSTNode(2)\n", + "root.left.left = BSTNode(1)\n", + "root.left.right = BSTNode(4)\n", + "root.left.right.right = BSTNode(8)\n", + "root.left.right.left = BSTNode(3)\n", + "root.right = BSTNode(15)\n", + "root.right.left = BSTNode(12)\n", + "root.right.right = BSTNode(19)\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0cd51cf2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 10 (ROOT)\n", + "\t 2 (LEFT)\n", + "\t\t 1 (LEFT)\n", + "\t\t 4 (RIGHT)\n", + "\t\t\t 3 (LEFT)\n", + "\t\t\t 8 (RIGHT)\n", + "\t 15 (RIGHT)\n", + "\t\t 12 (LEFT)\n", + "\t\t 19 (RIGHT)\n" + ] + } + ], + "source": [ + "values = [10, 2, 1, 4, 8, 3, 15, 12, 19]\n", + "\n", + "root = BSTNode(values[0])\n", + "for val in values[1:]:\n", + " root.add(val)\n", + " \n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "markdown", + "id": "f9324526", + "metadata": {}, + "source": [ + "### Recursive `height` method\n", + "\n", + "- **Height**: the number of nodes on the longest root-to-leaf path (including the root)\n", + "- left subtree has height 4, right subtree has height 6, my height = 7\n", + "- left subtree has height 4, right subtree has height 4, my height = 5\n", + "- left subtree has height 10, right subtree has height 0, my height = 11\n", + "- left subtree has height of l, right subtree has height of r, my height = max(l, r)+1\n", + "- What is the simplest case for height calculation? Tree containing just root node\n", + " - What are the values of l and r in that case? l = 0 and r = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "18d8de1d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# TODO: Let's implement and invoke the height method\n", + "root.height()" + ] + }, + { + "cell_type": "markdown", + "id": "bb2057f2", + "metadata": {}, + "source": [ + "### Tree containing 100 values\n", + "- let's use range(...) to produce a sequence of 100 integers\n", + "- recall that range(...) returns a sequence in increasing order\n", + "- what will be the height of this tree? **100**" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "820f3596", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100\n" + ] + } + ], + "source": [ + "values = list(range(100))\n", + "# Q: Is this tree balanced?\n", + "# A: No, it is the worst possible BST for these numbers, that is\n", + "# it is a linked list!\n", + "\n", + "root = BSTNode(values[0])\n", + "for val in values[1:]:\n", + " root.add(val)\n", + " \n", + "print(root.height())\n", + "# root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "markdown", + "id": "af9dd1b3", + "metadata": {}, + "source": [ + "#### Let's use `random` module `shuffle` function to randomly order the sequence of 100 numbers.\n", + "- in-place re-ordering of numbers (just like `sort` method)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c07664be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15\n", + " 3 (ROOT)\n", + "\t 0 (LEFT)\n", + "\t\t 1 (RIGHT)\n", + "\t\t\t 2 (RIGHT)\n", + "\t 96 (RIGHT)\n", + "\t\t 78 (LEFT)\n", + "\t\t\t 9 (LEFT)\n", + "\t\t\t\t 5 (LEFT)\n", + "\t\t\t\t\t 4 (LEFT)\n", + "\t\t\t\t\t 8 (RIGHT)\n", + "\t\t\t\t\t\t 7 (LEFT)\n", + "\t\t\t\t\t\t\t 6 (LEFT)\n", + "\t\t\t\t 64 (RIGHT)\n", + "\t\t\t\t\t 46 (LEFT)\n", + "\t\t\t\t\t\t 29 (LEFT)\n", + "\t\t\t\t\t\t\t 25 (LEFT)\n", + "\t\t\t\t\t\t\t\t 14 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 12 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t 10 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 11 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 13 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t 20 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 16 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 15 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 18 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 17 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 19 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 21 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 23 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 22 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 24 (RIGHT)\n", + "\t\t\t\t\t\t\t\t 27 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t 26 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 28 (RIGHT)\n", + "\t\t\t\t\t\t\t 44 (RIGHT)\n", + "\t\t\t\t\t\t\t\t 38 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 30 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t 37 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 32 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 31 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 33 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t\t 35 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t 34 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t\t\t 36 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t 39 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 40 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 41 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 42 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t\t 43 (RIGHT)\n", + "\t\t\t\t\t\t\t\t 45 (RIGHT)\n", + "\t\t\t\t\t\t 48 (RIGHT)\n", + "\t\t\t\t\t\t\t 47 (LEFT)\n", + "\t\t\t\t\t\t\t 53 (RIGHT)\n", + "\t\t\t\t\t\t\t\t 51 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 49 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t 50 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t 52 (RIGHT)\n", + "\t\t\t\t\t\t\t\t 60 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t 56 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t 54 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 55 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 59 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t\t 58 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t\t\t 57 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 62 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 61 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t\t 63 (RIGHT)\n", + "\t\t\t\t\t 65 (RIGHT)\n", + "\t\t\t\t\t\t 69 (RIGHT)\n", + "\t\t\t\t\t\t\t 68 (LEFT)\n", + "\t\t\t\t\t\t\t\t 66 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 67 (RIGHT)\n", + "\t\t\t\t\t\t\t 73 (RIGHT)\n", + "\t\t\t\t\t\t\t\t 70 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 72 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 71 (LEFT)\n", + "\t\t\t\t\t\t\t\t 75 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t 74 (LEFT)\n", + "\t\t\t\t\t\t\t\t\t 77 (RIGHT)\n", + "\t\t\t\t\t\t\t\t\t\t 76 (LEFT)\n", + "\t\t\t 87 (RIGHT)\n", + "\t\t\t\t 85 (LEFT)\n", + "\t\t\t\t\t 81 (LEFT)\n", + "\t\t\t\t\t\t 79 (LEFT)\n", + "\t\t\t\t\t\t\t 80 (RIGHT)\n", + "\t\t\t\t\t\t 84 (RIGHT)\n", + "\t\t\t\t\t\t\t 82 (LEFT)\n", + "\t\t\t\t\t\t\t\t 83 (RIGHT)\n", + "\t\t\t\t\t 86 (RIGHT)\n", + "\t\t\t\t 92 (RIGHT)\n", + "\t\t\t\t\t 89 (LEFT)\n", + "\t\t\t\t\t\t 88 (LEFT)\n", + "\t\t\t\t\t\t 91 (RIGHT)\n", + "\t\t\t\t\t\t\t 90 (LEFT)\n", + "\t\t\t\t\t 95 (RIGHT)\n", + "\t\t\t\t\t\t 93 (LEFT)\n", + "\t\t\t\t\t\t\t 94 (RIGHT)\n", + "\t\t 97 (RIGHT)\n", + "\t\t\t 98 (RIGHT)\n", + "\t\t\t\t 99 (RIGHT)\n" + ] + } + ], + "source": [ + "values = list(range(100))\n", + "random.shuffle(values)\n", + "# Q: Is this tree balanced?\n", + "# A: depends on the shuffling, you can check using math.log2(N)\n", + "\n", + "root = BSTNode(values[0])\n", + "for val in values[1:]:\n", + " root.add(val)\n", + " \n", + "print(root.height())\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4d87a7e7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.643856189774724" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "math.log2(100)" + ] + }, + { + "cell_type": "markdown", + "id": "cf919d84", + "metadata": {}, + "source": [ + "### Balanced BSTs / Self-balancing BSTs\n", + "- not a covered topic for the purpose of this course\n", + "- you can explore the below recursive function definition if you are interested\n", + "- you are **not required** to know how to do this" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "bd5aa50f", + "metadata": {}, + "outputs": [], + "source": [ + "# Recrusive function that\n", + "def sorted_array_to_bst(nums, bst_nums):\n", + " \"\"\"\n", + " Produces best ordering nums (a list of sorted numbers),\n", + " for the purpose of creating a balanced BST.\n", + " Writes new ordering of numbers into bst_nums.\n", + " \"\"\"\n", + " if len(nums) == 0:\n", + " return None\n", + " elif len(nums) == 1:\n", + " bst_nums.append(nums[0])\n", + " else:\n", + " mid_index = len(nums)//2\n", + " bst_nums.append(nums[mid_index])\n", + " \n", + " # recurse left\n", + " left_val = sorted_array_to_bst(nums[:mid_index], bst_nums)\n", + " if left_val != None:\n", + " bst_nums.append(left_val)\n", + "\n", + " # recurse right\n", + " right_val = sorted_array_to_bst(nums[mid_index+1:], bst_nums)\n", + " if right_val != None:\n", + " bst_nums.append(right_val)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "98b9148d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 1, 0, 4, 3]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(5)), bst_nums)\n", + "bst_nums" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f1288713", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n" + ] + } + ], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(100)), bst_nums)\n", + "\n", + "root = BSTNode(bst_nums[0])\n", + "for val in bst_nums[1:]:\n", + " root.add(val)\n", + "\n", + "print(root.height())" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "399fe31a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + " 2 (ROOT)\n", + "\t 1 (LEFT)\n", + "\t\t 0 (LEFT)\n", + "\t 4 (RIGHT)\n", + "\t\t 3 (LEFT)\n" + ] + } + ], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(5)), bst_nums)\n", + "\n", + "root = BSTNode(bst_nums[0])\n", + "for val in bst_nums[1:]:\n", + " root.add(val)\n", + "\n", + "print(root.height())\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "markdown", + "id": "e042962c", + "metadata": {}, + "source": [ + "### Depth First Search (DFS) \n", + "- Last lecture: BST search with complexity **O(logN)**\n", + "- Finds a path from one node to another -- works on any directed graph" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c00e99eb", + "metadata": {}, + "outputs": [], + "source": [ + "def example(num):\n", + " g = Graph()\n", + " if num == 1:\n", + " g.node(\"A\")\n", + " g.edge(\"B\", \"C\")\n", + " g.edge(\"C\", \"D\")\n", + " g.edge(\"D\", \"B\")\n", + " elif num == 2:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"B\", \"C\")\n", + " g.edge(\"C\", \"D\")\n", + " g.edge(\"D\", \"E\")\n", + " g.edge(\"A\", \"E\")\n", + " elif num == 3:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"A\", \"C\")\n", + " g.edge(\"B\", \"D\")\n", + " g.edge(\"B\", \"E\")\n", + " g.edge(\"C\", \"F\")\n", + " g.edge(\"C\", \"G\")\n", + " elif num == 4:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"A\", \"C\")\n", + " g.edge(\"B\", \"D\")\n", + " g.edge(\"B\", \"E\")\n", + " g.edge(\"C\", \"F\")\n", + " g.edge(\"C\", \"G\")\n", + " g.edge(\"E\", \"Z\")\n", + " g.edge(\"C\", \"Z\")\n", + " g.edge(\"B\", \"A\")\n", + " elif num == 5:\n", + " width = 8\n", + " height = 4\n", + " for L1 in range(height-1):\n", + " L2 = L1 + 1\n", + " for i in range(width-(height-L1-1)):\n", + " for j in range(width-(height-L2-1)):\n", + " node1 = str(L1)+\"-\"+str(i)\n", + " node2 = str(L2)+\"-\"+str(j)\n", + " g.edge(node1, node2)\n", + " else:\n", + " raise Exception(\"no such example\")\n", + " return g" + ] + }, + { + "cell_type": "markdown", + "id": "6690b3be", + "metadata": {}, + "source": [ + "### For a regular graph, you need a new class `Graph` to keep track of the whole graph.\n", + "- Why? Remember graphs need not have a \"root\" node, which means there is no one origin point" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "8f5e8b06", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.43.0 (0)\n", + " -->\n", + "<!-- Title: %3 Pages: 1 -->\n", + "<svg width=\"134pt\" height=\"188pt\"\n", + " viewBox=\"0.00 0.00 134.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n", + "<title>%3</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 130,-184 130,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"71\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"71\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"98\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"98\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55\"/>\n", + "</g>\n", + "<!-- D->B -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>D->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.Graph at 0x7f58e025b490>" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class Graph:\n", + " def __init__(self):\n", + " # name => Node\n", + " self.nodes = {}\n", + " # to keep track which nodes have already been visited\n", + " self.visited = set()\n", + "\n", + " def node(self, name):\n", + " node = Node(name)\n", + " self.nodes[name] = node\n", + " node.graph = self\n", + " \n", + " def edge(self, src, dst):\n", + " \"\"\"\n", + " Automatically adds missing nodes.\n", + " \"\"\"\n", + " for name in [src, dst]:\n", + " if not name in self.nodes:\n", + " self.node(name)\n", + " self.nodes[src].children.append(self.nodes[dst])\n", + "\n", + " def _repr_svg_(self):\n", + " \"\"\"\n", + " Draws the graph nodes and edges iteratively.\n", + " \"\"\"\n", + " g = Digraph()\n", + " for n in self.nodes:\n", + " g.node(n)\n", + " for child in self.nodes[n].children:\n", + " g.edge(n, child.name)\n", + " return g._repr_image_svg_xml()\n", + " \n", + " def dfs_search(self, src_name, dst_name):\n", + " \"\"\"\n", + " Clears the visited set and invokes dfs_search using Node object instance\n", + " with name src_name.\n", + " \"\"\"\n", + " # Q: is this method recursive?\n", + " # A: no, it is just invoking dfs_search method for Node object instance\n", + " # dfs_search method in Node class is recursive\n", + " # These methods in two different classes just happen to share the same name\n", + " self.visited.clear()\n", + " return self.nodes[src_name].dfs_search(self.nodes[dst_name])\n", + " \n", + "\n", + "class Node:\n", + " def __init__(self, name):\n", + " self.name = name\n", + " self.children = []\n", + " self.graph = None # back reference\n", + " self.finder = None # who found me during BFS\n", + " \n", + " def __repr__(self):\n", + " return self.name\n", + " \n", + " def dfs_search(self, dst):\n", + " \"\"\"\n", + " Returns True / False when path to dst is found / not found.\n", + " \"\"\"\n", + " # TODO: what is the simplest case? current node is the dst\n", + " if self in self.graph.visited:\n", + " return False\n", + " self.graph.visited.add(self)\n", + "\n", + " if self == dst:\n", + " return True\n", + " \n", + " for child in self.children:\n", + " if child.dfs_search_v1(dst):\n", + " return True\n", + " \n", + " return False\n", + "\n", + "\n", + "g = example(1)\n", + "g" + ] + }, + { + "cell_type": "markdown", + "id": "c83e9993-765c-42a0-97f6-6277627acf95", + "metadata": {}, + "source": [ + "### Testcases for DFS with True or False" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "15edd0d2", + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Node' object has no attribute 'dfs_search_v1'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[15], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdfs_search\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mB\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mA\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m) \u001b[38;5;66;03m# should return False\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(g\u001b[38;5;241m.\u001b[39mdfs_search(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mB\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mD\u001b[39m\u001b[38;5;124m\"\u001b[39m)) \u001b[38;5;66;03m# should return True\u001b[39;00m\n", + "Cell \u001b[0;32mIn[14], line 43\u001b[0m, in \u001b[0;36mGraph.dfs_search\u001b[0;34m(self, src_name, dst_name)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[38;5;66;03m# Q: is this method recursive?\u001b[39;00m\n\u001b[1;32m 39\u001b[0m \u001b[38;5;66;03m# A: no, it is just invoking dfs_search method for Node object instance\u001b[39;00m\n\u001b[1;32m 40\u001b[0m \u001b[38;5;66;03m# dfs_search method in Node class is recursive\u001b[39;00m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;66;03m# These methods in two different classes just happen to share the same name\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvisited\u001b[38;5;241m.\u001b[39mclear()\n\u001b[0;32m---> 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnodes\u001b[49m\u001b[43m[\u001b[49m\u001b[43msrc_name\u001b[49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdfs_search\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnodes\u001b[49m\u001b[43m[\u001b[49m\u001b[43mdst_name\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[14], line 69\u001b[0m, in \u001b[0;36mNode.dfs_search\u001b[0;34m(self, dst)\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mchildren:\n\u001b[0;32m---> 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mchild\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdfs_search_v1\u001b[49m(dst):\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'Node' object has no attribute 'dfs_search_v1'" + ] + } + ], + "source": [ + "print(g.dfs_search(\"B\", \"A\")) # should return False\n", + "print(g.dfs_search(\"B\", \"D\")) # should return True" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "0330e0b6", + "metadata": {}, + "outputs": [], + "source": [ + "# DFS search\n", + "# TODO: give the actual path, not just True/False\n", + "# TODO: use a different algorithm to find the shortest path" + ] + }, + { + "cell_type": "markdown", + "id": "ac4d6c30", + "metadata": {}, + "source": [ + "#### **IMPORTANT**: it is not recommended to re-define same `class`. This is shown only for example purposes. You must always go back to the original cell and update the definition there." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "44fda5f1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.43.0 (0)\n", + " -->\n", + "<!-- Title: %3 Pages: 1 -->\n", + "<svg width=\"134pt\" height=\"188pt\"\n", + " viewBox=\"0.00 0.00 134.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n", + "<title>%3</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 130,-184 130,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"71\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"71\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M92.36,-144.41C89.09,-136.22 85.06,-126.14 81.38,-116.95\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"84.55,-115.45 77.59,-107.47 78.05,-118.05 84.55,-115.45\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"98\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"98\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M77.4,-72.41C80.51,-64.34 84.33,-54.43 87.83,-45.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"91.13,-46.55 91.46,-35.96 84.6,-44.03 91.13,-46.55\"/>\n", + "</g>\n", + "<!-- D->B -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>D->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M101.65,-36.09C103.68,-46.43 105.98,-59.91 107,-72 108.34,-87.94 108.2,-92.04 107,-108 106.36,-116.48 105.16,-125.66 103.88,-133.96\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"100.42,-133.45 102.25,-143.89 107.32,-134.59 100.42,-133.45\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.Graph at 0x7f58d164b430>" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class Graph:\n", + " def __init__(self):\n", + " # name => Node\n", + " self.nodes = {}\n", + " # to keep track which nodes have already been visited\n", + " self.visited = set()\n", + "\n", + " def node(self, name):\n", + " node = Node(name)\n", + " self.nodes[name] = node\n", + " node.graph = self\n", + " \n", + " def edge(self, src, dst):\n", + " \"\"\"\n", + " Automatically adds missing nodes.\n", + " \"\"\"\n", + " for name in [src, dst]:\n", + " if not name in self.nodes:\n", + " self.node(name)\n", + " self.nodes[src].children.append(self.nodes[dst])\n", + "\n", + " def _repr_svg_(self):\n", + " \"\"\"\n", + " Draws the graph nodes and edges iteratively.\n", + " \"\"\"\n", + " g = Digraph()\n", + " for n in self.nodes:\n", + " g.node(n)\n", + " for child in self.nodes[n].children:\n", + " g.edge(n, child.name)\n", + " return g._repr_image_svg_xml()\n", + " \n", + " def dfs_search(self, src_name, dst_name):\n", + " \"\"\"\n", + " Clears the visited set and invokes dfs_search using Node object instance\n", + " with name src_name.\n", + " \"\"\"\n", + " # Q: is this method recursive?\n", + " # A: no, it is just invoking dfs_search method for Node object instance\n", + " # dfs_search method in Node class is recursive\n", + " # These methods in two different classes just happen to share the same name\n", + " self.visited.clear()\n", + " return self.nodes[src_name].dfs_search(self.nodes[dst_name])\n", + " \n", + "\n", + "class Node:\n", + " def __init__(self, name):\n", + " self.name = name\n", + " self.children = []\n", + " self.graph = None # back reference\n", + " self.finder = None # who found me during BFS\n", + " \n", + " def __repr__(self):\n", + " return self.name\n", + " \n", + " def dfs_search_v1(self, dst):\n", + " \"\"\"\n", + " Returns True / False when path to dst is found / not found.\n", + " Try using this method by commenting out the dfs_search method below.\n", + " \"\"\"\n", + " # TODO: what is the simplest case? current node is the dst\n", + " if self in self.graph.visited:\n", + " return False\n", + " self.graph.visited.add(self)\n", + "\n", + " if self == dst:\n", + " return True\n", + " \n", + " for child in self.children:\n", + " if child.dfs_search_v1(dst):\n", + " return True\n", + " \n", + " return False\n", + "\n", + " def dfs_search(self, dst):\n", + " \"\"\"\n", + " Returns the actual path to the dst as a tuple or None otherwise\n", + " \"\"\"\n", + " # TODO: what is the simplest case? current node is the dst\n", + " if self in self.graph.visited:\n", + " return None\n", + " self.graph.visited.add(self)\n", + "\n", + " if self == dst:\n", + " return (self,)\n", + " \n", + " for child in self.children:\n", + " child_path = child.dfs_search(dst)\n", + " if child_path != None:\n", + " return (self,) + child_path\n", + " \n", + " return None\n", + "\n", + "\n", + "g = example(1)\n", + "g" + ] + }, + { + "cell_type": "markdown", + "id": "59aee028", + "metadata": {}, + "source": [ + "### Testcases for DFS with path" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "6de4c8b1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n", + "(B, C, D)\n" + ] + } + ], + "source": [ + "print(g.dfs_search(\"B\", \"A\")) # should return None\n", + "print(g.dfs_search(\"B\", \"D\")) # should return (B, C, D)" + ] + }, + { + "cell_type": "markdown", + "id": "43c566a5", + "metadata": {}, + "source": [ + "### DFS search\n", + "\n", + "- return the actual path rather than just returning True / False\n", + "- for example, path between B and D should be (B, C, D)" + ] + }, + { + "cell_type": "markdown", + "id": "e7cb5fc1", + "metadata": {}, + "source": [ + "### Why is it called \"*Depth* First Search\"?\n", + "\n", + "- we start at the starting node and go as deep as possible because recursion always goes as deep as possible before coming back to the other children in the previous level\n", + "- we need a `Stack` data structure:\n", + " - Last-In-First-Out (LIFO)\n", + "- recursion naturally uses `Stack`, which is why we don't have to explicitly use a `Stack` data structure\n", + "- might not give us the shortest possible path" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "4480be3c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", + "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", + " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", + "<!-- Generated by graphviz version 2.43.0 (0)\n", + " -->\n", + "<!-- Title: %3 Pages: 1 -->\n", + "<svg width=\"89pt\" height=\"332pt\"\n", + " viewBox=\"0.00 0.00 89.00 332.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 328)\">\n", + "<title>%3</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-328 85,-328 85,4 -4,4\"/>\n", + "<!-- A -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>A</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"54\" cy=\"-306\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"54\" y=\"-302.3\" font-family=\"Times,serif\" font-size=\"14.00\">A</text>\n", + "</g>\n", + "<!-- B -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>B</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">B</text>\n", + "</g>\n", + "<!-- A->B -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>A->B</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M47.6,-288.41C44.49,-280.34 40.67,-270.43 37.17,-261.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"40.4,-260.03 33.54,-251.96 33.87,-262.55 40.4,-260.03\"/>\n", + "</g>\n", + "<!-- E -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>E</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"54\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"54\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">E</text>\n", + "</g>\n", + "<!-- A->E -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>A->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M57.65,-287.91C59.68,-277.57 61.98,-264.09 63,-252 69.72,-172.28 69.72,-151.72 63,-72 62.28,-63.5 60.93,-54.31 59.49,-46.01\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"62.91,-45.29 57.65,-36.09 56.03,-46.56 62.91,-45.29\"/>\n", + "</g>\n", + "<!-- C -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>C</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">C</text>\n", + "</g>\n", + "<!-- B->C -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>B->C</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M27,-215.7C27,-207.98 27,-198.71 27,-190.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"30.5,-190.1 27,-180.1 23.5,-190.1 30.5,-190.1\"/>\n", + "</g>\n", + "<!-- D -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>D</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">D</text>\n", + "</g>\n", + "<!-- C->D -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>C->D</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M27,-143.7C27,-135.98 27,-126.71 27,-118.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"30.5,-118.1 27,-108.1 23.5,-118.1 30.5,-118.1\"/>\n", + "</g>\n", + "<!-- D->E -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>D->E</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M33.4,-72.41C36.51,-64.34 40.33,-54.43 43.83,-45.35\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"47.13,-46.55 47.46,-35.96 40.6,-44.03 47.13,-46.55\"/>\n", + "</g>\n", + "</g>\n", + "</svg>\n" + ], + "text/plain": [ + "<__main__.Graph at 0x7f58d16a22c0>" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g = example(2)\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "9467f6cf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(A, B, C, D, E)\n", + "None\n" + ] + } + ], + "source": [ + "print(g.dfs_search(\"A\", \"E\")) # should return (A, B, C, D, E)\n", + "print(g.dfs_search(\"E\", \"A\")) # should return None" + ] + }, + { + "cell_type": "markdown", + "id": "a54b6599", + "metadata": {}, + "source": [ + "### `tuple` review\n", + "\n", + "- similar to lists, but immutable\n", + "- defined using `()`\n", + "- `*` operator represents replication and not multiplication for lists and tuples\n", + "- `+` operator represents concatenation and not additional for lists and tuples" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "7da7bccc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5,)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(3+2,) # this is a tuple containing 5" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "b05a563a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(3+2) # order precedence" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "778a76d7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, 5, 5)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# replicates item 5 three times and returns a new tuple\n", + "(3+2,) * 3" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b8cc1b36", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "15" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(3+2) * 3 # gives us 15" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "a9e31d22", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 5)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# returns a new tuple containing all items in the first tuple and \n", + "# the second tuple\n", + "(3, ) + (5, )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lecture_material/09-Graph-Search-1/template_lec_001.ipynb b/lecture_material/09-Graph-Search-1/template_lec_001.ipynb new file mode 100644 index 0000000..9d56986 --- /dev/null +++ b/lecture_material/09-Graph-Search-1/template_lec_001.ipynb @@ -0,0 +1,671 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d684d88e-e96d-4392-b4d6-92d3f1669b32", + "metadata": {}, + "source": [ + "# Binary Search Trees\n", + "\n", + "- Recursive `add()` method\n", + "- Recursive `height()` method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66ba808a", + "metadata": {}, + "outputs": [], + "source": [ + "from graphviz import Graph, Digraph" + ] + }, + { + "cell_type": "markdown", + "id": "3c372194", + "metadata": {}, + "source": [ + "## Binary Search Tree\n", + "\n", + "- special case of *Binary trees*\n", + "- **BST rule**: any node's value is bigger than every value in its left subtree, and and smaller than every value in its right subtree\n", + "- TODO: write an efficient search for a BST (better complexity than O(N)\n", + "- TODO: write a method to add values to a BST, while preserving the BST rule" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "894a39d2-5e3b-4178-bc1b-dedf0b5a86c0", + "metadata": {}, + "outputs": [], + "source": [ + "class BSTNode:\n", + " def __init__(self, label):\n", + " self.label = label\n", + " self.left = None\n", + " self.right = None\n", + " \n", + " # Category 2: functions that do some action\n", + " def dump(self, prefix=\"\", suffix=\"\"):\n", + " \"\"\"\n", + " prints out name of every node in the tree with some basic formatting\n", + " \"\"\"\n", + " print(prefix, self.label, suffix)\n", + " if self.left != None:\n", + " self.left.dump(prefix+\"\\t\", \"(LEFT)\")\n", + " if self.right != None:\n", + " self.right.dump(prefix+\"\\t\", \"(RIGHT)\")\n", + " \n", + " # Category 1: functions that return some computation\n", + " def search(self, target):\n", + " \"\"\"\n", + " returns True/False, if target is somewhere in the tree\n", + " \"\"\"\n", + " if target == self.label:\n", + " return True\n", + " elif target < self.label:\n", + " if self.left != None:\n", + " if self.left.search(target):\n", + " return True\n", + " elif target > self.label:\n", + " if self.right != None:\n", + " if self.right.search(target):\n", + " return True\n", + " \n", + " return False\n", + " \n", + " def add(self, label):\n", + " \"\"\"\n", + " Finds the correct spot for label and adds a new node with it.\n", + " Assumes that tree already contains at least one node -> TODO: discuss why?\n", + " Raises ValueError if label is already on the tree.\n", + " \"\"\"\n", + " pass\n", + " \n", + "\n", + " def height(self):\n", + " \"\"\"\n", + " Calculates height of the BST.\n", + " Height: the number of nodes on the longest root-to-leaf path (including the root)\n", + " \"\"\"\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "6104a9e7", + "metadata": {}, + "source": [ + "### Code folding nbextension\n", + "\n", + "\n", + "- Go to \"jupyterlab\" > \"Settings\" > \"Advanced Settings Editor\" > \"Notebook\" > \"Rulers\" > enable \"Code Folding\" (there should be three such settings)." + ] + }, + { + "cell_type": "markdown", + "id": "1d6935d8", + "metadata": {}, + "source": [ + "### Recursive `add` method\n", + "- Manually creating a tree is cumbersome and subject to mistakes (violations of BST rule)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7047d184", + "metadata": {}, + "outputs": [], + "source": [ + "root = BSTNode(10)\n", + "root.left = BSTNode(2)\n", + "root.left.left = BSTNode(1)\n", + "root.left.right = BSTNode(4)\n", + "root.left.right.right = BSTNode(8)\n", + "root.left.right.left = BSTNode(3)\n", + "root.right = BSTNode(15)\n", + "root.right.left = BSTNode(12)\n", + "root.right.right = BSTNode(19)\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0cd51cf2", + "metadata": {}, + "outputs": [], + "source": [ + "values = [10, 2, 1, 4, 8, 3, 15, 12, 19]\n", + "\n", + "root = BSTNode(values[0])\n", + "for val in values[1:]:\n", + " root.add(val)\n", + " \n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "markdown", + "id": "f9324526", + "metadata": {}, + "source": [ + "### Recursive `height` method\n", + "\n", + "- **Height**: the number of nodes on the longest root-to-leaf path (including the root)\n", + "- left subtree has height 4, right subtree has height 6, my height = ?\n", + "- left subtree has height 4, right subtree has height 4, my height = ?\n", + "- left subtree has height 10, right subtree has height 0, my height = ?\n", + "- left subtree has height of l, right subtree has height of r, my height = ?\n", + "- What is the simplest case for height calculation?\n", + " - What are the values of l and r in that case?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18d8de1d", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Let's implement and invoke the height method\n" + ] + }, + { + "cell_type": "markdown", + "id": "bb2057f2", + "metadata": {}, + "source": [ + "### Tree containing 100 values\n", + "- let's use range(...) to produce a sequence of 100 integers\n", + "- recall that range(...) returns a sequence in increasing order\n", + "- what will be the height of this tree? **100**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "820f3596", + "metadata": {}, + "outputs": [], + "source": [ + "values = list(range(100))\n", + "# Q: Is this tree balanced?\n", + "# A: \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "af9dd1b3", + "metadata": {}, + "source": [ + "#### Let's use `random` module `shuffle` function to randomly order the sequence of 100 numbers.\n", + "- in-place re-ordering of numbers (just like `sort` method)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c07664be", + "metadata": {}, + "outputs": [], + "source": [ + "values = list(range(100))\n", + "random.shuffle(values)\n", + "# Q: Is this tree balanced?\n", + "# A: depends on the shuffling, you can check using math.log2(N)\n", + "\n", + "root = BSTNode(values[0])\n", + "for val in values[1:]:\n", + " root.add(val)\n", + " \n", + "print(root.height())\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d87a7e7", + "metadata": {}, + "outputs": [], + "source": [ + "math.log2(100)" + ] + }, + { + "cell_type": "markdown", + "id": "cf919d84", + "metadata": {}, + "source": [ + "### Balanced BSTs / Self-balancing BSTs\n", + "- not a covered topic for the purpose of this course\n", + "- you can explore the below recursive function definition if you are interested\n", + "- you are **not required** to know how to do this" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd5aa50f", + "metadata": {}, + "outputs": [], + "source": [ + "# Recrusive function that\n", + "def sorted_array_to_bst(nums, bst_nums):\n", + " \"\"\"\n", + " Produces best ordering nums (a list of sorted numbers),\n", + " for the purpose of creating a balanced BST.\n", + " Writes new ordering of numbers into bst_nums.\n", + " \"\"\"\n", + " if len(nums) == 0:\n", + " return None\n", + " elif len(nums) == 1:\n", + " bst_nums.append(nums[0])\n", + " else:\n", + " mid_index = len(nums)//2\n", + " bst_nums.append(nums[mid_index])\n", + " \n", + " # recurse left\n", + " left_val = sorted_array_to_bst(nums[:mid_index], bst_nums)\n", + " if left_val != None:\n", + " bst_nums.append(left_val)\n", + "\n", + " # recurse right\n", + " right_val = sorted_array_to_bst(nums[mid_index+1:], bst_nums)\n", + " if right_val != None:\n", + " bst_nums.append(right_val)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98b9148d", + "metadata": {}, + "outputs": [], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(5)), bst_nums)\n", + "bst_nums" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1288713", + "metadata": {}, + "outputs": [], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(100)), bst_nums)\n", + "\n", + "root = BSTNode(bst_nums[0])\n", + "for val in bst_nums[1:]:\n", + " root.add(val)\n", + "\n", + "print(root.height())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "399fe31a", + "metadata": {}, + "outputs": [], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(5)), bst_nums)\n", + "\n", + "root = BSTNode(bst_nums[0])\n", + "for val in bst_nums[1:]:\n", + " root.add(val)\n", + "\n", + "print(root.height())\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "markdown", + "id": "e042962c", + "metadata": {}, + "source": [ + "### Depth First Search (DFS) \n", + "- Last lecture: BST search with complexity **O(logN)**\n", + "- Finds a path from one node to another -- works on any directed graph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c00e99eb", + "metadata": {}, + "outputs": [], + "source": [ + "def example(num):\n", + " g = Graph()\n", + " if num == 1:\n", + " g.node(\"A\")\n", + " g.edge(\"B\", \"C\")\n", + " g.edge(\"C\", \"D\")\n", + " g.edge(\"D\", \"B\")\n", + " elif num == 2:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"B\", \"C\")\n", + " g.edge(\"C\", \"D\")\n", + " g.edge(\"D\", \"E\")\n", + " g.edge(\"A\", \"E\")\n", + " elif num == 3:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"A\", \"C\")\n", + " g.edge(\"B\", \"D\")\n", + " g.edge(\"B\", \"E\")\n", + " g.edge(\"C\", \"F\")\n", + " g.edge(\"C\", \"G\")\n", + " elif num == 4:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"A\", \"C\")\n", + " g.edge(\"B\", \"D\")\n", + " g.edge(\"B\", \"E\")\n", + " g.edge(\"C\", \"F\")\n", + " g.edge(\"C\", \"G\")\n", + " g.edge(\"E\", \"Z\")\n", + " g.edge(\"C\", \"Z\")\n", + " g.edge(\"B\", \"A\")\n", + " elif num == 5:\n", + " width = 8\n", + " height = 4\n", + " for L1 in range(height-1):\n", + " L2 = L1 + 1\n", + " for i in range(width-(height-L1-1)):\n", + " for j in range(width-(height-L2-1)):\n", + " node1 = str(L1)+\"-\"+str(i)\n", + " node2 = str(L2)+\"-\"+str(j)\n", + " g.edge(node1, node2)\n", + " else:\n", + " raise Exception(\"no such example\")\n", + " return g" + ] + }, + { + "cell_type": "markdown", + "id": "6690b3be", + "metadata": {}, + "source": [ + "### For a regular graph, you need a new class `Graph` to keep track of the whole graph.\n", + "- Why? Remember graphs need not have a \"root\" node, which means there is no one origin point" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f5e8b06", + "metadata": {}, + "outputs": [], + "source": [ + "class Graph:\n", + " def __init__(self):\n", + " # name => Node\n", + " self.nodes = {}\n", + "\n", + " def node(self, name):\n", + " node = Node(name)\n", + " self.nodes[name] = node\n", + " node.graph = self\n", + " \n", + " def edge(self, src, dst):\n", + " \"\"\"\n", + " Automatically adds missing nodes.\n", + " \"\"\"\n", + " for name in [src, dst]:\n", + " if not name in self.nodes:\n", + " self.node(name)\n", + " self.nodes[src].children.append(self.nodes[dst])\n", + "\n", + " def _repr_svg_(self):\n", + " \"\"\"\n", + " Draws the graph nodes and edges iteratively.\n", + " \"\"\"\n", + " g = Digraph()\n", + " for n in self.nodes:\n", + " g.node(n)\n", + " for child in self.nodes[n].children:\n", + " g.edge(n, child.name)\n", + " return g._repr_image_svg_xml()\n", + "\n", + "class Node:\n", + " def __init__(self, name):\n", + " self.name = name\n", + " self.children = []\n", + " self.graph = None # back reference\n", + " \n", + " def __repr__(self):\n", + " return self.name\n", + "\n", + " \n", + " \n", + "\n", + "g = example(1)\n", + "g" + ] + }, + { + "cell_type": "markdown", + "id": "c83e9993-765c-42a0-97f6-6277627acf95", + "metadata": {}, + "source": [ + "### Testcases for DFS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15edd0d2", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.dfs_search(\"B\", \"A\")) # should return False\n", + "print(g.dfs_search(\"B\", \"D\")) # should return True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bbc7eba9", + "metadata": {}, + "outputs": [], + "source": [ + "# DFS search\n", + "# TODO: give the actual path, not just True/False\n", + "# TODO: use a different algorithm to find the shortest path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab522b80", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.nodes[\"B\"].dfs_search(g.nodes[\"D\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6cfbd94e", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.nodes[\"B\"].dfs_search(g.nodes[\"A\"])) \n", + "# what is wrong?" + ] + }, + { + "cell_type": "markdown", + "id": "ec42d30a", + "metadata": {}, + "source": [ + "### Testcases for DFS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b42891f0", + "metadata": {}, + "outputs": [], + "source": [ + "g" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e8a47ce4", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.dfs_search(\"B\", \"A\")) # should return \n", + "print(g.dfs_search(\"B\", \"D\")) # should return " + ] + }, + { + "cell_type": "markdown", + "id": "9e72414d", + "metadata": {}, + "source": [ + "### DFS search\n", + "\n", + "- return the actual path rather than just returning True / False\n", + "- for example, path between B and D should be (B, C, D)" + ] + }, + { + "cell_type": "markdown", + "id": "dd6ea22f", + "metadata": {}, + "source": [ + "### Why is it called \"*Depth* First Search\"?\n", + "\n", + "- we start at the starting node and go as deep as possible because recursion always goes as deep as possible before coming back to the other children in the previous level\n", + "- we need a `Stack` data structure:\n", + " - Last-In-First-Out (LIFO)\n", + "- recursion naturally uses `Stack`, which is why we don't have to explicitly use a `Stack` data structure\n", + "- might not give us the shortest possible path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "80171185", + "metadata": {}, + "outputs": [], + "source": [ + "g = example(2)\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e429ba1d", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.dfs_search(\"A\", \"E\")) # should return\n", + "print(g.dfs_search(\"E\", \"A\")) # should return " + ] + }, + { + "cell_type": "markdown", + "id": "0b4f0cce", + "metadata": {}, + "source": [ + "### `tuple` review\n", + "\n", + "- similar to lists, but immutable\n", + "- `*` operator represents replication and not multiplication for lists and tuples\n", + "- `+` operator represents concatenation and not additional for lists and tuples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "39abbaa1", + "metadata": {}, + "outputs": [], + "source": [ + "# this is a tuple containing 5\n", + "(3+2,)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78b4949d", + "metadata": {}, + "outputs": [], + "source": [ + "(3+2) # order precedence" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "67c0dafe", + "metadata": {}, + "outputs": [], + "source": [ + "# replicates item 5 three times and returns a new tuple\n", + "(3+2,) * 3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2fca58d", + "metadata": {}, + "outputs": [], + "source": [ + "(3+2) * 3 # gives us 15" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "221b772b", + "metadata": {}, + "outputs": [], + "source": [ + "# returns a new tuple containing all items in the first tuple and \n", + "# the second tuple\n", + "(3, ) + (5, )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/lecture_material/09-Graph-Search-1/template_lec_002.ipynb b/lecture_material/09-Graph-Search-1/template_lec_002.ipynb new file mode 100644 index 0000000..f2b336b --- /dev/null +++ b/lecture_material/09-Graph-Search-1/template_lec_002.ipynb @@ -0,0 +1,671 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d684d88e-e96d-4392-b4d6-92d3f1669b32", + "metadata": {}, + "source": [ + "# Binary Search Trees\n", + "\n", + "- Recursive `add()` method\n", + "- Recursive `height()` method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66ba808a", + "metadata": {}, + "outputs": [], + "source": [ + "from graphviz import Graph, Digraph" + ] + }, + { + "cell_type": "markdown", + "id": "3c372194", + "metadata": {}, + "source": [ + "## Binary Search Tree\n", + "\n", + "- special case of *Binary trees*\n", + "- **BST rule**: any node's value is bigger than every value in its left subtree, and and smaller than every value in its right subtree\n", + "- TODO: write an efficient search for a BST (better complexity than O(N)\n", + "- TODO: write a method to add values to a BST, while preserving the BST rule" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "894a39d2-5e3b-4178-bc1b-dedf0b5a86c0", + "metadata": {}, + "outputs": [], + "source": [ + "class BSTNode:\n", + " def __init__(self, label):\n", + " self.label = label\n", + " self.left = None\n", + " self.right = None\n", + " \n", + " # Category 2: functions that do some action\n", + " def dump(self, prefix=\"\", suffix=\"\"):\n", + " \"\"\"\n", + " prints out name of every node in the tree with some basic formatting\n", + " \"\"\"\n", + " print(prefix, self.label, suffix)\n", + " if self.left != None:\n", + " self.left.dump(prefix+\"\\t\", \"(LEFT)\")\n", + " if self.right != None:\n", + " self.right.dump(prefix+\"\\t\", \"(RIGHT)\")\n", + " \n", + " # Category 1: functions that return some computation\n", + " def search(self, target):\n", + " \"\"\"\n", + " returns True/False, if target is somewhere in the tree\n", + " \"\"\"\n", + " if target == self.label:\n", + " return True\n", + " elif target < self.label:\n", + " if self.left != None:\n", + " if self.left.search(target):\n", + " return True\n", + " elif target > self.label:\n", + " if self.right != None:\n", + " if self.right.search(target):\n", + " return True\n", + " \n", + " return False\n", + " \n", + " def add(self, label):\n", + " \"\"\"\n", + " Finds the correct spot for label and adds a new node with it.\n", + " Assumes that tree already contains at least one node -> TODO: discuss why?\n", + " Raises ValueError if label is already on the tree.\n", + " \"\"\"\n", + " pass\n", + " \n", + "\n", + " def height(self):\n", + " \"\"\"\n", + " Calculates height of the BST.\n", + " Height: the number of nodes on the longest root-to-leaf path (including the root)\n", + " \"\"\"\n", + " pass" + ] + }, + { + "cell_type": "markdown", + "id": "6104a9e7", + "metadata": {}, + "source": [ + "### Code folding nbextension\n", + "\n", + "\n", + "- Go to \"jupyterlab\" > \"Settings\" > \"Advanced Settings Editor\" > \"Notebook\" > \"Rulers\" > enable \"Code Folding\" (there should be three such settings)." + ] + }, + { + "cell_type": "markdown", + "id": "1d6935d8", + "metadata": {}, + "source": [ + "### Recursive `add` method\n", + "- Manually creating a tree is cumbersome and subject to mistakes (violations of BST rule)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7047d184", + "metadata": {}, + "outputs": [], + "source": [ + "root = BSTNode(10)\n", + "root.left = BSTNode(2)\n", + "root.left.left = BSTNode(1)\n", + "root.left.right = BSTNode(4)\n", + "root.left.right.right = BSTNode(8)\n", + "root.left.right.left = BSTNode(3)\n", + "root.right = BSTNode(15)\n", + "root.right.left = BSTNode(12)\n", + "root.right.right = BSTNode(19)\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0cd51cf2", + "metadata": {}, + "outputs": [], + "source": [ + "values = [10, 2, 1, 4, 8, 3, 15, 12, 19]\n", + "\n", + "root = BSTNode(values[0])\n", + "for val in values[1:]:\n", + " root.add(val)\n", + " \n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "markdown", + "id": "f9324526", + "metadata": {}, + "source": [ + "### Recursive `height` method\n", + "\n", + "- **Height**: the number of nodes on the longest root-to-leaf path (including the root)\n", + "- left subtree has height 4, right subtree has height 6, my height = ?\n", + "- left subtree has height 4, right subtree has height 4, my height = ?\n", + "- left subtree has height 10, right subtree has height 0, my height = ?\n", + "- left subtree has height of l, right subtree has height of r, my height = ?\n", + "- What is the simplest case for height calculation?\n", + " - What are the values of l and r in that case?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18d8de1d", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Let's implement and invoke the height method\n" + ] + }, + { + "cell_type": "markdown", + "id": "bb2057f2", + "metadata": {}, + "source": [ + "### Tree containing 100 values\n", + "- let's use range(...) to produce a sequence of 100 integers\n", + "- recall that range(...) returns a sequence in increasing order\n", + "- what will be the height of this tree? **100**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "820f3596", + "metadata": {}, + "outputs": [], + "source": [ + "values = list(range(100))\n", + "# Q: Is this tree balanced?\n", + "# A: \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "af9dd1b3", + "metadata": {}, + "source": [ + "#### Let's use `random` module `shuffle` function to randomly order the sequence of 100 numbers.\n", + "- in-place re-ordering of numbers (just like `sort` method)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c07664be", + "metadata": {}, + "outputs": [], + "source": [ + "values = list(range(100))\n", + "random.shuffle(values)\n", + "# Q: Is this tree balanced?\n", + "# A: depends on the shuffling, you can check using math.log2(N)\n", + "\n", + "root = BSTNode(values[0])\n", + "for val in values[1:]:\n", + " root.add(val)\n", + " \n", + "print(root.height())\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d87a7e7", + "metadata": {}, + "outputs": [], + "source": [ + "math.log2(100)" + ] + }, + { + "cell_type": "markdown", + "id": "cf919d84", + "metadata": {}, + "source": [ + "### Balanced BSTs / Self-balancing BSTs\n", + "- not a covered topic for the purpose of this course\n", + "- you can explore the below recursive function definition if you are interested\n", + "- you are **not required** to know how to do this" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd5aa50f", + "metadata": {}, + "outputs": [], + "source": [ + "# Recrusive function that\n", + "def sorted_array_to_bst(nums, bst_nums):\n", + " \"\"\"\n", + " Produces best ordering nums (a list of sorted numbers),\n", + " for the purpose of creating a balanced BST.\n", + " Writes new ordering of numbers into bst_nums.\n", + " \"\"\"\n", + " if len(nums) == 0:\n", + " return None\n", + " elif len(nums) == 1:\n", + " bst_nums.append(nums[0])\n", + " else:\n", + " mid_index = len(nums)//2\n", + " bst_nums.append(nums[mid_index])\n", + " \n", + " # recurse left\n", + " left_val = sorted_array_to_bst(nums[:mid_index], bst_nums)\n", + " if left_val != None:\n", + " bst_nums.append(left_val)\n", + "\n", + " # recurse right\n", + " right_val = sorted_array_to_bst(nums[mid_index+1:], bst_nums)\n", + " if right_val != None:\n", + " bst_nums.append(right_val)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98b9148d", + "metadata": {}, + "outputs": [], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(5)), bst_nums)\n", + "bst_nums" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1288713", + "metadata": {}, + "outputs": [], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(100)), bst_nums)\n", + "\n", + "root = BSTNode(bst_nums[0])\n", + "for val in bst_nums[1:]:\n", + " root.add(val)\n", + "\n", + "print(root.height())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "399fe31a", + "metadata": {}, + "outputs": [], + "source": [ + "bst_nums = []\n", + "sorted_array_to_bst(list(range(5)), bst_nums)\n", + "\n", + "root = BSTNode(bst_nums[0])\n", + "for val in bst_nums[1:]:\n", + " root.add(val)\n", + "\n", + "print(root.height())\n", + "root.dump(\"\", \"(ROOT)\")" + ] + }, + { + "cell_type": "markdown", + "id": "e042962c", + "metadata": {}, + "source": [ + "### Depth First Search (DFS) \n", + "- Last lecture: BST search with complexity **O(logN)**\n", + "- Finds a path from one node to another -- works on any directed graph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c00e99eb", + "metadata": {}, + "outputs": [], + "source": [ + "def example(num):\n", + " g = Graph()\n", + " if num == 1:\n", + " g.node(\"A\")\n", + " g.edge(\"B\", \"C\")\n", + " g.edge(\"C\", \"D\")\n", + " g.edge(\"D\", \"B\")\n", + " elif num == 2:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"B\", \"C\")\n", + " g.edge(\"C\", \"D\")\n", + " g.edge(\"D\", \"E\")\n", + " g.edge(\"A\", \"E\")\n", + " elif num == 3:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"A\", \"C\")\n", + " g.edge(\"B\", \"D\")\n", + " g.edge(\"B\", \"E\")\n", + " g.edge(\"C\", \"F\")\n", + " g.edge(\"C\", \"G\")\n", + " elif num == 4:\n", + " g.edge(\"A\", \"B\")\n", + " g.edge(\"A\", \"C\")\n", + " g.edge(\"B\", \"D\")\n", + " g.edge(\"B\", \"E\")\n", + " g.edge(\"C\", \"F\")\n", + " g.edge(\"C\", \"G\")\n", + " g.edge(\"E\", \"Z\")\n", + " g.edge(\"C\", \"Z\")\n", + " g.edge(\"B\", \"A\")\n", + " elif num == 5:\n", + " width = 8\n", + " height = 4\n", + " for L1 in range(height-1):\n", + " L2 = L1 + 1\n", + " for i in range(width-(height-L1-1)):\n", + " for j in range(width-(height-L2-1)):\n", + " node1 = str(L1)+\"-\"+str(i)\n", + " node2 = str(L2)+\"-\"+str(j)\n", + " g.edge(node1, node2)\n", + " else:\n", + " raise Exception(\"no such example\")\n", + " return g" + ] + }, + { + "cell_type": "markdown", + "id": "6690b3be", + "metadata": {}, + "source": [ + "### For a regular graph, you need a new class `Graph` to keep track of the whole graph.\n", + "- Why? Remember graphs need not have a \"root\" node, which means there is no one origin point" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f5e8b06", + "metadata": {}, + "outputs": [], + "source": [ + "class Graph:\n", + " def __init__(self):\n", + " # name => Node\n", + " self.nodes = {}\n", + "\n", + " def node(self, name):\n", + " node = Node(name)\n", + " self.nodes[name] = node\n", + " node.graph = self\n", + " \n", + " def edge(self, src, dst):\n", + " \"\"\"\n", + " Automatically adds missing nodes.\n", + " \"\"\"\n", + " for name in [src, dst]:\n", + " if not name in self.nodes:\n", + " self.node(name)\n", + " self.nodes[src].children.append(self.nodes[dst])\n", + "\n", + " def _repr_svg_(self):\n", + " \"\"\"\n", + " Draws the graph nodes and edges iteratively.\n", + " \"\"\"\n", + " g = Digraph()\n", + " for n in self.nodes:\n", + " g.node(n)\n", + " for child in self.nodes[n].children:\n", + " g.edge(n, child.name)\n", + " return g._repr_image_svg_xml()\n", + "\n", + "class Node:\n", + " def __init__(self, name):\n", + " self.name = name\n", + " self.children = []\n", + " self.graph = None # back reference\n", + " \n", + " def __repr__(self):\n", + " return self.name\n", + "\n", + " \n", + " \n", + "\n", + "g = example(1)\n", + "g" + ] + }, + { + "cell_type": "markdown", + "id": "c83e9993-765c-42a0-97f6-6277627acf95", + "metadata": {}, + "source": [ + "### Testcases for DFS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15edd0d2", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.dfs_search(\"B\", \"A\")) # should return False\n", + "print(g.dfs_search(\"B\", \"D\")) # should return True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bbc7eba9", + "metadata": {}, + "outputs": [], + "source": [ + "# DFS search\n", + "# TODO: give the actual path, not just True/False\n", + "# TODO: use a different algorithm to find the shortest path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d2b5e4a3", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.nodes[\"B\"].dfs_search(g.nodes[\"D\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5d9affc", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.nodes[\"B\"].dfs_search(g.nodes[\"A\"])) \n", + "# what is wrong?" + ] + }, + { + "cell_type": "markdown", + "id": "da658c4d", + "metadata": {}, + "source": [ + "### Testcases for DFS" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32d1fa4f", + "metadata": {}, + "outputs": [], + "source": [ + "g" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a9dfbc1e", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.dfs_search(\"B\", \"A\")) # should return \n", + "print(g.dfs_search(\"B\", \"D\")) # should return " + ] + }, + { + "cell_type": "markdown", + "id": "9aabb4fb", + "metadata": {}, + "source": [ + "### DFS search\n", + "\n", + "- return the actual path rather than just returning True / False\n", + "- for example, path between B and D should be (B, C, D)" + ] + }, + { + "cell_type": "markdown", + "id": "eb9a6595", + "metadata": {}, + "source": [ + "### Why is it called \"*Depth* First Search\"?\n", + "\n", + "- we start at the starting node and go as deep as possible because recursion always goes as deep as possible before coming back to the other children in the previous level\n", + "- we need a `Stack` data structure:\n", + " - Last-In-First-Out (LIFO)\n", + "- recursion naturally uses `Stack`, which is why we don't have to explicitly use a `Stack` data structure\n", + "- might not give us the shortest possible path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c934d86d", + "metadata": {}, + "outputs": [], + "source": [ + "g = example(2)\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8c8dc14a", + "metadata": {}, + "outputs": [], + "source": [ + "print(g.dfs_search(\"A\", \"E\")) # should return\n", + "print(g.dfs_search(\"E\", \"A\")) # should return " + ] + }, + { + "cell_type": "markdown", + "id": "f521b9da", + "metadata": {}, + "source": [ + "### `tuple` review\n", + "\n", + "- similar to lists, but immutable\n", + "- `*` operator represents replication and not multiplication for lists and tuples\n", + "- `+` operator represents concatenation and not additional for lists and tuples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6802d98e", + "metadata": {}, + "outputs": [], + "source": [ + "# this is a tuple containing 5\n", + "(3+2,)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "696d0755", + "metadata": {}, + "outputs": [], + "source": [ + "(3+2) # order precedence" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3046fe4a", + "metadata": {}, + "outputs": [], + "source": [ + "# replicates item 5 three times and returns a new tuple\n", + "(3+2,) * 3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aed44ea1", + "metadata": {}, + "outputs": [], + "source": [ + "(3+2) * 3 # gives us 15" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8806544", + "metadata": {}, + "outputs": [], + "source": [ + "# returns a new tuple containing all items in the first tuple and \n", + "# the second tuple\n", + "(3, ) + (5, )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} -- GitLab