From 3581a14351b8f90a8bde72aa920cb8a71f7c29fe Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Tue, 9 Jan 2018 19:34:10 +0100 Subject: [PATCH 01/11] Start ecosystem page --- .gitignore | 1 + LICENSE | 2 +- _data/ecosystem.yml | 31 +++++++++++++ _data/nav.yml | 1 + _includes/footer.html | 14 +++--- _includes/header.html | 8 ++-- _layouts/ecosystem.html | 35 +++++++++++++++ ecosystem/index.html | 97 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 177 insertions(+), 12 deletions(-) create mode 100644 _data/ecosystem.yml create mode 100644 _layouts/ecosystem.html create mode 100644 ecosystem/index.html diff --git a/.gitignore b/.gitignore index ed907305..caf53f3b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ _site Gemfile.lock +.bundle diff --git a/LICENSE b/LICENSE index 295746a5..0dc89813 100644 --- a/LICENSE +++ b/LICENSE @@ -26,4 +26,4 @@ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/_data/ecosystem.yml b/_data/ecosystem.yml new file mode 100644 index 00000000..d8260e3a --- /dev/null +++ b/_data/ecosystem.yml @@ -0,0 +1,31 @@ +Kernels: + logo: null + description: > + + **Kernels** are the engines responsible for code execution. Generally + kernels are associated with one language, but a few kernels can manage + multiple languages, often simultaneously. + + items: + IPython: + description: The reference Kernel implementation in Python + logo: null + url: https://ipython.org + IHaskell: + description: A Kernel for the Haskell Language + logo: null +Frontends: + logo: null + description: > + **Frontends** are user facing application, usually in which you edit code. + Frontend can connect to a _kernel_ which provides code execution. A frontend + can either be a standalone application, or an extension for an existing + application or text editor + items: + Notebook: + description: The Classic notebook Frontend. + url: https://jupyter-notebook.readthedocs.org + Hydrogen: + description: Integration with Atom + + diff --git a/_data/nav.yml b/_data/nav.yml index 6400d6c9..5eca2289 100644 --- a/_data/nav.yml +++ b/_data/nav.yml @@ -6,6 +6,7 @@ head: - title: NBViewer url: https://nbviewer.jupyter.org - Widgets + - Stuff - title: Blog url: https://blog.jupyter.org diff --git a/_includes/footer.html b/_includes/footer.html index 3f68dde0..4947a4c1 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -4,16 +4,16 @@ +
+
+
+ +
+
+
+ + {% for category in site.data.ecosystem %} -
+

{{category[0]}}

-

{{category[1].description | markdownify}}

-
+ {%- if category[1].logo %} + + {% endif -%} +
+ {{category[1].description | markdownify}} +
+
{% for item in category[1].items %} -
{%- if item[1].logo %} - + + {% else -%} + {%- if category[1].logo %} + + {% endif -%} + {% else -%} {% endif -%}
@@ -72,5 +99,5 @@

{{item[0]}}

