From e9b25f120ddfbb13ef689e4d89b51423d7681c38 Mon Sep 17 00:00:00 2001 From: Alexis Fourmaux Date: Thu, 21 May 2020 01:18:35 +0200 Subject: [PATCH] Initial commit with simple update of color theme --- arch-nord.plymouth | 8 +++ arch-nord.script | 135 +++++++++++++++++++++++++++++++++++++++++++++ logo.png | Bin 0 -> 20637 bytes progress.png | Bin 0 -> 509 bytes 4 files changed, 143 insertions(+) create mode 100644 arch-nord.plymouth create mode 100644 arch-nord.script create mode 100644 logo.png create mode 100644 progress.png diff --git a/arch-nord.plymouth b/arch-nord.plymouth new file mode 100644 index 0000000..fc5820d --- /dev/null +++ b/arch-nord.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=Arch Nord +Description=Arch Nord theme. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/arch-nord +ScriptFile=/usr/share/plymouth/themes/arch-nord/arch-nord.script diff --git a/arch-nord.script b/arch-nord.script new file mode 100644 index 0000000..26e6c0b --- /dev/null +++ b/arch-nord.script @@ -0,0 +1,135 @@ +// Screen size +screen.w = Window.GetWidth(); +screen.h = Window.GetHeight(); +screen.half.w = Window.GetWidth() / 2; +screen.half.h = Window.GetHeight() / 2; + +// Logo +logo.image = Image("logo.png"); +logo.originalImage = Image("logo.png"); +logo.sprite = Sprite(); + +// BG +Window.SetBackgroundTopColor(0.18, 0.20, 0.25); +Window.SetBackgroundBottomColor(0.18, 0.20, 0.25); + +// Progress bar +loading.image = Image("progress.png"); +loading.originalImage = Image("progress.png"); +loading.sprite = Sprite(); +loading.sprite.SetY(screen.h - 1); +loading.sprite.SetX(0); + +// Question prompt +question = null; +answer = null; + +// Message +message = null; + +// Password prompt +bullets = null; +prompt = null; +bullet.image = Image.Text("*", 1, 1, 1); + +// Flow +state.status = "play"; +state.time = 0.0; + +//--------------------------------- Refresh (Logo animation) -------------------------- +fun RefreshCallback() { + if (state.status == "play") + speed = 5; + else + speed = 1; + + if (Plymouth.GetMode() == "shutdown") + opacity = 1 - global.progress * 3; + else + opacity = 1; + + sin = Math.Sin(state.time * speed) * 0.05; + if (sin < 0) + sin *= 2; + s = Math.Abs(sin) + 0.3; + + logo.image = logo.originalImage.Scale( + logo.originalImage.GetWidth() * s, + logo.originalImage.GetHeight() * s + ); + logo.sprite.SetImage(logo.image); + logo.sprite.SetX(screen.half.w - logo.image.GetWidth() / 2); + logo.sprite.SetY(screen.half.h - logo.image.GetHeight() / 2); + logo.sprite.SetOpacity(opacity); + + loading.image = loading.originalImage.Scale(global.progress * screen.w, 1); + loading.sprite.SetImage(loading.image); +} +Plymouth.SetRefreshFunction(RefreshCallback); + +//------------------------------------- Password prompt ------------------------------- +fun DisplayQuestionCallback(prompt, entry) { + question = null; + answer = null; + + if (entry == "") + entry = ""; + + question.image = Image.Text(prompt, 1, 1, 1); + question.sprite = Sprite(question.image); + question.sprite.SetX(screen.half.w - question.image.GetWidth() / 2); + question.sprite.SetY(screen.h - 4 * question.image.GetHeight()); + + answer.image = Image.Text(entry, 1, 1, 1); + answer.sprite = Sprite(answer.image); + answer.sprite.SetX(screen.half.w - answer.image.GetWidth() / 2); + answer.sprite.SetY(screen.h - 2 * answer.image.GetHeight()); +} +Plymouth.SetDisplayQuestionFunction(DisplayQuestionCallback); + +//------------------------------------- Password prompt ------------------------------- +fun DisplayPasswordCallback(nil, bulletCount) { + state.status = "pause"; + totalWidth = bulletCount * bullet.image.GetWidth(); + startPos = screen.half.w - totalWidth / 2; + + prompt.image = Image.Text("enter password:", 1, 1, 1); + prompt.sprite = Sprite(prompt.image); + prompt.sprite.SetX(screen.half.w - prompt.image.GetWidth() / 2); + prompt.sprite.SetY(screen.h - 4 * prompt.image.GetHeight()); + + // Clear all bullets (user might hit backspace) + bullets = null; + for (i = 0; i < bulletCount; i++) { + bullets[i].sprite = Sprite(bullet.image); + bullets[i].sprite.SetX(startPos + i * bullet.image.GetWidth()); + bullets[i].sprite.SetY(screen.h - 2 * bullet.image.GetHeight()); + } +} +Plymouth.SetDisplayPasswordFunction(DisplayPasswordCallback); + +//--------------------------- Normal display (unset all text) ---------------------- +fun DisplayNormalCallback() { + state.status = "play"; + bullets = null; + prompt = null; + message = null; + question = null; + answer = null; +} +Plymouth.SetDisplayNormalFunction(DisplayNormalCallback); + +//----------------------------------------- Progress -------------------------------- +fun ProgressCallback(duration, progress) { + global.progress = progress; + state.time = duration; +} +Plymouth.SetBootProgressFunction(ProgressCallback); + +//----------------------------------------- Message -------------------------------- +fun MessageCallback(text) { + message.image = Image.Text(text, 1, 1, 1); + message.sprite = Sprite(message.image); + message.sprite.SetPosition(screen.half.w - message.image.GetWidth() / 2, message.image.GetHeight()); +} +Plymouth.SetMessageFunction(MessageCallback); diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..80d8646f9b6a5dd69963bdc22771bf6834d4f5f7 GIT binary patch literal 20637 zcmeIZc|6qZ{y%=r82i4Hr9osjwk%o3PK2~6EyGwNJ0ayQkwUZyAw{KK+7x9hl}gdw zhQuhLO|)1d{a)|U;y&j-=RW80_Aop(3$zOL)FK3}ivbuH%J?(XWq&ohe$A;jV^o!dHzbBY*MkP$CKRW`~03OJ3EPMjD6JF+BwyolszH%eL;EqE5*|z zE6u-0wwMcCH~2pJcGP?toqAR)FX&Z2>~aXhwuLf(6->iNZ| z#cgXO6S~J^>U=lsOnmTx^Y+MCh~Rk4q3Z{AE*gz*F4wm>_%?3R-6$_p!f{V2QFoT^rRsEYlene!6Zr zMN9v_!6(i0uKDXnOe9{N|EPXad&T-Mh6d|AXx1lp%zJMd8!l7U7QcV><#(4RwrYx_xm2NU6Yh^ap=yQ6g!-Nx<<5BfWmd z=V#+5<^-=ZyBvD6So=cWSKHBu=Jb2R{pMjwlO|Hz1I=yj44l8xo^0{a_GPdB{86bl z8wuGS+6t1TjI)VX&&rSO3gu*il1$IVP+9Q2bgC(Vv9ki2MhgXK=W=RRZ$jMz8zi*wD zPe!-Kw#Ob38%K8;)yel3eZI{XsCdDlS+?xW_LA;>y(_0$`UdGMAAS+pBfIe8!kam= z6P1Mqv&^O4@{Zknpl2Sx=k41p0y`y1RAsc~r7R(1Ur{FE+U)WZEw5iW@_H<9-}vdh z(3NHC-`cB%ytJa^loNTJpBml?N$^qre1P}%eHRZ6O!A4snY5MF2CHRmW;lLuiFkhV zV8KJv&CT&I6F7|W-BuOlbzEQ!8XVXcDOaTOj=nR$Ug&DSQ2g$?&7PM&I9}XSE_}g2 zXl;V3a5;a%q|=e&6~VO$S@o)W7Hs$G0E4;91rMdGq# z_tnWt*2na1vhT9FEUv!1u-LU@TbXQcuhXNp6-}Zsgl0|y9>+r+#T{*wdkOou-ytlx zx!Wb-#Ncy(yHyMB?fIa0Uz?W^Q5L=Cw)`TC;)EShyhBSJqdNCn+!>-jpOc(Mj`U11ut>MBWHo$ZzK;5EK;VRG@Q z9|D4we4Vw(>T`nF^}T+_guJiB`$*X3a5k&kv<8n5yP_W*vc5CH+!?#gXd@@>>xppt zd)%+c_MFT+_q|W?pIC$?sL=o5I@NE#vmYJh^qW-{vu#<6yg21{Q}VW_q|LsP^kDV+ zv2+iq(Li(QL|cnMw`Yw4vu-@PCvPLW;DnC&(c7m4;wtQ(_{#T|m#&m%JMxF`!~2_E z6MQ*^sUjsMHtrn0gT1};+zWR6aU_PUP!>DuqQ$%Iy<1*4>7V!_v|RaV>yzV+tFkU1 zRaq5H;bT`2?|Iznd`{_*kXhEy5tBbSRQZqWG&*{?IGS8v_vZf1tHy`!46IV-8INqt zAUwablV6wQ>_bO|Ci26{Iukq-)n}VX8cGAD^`?%wTjK+tod|rcemEdV@z}nFwoaL2 zFOSFP6H1->k`L>A*?*X`#ICTe?bvSH5*^{qeUDB%tMfd)xZ%os^(U7uN@pvt3p#Vn z&EZz=AJzGnwr{>sFy>FD8W2tDCm$?bUGOsSY~yUdE$<(#l9c>35kmTycH=0w<;i2( zV#}z*P0EIZ6JqTtgf|*)Q4SIWp$U_`Mui=x`yNny-gU0^yffC_bZpH^>)mF`i}ozq zVY8xcKTnmxNA}g$PWe1Vb0X!`Hm1Jk>^WrVztd!tvgbLW^7dQmWl1-eCrl}3w)@yw z#l73sbGp6YbyM${DiAw9D%1ebb*2sC!_fwl^ z?!}zHOJ!JBUwKTZ{qk!w)69_4c|!H{Et4FF=)Fq%Cc}B0Uvr)$o16;#7-wvlo$5K? zX>NaF@by}$8vUAzGo;4l=foI=6+_L@%I0>H-!_;~cHdYprShbpB>Bv8<5oq#(>9Ab zQYjKc?B6zNY6)G?D>OS3`8HtJE^odRvss^wF2CPo)TnlGe$B+5o0As=Q%cGP3{8nE z_Zoy*M6TkE@!uI*94b;A-jKz+faIZmgCZ0emtVn?nmD|rFjLq%zuxoZ zNU=-7#hz>G!kn%;8R`iGsX8j_dmH+zx}^^JzFEY{KFh=EZn`a*_DrhDPO06K%Q?05 zR7`J6`6c}+^Sehn=5#nc^6>FuQ{)z1cRKlGgWKn=r{WFmuVp2V9BirZdiFB=-GS=0 z%}Gy$C+BUfKIOh^xvq6`lTC`17|(N0qmqNMnPdA?G}o+9YO-$8q0A>xRprXAyxQ_^ zAn#G(7h7GEe0h_6tUar%D_eF8yP?OpolLCor*~^a&R=^RdfnVIdfVx-4MSzViF!A@ zN^flx?WE@)3APGs`$Nq8$!mW;cR^QP<3l#;YXs_O~Iu$UP$Ci zJ+{?P7b?4JoI7NHpT-c%e;xXO^pI_HInS)tvpY`Cqf@01UEC38E$-sq>O-@YB5T#} zO9;QQIC}lUIqJ(z7$>(io-8AL_0Sg9BGeq&l56-aVot$h$?TKP!(s)+1q(8y%8^bS?yE2Gn?5cugw*#F+LQBZ^&c=xPN-qwO5V~m0@tX2FDb=!?`nYq1 zq`gb}lGuVB4t+ZZWEwv2Yf34t5LP6Mm8}gfQvO`?)qe5IgFPf>vxFDdqDvREJ^8mr zvfpeql3WnklASh599R-JTlJ=qZL9g~;%6=CH`rvzZ&EV@Y@?A0K|(F=(JAS&a}N?- zk{2C*qG!JHia^6jA)Pn=?y9FfLKob6wo-dAz0$T~c37WX#Kb__I@dJpLqnnCn#;~f zi$C%6j0G;=ok{C_Ufn1(;1u1^M&-@odM0Z&a#TJ?G*i~i;IVC{)9ncMNmH5g%K}ed zOYA0ZW8-lWFIIc$H_Ttw$opF1=Fp;+@pbW6HPZIiW(8fiTx-m*ElvF++`l$oKa0C0 zq0G zAmobw;xtnAhR;`X-lX?Av}o+y*3gp56D41^Z-hHsvu}q<>AexrGsv?h?e)~n`-|t^ zkO(IW`3gTSqMb$=A$L`)IP(p3?cDlJ&G`AP>ItSr!cv2mLepvdk8^X}C(A|B4{AK! zRe8IGKUm`Cyev1LqiPyEv_`i|rn;W3^y&L}^6q0*EymKIGk?5SVLM$PM^!wv#(3qi zQkpQk566ysyy-7T$|T*LRWpdpIU-3yVxr1d*L>SnP&9j#cU6m)nZ)s9u|kw34m%m5 z9GCce=Xy$p>`VJ&O<>rL^(v=64e%R=YHPkY6eJ&aL*ngj>m$!Uqukd^uNPdcJsBs_ zza;L#JRX74H||z}HP@0GQVoKq$i=cnf|dL^*Gg{dCTA6FXIeHzo$8CAU0{A5dCE=s zj#fTgZQjeluVNS4Gx0_9Yq+2+2fykP#e1o-*S{XH@3<6MPN?VC<@FF9IwowZQM0{M zLq5}aK_=O+!*`&5Wu)$b3V|`thBlgk>Fxa&ybDscIZ71T?KmX&^;#acD}!;KK zTZ!q8D{g{&HrDMqBf*H^lH6HTME&fuAl5VQ)LoiW+tr%|`N12c?;lF4v!B)ZL`-jl zpUzAUTp9J?T3^>^J07$$Xg!!wq z?xRBsdZxYzAKz3Z8pQ7})FWd!qP^&`!wNCY-I25f+I%U;%bhh&M9V0PT&lhl7);By z@M(KHG5j%Cdg+m&3-{t`PPegf9pVmeKg@o3Vu2V>f*}&UH2LAMR+X-Gn)AWJi#`S^ zbe^3~5y#K?E9$;Uv0t*U+Gj`Hip>JE)(a%^7<>qM618<%313wphu1s~p?BN8t*r*2>8<6*8`k<8<}AB( zxRrBvXYK-#JsvTJ-RyiMCyO|N-rXHOJex~}r5m~8TwkTUK!$N%TK=*qsE{K>xbG?B!A2XacALGI5~%x$ZgR~;&jQ!x)8lRW6>lT=%bo8s z5~Z?TkhQ?*D#-m-rqHpce!t86JuMeRR7m~Qh_~B zXz`7Whwd8G1(Rn>GNP70JlCVBTNE&09P+L~-mfu#VaKisX~tWPv%7?fb8iN1P#fFK zrd|H>jBlLt&1ZYmFNQpFzAjwBKdF~RG|v1;i@7vg_Ead3N|j%v^T%ZKl~rzzu6}EM zo1YyRe7~Y3>$!?teskHbyoVxL47tI|s{)U*&u_QA_)5fo-}+rW)PqOAkgdE{c&K;q z9k7?0^^om!n}>|u13i&MNdsQ_``n_p2H3+R@|8lxrTGiELnX>iHJwIVJThe4_Qc43 z729Vc*5ja_ugU+Y>Tl57m0>R~Eb=#jOt_eDce9 z=^{3EX0P*!>gDQksq{qdXKm{+t?_+qz8MD^a+4KE9TM@uZyN%~_3J}by0iJ*w^fEM z*|puWji=`*BS($uwSqcSpSE+*BaoOO`6Me*i3umZ6Gc6HZJ(3kNY*%ykwkzrYdcvv7NKz-U3BqYsxs*JC9|E}O@U%!Lo@8dZ~b z>bg-e6V5qw{vAi{_PyN7*rzq(o91sD=soA{5x=T4ZEBY)lZ(qTb+Ne1(W=f~@ z#;)SW?^?mfysgX5xRx=3w0OlXrXJ31+*~{K_1>Ch0ID|7EQjmiJ+c*o)r^w3(m{NwIpUv{7tmoSULH?5w7 z-}Tr_W0O^sM-d`y4YILuce1hhd0hvWbcLICnL9R6WpAuq>};nlz#$yb9Lk>EXa-PmN1nU&?n?*%}hMl&e;eB+n*gksHY;4=AT1V~tReq|yo>cK!bDj#0aMo5|l)d9I*IE8 z@!r*!iL>Xsej;&Muq{t`wst+zKUntk*~-sc1J5|L&pa!r;aoL{Qryyf7n~6*yDiSc zn2_GISYV)*J>f}B*UAawO-S$2(l;E&#w7cUz1Idm4G!M#nlgX*<^$)M?#SByc+c5z zeX1S=*QcHfT}$Sao!+iX-JZ5pGAYi>;v^P0!eMo4OX`HztORg!r zK-)l@qGcBs6sxCb!9zBS^z}FOu(kgo0$S#Zfzi?7 zraC$sHf+$|psyVk8K9$UVq&60(bLh>(*g>usQA!m?>Mc{C?#CPvfXO?GqLgZLX*Ycn}6>*#7zbk?u`6Gv3EUF>gtf5{QG1a7f)Jp7`<;nu*8!tgnrHGjI4yMl#e>5b5VSs=#eq}Lr1Yi#q6?3S z3}Mmu(sleo{MLgZQ6O3OPxSb0`!9|^`Gb%AlOf@OVbNhxfnni)>#cpBSTq{Qrd> zeB__V!L7g6@G~wfpIPxUwGE@k;LbVO{!CZjFnW-$=`UkU{ro82272D}wDj~0=vunE ze#TlRCf>$c{&Wh(MAzTQ+n8c7L!eV=RJ3;}-47QCDzt+@m>$KLPWLv{)$;S7r>kW^ zH>PO$7|iq0GBGsJHK2PN(@peEW{7Z$41#&*9Wv84T$C?}(lz!q0-`o-d*jgQ8k$fjx&{U&x<&?+pWdZ|)TL8AD|(Hl}bXuWrU zpH6sa0BZnG0#lo?kg&+bP*D6p@b7N-pg6w}Pg_tLIxSI`qBjjAi;Fe9;;)8(2Zkki zVVExn)@KRElfe|ggK&D|GykVTRzE(cLSpdlrJ+G!s@`uF&);Lf0@EFTbae6Gzlm1- z4G{#$)F#r;JKE0{en37&7pjK77R6|Zo}Q_$p(#aIgQ9EtL*y^&u*fB0VIk&__c0bqS-hkeW8!mo+$DK&`z4 zbf#%_{vGi@Nm?8jwjuOClk=POmlUhW=nY|!!ETXmKI{DG(f?k~UlIS3hMg5;oFQ3tc~Gct*oG*zKijY& z&<~%r|1u}1WBp_C{1?tedB^(wgKP9a@6Z50*ctp-7XF>fK2SCFjP-rB=yW}AEgwSz zeJx`jA0sV&AG$7G&)>v=GH<#*{9n2}W8VBfa9LO1&rr`mPgl#=*qE+mK!MGQH${)G zWn^GN(eu?ap!j$j{W(tm5M>8gsaaKltja3ae;HK`iXL88e)waigYS2KrmGpgBlw4e zHp6!ercQXNUK|r19unji`R7FcIr0Am-3)$K-3a?z_L*eU+%{q1@vzDTM!RhY{kQ7> zf^b@bOAsBFj(@9rCdo7`Gq#1`@^l|;H(~dx^K1M1W12%2{$D;n%E$ku3NrbBO8zT+ z{|DFq;QFr+_^*inmtFsZ>%T(azasu$cK!bb7tiktFuzdP+irmCt$U{jTHtDo!^hdd z7JbM6m0UZv2YR@}9alslRF#SU5SmA-b)b_o+G(L3XD_>$gxc(FNyF|4k&%d*|QO5=D1aT6HPMEDjhXniF!t$ZsNOF4_PO{2qW!?9`nSWq$-bzNc!tH`7frsGcr zOTFxp?hejGsB_P&_g5Fsz=riorMK^VJYk4_E2!H0W&NM%hLk6~qGxJkDaSZY$R7L? z)}NQYKYit&6<96JzWXNyU(2U*JJn`rEU%w#F?{%bqdVux`}egE1%7w9r%ubp?51Hp zA!Nydo0sw@xUE<%iM1@S%B}fWuxr+^V0KScCH_K)s@)aM!mYKynAPhUPQX*Mgl88C z|D5)+t)_is1p&jGct~=Jj5=5f!czmMnS6gR4bNbbs;L{1CeCDf%3>Nqy6nG28`hi~ z$^R48V+*g}abN*NHgkBi>E>?`eEaWRXqoj(1{ejFa<%M=K4|hgdE4Vf-=F9FmEEZL z)pQ=v#!0`$4-SoVw-A3x!rs+HjOhQK639OSzSs@ID}0I5lF6X#`!FzZ{bEAKJATCE zh{%sA5W@PrJBQ^j3v}u%*HBg~*YQV87}GJy{t=TLRuph}Er`hU(-SF{k-LSbXVqOr zmiJ2(-c1X!Whp4PX8y1hOdMc5^R^85?ONrhWz#Zt2q&_rS$fq!&TDIt`(-;g%s%pI zRBa}Mw?{CEXm}jhnxLi|Z@mtG}sNJfLC}PQ) zmeGG&`;6o-8EBvh5*`e%XqqlLOVb^2jA_Yiznu{1d2e|}=~o-{UcB*z^ecPOs< z%74mmX34OcAtP;QWcE|(>F{CTPDK%f3s{!22v@*R8OypVUd&?um4{9D4=iOd zk@?O|GcEbSbXXi`@+@P4f~hxZ;NVQpKb@|U7qd8K%2>SW?(dkj$J2KN|DF%z`C$uK z^AWqysP#)oiC~yxL>3!vHp_jOM5gAkArTkG@L>A^ER6#Ly!|+S z0NcZd^E&gfFhaP?;pDLIbsM;5h&w={H<8Lf)L;eGE_(eVU*a7kEvQrW&jMJeqlOdRtsPte$OGxkKOD) zXgNd)j196ldMXXq0WC5@t+3!<@5Z4skp5UYwHiT4s4#7bAoMIQG*GYer%>C;eK1@+ z;W{CPYv%hBl*=(q4z`PI+K-cS88yIkuMnBY82ND84bNcg5pOCO7d;wj%6$#xzO!(yGAhh@ zS(DjougDW_D9Smke_T2!Oj(eg?sloSJ`o*@@9NA((|N5B#hqNAUr*KYPMxk z(K5}KxvaTKZuEHf{X7>MoR7n|cQtkA8f!c$x8nJp#D>W2BJUQDoiChtcW7i(U|PZv z@neLaM|KkTX&&>!s1-3X=GQWzw&>GmRJyuM} z*$!^(ePIBTI0jhfcm{6bIk!LBQYrB=YGMHEg846OF*`0+17qGj>89|saxft6g9us# z;7~PO*{D0A0q*w{C>(s>+_D@Xg8u?Vh_>iz;J@oo?}i__hL5Sjh!BhM`G*7{u(HYYrM+mqD_( z!LqxS^EWS3+Po%L8BYmJ1r(HYY^aCgv41TAQ4I8(&fl$hi@Mp6ed1oR_ z+phTO%iwfw$?_5eCnxP7rAf6!$oPsjCEn|A)9ySqLQ#0yjL&6!srXV*;X*(gp-o0Y zt=H_j4Q-FSl|}@__?Ugei3=d12>~}sem?O9Ig6u;eGm>#ohS?T;)vj$4V!j->0oC{ zfjv~k%dRBPiuBFzzlxzJ;16TSIdXqSZE%*$Qw?-00%Yv2HWMEjAD;5LjcLxq%lq`JK8HNEp7tg9y88ADpjf+FL7#~^t_FQc=3L!%9zyuo0 zz3hbs_uvtP97f2u|Fi@)p^V{8JU83p53n<@bCX$ZSPEjhdK`~@tx-7U zCc8K`p#~%Hu-LtTorlb7v)DZdRkbtO7o)-RGug$k2`!98&SIAVcHSB6)`Y6>GuhqH zV8cvyQEWnY2KzG-^E%%Qc0EFsCEE<+ozdXKnd~Cigy9VK1HjHdgIy7PpULik244a@ zb_j|VAdb?ht?U3QACx^@iF;}VZo8BSfwkO~@FYu8Avb05WI~84Zmoksa;cIK^x~(t zwGb8x-}Eww;QK}(n#Kik@nD@0!eCl4hB&bq2e+WOw`^EHfehn#_#rwYh%ts2EY+$_t%w!yma%&m~d^Sk`M5C1tl&0yi5)TSpoivUWot1ZhM!h~6 zu&PHt(FmjhR*3|r2?_e)ff?c7brmt=f3+d|v{0Nj;b%a7`?Yvcu^Y=4+~4;2Y9iJz zhT+`c1;BFx*xAWogxU`^FS(v#5QB6up8!NBgeq`{hQMsxp(P5wxI>4a7EL?U%5q5L zr$ZI|xI=S(I+QGfJLK@wA!{ShB(>v*CUsI66-I3UVNU3Whlq0WE|XE*6gYtOa864h z>nO;A6dS>xQnnZab(-8yDO)3`AjO0gAOuO$i-C?%^wa!1U_Rv$G^fqa1M_Kl;MuhK z#+;BsLJ&I~G51tV09VZZ(|iRvTrn?8ac&YCa=~*M-)-RCJkv}JB5^($?13Uig+WYx zYb<>7DgUx(5CePcVQ3o8F5I52(44l1f!i|%&1rkmaeG>Ua@roUAlTy#=7GYymMCr> zP{Tt;Xj6OxLd6d-yqS*RLrNXqa20U{G!_?7;?|b%^vL7pf_ySGsp3Qn_)G(Esn7&- z6XBB&5)^|b!1onCr6gFRn%@x?fI9~dgl4}H2{EMwKM(gQA*=>poi+IoLqg}+o&fV` z-_~ticdu_`uL?uojKK_!(R<%HtPuJLb$gZ`Bjrfce2vK8=(<1)xSbGKlw+o&<)nn2Y}m?0FQiF_PZ-xv3! zJPp2uAbotIV(brFV1cK?cL6UDGL9S+hgf5;W^3*p%TLZH0z3@G?FZ$clVQ8S+><=4 zPdd+zv)y>mA_C}<=cmeRW{%}=k!Hhb4-W+J0&Px_o}h#+I?sVqzUpp~W>MP7Q%Oi4 zpIlg~kYyCBPg!1b%UF9#JByo`9*k#RlWQ_(#%xTQB!n0#l9)^*89GtLP)`9G9MU5~ zO0r36CLn(iFdFjkj37wDs`tji*0fm#gFcD*t27`!)L5SRo&%^^74I9G^8i2dc)G6O z%#b}JM>z>O1P@NN!_@4i%&Jv3G=HezNHdhVk_eP97X3j$=XuHCm2_B0#6kjwkeb>6 z!lXHHyF`s&F4Q`s1*%a+2_c-KqfZ40DTF_S^BFGqyzp!eKaKO4xvFuZ=6Udj0%~^M zFysWqWo2+(;V%mun0{B|iw^vN=izY^^a+qz`e+gSMBq?Udx5ZgPSC;3G&)-)0b#=S z?hQwbcd*Ja30#H4H^raMVa-me$eJy{A)m;&ToZKTA~(yuoXq_SWQ1|bqu0jlcI1z0gfQd|p;e4--M{Q?4Kcd+a2?%M&mF@_Z0N5QJ+BpzKBN@JlM%IA_V69^Pg@kPHtI*_P-v7}&65pg+iu~A_FwcWl8s}F+>D4>1UQufBV0Mr~ohM^0J z=>#%j_?*y1SiAsk6p&!=9{C^?B?oW}k!nBScbZf#b)Xn$QKUubao9rgF;c)LD$de& z=Pp!M25uwd3r(!HpO3L_4b)GJGntcsoVk6cokNUCP9n|#Di^+iyDAf*Un-Zth3BUd zH!vM>e3HChH;VfzaBPH#7A0=3sZF=+v-W&-&jFZkX_xd1GdvO|Tc}&Dpl%7SKv=l~ zGg8{H7M&l1?JV+?B5F%comFLOed%m@evIniikLSAkdSZal~rGh1dx4#Nl~W_R9t#| zFnjUx=GyG5o6XKL7ePrxnyV}{BRW?OhG~_%a-!@=B33ErLVIrgaxrSrdeY^!dU>%| zc$Ou;(X2DS+B#vgg<_qA>QHYAoFozLdWJl)`7~=@BIcdK z<%T2-Ckt05*?znHo|~|SrhusDwt;AR|MdX{h8s7og+}8_mnB?ELpqg0sHExMY=m8j zqFr3e3noG}wdYEo{7@}PtZB7I7}01WLd~gO*4PyZ7{xw23(AgfY7!w%UVsV3U_;at zli`ja^ht||Zvs%8u8uz+p>GvFZLlH*azpLIBwdgz(%ncv>H3!bJcP|YI8w+h4IP9e ztqNj8v|TR za?edfRRlKV9>ig|?N6f(?1K7Jn!OplwOmslq!8i{r<0RDC3JKi|XDx6nndMl{SCziS(9}18PN@XM z_ypGyMp|H{TMBg3gwc+q(M{il5v2@_8J`6*;9h}I$PeTkvS=t1{xWAY2gsvX!N?4frKZ~{Pa18n{Th8ZBoX~9$w%o9YP2r%1* zFiun28q^Huw79&KZAREQf#N_$%pQLEC&-_Nv8qlh4F3Ef=#K?_@b*E}L|0_+vWG8s zGiZ$k&dV_Fhn;*K2Q?!gSqeq> zlc-kmp;9B7Qz&mgqq$LeE*MQgD=m#0Q3>x{v||`G{2_??R4Hx|a04j6lBvLsz8j09 zM=a$MNr*!CzJHi77n$WT8o1Crv+QOsYOE{1`n~2v=Oz6q`kt`yjzh`Y1d!Qqr(OnO zg)xB)yOY_d*_Sp?6b+RS1SJrq)O%Se5$=ZK@?ci=7fT`A9un0@UIqMPyyNgUz66Jf zp;m;Y9L)AX6-}#6@9{%*KkSpXB39_XQPILNOt}H@~ELo#)Sn9d_n*e(3fKg~0qCV)q zzCr}h210r+BXtAaI-6`&Jke-+BBED!(k~m z3Brl|mo=Y)>2ozQ7E=Qfzh=(N9W?q{|R}jR3!3q0TG+)Gl@!t+*htWEI zGm%%Ywyxd`a!eJlSp>2*KM#@Z$I!*R0-FOG7e@PR^Kfi%NH zIM&f|Mp3$UC@_Ynupv)V2W~<*EOip$Dd)$aI=jx(h%%T9^$9jwj|!DZ3|Uts+kCGX zT*AiNCo>U~Bkcg3L;C_h87zkVjgeMoIn=r40RMGuu+FhS!`f%*$Ku+pdXAD%PV8p= zfCk7r&na_byzI~iaqXQL+~(_da}$Ql=OUFTwn|*Pz%5PrWKmSr4yXRuDN!O5kWh&{ ze-0m;cPmjIPLx&W;7;7%LX0@j%#As9dg3tUJ=Hz$@PdRw6=4%uG&>cUMi6O4BVh<2 z@{emCCSo$2p;AECfA6#Z*9JJ?c0vJU`gDmA%bU2dLhM$A667w?4 zFJOJTHr_Rxr&nSwy1wX32A*kXBD3h|T)c)V!-i<{r&>`$VHAEEPF0!$Aq2!z0l2>>6V8QH`OXT@BCWF|C zn2rwQ!Fs_;Ui16i$T9IjbsMNyv@wyGyw-+8E?Gj8C1w;g!rs#J3&eRU0tdX0#NJ&Ow7L?pks5sW+Y z&ST`bbl0j1?Ij3d<`WsBgexE_7lMU7uXZWhWS=91>eq-pxDJ@1jT>YRS|@6K=U}`+ z%)4Mp+vRtw95zPjUWLhu>_3?Ae0l5PAc?UfqZQX2eNmm%)-W~lralU?2(@j06AVBN zyy~`teF9A)crM{LBzH zCM>xfPY;^bT;ff&aR;RJ9h@<=VZ2$bd){dOE_{sq@OqyC!{XHx2cwI(j%CC5lkXlY z)5ig%rmJ_``!8w45Sb6YzO)8cDgfo$GX9IIDw4bDMW1_Z7#v2MxSX8lU@gE z32@kiZywO^c5@EIt}L-dRbOmAIVgbYgl*_xec0SmP{J&Fq^_pC%oD@z@gYbFy=_J!4JV^8W!eV|kAN literal 0 HcmV?d00001 diff --git a/progress.png b/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..2694660e278fdec1b86c6b957a2639c093d5469e GIT binary patch literal 509 zcmVEX>4Tx04R}tkv&MmKpe$iQ%glE4h9i%2v}XTAS&XhRVYG*P%E_RU_SZN)tsdO0fBf{F-)6ygLrz= zHW=>{^GZ=tiO-40Ou8WPBhzJ%-xwEM=2#|grc?98Jh4z{W4Vo$qNx#25l2-`r+hBs zvC4Rhu~x1s&3m#JMsoVfGSg`eB7sFLL4*JqRg_SMjTo&uDHc++ANTPOxPFmbGPz1n z$gzM5G)S%=><@l-Yvm^=yrf7R2)#JY$1o7y1sXNS`95}>#t9I72Cnp$zfuQgK1r{& zwCEAgvkhEaw={VVxZDBypA5;ATq#JC%jbdjGy0}1(0dDXt$DpQ_i_3Fq^Yaq4RCM> zj1(w)-RIq%?Y;ebrrF;QqIPn+{W=*#00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF->s6c#c7qd_-60000CNkl