{% endfor %}
-
+
{% endfor %} diff --git a/assets/r-brain-logo.jpg b/assets/r-brain-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c19210e87995cd54af8475814bb217b61c0f394 GIT binary patch literal 34415 zcmeFZcU+U((l8oSM6n=EL=cc7olrs*$W{ad1f+MeDFFgP=md#miz3puRHcfD2#Ap` zHPWREp-3k|q(edt5W;~!k7hs@ zbhUJ}Ky-8<&~4xaIwF9mnka+|2&AtM5(9xir$7vJETH2+iw<~!=q`ikf3`s&M>?** z+wOECf5IFCU}QkRJ4g`t^QDvh*=7UUDG>Hw!BMSUAn4iBf{2%=MmxKM+?f^K@`EPcp z=xAu%^+mcM?!ndg{fxD5^66-5D99))C`igm$^0{*2J#-#S0CvNz{&j>-CIQ;Sb1j$ ze}`KR{=m&2@+c{-EGeU4`j=!&N&|u^{RgmyFB|~-XHX?cX<5_1L|0r|_HR&N5QIzc zKZE|ySdqS_NaQ^={(nRN`1zcjR9uk0o(=%d5uOgNaIm{K-1X-a_4QQ@eG!0GINZC1 zbPD*fusXNY_yJ0#oDt3{aEObHqoNB$(h(x-ED3RTa+GwClZHsjDL|Cv;7YQ}jt-E& z@aTB?`8#+y!T;)y0Qx&A$}1=-Imk=OD#*%7LL3x<{tzdKqzgpG*}+LcNx>2B@K^tT z9{&$Tb4EG=IR3G0%5sj5PBLz@P*%S1*rZvIr&G=AU8N*M*dj*f4QQ6 zfFb?`NB%vI{?XsT>4)O0@jLw#BWHf_|9ccTxjA^b!T}Qq=;Z$~O-_o=5NCO51xY0r zh%_K2j=(C*NGnM~l;jl@ot5D(vT#5l{wqy>4uSCh4=MVW%Je_15?o$MNx?~8(n&$i zMG~T*Bqym1agdgjb%D#modE-&sG#_7QuOyCBE16PzWxBwe{#ax!Pf!UN8rAGYWyy~ zNKd{$RMXqbmCqmf=a-*)`hQ#Yzfd~EeGxyn_%9GT{WTij{~GH5eVzE9CF*~X|Noxd z_);HLk#}%_|1=dp+3-&u1YkXW-U8f`AI-o0 z8+E?_T>s&~e>m_T4*Z7$|KY%YIPm{J4*VlR0`~&W1VKRj19Y?sa=!ale1T6+N*bhe zQ%C>Ak6;i8B*9H*4LZ&xq|FTkjgEniaUW9$o%(Sel2($I_PekV!otyG|AhI08}w=HcLtTCPax(~pasz4aXMzuF=o2s%ydUBAYLHAL{Ing z`q>S5qdRu|1pP^dQ>Piv000#iK*#8gA3t{DI6eK3DbYOueg~akrf0b-bK@kdkplz2 z51Z`6XE~a!Ts+7iq6@U+2Bae_K#kT2@|B zS@p5Hrm4B5wXOYgN9O>3aA*yGPIQwnx`~1S<5_w~DYkOyxvbX<(E+EYH2U)=T zAC&z!x&S879XoO2_z8v|bkQ9P`awAJ3HqxtCs}S7F*x|J^23 zryAj>JUrr0qM`L=o?M!Pj-M48B+1>;ez|S~?Gm2cU#zd?VUYZ*DWh^}6e&LP8UD`` zAGW@eEw@%X^ouliGPa{u27D7jS_5bWq{M{?VrmrIhw29KIqt-8cOjw3);9Zr*SurR z1Pe*s$Tt~qqy9YkcVbr7n($ zP(Dh&ZaLal;NypiA%T+GN5jfSvkrqiQ*j(BJtWBoCUPytRU3n8FyFw?7)sq{Gm;6F zma#}?IyPrHM+aJ#19@S~EUjk6g`K6QB+%B8o71hhS5;B!EX}NGL|@AH3{ivCS?MT~ zSf$+-Bag8!cw(aQtMt-h;hcSa*gcGVIEW2&m+lw(KR$Rfrz?c1Y+XCZ!{=-AOy_Ku z<*53U7tYR4kRa4~554vQq|@gMsInI0&;H2sY|jF_PI?7gD!nw8%r~;i!;4~S=MG`K zL~%$t&Yzjq;>c=CUe`+4U0N)!A44J$ew$h1Watx=wV8D3JF?Yl{~gmbG`2!#I)%q$ zDvhQ=Dw|cLUewqrrNpXDVt?~O%aaV7OH<>{z!(=R$BsaeY5kj(*N;H#sH}k_kfPq0 zr+S~hm(uYBOz}t9LOWqt`?6o}RhWER@gzdUAA2|k$?&JG>I^~Yd#P^3m0pu4FcnK~ zxlxm-jMaH##Pa;9_PLSG@irK5gECbk&8jYd98bhVXE~0~l9}SrhK1uIPP2SIP=a&1eS?CC)PTG2TXk(<0Q~1``ORm$%c9HdMpSLU= zq1`V_*b^2P`c{63e%U3O*eme{)!1U18KGX}-KnM^ z)bgrg9J|v<%&}Q63*0!m{8@GBajyI z+~#M~f@H!n95qt@R=+dz2vo0ClvcHi=uE|$Y~4w1vzP9iJ2hKm((aJ5^v={3DfYWj z&}Le8F4Xr31n;AWfmfyvbo%m9E}KT#1mTw2ov10Mlc=?g0j?|d`?ew#By5c1#eMZE zNJ7o)yS75%)HR^iq3G5?$oq=4XRG_$GfRxpGRRUceJaC*Gbzp1~7)k zyrn^iv>QfMD@K*IrVXbPrq5FR^lOI$CW9<%pETtn%EU)rXXJm&x?{oxNz3^lKr}PgUO%pQoE)yJT9R z=+?w+;iX?Ih&#T=189E45vUP{_9K7awWa7CC@s~rH?N0@?5emF5yv%rUQ=d?F?{8U zEIQuBS9ZheuAp8%U2&9|vj0V=EwFJO7)<8Intm_OgbiPKz+d4( zoKAr*mi`89mB@yI?6SInK;v)0)wX_Y^+ zzXg5COA$7tUc3&-$9ZHq?;~hMN;QVq7s0C5kVwEr*F^WcMU{O@k81SvnC1FSsGe-` zcvh)rd@n6IY+lmu)a{u=zejc2*sx5AGU&UdUo(?D)Lacq)2F;QhmB|({g`a%?e(1Z z7A^ihR1bm_V-{;9f2QszTJo&A_`AFaYpw7gKmmu|4h2?~WzIpDY7GYc51kA@3~fap z=$q&cc}fOIDw^QE9O^#|-UB=6rC(n@)8(2nwbr{fW|ko8H_+$uQoE7Pm)ip|TPD`@Z zhu|&x-G-k3$wSVXHwAANY65fKd0Y<9O3qz053-IcC|I&EvO??!W;>mkn1aFVC+hB6 zjalE|Qcbws`RrA~?c?(P(%WRS1%h`u+=SIwSNgF@Ql98_O)at2$}t^Dn|_=30q*!5 z-MsrlPK+0#lk%=5MCqOm5OSGwN0^RQ5mtP_Z|-IiJb zpL|qVyL(>F$B5>#(6!wr8e4kC?Kf&#+cMQJBeOW6^>sY^D!?GVlG%HpHcMs?3W?V#9~znzOBX9ffqW3@l;=Iiec_}Xj~ zwZS6Zb+5EOFDsGgZb@+w7J8ngBV2%8`j%jB!yBI0Q#8H5Ma9kJ$?*Zs7odZnmrP^e zui`Yus#&H-K{ene+?cTG5ZZ?nrz2TDDcojZA6hia8*w3_nAdVHM?rPY6%$?Ln` zvXb_`-0f$1xfm%*;})t*DJw<%DN2~h@N`S0vO!q62+@A6>-NCAeI4tJIqI#9OwEIc z2%4mmtQDa&OQ1+)?|QkD(Uh4;aq`sWo0|M!O|<0eml&h5i?y#PxtarY+Jqhp!x2^J zd&ExK``CAj7I&u+HE+@}CxR{p?Qo>53)Q#gb+Z)Z=D^|5?7bsUOe3+BYA!$*-`pD~ z8#5t%I-m2VQD73BqY$xxhZd43QI`tYN|fA73L*;FMLH#wIwkEO!?E&ZTCI-mY;;Hc zKTHwj2m~002EZ_AtcR*nmdy?`)LE9_XP;=`@i>PdPFmdg$j=m|t~lVuIPrOx`FAjy zi(s?RZEp1Fo4vi($m7mvm;NJ=3M#UVNukxW!*?G?O4T(_hi&Y5^u6QXiW;rx!Pbl% zoY_*_SNSr-9eswV&G9SiEV?aTfrr(4#(U^uR3D+mBKrGVnwbAs?wX>N9*KsNg?{{L zFMs&Ue=OO8A?;KTAZ|?cB*RF5*eL7lwVF)|SF2)E*9`9IwqEQifr%Za|D4L;<0F?% z$yYTCx&|R+Z|Uo|{BminjA6Nf%jfZjiUrad+?-+^H|RXwsCWdDIs!EdlXgYp>o*Yivk-i_yZXRFe*FAB;DN<7kp?wvhKQf z`%gCpBRx$r?;G#kY@fO|1nfG~;g|8vGfa%IbZAuCPP(rts;@N-{i%zfs|p4iV>7By(fx`-g{H4sYr2v4M)s4{N-Eybg>v# z6{#!{J6m-W=Z-iT!q~2D$ykxe9r&{E+*vu$v1sEFfL4f^DLw*K zWcIBzAAsFe3?FYR;Ax_0kF)~NZ#J-7o>z;_Vce9;k#lVQJ-G{2q6j3!^SjN` z<>Ys{YnLhD3zR2TJlaYQbN50;YrHGT`XQV4&jR&5MKzZ_c!!|33{Q)qa*1(V9O({b z2J9UI-1b89DAR(Tdr~|$ZwgJL3zRClR7~9)skdnYMSH&=fsj9h?~wU05;K#AyK)5b zyq-5wew#oECWQ@b7t6z<8iY%#(+z9VPM@{7j|tnd{8nB~jw^CsYBJ&;-jS9~N?Q_D zXq&ccR%K1|fz%gYH|k0(D-v8ec&lv?ShMu1rbCTs-jIuy$bEVyPcd~iPoh0W_`Eyn zGD}pFiA4-q{&JG{*4z$~b11?6Zl1`L-o60^I5nPdK72}J`#Po=iRLImBgl~3+3q7W z!R4SbE45~kgI~%?aSx?p2~StjZakl@3EOcSc_hbOa#$om8V@I3u%A97p&wdWAdE~B z=;FHnhB``f_o>2bx1X25n!#U8awkf7ZVWUIL}k|aIf@k~XCzGGlSQhq{Qcl}&WDe2 zj-wLc(X>uz*-V6Mas&AB)Tt+1qIQpuKnTrTsoamEgu2O3o4*G`Z&FO2aN9vwxUb-r z2f@35|2(3xVM!s++IoZp5OEhar*=?Oy?7dENeNx;iFcZX#$iaB(68;pyzrH&6JILU zAF7Kd!$a&`Kc&^v3SP>O8uNRaG-e6c4{nX#<5zRQ=M7|*&?qt>sJ1wb%Q)ik7GE1J z+tGvI*!iEZZ6MA8{q1ZiG;xeaA?zFvyU^)~JrKkN~M?dSr zsCTtR?@UXQLl5k@U8_Y{zcSuq604~*KBi$gr9KSF6KSQ&z@$T$*yx1nHplwT^^^~c z+m7pT5AR;MP3k*AR!R`fNl`1+h8T;$;d}+0+=JJMgRfR0V&ysJtog=_rr**KMQ^fV zAzO&z%ONz_A@a#^v;>WxLPS!23B3ZjN8g%KRx~!Do$-|5?0`O&Ad;}nnF^aL z_E#y{M7@w_FUJg2^FQJt*DWjUP`R)uhV!1DothW74m4XoCMX~~sk-Ela5SWO!^O;A z;Cca%JIY!=L`N#&?Nm}hRX*hXRNe3C(MAWo=V#7t#uQfnI#U2INzS)NYzPm_*z^V- zh->CUasx06k7oL)EDSpu6jvt%I7Ss(jCLhM5L~v)JW50B@5&wg*-qOSkWwSO{8y!} zbDrvKMUN##9)Z*hji^?wygEphvZV^A6ek26b#g2Gl$J@Af%_2Ko4HB6X(G+6*UDzb$UKzHR;Lr7R<*yEzBx?`Tedj@(aq28S+@@#f!Z={ zd~z?EXJ%p`V~XR9>P4YdG1)+z9zGi)IjO1HaEQx_A7`MQ-X@pr{8CRF8X-it9f8gu zk?QTQ(FUZs%oc0M9=X+u4`lOH!Bh@))}b|71#O8k>+be@9CETX`8yF$vgEw6k^Z#e zu*4>x6HdVd_wqS-U4g!pdDzlG%xoQj4WGK1&q)c+^1gRic~xxBHqUJ&3|+NQsBK|j z_{y_&l~XYUEdYDZn+3S?bce~9Mrn*YCty{PqgA?wtnQKz$l`=MJG5iuI(*l6`=y=X zoiIa2RN=f|d8y8Ow~{@R&Uyc_@MQeVF}fp=jOv4#QzY;eNBD0!9nV}ui6VlKzr{GmbvSExoef;;)`|?-pB~|>| zv{JHOK)Y$eE=b;%A?cFj1qX-A9#wL-_y_W}Mi_$jf!UVejJvJ)%zFmaBCXM^kjR3l zbdRZ>yNNjw;rs0g8AaMvRjGa({5U8S8}=LY7O(|pmk5ol=98z?xa@6~4IdqWnD|S` z&{lo(p4VYEMW@%C<26b4*}+^4l|yw7ejc)?Z)k z;8ZiQvb>Yk@N2k_fNW4;%?+nXYtaPWQwwRx2vr$Ey#ikQi~kj#0WL|o+jxl_ONo_x z_g0%)>Fb#JKy-a32|Cy%T{aPd8@`#a*v591EtlsGkybOs0u2kROKc~%_;E{Hq*2Ao*V3loK#`{=2bB#TJ(E9hIKwR9r(B&zJr z$NufrGo}$e74_vG$Df#Uxs=ycBuP~6UZ^qjR1qvuxgFJ<$oZ)G`z7nIs_;vL&8D$= z9A&WBv`P6w1Y|9_{yjHQV*T-EciB@)kW9hj-Ve!Ux@Nzwigbjs#3auu=_vI|0!L3T zFh%FE0qT6tZ$}z9FubQi()4;PKJB;gl9JJ2vitxz^BqO*ZuQ5gsWF;mf)bZKX?udj za+>~h!)^0`SpF3Vrb)LidE;C zQA)cIF0m86b7@KDzDY}yXtk!=gJib~^W=57uzsg;{h;oTyeb*$CroNi#7%kvkI{e#Qr27seRW7e3R*X#Ii zSgy@#r;oWzNjEVc8;x|Z`@v?S0KGFjJ?IydIT&7;`0y8Am(V6$X<+ezJ=JfZ?$m(Y zBH%pn!C0wx$n=Hu>4v2G;%+01%i^Yzo6`tdJBWYG+Uu+%lTcd+%j6)`qIlaI`Pf~dFhT_p=e+mEVfWIWuoyQuk4o+U`W=5MG68Kt3 zqP~DCzI#CGNft|u zM2nvF5=c>|u@_ptmE=&vUM{h_YISX3OwJ^%CU%+(eTwE%Ki3D3$m@|Ptntec#z`J7 zC=Q#B>ok=3Bv#3%HYM+m?vd^?Eb~&CakGLz@C)OiXGk|`cd1T|T-0oh4VTIZW*i4U z-4eH=8WBQvk4Mxn7}S1B%d`GpzE+z?y(c1WybYd6Oj zw!O&v0R_&~lO$4p6}s+FGMK0TK7(wKr?~w3C9WNh-R^?T(;fbXIT|GM#?$1|iO_ar z%n|5<)HTE$xvJIhDUayp`PyIx)EUD5-MP3kVoi6eGR4?t#;48kp4*;P@2B)^wTHt& zn0ve=Eo9g*lo9F(JwX8uei1FxmjmpOM01?Kk$&^2{sYAbs(_o+DOvd>dyf9%wFJ41 zcD0q3v$d>;GK5MiLogvmGStSRrPEB1itVCb>|$H(@1P!mTH@bCa1oWt+RtuEn5B1a z=$d{ob$Y;-WM+G-xJnLd?2Qb%?A_1-9%eiQ(F}eDBY+$pD|Ds?M}JQ>=s<9B`XZq` zp2ouautA|8iz`1Snu!*eU0&v8SWa^j49>EpU9IhZe_oc&I!juI_c^5?xtXJRYm=UL z+QB^^vu5hf0#jCkrcNGKZ!yiHwKRy|g&&KVV@5~UPQDHX=MPJlr0^#l*cr$1^Pms! zJ);I&Y!=Yk=s^!`4o*`BFhESV(r~4n=yuH`AY#_yH~;88(3wyWtmPFh z>kRgVPqXzQ8RAbLAv0|5-X(2zHdD;aad3gll=$Y*s%iakm-zhEccuW12yrm%3l5$xq znJ9k9dn;b@2&C#Ca*7o{HyejrPJL4C>>JNS5eLWIBcwP?;M!GuGNyZd6QN;BU0f0v zb~2Bw!IEWX0p^LEPy8fX>UMr_z)pJ?JqTkBC24^lU$j4Qm}J-zDQP5s1d3Ic7!K%) zZjUver!nJBO;4jVn#cS;Ft$yd(=Z%-KidbZVo~D9^gr+pp@EJ0S)h!<0#3SE=&E^s5S!9q?<3?;cc| zUShhI&AjvqhuN1WOWMY_)Sb6pk`L=%G5Wr!cR7~yk{$}{9Kx#kKWR^$YP;O?z zKrVrj!8U6S#)`YMbL2}@r!CFYGks&h4J1+qMUHZxigEc9Q|=|%Dh$_&?^eO`yjwN>Bqi#t!uDDt&G#6?cL2i zdLGc$&pW|WeNJk}#btGI=)#1QD(f%Tgu;9dH%2J?n3t|cLzJa}Bz@UlZiCX#WvA(+ z1kX49@{QVku$he+p`_Y$9%OIzGca6I3ET-ZuN+=@*U^OpH!m&i_I3Uh4(wZ}h}n#4AAo51bD<`mk3f$V zZ^x<4{c>=x0YYlI@5WVn{EFtQGt+@Gz2e_cS*^teR(Y-(e8W#1SV5!aj-@kF>+UAljm z`-D*B6vNGPfpA6IP?sleSo8?A=(cCC=52eXEiRvQ1S<7O-P*6$qcQBukL)-cft0QS zp*T!-eyf8tC6_E{dwd=nU*{-1`BCOMD%yy}>-=~bPPyY6Zj^_|C-|gx7wLgPY`t2> zJxrEW1rQqZQ%6QGvxAR74{^);_%N*PCSZT6z!YH(E8L3CfpSHp$te=c>vV-@J0G_* zt<^M=LCDKtdbK%|8Q(_sOlI8+>&#~17PI^FG+hD%FEyoo*YHU%)5DL*Q7Y7e8k~n| zn;#q6L+lX#h!`?-Vydo>wjW#x#h-gn)d4-Jii)gz3#-(5IoY278|-*6&aE=$Tcu1- z=p%ycTdMwyrrs=Vuo>`9#9jgUwhk|J_LYxPXNf^3g#Ba~E_s|>LX{cW@5RuEgWTOb z#67H48gYG|CWe-Q7s21tKcY)(0~?5xw)1|LjuYk_Ec2ugW!OOXVos2KRD5f1@h-4Y z4Cn7(wxHBuUd9L!0o73C4(>+c0zs}L-^drFF2d&23k z@4ZTMu{98{Q!^vv%7Abb_c)}Hs@}zH3>8vHovMK0p$j9;=rwLV!uoOYInm7rK_X4& z7-GRqmV{8BL>~_u$OtxOgl@;-7v3>#Dzn9GTsGNa2mD2qNuH=j#67(Ky?937edxPM zpuglz+Gfkt*}?8#j^qSUZI z1I?kA0XGq)uJjcpumdBlH|p86s0&cWXVnxudQ@*W{0gM54{8lrmMqHnBo>N^L;bIw zN*f8U>n6^XW_PKY_c(-qUYL89x?W;tHnJ;PaqS31QomKZJZ`ua{}OhLDA&j4CnaB` z1skot#^^3rnQhhDX6nGUbp%S~we+nR+x6c~g#MmJyAS;eBvRgEenlQPBy;Qx9KKMM zIjirTKg$tD)qKDhhVBt)w0><586NtL(-P1LRjB%GFNbhN$b?Whs`uLG1tHANbDjMg zn_Z;nBhYW5nzOW!^V}qp7V3cC9OmoSG?@p5j=z!y8$t)(c}`|8Fu_K&srx`In~o|R zI@)k99S9GvIvi+F?A`7#kD=|z4LJ_1qQ*7Qr}AAmW;a&`PK*8uw@W;ax#P}Zil;8Q z81<@NpLy3LTbp8YQx-FwuWwRt1WIhuCRtpb$%3^~wI5d`w3&HORhk!>F%Ups1Rj@ zcuu@2&9hK9Y!$7R0~@7ex86^<^>x~n+xo%#Y#GkRLHvlozQ969)3#q9^V@lr*Ha8) zxheyJ_%YL%0;71t`x}|Jf$(hpCN;hdy~c?=HP|%^-gy^r8?T2Iyqu|XA8`pv&fU9= z-TIAooe{J%J(}NGhQ4{2Lt{XRT}pEx!lG!$2G&eP9WG`=Bg^rHwl(1$QFwhTcqopa zw|x$^EElKOm|>OHX}-f5$nVjsn^etFl$@~X`o+8Lyj48&H_J;!2ex)1IBlg(Xp+}- z{`BGM$lfu`ONOJ711{Q`2P9d{6KEydG>gQ_81GqXFzJ0VvCHErzN;K|5#>INZ_1Lw z6PFw2yGroeoP9wEYX`DBe#L$(^Fsr4Skg1XBef* zZ7XkGv8noqU4=z|%D$;Q4|Y!RaJ;ivWbZDN+ha5LKtkmB8jd22UCk^GZH4kksCo)o zj8!$m*c%zbY2qlCj)&Psr16Q!;_Z5=DJy}h#FkLDS|>l(I&3?)8U zOmy}IvDi#Bia|^o#a{1h=C+Exe%gr}{Hp50#T$_q-DDnnNB;Jdtc^U)!zDBAJ|ruG zV%Vapmg)T_=s9Vf8D8Q2qL(E%-#l3pp{2KOAZdL!!zKoZGf!9}%ifo@0j}@yZgnsf z2Bbka2-A`3qG)6CmDF%5C&5FwZm@!@@}y1V2hBIhdDbU4xAi?tKem{se27R3el8Z* z{79x-I@tVt1N4fWNwbNC=k`j%vT&)MIc;v6`%2@4W_z7x3JJ?Nm)PoRS+LQ>JPNKb zeq9-^1iqiAV=WWq38XtuK`U{qFk<#N@9cDBsFcT-zC1U$6KTD9{fwS;GFo`XQ`RG5 z0MhR45~XjvWAg%u{AO&dxBMc|@#Kp2hoDUdb`sZe*m4aL?ib#TkoEnJ{MJc|A8z^$ zio(r=!Hx@)F{|fh`{HWC(-k5}n8wnD`;z1B;eb0bO}vz?A6pE+7kMuA(YuOUnI>nm zJs+3QeL@bYUhA|MP-^{N7Qgmkuo{S`;!N}v#~3Y+KrCw*`UmQir7T0jl*Xs$_i?ME zz4B%SY)7E)T&EEYaC|zm*m=o?!;ICyOkD92?J@N8rymuC$ykacwlR`=1+a%UvsYqs z>{w@+9v2tOi&q#XQTjd^S-Yhci1UqQA;Vn;RExhN&Kl2NJrDhYe1&Dxkehke{KOr| zS-N-0NVa0|F&Y5^NZrDU)r#4QZJHsuODN^cQ__nerO;U}O;PB6ux>x*fuh0W$^mb5 z^5Lye9yYpd8@Nip!oS8(Gf$+Jsw12mL>ms}pxz}3w;_*FLWt02 z46`LAyNO4rH16Qe;EFS^=s}f&;_x@gw#-7r2whH1cDcbjMI z=gn^J1s8~Lmq-^W$$sE*YCWfTn-QXz^RPbI<>T3Px+mQm-FMt)mfFY(R1=#5;n%OW z4Yen>#5N3X{Rq^7i45^nE>dkHkoSrQbT-0(gng_k;~|yU{y|WyVK}}Au%az@TX+sEK7J@q0kfb~ro9%qDfzdiD#_0r8vaHL@O^4W#8jovp|5!}GT3 zT73hH+@}vXJ`}ksd$`LLdsJenz&{7L*TG*ZE2FK=WvyU*!~BG(wz2e$Z@eRW2z5K4 zGHV1oe*`*yIH<29syPLAVRsG(Jt#Zip-pF(GpxXhJ43lWygjmx4Xz8+lEF>u?CI&# z3`-lom-M`~Y(HBNLZ}bOi4mzQMUCk{i+=nuPCl+7F+!K0X-h&63mK8h*72kYO zW#0bjMi@mZbtQ6k`HWJ7xHSbo=AEj3K#rs#$yHzUTB(nit%qy-pL)}X+d+ka62y9G=V}X;H6>J}CFW)U~#bXoD$Aco0 z6;>|+X^pvHNA~yG5|yx?KEPqUhYmR`RW&``+J0N3Kj6XKwYhpC&^M50pEjbK*XN--0H%K;H9SD#}`ZcX4&p`Thc75mfiR_L50`Gfz zkTrg5`4D!uWWc{jyjag<2rTKps%TIWrk6gxd@!0Y*4x=TOdtH->wSK*u~NU@^$#Ex zcZbu18KU^;WF1I?b>&o~&`_DGfxx*(%_FTu@`b$cywe7LiAFJ3+2%xb4LY<$6~;XU z-ydX8VX3V69gFClTZhll%%lMt7o0p*GLM=jKA5c5Nttc8=MNjgzB4B%3bo>%_>bGz ziHWkUypX8-LihWlL#M_)M#4(;xv(^tO)Adp2!!vjULFt?DaLk%)?glH-;QU`2SV*p z%G0b4^Wc@s3eCSdt`&#Bn(Ml*W>TzdP?tC?l`lN1Jt4m>OlSm-xM;%zOlWt}fhnzL zN`fTy0?F2(N;=4orCsh3z1>0f3P<{~>c};G`5l$6TV0LsaJ8IG_^zC;ej7Vj$2~hj zSm&M_t-R(5XUF+O!nVHW+8H zV(k1BM#p^wDok23DK^M-mlsemiSkK6yh*D8()=E#!?C>00iwMbc?Pd--8IYc=D=OV z%82O=Q)ggHwpgh?fTO(+6I3;&ib%~cojSF`2~EXFDjktdJ!fW}CD=W3-VV_LVObn2 zYt=c*XT$C>_0y9l2 z7TVz!Z>wHsAllu-GNU1r^SVL)^WTT?#+3un#*2aF(3iMJFp@QHG`B6#97ywC+`@36 zFOyHUaNu>`Oj4Gcco4R7mP-wn%2Qjytr~?~1_Vx>;+jr?#wukml(fIFvrZ&*8*o7y zrzdSY!#yzf*Q}+9!|Eb>^?5-~2g+OQgNm~hbn)mcC$<;%ut7qsq3cku)ejSu3Z~Jo zDu<$n)vHl2KE?6i51n(m7Ox*pq*6I@Hb#K_v?O??Y9?L$W5dN!6mC|%LBPkcQblt; z3@zru=q-QFuQf#>ZAIp^QcpvoFBij!v#k3}XAdvd{nF!Ml6t|c8IHPsFoBP~UrAdL z>A)kYX1SYR_wLNMt+9P-^6AX6;d;90R%5z8FZRqBCguyx#*JZjCMfd>Rc3$RRwkC{?}J$qc%cj_G zMM$UlfwAY(Ua-lW`VH(rd=w)H?b88y)_fKzQCic^W>lmaFYv)M4szF8M-ccQJsr^8 zq})r@I(cmG$49}-`%C3ImAUMJeX9br)3^hvjsvOCp0ShB*so_`k@jjYRD;Rv@Vip} zhbE@wVQS({8!~s7RKc&B*;v}Eb2(Q17XmwAb5(Jw7#`?shKo48MY=#Ewun%x%k0@( zxW4K#k=TDAudn8W-I;!pAx5!y;=Luqw)%p|TTwiztK-{Dn}|)c@!PDZ-dzn<4-Lco zQRTR&3IuzB)PAE1w&5}=-}dmG`q>3AwAqluT@pifZN6_-CQV|B4iJyAMU_sCv8lrz zqpcoD9mFYEF8M0*b3IMq1vY3FB^8v|_Qyw(dFXT6_e=CBei*N@gT#;{kVG~@5I2m> zsTxp-XN6nxp8kmE$!+nooKkMLc5VOz@kfw2@T@ z66RJ&EU!rrj)EsVkUBQ7csY@2imFpm{`lO!ecp%_W6sO!BhVes4*BliG2RcjsE&D0 zn+fRa#CsM}Vrg@qhSCRo7M~*1*(E%SV;J>jd5D26s;6BLD$D%b}(FU_Q%C#STqH)*h0e)oz z_uy(&RWwxx4&GOcmGb<4rz%2KF@WcQ6{zA&d+hiNy2w|UrnRqyYSt5LbgWY+)ENiY zqc<Be0RDW#khs9!A{$loyWg0ihMO;fLuXs8v<^J2YjHgvic%}sigL>n{2;Zx|N zy*JqM2kVQKxW`OO7hW;}6^%eq?R8T;WYt4|5c0suuyklE*1mK3&Jd(tclgZYbz?j> zC&XqIdbhMD&L*TwycS`v?D)*;%B7-Xrx{d|2QLw0>~H?gwyPFmjcPd5TMT^^CVWJqHT%tPHD?K4)T3f zkpXQS_Mxq})c8r_hT?Op@KEu-g8+v0B}$`4hV z#ypk}4#r>Hx;Pvdn9?ECIyBVX%c9iJIr;QYPX&R0l=N*S!NRjXK@X4?tOWT|j5jHlqGhbVeD{*iIaJVK z3naInU~WGv-OerD%6N+KM5OIAF-rcJQf?%O@#U}QLGA1ZQ96PNr7+;>H45grU&d0e znV3%J>vYem!11BVsp6{IAm^=)KXpaicKn9liQ$n8t$s*9w%=`S3|aKglDeNLJEn*# zYD>s!%~{=UWH`aoBCKK(Yi;6Fa4`)r`ldo(zRV7&dhIrjfpcmZ832!5l-XqghZF*J zHguYobbHmruy&Xx9on%kGgzMfq8e?mAj$%#lK&>2VV8Mhg|WxR$gCP7p50dd%YHM znJe0+2r;Z&yvCQzSfld9{KSP**p>SMh~a#L3eGlvSGHM^^1(!l9}ii$r}e*|#AFMf z#%C-JK8hiZA&P*~c;Eqy02pb`J@?PL^JBNKW-XySS6`+OzY{HIswyAySj}fyFt?tS z(c;m8r)V)2=0vkTyfx40ois0hNmF4wP)Bn70n1X46Q_Yu%&!yarFww};AI-aI@1a} zP{12MLbVEhMYTRG^!LD>N8Mzo8bqs+!nX80h)_1!)wDC&S8g@f(zw5%IPq~kH6c}*7iFblBw^MD=dMIxBbrcb3p62ob;gP>M_Mo^vE<6A0xTXi( z3GTsSGj3&N^UE`vaU1K#%ddT274nOKKuR=@V(T~8^6qHyzs|S!^-X#`p7eTh;x!;^ zMM(3$#ZG^M?u9&EG03X~9dW^wNWpgrdbd)hGsnWheuEz2|9a|G4d*^hxrSV+Ieah_~Nn7hu`WeL;6|vd~92kv2lGA zUVh?f-AaM;i%!|p`h2$z+`70@->^>Sn5b0tmj>2DVO3L7oD%w^QMyFX*~TMKwc}o4 zf7H_34jr@R?b3XC!xx*n8KV?t;Ca_mHx7&`mx&v@Gt*D0>}1?ct)$V>GYg?Sl+jrR zF)9Ce*2!$funWIkR`VSF$~%cYhP&3ID$@7iy>XX^ajWqHc4dCk7@fTb1rm?HC~+;$ z5$r<@V$VamN=A9q@_M8!qMKozd8dGbn(&h-y;U_E>MS{b1$y9sR?o7mGdqx@dX(S3 z^e%ND(>%>giO@X3A}zmu-g0S7{9ByD#Fge}&+tUDs$>gFVOUtGRXo6SP6XKPj0~Xh zRHntV>Fr}aT2;2ll86e8U0Jf5Pbq5%*_TN|vWz7ejCqQXy$BH|Az7!a zWgEMY>?S)iA^VJF46}5eKFjy_`<*||xvulaxvum3p1I7X?>+1^uvOJ$HP4I zTn%SmxA&kytuq|O_S18qVLCC-7|n_Ftz;Xt+dHG#UJzc&8oMdoQ|z$kX?Xe`(^0B@ zaSM{bHK&2&F=R6=g4LsEhxst-+t75%%F@G&CR>8NAp-RkS}uC)0hC>Xk6uL>so9imlt3&P0-T5iQ&Cq{oKfwS z(O|cTwM89C($b^qu-i?qx^+BuzJ`aF%L*AFG~}+xj*p-lpvmJ}FAV7LAsUrrx5R@_ zjNK}X#NXWb?(>UDiSVSQK=(vd?PAQ!0*8X4fJO6^6?VI&U9nJ8%ANl(!~Q0@NG5Aa z)PtyA5V%t7D@1IxK(t9ep6}g4>Jx9L?sLR8UuWT3E`M#8rO@`Ft*EH@{e*qJZ~R9M zn_g6IljCLI&ZuwP@^L*AE+?!I4|WT6`(F4<48j>%-4YG=@{qdRh|pGhn_es7aB@&Y zWvM|wSViFX2}(mVaV3?OD-;jXYsRq`)T<+wA(1bx8=Zd6 z!{P1%p(T0Gd0sxt_TZ|*{5es%oirA@Bt=0!LekzO74J7`Wz!ydH>z|t#btWB!*U{h zhbE# z+sh{40Pt=RN=svK6o=22$#r%~%drv8ggQvHKq=hA&Y;S&iGGNp1Re_`dY*=hX8vOP z3>QLscKzAc_`thqFA!TDlIcC7YVfG_Do8#r3r8?!?gCq8TZI94RgNvI0$@ z8`MhQX6`3#-ZTW3l#AKYb=$vaI2*`Ca5=tsIzvVBtOdQ)|G&fo6C#I{f{?Fcp=wypPEytQ?0ioJ!df75;kD6y+zuUZD9^P`xR~kT zwA}G9YfZdzsG_36%2p9qgo@b_x%H2Q?QiMI|LTL|7w*qz;Aoklh}Y1#?Wlaz5HdhH zR0itQ7U>W@N+L;E|I;s~=URbRL+6B#!&=$^PmTq}0~1#Bs+R6N^v82FNYLTC+v^ zkxp-xgv5!B7$*!O(D6g{h@zL9;b+5AsOix9bA5QAyRXpCY32AQvpXWCcJI6g)mr{C4F1o{ti?qyhR)_f z%QsddYt&$Ea{S8Aw9a)hr^AVLO}-O|sE()gPP1y2!Vjtjkurz7ySvA;riy#`r%o8g zS&jMh9q@&4Z;mw0g=Qb!A1y=-ZOspK17!T8kV^lNw!z#02}g%i%s!(5irxV2Opcgw zlaAzRYa|EJEsVi(|K^}rcIo?xP7+_|X@0#$j|T6-iDvTjUE0E_+{x45*S0cQYu5Rd z!;sLYx3c|XOJhq%C8(09)L4I1{WAT<;_z3=9*VCiEQHahyHFF4_1>6Jzzc2};W6WI zg2upPs)F_XY4uT>*jrWSB=+z*^-{j;w-lOqDW*+LnEns;d@YD$@8>9i$1+wVeKWB{ zi9*BQ7juvF4Yz`-v>A|l*r(M$q~x@$ckpt2b7c~V7{XTe!TIpXqwZ<`O9t!Bh54x|#ET-AXk(pchy z2ZqLbHW*k;>vq&^AdN4L{D!F6o|V>tW}!d`sIZdQp!YZ2I9mGz%H2FP&Y&Y#XIi|f z*w^CUM!tB-aarC71!N(lT3>zn7Nm2bnjL!s@Gx1=1fhw|cUkE}CYOqZ<0a(4uP~9_ zEwU+i`=>H`fT~uTpC~pGGMkl>?0;sR0wW#wsubq7|8`0q69uuWi$B%={)D=uwSCv4 zkC1ew`g60W^KH{Yz7UqJ(RQcMGDqzEj#T$?Ak@Y{n7nD)7;|&`KEBX$z+JWvbg%R5 zAA+5H_@|hI`L7HBB93ta)JY!U6%t}hQw|XiIWo7g$||Ct&2Uz}j*DkH+Yh6dv;_8Z zW+CDSW?(vP-?vyHYwFW8Q$2noVyrqBgf?!>^zJ=!2<0FELiNG>Q8m# zID=2$G#6BNMi1uSfV-8PqvuaS7YAM?>5KmOktDCLsjs@iKw)(Nmbf<@gC^hQ$lJJI zOs<;2!iOk$4|>R~cLT8S;7o8(T5!}8C6+GcEW8O@Ytp8T-eM>{?2fU5^dH9juA3hz z$MCsp=ko(7d(Z)Nzt#x^E}pm|z=~EWRHF$vqP7EGei%$1EfpJ;3x0`fC+W`AqIcxx z`Z#}TUFv_B$c=zmeZbYLW325SWL&AppUfXczhBzb6RoMM{FL|*F3{0L^y6SY%n6ec z@8+6Ms!aU}5*?RL(|A3?S{7`)C3!yZ%oZ5uodH1+slpqjL(1-Fo&LfM{)P^Ie_ZwV zhr1o#4fNOcaQEP@;Zs)T$~$Q{(G;m)kZp4;K|D9!P~q~4qT>+mB)xUpjl~WR8;0fhUgXrRE>hDfJ^22L>#ijSZU>iobfNF zc?K}Z@P*641JrvObj|8&hm}~U=^OAWmWgO@j2v7x-@VLxeZ9clTh`nA;-kP9W9i?2 zyVj6T&l__V7@ttYmn2#0%On}ztGgc*KVw$)Pqd05+*c`+IAzynuoegMK2WBfAMTi092%;Og zVRS>oXtp?7<{^d+>Cq@ZjX<~DY`}=%f zZ|`V?w+vfo+^sK&vb`2MCHow`tN66BPm0nYeMPmSzhpy*-e9uqZ!#>c6v857WzbkT zT-j?dIB{#J>a5nXzyu4G<-1vk`h--^qmYnd!{Q)by&v)EXHUx~9aExBm}MCRKnzL* zAGH5XeJp1HIKW1I*&z?qOM$p=2H49KLaQNdCgH)TETYxiH&7?x_=~A?TyS?B+YSjc z)H@n8r0*8=1|e|E7+UlBAmb-bY72iZCx^UChMb#3^H9lDaJ&*<9+HZcodTi5dAYo( zn9sY%`&)?#S0gcznE1Ez8ZMbu6eS*!li^CCrD}yp0R=@Ce!)phh_`n5i{%`KXh%yBx9PZ7B_Tl z4A~?!9}GI&-7Pdi!ni}JU~6y25F`nO6WEybNV*X_A#5S7wL1~jg}EMT4&4s!`w8fW zzabREXS+J2dQT4Kb3~u3Je%clIkGlV`re7#$p;dfT|Y_7x}@TB><&1dc({DEP{%i^ z_NDEV!lM_X|2fF#Pk~-N2(-I`i~n|a{9S1osuMW8vsg8tSP%*&bjDP^PO9)Y^9HQG zM65}Dq{-Bhnhn8TYRldMcvJm-t~P9oE1dqy$ z%SLexpRk-jv={XZ97n_U?bmFDz#6iD+d=-;%Kd%@`U#*J>|(%2m_9@jilB%C-mV*EAQo3`U&fvmGV1aGTI;Q6#hrb2 zKIMw%dU~l$*K;vMd3U&A-Yj^=eW?xMkiq7=LAJTjh_(42fMp7;Ke!p(c7qIpmKNND*(P)r#`nK}(UxH2X}dXKfDtIq z0uvivJ&1WYQ}h$(MhBYqgs#kH#wM0a8(&4weg3dHddkv5d|3beFsLuh!xW9m#}h>H z<3JbRnle=$d7YlhxZr>g>EwO4VO*y$jevIW`WOmD6WF*^ABpY6swS`E$Sv0mCm@ef z2d$XW;_;~_Wi9wZd|}bcd5pyfbj1}&YrKF6L?gV=x552{{2t_ZTdG~jxIvL2zTqyF zZ}!^zR`LoTzscf>6)5ztHvPZt-En{zNaOY=mx4(XWJeOZjqT#HIJi3TLrnn7o9DVB z9Q=r|@r|C*jN^x*?-0vgcmx!l?7o|1cYh8U)Y91Z7~w=R;hejqbeEB1vYUdYtH(NS z(6JYDrY??uZ#`x8eb5hfY9JWh9KW`gwo);4QF_yYQ9u%4DC}BmjuAR>|_+# zf+!P_h3oKwcc2B4y7L|5PdSRFkx-)bbMeUx)QdU8FEq2F^2x9zS#EcF+Y!d?UY1N07h{190V zms3qi&(SVMKrHK%a4jIar6EI(*KV$zeBx-m>MiRUCV=5s>6o&KkJ!G|O%=V*N;?0N zL2t?QdO`AHmaeTxkeA%bRhN9RWk7xjC%+vZ@%O87{#qJUc$L~S1+Mv?Fb{6@^bsa~ z?($}7e{Ip{y{ysFW^HSN9}NYV6ZC#u<3D@);IVUIP&Lrki2+vj8D+v#Fd7$?T$xO+ zrl%p5F^D9ZBhr)-poY|-WNfM^2Pa_iZJIA8;>T_$t!voi7_zkuu31l*8dhGdmSkKe z2}j^qNEa_g3i0-MU_5lo<6bXB(LYP&RU+$4H~eQ>M##g-@EKc$ZP!NDrN5BgLv4)z zU;O@`Z=8Yi-~B^4OGbPmy{8-PYjy?KFSm04DDhj=T<)h23 zz*}nR&$n70YcW&@O4B0FfG0JAapnUN6GoG8Ivbgs_gy!vjSZ)~ zAJOAVFdx}bj~{ZF0xR*?^+CP%Xb7c3q4)CGH+9Z*SL<|(4vUm|2t~Bo)KIVee(JN` zxnn~yPkG)Z>XmVYfhfcrLxiS6)NP+Rj7Xg8YXjKavt@{|SjDA>4S`oj-kchrnlOyi z7rE1;nYEL-Tw!P5GB9a7sgu;UbU`YiQ61yEs}`h<+msM#TrCzf;+$-T#AxwQ-mPgHfmT%ff*w#2pqdjY zU`Y~=^nN)GJA8ZVGS8O;m33!RdQKC~Mmx6L!1~9_%fmCErnW+{#v$lp!%y<4vbPL| zne#?}VGr4{vvp*rQ{@)(njGz9C!w^n6&PPwoU>S)OKe38Aw>%B8+mS?UWbyF@!44bwKZc@Wv0sM3|qf)|Zc}M}f$N z)*fpko7=gj7jw-rGae;17F%~K$0f(Q|6&q_RnDw-kxr5ADA574iGsGT8`M_&f@Z-? zD4S;KU`U*z-u(BpQRxMf3fRPPPC3u4aXWqcgO18EHd=KoF$FR2ip*0RtZsw8%5;V! zC3ltc*;-5q^M?iNGHe34)_?Yl){k5}&t1^a`R5jGDC?nAldPSvM@3!}!{TQOm$E zHcCVH4W;$!poZyOsAH=malOIGtLXmtw=};rTU2hr)VZYT^+CMmKs{XGQ1cfJ!IL+T zCAs2;sRn~~xpdJcXQE9R3ro7or}vgkR$*Cc&mWj(-Yd)Jt+_ds7ZCB!915VB*E$K& z3=!0Kpt3X8_0^*8Yw#zjLI>zCl}zFS zuYfP|xN@h->E#-IlrxJ8(d{vOhvWFqU>{LF>!G$s`@P=~Trw>_*9tN7aQ>}~SJM{@ zUg`j=6iHLdr8P-0RVeMqkfUWt0J(f0S(!P#34}4ysR6L(XPf_;F_;MjG~Sh2m#B7* z?-Qn!_#;XBc+6vl=%9wvJBK_cj6kd7`C(5aguo^t>O`%RxG?Oc#NTu-IUn+lW4V#T zO`+#gdG>)mdYXXoEsp{X^Gvbd7VD00(g8|pY&)@75L0euTq@rGN;>#hbA@b0YWu~+ z2Dk%{wKO7KpCarC9Id66ODQqOANBw|OU{;6FCtHChvZlGcP%G)bmDIc`m+mtBbr%} zUm1LKEaOO_Wo2wD=1W-=$PVi6L#&8F+fo05$u&#}8%=Ui=*qy>UK6lPc`2*~hfc4Q zida=y=Z@0kO7qOb-eKQNReF12O5>i&KOeBa-pgG?s*{-EcvcwszQAa|EdCLIqj9_- zcpv}riF%>!2R}pLHHVCol8agV^^AA}KlgEi{ZeP~X?bIr0@@4I5KsXQZPIL*oJ@W-Fomj*=A?!v4q(zSX4PtofQ<$>;AVm`+a(-QagS7jx$B{K?* zZFd~Z8P#rkA$Uks&~D_|&P}vRL2p#b{Iz=X+bcsR_ylrNt%XGO{Bf<1zAqU*Wffb* z|GtAa@OrW1XnLaz&D0})=05yc;}!Sab(uxsQx9AnzBXN1+xzy1)((9y#l|JbFJZ>2 z;1^S#$O0&W9?1@HcnY4L5Ge8H!}3J(ar&#&rgKke>iVMJxy2jO>__hn>wh=cP>b!U z`|P=xi6gYCaZ+eun)} z3Muvm@>4)X#}NA0KSa(6CK5Ce%hV`@8kpfwf<{3(EBmUJc097t$oAyl%iR2$7%sm>%zM;Z?lw_Yn8@+V-;Gu@t+_U2&=KDp1V=J zJvFMHf?+L6To05ax(eK-maF1&5nU?P=*=5cBgR)WC)5S|EY0y4sl5UWPc1jzws>l z?BcY5+Xz_0(N~15QcjSJ%rQpL81-?3rQ7c&UW)FwcbMSL|gv!)&P zH6=eEEdR~pfVqg+e$;UaE{?c$mi4u2q1xns26M4e!6WY)W!w%g20%eBXZn0U%_e6_ zON=;L>QqJn96!_yZ-+YH{FJa^JiNW~Y1G56&hWhh0gOHMxq5hCDERjc($xXpAefbX zI&@H)U7b07mN*73OoZo=`@hpT^7%UqmQ9le-o@AI{srs+*#&FGv!B6Ni32JzPu(Kk zB;KUpNW3A3?_5=r#o$A=?fP9>y;RWGhrMQo7G^*E03P}z$gR+1S}8Br=fm>>lFkWv zYF_$Q6`{u#LqUTjww2Zn`{OQ%6(s}Btc^D>{)9;p#`+E5nKCsQtw5tW&o~s2dns@2@u$aA2A|{kYg#Fv+9TpS5jd6FQzD4 z);F?qXR~whQx~Th_&@lhj^xMcOGgPyp4Tky!VBK**%Vw6fWTcMib2U_22A-LR@>He zq3~FM9}Krc+5W|JBZI-F756t~`6u7@Z#Mp+zeC7m9MsjpZ>9;Q@d=AV9bKuRZbhvmfRyU*&?d4=>Jj@|RxkIY7|1Z8k8ZWt#1jpAni)2&@YKnSi1tzYlS+pp)X z__(vHrst!wD&!X4>Z_qhb}^5 z$2zJUe5?g_s$rq1@B5vrHq<}vgU9cTI@p3NK6{hcg67dscAYC2rilgma?gxscye6| zGdYR4yQx%PF?p+-*A6bP_~}LG7vH`UX86^Z>LW^mp~`(a@Vr5=T0iobO7jwP#lIMc zD*JhRfhy-uts?RzB85rX&5eSTa3aX2tHERH`SHE7GuGg@XNu`h$+i&@O?x&bJ<_Mz zFI4)sO6HAjiTr7yg~opTB<<)Bi+R#{D@EEuLZw^Y(j7BYF|kxDcClp*^e4TU)qR`;~vzGq5w*JX7X1%n~!yY6LhIa!zU&heZG z!HUZ#-h5#ck>hdw%T6a?HLEx=;=*@ z=h->CM52n_T~ji$++{wOt~YCa4D*uR^h=uVX>P*>EV~nBuo#7{g~rJRFkCAhd^P82 zCqGfLsQ1Q@+I1D~NM)i_%Xnv;?BWX+FoBeI)!lzi?zsCV&m`|^mhrA>xG3wAr+${kc1?-wxgp|PNbR{V%<0nO4>udBbWP~! zmg1ql$>cqoNKklD`*OPsD-79(_F%RlVJIa6Qln$A%fIj&me~s3z!PM`rV3I)cAu0> zZ4GEMf`8VKB6Y*}a4#>omtaHb00`uuUB(PF1@ zao^OSM9QqdHf2inhElGrre#8}`@phY-hJ)^d*HQlM3bI8PcMbKpt&jjt*IAw@$koB zosS@XttX-oC84yH%jK%#QF?z3Z zJ1<;fO^7>oE-p-ps;M|w@n>A;KK8ME9#~nn=&``;TVWyKZv0(4;K6_tRuH$uS zpMqt1;25PIYEV2uJdQk)-}yC^;i7b|=Vee5FHe1S4dh)CqSx#5PL)P^S*v z7CwduO(Mo=mYtDpbQg2C%&;F_&N*wL(pabrsmvQGoyWBex4BoU19s@_lwIaaw+?iv z2qyOjgVtXr1|B<`43sG>-!y--5Q?0 zT{5$x%ol@{@N(zU4(d_BZ@&4jpZED&q4sYxRx=kR{lS!($;7S?d2{G2&^LT&pA9?= z{-A<@BMSNfOugYq%s362a-Kd@f=3CnS9$n?>(EDi3SrcM8J8!2-huiD>BsSV}xbW5HaS z2KOPLbZ0MyZ_WLHvt?1LsG9jdp)_sSM zB2A3T!vzQ7r&|w8+Co_nwPdedulQ=)yg0+4K+`RAD1Z)G%jb1Ry!G7$pMR7 zw2>SbwLaS@yb!j*JO9JkXR>r8Y}b)tf(3CpHX04LwwU=}331d4_z*(S*=)WU0S%8l z#t^{w5Ry2%_*f~Ro_I07XaWtv!{fJK$2A9%gOcfT&C{INr}{oWf|P5Yx_fGT!PmzF zXGm6w5?tkQ?j&iL6Dmlhe_ukDcO(V6YjJ`zcex5(J#orcq1&=I)J zxm7TB3M8ce%f9^gn2CFDCovuVG0WtqugP>8R5~@dEiP{JfnwSva8o=?>U)m^9&N<7nGG(8C?mb>Xt* zVJ?<@%ltEyD+7h%7EhDolHK2B4T1iZ;CH1?iWwE(8MmObZ)b?Q!n{ZsP(~up=mvi& zj35^=r1`BFFBg$|fnZLGYHhnaG-)yyi|hsPGtAB3E?ku@a1v6MX)_cBb$~{o_3^ZQ zH@7@!6FsAvROxIpW?nqt-;e{LC0_@ZT$6$$gfhZOA>>zs0RR*2v@WRk zgddug=}0C3(ZoXi(ug+ZZY&WUE_akQP5xK_%Xf}_$vnS&JVUj!QR>bn!m>x@QHj*T ze&KD<=b*Vt&bl$?cp2as_X(wV3KrQ0SmaEA<@hmRmn}qGkC>BT(Is|9Du$}JP74wl zS#EjvgLxC(jzp&9xj#B7R+Wk_7_$?7M6OP)CKX*cccSPLSS`|uahMp49p|%R30!7o zzQmQu*S{TA)gi~l^OE|c%=pL7@*g_n|LZgFYwX7v8rOs|MTvCEf)YzAHtnZ{ z0CSt?B+VJ!OEOAJ-q>iQ5vyX~Zx=kW}IizdC|KuwEUIC~g)B~W1!B*?2R+A4LB|Z;8DCQ(fdVV(i8J6QtMR};}zEPV!qO{R=h!(}YK1&toi@;fv{4fweV?&b=CH)hTbA|2Q;e;k8*dyhzgS@;E}v+VgOd zu&k>pm=f;8bV4Z?IM(8cE%?o?x!#(HMh%23Z<1jM_Sl2!#;aDLy1b=uJ-Xv;Ta!|%vqVx5U`GsV*{5Ce4yw0Xh>vO%8{i7UO zU$%}F-cg8?@%Y6gX01=}wle8j_U}%)K{EH4r=vVct*mch=i0^5Kkx?2CRSOwNN!9@ECmf9|NDER)vdXdP(-Z(-`siGV??RVvfxFd7?GuYK zBIR!r^baL3I4ex1$r)R(&amB(TP!}tVArQ%3w#R9V5|ZtG!goRevWb$JaC5e3WkKe z%@k!rk2uqWW&Jjwua!e+xQn|@;!ch8Su3DGThh)n%r+!yTrISB4`QMb;%MytV2gZg z{^Ls@iwDlWEcq%`0(;+(Mbkcu+iHcg9(^`qJc|t7?L$;CpjixXnHlq5yh(CdPltBE zV}e7p{o#bfXO@qWmd3?sD)1_bcC%?{?)CosgxfafKYjMnHLZE>Dpe&Y+=|F;V~F7O zMp}m6e@OSNe7K|>Bs)}?mp_)@!&?*m)3kXY-_6^77kJBPbO6kxwvtQ!V#a=r{SULk Bq3Zwu literal 0 HcmV?d00001 diff --git a/assets/scala-logo.svg b/assets/scala-logo.svg new file mode 100644 index 00000000..09d5a7a3 --- /dev/null +++ b/assets/scala-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/css/logo-nav.css b/css/logo-nav.css index 6ff7d527..59a4fb5b 100755 --- a/css/logo-nav.css +++ b/css/logo-nav.css @@ -602,7 +602,7 @@ body { /*Community Resources Page */ /* Resource section is used to create a new resource on the community resources page. */ -.resource-section { +.resource-section, .resource-item { border-bottom: 1px solid #E8E8E8; padding: 16px; vertical-align: middle; @@ -660,6 +660,22 @@ body { } } +@media (max-width: 1200px) and (min-width:992px) { + .navbar-logo { + /* show only planet and moon on narrow screen */ + clip-path: inset(0px 125px 0px 0px); + margin-right: -115px; + } +} + +@media (max-width: 992px) and (min-width:768px){ + .navbar-logo { + /* show only planet and moon on narrow screen */ + clip-path: inset(0px 100px 0px 0px); + margin-right: -100px; + } +} + @media (max-width: 1200px) { .nb-highlight-text { margin-top: 32px; @@ -789,6 +805,9 @@ body { .donate-box { margin-top: 10%; } + .resource-item { + padding: 0px 0 30px; + } .resource-section { height: 400px; padding: 10px 0 30px; @@ -796,7 +815,7 @@ body { .resource-section:nth-child(even) { border-left: 1px solid #E8E8E8; } - .resource-section img { + .resource-section img, .resource-item img { margin-top: 15px; padding-bottom: 0; } @@ -812,11 +831,12 @@ body { margin-top: 4px; } .nav>li>a { - font-size: 13px; - letter-spacing: .8px; - padding-left: 8px; - padding-right: 8px; + font-size: 15px; + letter-spacing: .8px; + padding-left: 7px; + padding-right: 7px; } + .follow { float: left; margin-bottom: 20px; diff --git a/ecosystem/index.html b/ecosystem/index.html index e2eddd24..0f1f131e 100644 --- a/ecosystem/index.html +++ b/ecosystem/index.html @@ -2,3 +2,21 @@ layout: ecosystem title: Ecosystem --- + + From d4869eb5200f650b699b5dab9f8bec343a6e4941 Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Wed, 10 Jan 2018 16:09:16 +0100 Subject: [PATCH 04/11] Remove ecosystem from the navbar, and add a couple of projects. --- _data/ecosystem.yml | 13 +++++++++++++ _data/nav.yml | 1 - 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/_data/ecosystem.yml b/_data/ecosystem.yml index 4ec45bf7..6012b6f4 100644 --- a/_data/ecosystem.yml +++ b/_data/ecosystem.yml @@ -71,6 +71,8 @@ Frontends: url: https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter description: Plugin for Visual Studio Code. logo: vscode-jupyter-logo.png + QtConsole: {} + Jupyter Console: {} Services: @@ -95,6 +97,12 @@ Services: description: R-brain provides an Cloud-based IDE based on Jupyter Optimized for Python & R Language. url: https://cdn.worldvectorlogo.com/logos/scala-4.svg logo: r-brain-logo.jpg + Nbviewer: + url: https://nbviewer.jupyter.org + logo: notebook-file-logo.svg + description: Render any publicly available notebook document or GitHub repository + Azure Notebooks: + tags: microsoft, azure Utilities: logo: data.svg @@ -108,4 +116,9 @@ Utilities: description: Diff and Merge of notebooks. url: https://github.com/jupyter/nbdime tags: git, github, simula, MinRk + jupyter_client: {} + jupyterhub: + tags: multiple users, authentication, OAuth, kubernetes + nbgrader: + tags: education diff --git a/_data/nav.yml b/_data/nav.yml index 183e9edc..6400d6c9 100644 --- a/_data/nav.yml +++ b/_data/nav.yml @@ -6,7 +6,6 @@ head: - title: NBViewer url: https://nbviewer.jupyter.org - Widgets - - Ecosystem - title: Blog url: https://blog.jupyter.org From c7341d297de374188030f030c3f2ef23745ff146 Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Wed, 10 Jan 2018 16:41:51 +0100 Subject: [PATCH 05/11] forgotten asset --- assets/notebook-file-logo.svg | 226 ++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 assets/notebook-file-logo.svg diff --git a/assets/notebook-file-logo.svg b/assets/notebook-file-logo.svg new file mode 100644 index 00000000..f7f02816 --- /dev/null +++ b/assets/notebook-file-logo.svg @@ -0,0 +1,226 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Jupyter + + From 1f534710bdda7dda01f2d1450141f5e9670d2a23 Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Sun, 21 Jan 2018 11:19:47 -0800 Subject: [PATCH 06/11] add sponsoring and order alphabetically --- _data/ecosystem.yml | 70 +++++++++++++++++++++++------------------ _layouts/ecosystem.html | 65 +++++++++++++++++++++++++++++++------- 2 files changed, 94 insertions(+), 41 deletions(-) diff --git a/_data/ecosystem.yml b/_data/ecosystem.yml index 6012b6f4..7c84ac42 100644 --- a/_data/ecosystem.yml +++ b/_data/ecosystem.yml @@ -7,15 +7,17 @@ Kernels: multiple languages, often simultaneously. items: - IPython: + - name: IPython + licence: BSD + sponsored: 0 + commercial: false description: > - The reference Kernel implementation for Jupyter; written in Python, provide all the features of the Command Line IPython shell, and more. - logo: python-logo.svg url: https://ipython.org - IHaskell: + - name: IHaskell + commercial: false description: > IHaskell provide a haskell kernel with extra interactivity features to @@ -23,26 +25,30 @@ Kernels: logo: haskell-logo.svg url: https://github.com/gibiansky/IHaskell - IJulia: + - name: IJulia + licence: MIT + commercial: false description: > IJulia allow you to access the Julia programming language from any Jupyter conmpatible frontend. logo: julia-logo.svg url: https://github.com/JuliaLang/IJulia.jl - IRKernel: + - name: IRKernel + commercial: false url: https://irkernel.github.io/ description: > The R kernel is the perfect tool for statisticians looking to use the R from the comfort of a notebook. logo: r-logo.svg - IScala: - description: > - You guessed it; a scala kernel for Jupyter ! - url: https://github.com/mattpap/IScala - logo: scala-logo.svg - IRuby: {} - IJavascript: {} - ICSharp: {} + - name: IScala + sponsored: 0 + commercial: false + description: > + You guessed it; a scala kernel for Jupyter ! + url: https://github.com/mattpap/IScala + logo: scala-logo.svg + - name: IRuby + commercial: false Frontends: @@ -53,26 +59,26 @@ Frontends: can either be a standalone application, or an extension for an existing application or text editor items: - Nteract: + - name: Nteract description: > Nteract provides a native (electron) notebook interface that provide rich integration into operating system and allow a pure Desktop experience. logo: nteract-logo.png url: https://nteract.io - Notebook: + - name: Notebook description: The Classic notebook Frontend. url: https://jupyter-notebook.readthedocs.org logo: notebookicon.svg - Hydrogen: + - name: Hydrogen description: Integration with Atom url: https://nteract.io/atom logo: null - VSCode Jupyter: + - name: VSCode Jupyter url: https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter description: Plugin for Visual Studio Code. logo: vscode-jupyter-logo.png - QtConsole: {} - Jupyter Console: {} + - name: QtConsole + - name: Jupyter Console Services: @@ -80,28 +86,32 @@ Services: **Services** that provides, integrate with, or augment Jupyter. logo: central.svg items: - MyBinder: + - name: MyBinder + commercial: false description: > MyBinder.org is a free service the provide ephemeral computing in the cloud and turn any git repository into a temporary jupyter notebook instance in the cloud. url: https://mybinder.org logo: binder-logo.png - CoCalc: + - name: CoCalc + sponsored: 0 + commercial: true logo: cocalc-logo.png url: https://cocalc.com/ description: > Ex Sage Math Cloud, Cocalc offershosting of Jupyter notebook in the cloud and provide features unique to the Sage environement. - R-Brain: + - name: R-Brain + commercial: true description: R-brain provides an Cloud-based IDE based on Jupyter Optimized for Python & R Language. url: https://cdn.worldvectorlogo.com/logos/scala-4.svg logo: r-brain-logo.jpg - Nbviewer: + - name: Nbviewer url: https://nbviewer.jupyter.org logo: notebook-file-logo.svg description: Render any publicly available notebook document or GitHub repository - Azure Notebooks: + - name: Azure Notebooks tags: microsoft, azure Utilities: @@ -109,16 +119,16 @@ Utilities: description: > Miscelaneous **utilities** to work with the Jupyter Ecosystem items: - nbconvert: + - name: nbconvert description: A tool to convert notebook to multiple formats. url: https://nbconvert.readthedocs.org - nbdime: + - name: nbdime description: Diff and Merge of notebooks. url: https://github.com/jupyter/nbdime tags: git, github, simula, MinRk - jupyter_client: {} - jupyterhub: + - name: jupyter_client + - name: jupyterhub tags: multiple users, authentication, OAuth, kubernetes - nbgrader: + - name: nbgrader tags: education diff --git a/_layouts/ecosystem.html b/_layouts/ecosystem.html index d80324b3..ce6d8e1d 100644 --- a/_layouts/ecosystem.html +++ b/_layouts/ecosystem.html @@ -27,6 +27,33 @@ padding: 0; margin: 0; } + +.sponsored-item { + background-color: #f6f6f6; +} +.sponsored-item:hover { + background-color: #ddd; +} + +.legal-attributes * { + color: gray; + font-size: 80%; + display: inline; +} + +.legal-attributes { + float: right; +} + +.legal-attributes > span:after { + content: ' -'; +} + +.legal-attributes > span:last-child:after { + content: ''; +} + + @@ -65,18 +92,22 @@

{{category[0]}}

{{category[1].description | markdownify}}
- {% for item in category[1].items %} -
+ {% for item in sorted %} +
- {%- if item[1].logo %} - + {%- if item.logo %} + {% else -%} {%- if category[1].logo %} @@ -85,18 +116,30 @@

{{category[0]}}

{% endif -%}
-

{{item[0]}}

-

{{item[1].description}}

+ +

{{item.name}}

+

{{item.description}}

- {%- if item[1].url -%} + {%- if item.url -%}
- View + View
{%- endif -%}
{% endfor %} + {% endfor %}
From eb3a7ec3b76e8cbbf7f8497b7158a565e3b71e9f Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Sun, 21 Jan 2018 15:33:52 -0800 Subject: [PATCH 07/11] test --- _data/ecosystem.yml | 134 ---------------------------------------- _layouts/ecosystem.html | 55 ++++++++++++++--- 2 files changed, 46 insertions(+), 143 deletions(-) delete mode 100644 _data/ecosystem.yml diff --git a/_data/ecosystem.yml b/_data/ecosystem.yml deleted file mode 100644 index 7c84ac42..00000000 --- a/_data/ecosystem.yml +++ /dev/null @@ -1,134 +0,0 @@ -Kernels: - logo: language.svg - description: > - - **Kernels** are the engines responsible for code execution. Generally - kernels are associated with one language, but a few kernels can manage - multiple languages, often simultaneously. - - items: - - name: IPython - licence: BSD - sponsored: 0 - commercial: false - description: > - The reference Kernel implementation for Jupyter; written in Python, - provide all the features of the Command Line IPython shell, and more. - logo: python-logo.svg - url: https://ipython.org - - name: IHaskell - commercial: false - description: > - - IHaskell provide a haskell kernel with extra interactivity features to - make full usage of the notebook features. - logo: haskell-logo.svg - url: https://github.com/gibiansky/IHaskell - - - name: IJulia - licence: MIT - commercial: false - description: > - IJulia allow you to access the Julia programming language from any - Jupyter conmpatible frontend. - logo: julia-logo.svg - url: https://github.com/JuliaLang/IJulia.jl - - name: IRKernel - commercial: false - url: https://irkernel.github.io/ - description: > - The R kernel is the perfect tool for statisticians looking to use the - R from the comfort of a notebook. - logo: r-logo.svg - - name: IScala - sponsored: 0 - commercial: false - description: > - You guessed it; a scala kernel for Jupyter ! - url: https://github.com/mattpap/IScala - logo: scala-logo.svg - - name: IRuby - commercial: false - - -Frontends: - logo: kernelicon.svg - description: > - **Frontends** are user facing application, usually in which you edit code. - Frontend can connect to a _kernel_ which provides code execution. A frontend - can either be a standalone application, or an extension for an existing - application or text editor - items: - - name: Nteract - description: > - Nteract provides a native (electron) notebook interface that provide - rich integration into operating system and allow a pure Desktop experience. - logo: nteract-logo.png - url: https://nteract.io - - name: Notebook - description: The Classic notebook Frontend. - url: https://jupyter-notebook.readthedocs.org - logo: notebookicon.svg - - name: Hydrogen - description: Integration with Atom - url: https://nteract.io/atom - logo: null - - name: VSCode Jupyter - url: https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter - description: Plugin for Visual Studio Code. - logo: vscode-jupyter-logo.png - - name: QtConsole - - name: Jupyter Console - - -Services: - description: > - **Services** that provides, integrate with, or augment Jupyter. - logo: central.svg - items: - - name: MyBinder - commercial: false - description: > - MyBinder.org is a free service the provide ephemeral computing in the - cloud and turn any git repository into a temporary jupyter notebook - instance in the cloud. - url: https://mybinder.org - logo: binder-logo.png - - name: CoCalc - sponsored: 0 - commercial: true - logo: cocalc-logo.png - url: https://cocalc.com/ - description: > - Ex Sage Math Cloud, Cocalc offershosting of Jupyter notebook in the - cloud and provide features unique to the Sage environement. - - name: R-Brain - commercial: true - description: R-brain provides an Cloud-based IDE based on Jupyter Optimized for Python & R Language. - url: https://cdn.worldvectorlogo.com/logos/scala-4.svg - logo: r-brain-logo.jpg - - name: Nbviewer - url: https://nbviewer.jupyter.org - logo: notebook-file-logo.svg - description: Render any publicly available notebook document or GitHub repository - - name: Azure Notebooks - tags: microsoft, azure - -Utilities: - logo: data.svg - description: > - Miscelaneous **utilities** to work with the Jupyter Ecosystem - items: - - name: nbconvert - description: A tool to convert notebook to multiple formats. - url: https://nbconvert.readthedocs.org - - name: nbdime - description: Diff and Merge of notebooks. - url: https://github.com/jupyter/nbdime - tags: git, github, simula, MinRk - - name: jupyter_client - - name: jupyterhub - tags: multiple users, authentication, OAuth, kubernetes - - name: nbgrader - tags: education - diff --git a/_layouts/ecosystem.html b/_layouts/ecosystem.html index ce6d8e1d..96bf9cbc 100644 --- a/_layouts/ecosystem.html +++ b/_layouts/ecosystem.html @@ -28,10 +28,10 @@ margin: 0; } -.sponsored-item { +.sponsored-item, .featured-item { background-color: #f6f6f6; } -.sponsored-item:hover { +.resource-item:hover { background-color: #ddd; } @@ -92,17 +92,19 @@

{{category[0]}}

{{category[1].description | markdownify}}
- {% assign sponsored = category[1].items | group_by: 'sponsored' | sort: 'name' | reverse %} - {% for xx in sponsored %} + {% assign featured = category[1].items | group_by: 'featured' | sort: 'name' | reverse %} + {% for xx in featured %} {% assign sorted = xx.items| sort: 'name' %} {% for item in sorted %} -
@@ -118,10 +120,15 @@

{{category[0]}}

+ {% endfor %} +
+
+

Missing project?

+ +

You did not find what you are looking for ? This list may be + incomplete. Expand the next section to know how to add a project on this + list. +

+ Adding a project on this page. +

+ To be added to this page the following must be true: +

    +
  • The project must be related to Jupyter, integrate with Jupyter
  • +
  • The project author or owner must agree for his project to be listed + on this page, and must give explicit permission for this page to list + his project name and brand and logo.
  • +
  • The project should be maintained and working, avoid submitting + project that are less than a couple month old.
  • +
  • We only accept Project addition via Pull-Requests for now.Send a + Pull-request to https://github.com/jupyter/jupyter.github.io which + adds the following fields: + + +
  • +
+

+
+
+
From 53a76e1b916f29b3ce13b8e7e558d612d87a3c49 Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Sun, 21 Jan 2018 16:24:34 -0800 Subject: [PATCH 08/11] wont work --- _data/ecosystem.yml | 135 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 _data/ecosystem.yml diff --git a/_data/ecosystem.yml b/_data/ecosystem.yml new file mode 100644 index 00000000..8d01f13e --- /dev/null +++ b/_data/ecosystem.yml @@ -0,0 +1,135 @@ +Kernels: + logo: language.svg + description: > + + **Kernels** are the engines responsible for code execution. Generally + kernels are associated with one language, but a few kernels can manage + multiple languages, often simultaneously. + + items: + - name: IPython + license: BSD + featured: 0 + commercial: false + description: > + The reference Kernel implementation for Jupyter; written in Python, + provide all the features of the Command Line IPython shell, and more. + logo: python-logo.svg + url: https://ipython.org + - name: IHaskell + commercial: false + description: > + + IHaskell provide a haskell kernel with extra interactivity features to + make full usage of the notebook features. + logo: haskell-logo.svg + url: https://github.com/gibiansky/IHaskell + + - name: IJulia + license: MIT + commercial: false + description: > + IJulia allow you to access the Julia programming language from any + Jupyter conmpatible frontend. + logo: julia-logo.svg + url: https://github.com/JuliaLang/IJulia.jl + - name: IRKernel + commercial: false + url: https://irkernel.github.io/ + description: > + The R kernel is the perfect tool for statisticians looking to use the + R from the comfort of a notebook. + logo: r-logo.svg + - name: IScala + sponsored: true + commercial: false + description: > + You guessed it; a scala kernel for Jupyter ! + url: https://github.com/mattpap/IScala + logo: scala-logo.svg + - name: IRuby + commercial: false + + +Frontends: + logo: kernelicon.svg + description: > + **Frontends** are user facing application, usually in which you edit code. + Frontend can connect to a _kernel_ which provides code execution. A frontend + can either be a standalone application, or an extension for an existing + application or text editor + items: + - name: Nteract + description: > + Nteract provides a native (electron) notebook interface that provide + rich integration into operating system and allow a pure Desktop experience. + logo: nteract-logo.png + url: https://nteract.io + - name: Notebook + featured: 0 + description: The Classic notebook Frontend. + url: https://jupyter-notebook.readthedocs.org + logo: notebookicon.svg + - name: Hydrogen + description: Integration with Atom + url: https://nteract.io/atom + logo: null + - name: VSCode Jupyter + url: https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter + description: Plugin for Visual Studio Code. + logo: vscode-jupyter-logo.png + - name: QtConsole + - name: Jupyter Console + + +Services: + description: > + **Services** that provides, integrate with, or augment Jupyter. + logo: central.svg + items: + - name: MyBinder + commercial: false + description: > + MyBinder.org is a free service the provide ephemeral computing in the + cloud and turn any git repository into a temporary jupyter notebook + instance in the cloud. + url: https://mybinder.org + logo: binder-logo.png + - name: CoCalc + sponsored: 0 + commercial: true + logo: cocalc-logo.png + url: https://cocalc.com/ + description: > + Ex Sage Math Cloud, Cocalc offershosting of Jupyter notebook in the + cloud and provide features unique to the Sage environement. + - name: R-Brain + commercial: true + description: R-brain provides an Cloud-based IDE based on Jupyter Optimized for Python & R Language. + url: https://cdn.worldvectorlogo.com/logos/scala-4.svg + logo: r-brain-logo.jpg + - name: Nbviewer + url: https://nbviewer.jupyter.org + logo: notebook-file-logo.svg + description: Render any publicly available notebook document or GitHub repository + - name: Azure Notebooks + tags: microsoft, azure + +Utilities: + logo: data.svg + description: > + Miscelaneous **utilities** to work with the Jupyter Ecosystem + items: + - name: nbconvert + description: A tool to convert notebook to multiple formats. + url: https://nbconvert.readthedocs.org + - name: nbdime + description: Diff and Merge of notebooks. + url: https://github.com/jupyter/nbdime + tags: git, github, simula, MinRk + - name: jupyter_client + - name: jupyterhub + tags: multiple users, authentication, OAuth, kubernetes + - name: nbgrader + tags: education + From 558aca2c0866ff50bfa5972653d8da51ff463793 Mon Sep 17 00:00:00 2001 From: Matthias Bussonnier Date: Sun, 21 Jan 2018 16:49:55 -0800 Subject: [PATCH 09/11] move logos --- _data/ecosystem.yml | 9 ++++-- _layouts/ecosystem.html | 28 +++++++++++++----- assets/ecosystem/azure-notebooks-logo.png | Bin 0 -> 16019 bytes assets/{ => ecosystem}/binder-logo.png | Bin assets/{ => ecosystem}/cocalc-logo.png | Bin assets/{ => ecosystem}/haskell-logo.svg | 0 assets/{ => ecosystem}/julia-logo.svg | 0 assets/{ => ecosystem}/nteract-logo.png | Bin assets/{ => ecosystem}/python-logo.svg | 0 assets/{ => ecosystem}/r-brain-logo.jpg | Bin assets/{ => ecosystem}/r-logo.svg | 0 assets/{ => ecosystem}/scala-logo.svg | 0 .../{ => ecosystem}/vscode-jupyter-logo.png | Bin 13 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 assets/ecosystem/azure-notebooks-logo.png rename assets/{ => ecosystem}/binder-logo.png (100%) rename assets/{ => ecosystem}/cocalc-logo.png (100%) rename assets/{ => ecosystem}/haskell-logo.svg (100%) rename assets/{ => ecosystem}/julia-logo.svg (100%) rename assets/{ => ecosystem}/nteract-logo.png (100%) rename assets/{ => ecosystem}/python-logo.svg (100%) rename assets/{ => ecosystem}/r-brain-logo.jpg (100%) rename assets/{ => ecosystem}/r-logo.svg (100%) rename assets/{ => ecosystem}/scala-logo.svg (100%) rename assets/{ => ecosystem}/vscode-jupyter-logo.png (100%) diff --git a/_data/ecosystem.yml b/_data/ecosystem.yml index 8d01f13e..f64c20a1 100644 --- a/_data/ecosystem.yml +++ b/_data/ecosystem.yml @@ -69,7 +69,7 @@ Frontends: featured: 0 description: The Classic notebook Frontend. url: https://jupyter-notebook.readthedocs.org - logo: notebookicon.svg + logo: ../notebookicon.svg - name: Hydrogen description: Integration with Atom url: https://nteract.io/atom @@ -110,10 +110,15 @@ Services: logo: r-brain-logo.jpg - name: Nbviewer url: https://nbviewer.jupyter.org - logo: notebook-file-logo.svg + logo: ../notebook-file-logo.svg description: Render any publicly available notebook document or GitHub repository - name: Azure Notebooks + logo: azure-notebooks-logo.png + url: https://notebooks.azure.com + commercial: true tags: microsoft, azure + description: > + Jupyter notebook hosted on Azure cloud. Utilities: logo: data.svg diff --git a/_layouts/ecosystem.html b/_layouts/ecosystem.html index 96bf9cbc..59843ddc 100644 --- a/_layouts/ecosystem.html +++ b/_layouts/ecosystem.html @@ -109,7 +109,7 @@

{{category[0]}}

{%- if item.logo %} - + {% else -%} {%- if category[1].logo %} @@ -155,13 +155,14 @@

{{item.name}}

Missing project?

- +
+

You did not find what you are looking for ? This list may be incomplete. Expand the next section to know how to add a project on this list. -

- Adding a project on this page. +

+ Projects will be listed alphabetically. To be added to this page the following must be true:

  • The project must be related to Jupyter, integrate with Jupyter
  • @@ -173,11 +174,22 @@

    Missing project?

  • We only accept Project addition via Pull-Requests for now.Send a Pull-request to https://github.com/jupyter/jupyter.github.io which adds the following fields: - - +
    +- name: [name of your project.]
    +  license: [optional license, if open source, or "Proprietary" if open source]
    +  featured: [reserved to the Jupyter Team]
    +  sponsored: [reserved to the Jupyter Team]
    +  commercial: [false|true, is your project commercial]
    +  description: >
    +      [Multi line markdown description of your project. Avoid links,
    +      and please keep it not too long]
    +  logo: [optional, name of your logo file, place it in /assets/, svg
    +  preffered, will be rendered in an about 80x80 square on variable
    +  color background.]
    +  url: [url for the "view" button, please use https if possible]
    +          
  • +

- -
diff --git a/assets/ecosystem/azure-notebooks-logo.png b/assets/ecosystem/azure-notebooks-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..826b599ce31f798367b9b38607d38cf5c9e51b7c GIT binary patch literal 16019 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 Date: Sun, 21 Jan 2018 16:53:11 -0800 Subject: [PATCH 10/11] permalink --- ecosystem/index.html => ecosystem.html | 1 + 1 file changed, 1 insertion(+) rename ecosystem/index.html => ecosystem.html (96%) diff --git a/ecosystem/index.html b/ecosystem.html similarity index 96% rename from ecosystem/index.html rename to ecosystem.html index 0f1f131e..310ae02a 100644 --- a/ecosystem/index.html +++ b/ecosystem.html @@ -1,6 +1,7 @@ --- layout: ecosystem title: Ecosystem +permalink: /ecosystem ---