From 0dd22a2682822423c71223e4747dec49a8c1fc77 Mon Sep 17 00:00:00 2001 From: JamesFlare1212 Date: Mon, 20 Jan 2025 01:58:19 -0500 Subject: [PATCH] add solution of hw1 --- .vscode/launch.json | 22 +++ .vscode/settings.json | 55 ++++++ .vscode/tasks.json | 5 +- hws/spotify_playlists/README.txt | 11 +- hws/spotify_playlists/nyplaylists | Bin 33440 -> 212600 bytes hws/spotify_playlists/nyplaylists.cpp | 247 +++++++++++++++++++++++++- hws/spotify_playlists/output.txt | 18 ++ 7 files changed, 349 insertions(+), 9 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 hws/spotify_playlists/output.txt diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..de9bd5a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,22 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "nyplaylists", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", // 指向你的可执行文件 + "args": [ + "playlist_tiny2.txt", + "actions2.txt", + "output.txt", + "debug" + ], + "cwd": "${fileDirname}", + "environment": [], + "MIMode": "gdb", + "miDebuggerPath": "/usr/bin/gdb", + "preLaunchTask": "C/C++: g++ build active file" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ce1abfa --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,55 @@ +{ + "files.associations": { + "fstream": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "complex": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "list": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "typeinfo": "cpp" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 05054c5..9a9af73 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,8 +6,11 @@ "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", + "-std=c++17", + "-Wall", + "-Wextra", "-g", - "${file}", + "*.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], diff --git a/hws/spotify_playlists/README.txt b/hws/spotify_playlists/README.txt index 9ae3a36..6615f43 100644 --- a/hws/spotify_playlists/README.txt +++ b/hws/spotify_playlists/README.txt @@ -10,14 +10,14 @@ List the names of everyone you talked to about this assignment LMS, etc.), and all of the resources (books, online reference material, etc.) you consulted in completing this assignment. -< insert collaborators / resources > +Qijun Lu, Google, Stack Overflow, W3School Remember: Your implementation for this assignment must be done on your own, as described in "Academic Integrity for Homework" handout. -ESTIMATE OF # OF HOURS SPENT ON THIS ASSIGNMENT: 2 hr +ESTIMATE OF # OF HOURS SPENT ON THIS ASSIGNMENT: 16 hr @@ -27,6 +27,7 @@ ESTIMATE OF # OF HOURS SPENT ON THIS ASSIGNMENT: 2 hr MISC. COMMENTS TO GRADER: Optional, please be concise! +Ignore the debug codes. To enable it, take `debug` as the fourth argument. ## Reflection and Self Assessment @@ -38,4 +39,8 @@ What parts of the assignment did you find challenging? Is there anything that finally "clicked" for you in the process of working on this assignment? How well did the development and testing process go for you? -< insert reflection > +During this homework, I used the experience from CS1, which create debugging +output frequently. The hardest part is handle strings. Merge, split, remove, +add. I referenced many examples from internet. The language server in VSCode +also help, it shows a short tip about why it's an error. Anyhow, I believe I +can do better next time. diff --git a/hws/spotify_playlists/nyplaylists b/hws/spotify_playlists/nyplaylists index dccc1a29d28f8ccb04bdb5e90fc287333c45ad82..0ab57d4ddccda732c4c0dfcb529975ff3072d841 100755 GIT binary patch literal 212600 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 wn4RMl-dT>#-vu1 z{RUFMQuStP{brj~hL}8QS*}tUsYr~nSXn&AYa~Lx3AhBOJ%E|dI$&pVr%ItAN1c|R zYIqb#iOm9krJNt_VlB=rt(+fiql{@v@YTzQKTyn~~>O&Fn5`(aT*2Y=aQ6os#Tb!}+L z?GiCSN7U7Z9zF7^eR!5AVYQ{Ca7+aN0La1x=$GyFbP1rzJK6w+i$~r%R8gsdKv{M7+0Ql-R*9O|j!zSd@%HoM_)1et3*ViU&BHj-b zu!1{eT7j9h60KSQ&!HA=pX>r&;A((6Sq_X2ip{3`@_h z1EUIVBKpK|&h|J5kwfoQYZcc8fMw|6ry=J!)zOrfybxCn=Y%(UW?(YUN4IO-cg~k-7x+E+O?_ zS$~$@*!r{V#@3%@C#;`an~F_3MV{2hBOOn*-mB=)Wu>STBb^~eYAcibnr?^r^0!Fe zP~=~b`mcA;i08tFC*v2Z#T6jjTW7w%xPm5w{5cG>F6gQ>$lpO%rMqfN)t#tYqx~kE z6RnCbA;?umkPJ_dqSZ;+5b3c+$~eebR&h62bAO<8HiRd6gc}gsgf8!hI;mqY)OnUu z(~M^s+Vx|qo`Wsh_0pzea>&uB>4vLYu_k_Cc%>L#fOiW#B%+OJ#fHX3h#G`wUwr?T%>X=&hef8k0(aVWJvtg~XmaZLxX+5Z7nw@$#MeQG zO?zA7tJL9Yj7yQuA85PzOIXR_NXIjFu@Y=z^Qt8aLw#iI&6e%W_Q+M2*;gpHHQfIkt-bWJmECaEUTQm-{``?q6Pp_<~*2Y|?H*2I(3)O$^xI^S}3NuR>XL=G5CrD&d%K-@ zFeE0QAlj#FWo&Dtf?!Xc+t?tC#ztXfx|sVktGIX&>OV*xH;mxj3SybEFB|@m()Fs_DD!*FI{%b)kvW9O~56nl-@rDKi-Csm}Q}wiW zXlpk!-eEqEdhO5Rw=#JYVK)`>yRXRLT zyi@3B)#S4};*YV4d4}U6aN5U|@EfUb;LnwCVplKK5qBaS&O9DcDJKhpwiP{RI$->v zfaMojp^5@80svtGkI8)+M!Xz6XPz(%yCzIBXv^iN8dB?_$3s>ahOSLVk@j%%}0a8yt_ zV+r(jaxkMD7}QG^4_m$jjC|bQ>$NQ6AQ`O>R1s57G&BhZDSIic_`1=kh}>1Y#t4~c zrN0oiW)Cr(*+OhEu3%bp&&51-r`dY!;aILSH2_YDKh?ldmq2QW8DIT-HK!oZeK?S-xZTfJ|9Xujxs5%ga+q6=da-9zD$T@KUsqc? z=~6^I>qe}Gf-?Ee+a+07TUrBm7kkdd*ic(K_zpxo??!B@ZADRgub|iovx>cn&ENy34>8Ru=MIS2CB`L2{dRFeRKMMcTMv*4bQt`0U+FMpRlyH52Z3FJ zi)V&b8JRS|2lT+b3jYiuS-Jd-;!r%DjDNEKU10g|bXu?$2!90HaqiO^%5OMt1Tv!G z5N?azY1+pX@pM1ozHs8PA8{e7Y~-msoE+>aR&#N!w+ zBV{wt_Ts=GaIEJX;v znCB?|jactQrKDQ4xmMSrjVfQ)qD{4-KgvM4QFYOkXoI%y!OJvD*J;LXRt0}E^>KnB z`4i**lc^7@JCC+%av6GuMtYVGf2yGvu_CnB?ni;!8L{?2T%?!@O0@fxB>t5E~Hs`f8bTdD@`F4N9m>u$j!cz#+?&3tItp*ImSzL5#XHE^GzZKSzfR zpsdvp@I9nr+m{n>3*-TQjqOX8QH@*j;-j{R`>qaLE%*KbX+O~ZK*TsFmovGVeuPP>pC@>;4KTyM zUNNtm!pHmrm_e^8eB9s5Z3?sUXJUmHnAlx$k#e5^Jz9gwxa~Zw{KLJgNw%4n>=eWX zgp5v%%l7x5p@E6U`F`O1t!QOV|3;#je%Lrc`$eXb1ueDHRuUU$Ang_j0aoz>c6QeJ#Z2*UW%pA)%!WOIPUib_*#<( zxG4D%BOAg50#}o6b8Tz(2VE?m!OA#pVBk^2(~w%xb-4(pImc2#J1s!(#ko?tGB%5? zIm&P`P1dcz=HdXy8K`mr8J=*>3FbzJZb#V~;oRy+;W8!w0H@fx9VXr&=t%sRR@%RS3{G=H3LG{|*7#n)kgdNq{4z9)4`HiSI4s zkfKMyR=AVB-S{kD(3&@4H6q?mq0#5fejffS{zdp3@Hv%%XCFfOBXBJKb~P^15?s_c zT;daO2{UM|R>b|f9BcmOBYY12lKAy_Km)wMihnIL$JVj4fEPdDKc^RV00MYVGG>_k z6U|NJ!im8BK0^jEWfb6FlP&8d+~2}Kg9&9U!NuCDnBc7i_!JW3$QNVNQRp+rfAEWZ zkn0<_3d6;}lc_ z+Z$=92-Xc%a)mp%3%^cx;o}?8qvN;&j_r^x{9Olk;kVWt)P>(!b5IxlnVN&T@GsRI z)P;Y&W}Bj{O&91Ke1aSM?{7g8(>{JvW7@}0YfSt2Ud=?dkNpe{{fgH%(j`md$RUPl z9e+Y8kE2KVW1&tZRo|@Guc}2)r2ZE#d0g~E{K`Qud0O4N31w%>EX(Enhsq4R3jp2j z9^7R#@}xZ61r?X`%PIFF@y0_6_5gHw!9MUp=dXtpdi>X&8>shy=p$nT2}67ru~O*O z#t?J)3DhqT`)~Xcwp`3(JX=AqFXmhF`%&NEsF^V_BZ3bZ32v@kqhj-$4+6{#{P4=F zHHTzGl*p6R<=Z|fTvaX z3$~e)!&##-+bB&iGgvMJy@!p)h>eGcbu-yZ6nWb9rklvFp&oWmPjkD8xz8b`JYWpK zKampG!})L3DWR4kGq(mi$hfok_0E_?1ah-ekQw}%Dt%WC6K(|2X$zoCbpFK1s0(_M z7N+GTz*oPiwuNbZb$CN<6~9Pn*IU_1jWC^w*AU-ygK3B}&P9&^sqe$z{wFTcJ8)5N z;SzrjmoS5FLu`G9E*Zk9pq9L~#{=5FLmT4U53vInz~0H2Ved( zcQb<@f4{Oj6drg8FuZjP+$Hz^oj7~%;+mqd(l!+NfSWNLFsn7+2^?p*g$%c}%ku(5 z5l>g%NA42?UF1Fn6u*Lar=f6p#y@Kk2;W4CX)x+9bI<_*)>8aEGlHsN_|AVNuZnSjnvo?aL0#WwSZhTjma}OtmRCfwX zsJyoH@@!0u#(yPEX^r zmHQNA*#htb_$P^YB%+@{)C-NGvz9`{w-9Cj?#3rXd?-o8huZ6x10>&AhpKWjj1~V3 z5@&qG%Qv`Kxo1O*?EvVGeYYFa;7{g8lL;h65 zD#Qkao(^^un5{#MeI+iE2$@-B#9H?(DhTd(LQy_zSj_PDLp?!B?1+ zN|+3Os=?ljL+ys^cj<48^XW(C;mi#JMJk(z%ZVVN5)g%VIDA zfu49jNWud~`5Ufp$is*KizKsLNv3H@X2-MXOv$%cJ^^uyWnDH~^W%db$qCcn#e@^)BzbJeehAavWYpY{(a^0Xqk7EAuFE_g=~N`AoYeQXGI?-i zUpNr{zS1|)T?e|qwSt_uj37KK$kn=MgEfv53C|d|a1`?M=f?|Hfw7)UkhzBa2BlLH zikWLDjt#-CU!cE!q6W@1II7`AH&@@)v8b!9-0Sn;01(^swxs&1y9VQZg|y8n&%ccC z)cInU!Yt2MQ?B2KX3H0+L!3hYxyY9$F4oGOTxwaRU^A={E9nR{3FQ!}nYi;Nq4wG- zKT&{{z(Ahv5=h1D-eHDi)gkI}BR*X(f2!dE#ESK~69L_q0(T2yHyYel8Wp(PTwKl! zuuaV5*%VU@UOx{nxCI6F7w^5^@b_=@-s?@jH=|a(1qNRV+PL9}R!)AZp&MeoI>P#t z$%9H;no`*B;l03=-D4&G%3*vL%hT1;IE?RO-Spton98k&t!FB~#0qW)<0MnzVK4l7 zrUDdWDw#Y7bu%gff6Md@x@&d&{~*~#@jjHqoeA}?i|1%b$5^=&(NJ{(6P`*hF85*- zf)(ZZrl~yEzN|k0%^=WGxKG4?m^GCL+L!V9C%CzJxSz)OVZ*HM0|#4HJpyMLK@)|1 z2VzClWP%QDcXx*QZO|x=0wZr!>fb}l^p7VztqCKv>`O53_*7xHmRBz-?c2^yNaj6 zcs~SI+|Z8j68*-d)gA)#a{M5C>YX?k>3EIQ%EN7s*d#-rrL{jZq5bamAhb)sdfd>q z_Gl-%wC+-vOrEP-Y4BEicy|KtZ!1a7L8e$6@1ac-FOctOZdnh5iTw&LQV<+dXb;!Y zZX<)AGN$suKhgig{Tuu`!MP;Ba582%aA67Hx4VkQ6XELL}(xzro6)*-s8 zc5!J2;*NOm&CcU=MicJnGT{ByOe@?`qnTE?BX6dapLM$*wDS$eF`fn=cT;v}T8q~L z_kF~+GPsG-|LS1e+*6CuBSvh--AUR*{W;$9&vBY^jAtS|3nUQJ0N;HqINZk9?FBLefR#?npM!TGvGT@JNK${tIK1lQmw3Feq^i| zDp*Ww~{_khl-B+BPMW9K98 zYfai+0N_tG@TBj6kYSN6XP>qh6kB6hp$jtuGE-GQtuLM>(b9 zj-xy;JWPb#3Op^v!&xr&EIe34*CP4}JpGrJp`gAL@J~}a^s962_p{UvoVBvD7NAY| zC&=x$T(%U#DkIClT+FQCegOXrB3W4xs`LS%cf-Y#S$85<+QrNl0vO1zw7YYdj9xOQ zr&i;gB0?x8@;YY&dOM*1XbPjy>(VzA)3t~V2!D8|Fw?;lN;dB7V?3l<;;9b*hgAu# z)*}*8Y)TUCtNb1nAUm5Fns-N8-3Ht_wS}Hip*0XD#UpXEm?Y zO+*>W1JnZ#{+VLMAK<|Bw)6+qP#%}wjfn1H{{_3(fzM@jN5Vxn2n^6=&V%0j19=$! zlCYHGR31lP#<*=~U}*^M#}UVx`W55(+@b_Cwzw~6JbHqeJa_$aqrj06gFn^qGQj`E z67M>J-=OoAop> zvrmKxMy92%5w_Sy+ONc@5xqP4X^dG01FyEMqj<90FCdoPn$K9deT$%mZJ7AMU(_U3 zSGv#p{4KP%&O~3JJ>Yh~WTb?*E+g@3^smR@eiZ&0#I~|JqmIqMlYJ>J9&_CkY_Rjm z90Bw?HrQ?1>(CW$gRS2{R+7{A(C}8=+Zc`4>5RcZ-au?XxMRW0$q4Z6{ZhG)2%IbT z{?=Ock0!9A`#(dNp9m2lI2)D_zLJdgmcyTH2XB*18!s6S-2)_tQMG0u*Pz4&ePv3lm1jBkdwRb7@0%{fHJ(Xgkugg!>=SW0EPHNFT8< zyZ)H$?od;tZ#GQ{O=Wg32K$-djO>04_HVA|sIZEp90|>t2~Kh{BK?7qlL^S&it@!z zCXZ(ydC} zYaPaFiixi=+?!HyT4;?5_lkUuKo!~f>etp<*>xL$QYAZr?fOC4S*sE3o64FBt>jHy z0{O!I<6l06Hwz2|Fd!>Mpg;b0J6xh6TvT^l;=OPQGiV)4)bIfNA#|^fM8p*Qr4W}1 zbOND=*}tOJpN5F@lA&QTP1r}|+f?8V3`qVfnQDLZJGSF~)UgHkCzTBW=%ZbgQ|L*g?~HaVrRl5n-(S*Q=$ zY=bzxb-oG9@Np&Z;r<8FKe`aM@~ugyyQBu(2Jvm-;j(ug$yLok1;#rZc&i_f{qVTV zlSS3&-9FtGH30n2$6u5s4my)xhG=itp6s!G5=fYaoNxJ_$(y&BENQ~CE#K};nj37^ zdP2SSGdQhssJlI;5v@zpEU*^(aX9Alv64BsDz44p`DHCOOSl=07ZaV!vag3s!8Pe` z!X02;(TeQe%Mm`$gkM^bJz@>Q=bP|1E3$9-5#b9WRE4kp-DTNxPCK6g)J{&RWu zdlw^og$aMNJo~%D5WY$dhQa#bWs}fGS!ItxIS$5a!A;pZ;dM2gr$M6hmE^KvdFSaF zc#jWCtU+GZxi<#$I`GZ1)6mRY*%lZCZ!Fe{u3IsQ-v5(F0GJj8;L)arX{|MhYE?{5 zAkQQqr=cQQ*$esse@_#wosX7jte5kQHqd%llX#g!4!a%Te$mXpYLf)slq~SN#u#PeG^mG*v8K(I#u!r# zMhh3?yml`(#^7dE{ydEHOTY0jq#@sOFvf*(GlRNdZBM+kdKYr`7^t~4D1BEAS3eG( zhaS57=Q5ON-~5~Z&BBa z!4U*;#L@ADc{326qQiI9>Z*N;ab(qjem5JgCm60nW?RAe;wRBNKwHPXO(XiC9XsAR z4qX+xh+hV1+_OAEmQoOLfycL}^MaG^7d4F0Ig%e4pO9d@;Ga=U7I%FSed+!hAu);c z2H166UkjfGB$65bYT^)%NRRWPneUAGuF9?)@Q@&WMYa;#~HCb3iv&Jnn+O zZ}knjo4HG;F{+IzOq0eaw=iq_wd$|2Z!|>N3tok8$G8QlU7sn)+T?<)71w79lEN&= z#M`B2{yMaKeX)!YfBueD`i}RMPikTM_SC}E)oS0~Um6fUS9oRbh8qkHa9gO_e(xAA z*J&o!kmIf3VX5p*`|2;(vT^*)?vu#2t{DRxv}`(n_j1;V7l&h#J8%n1n2p(|eKfmm zhO25=Vq`0Ct!3L<+b?L6UX+w{4@ugtA1&t1l+iSM38RZHI$^ppu3d2S4_Ie3;CGw> zY*IAt14VNSQ#^UWiB_<43DacfWyJj-V5rjU{Wr7rY8HY z9O$gj=xkkW_BwD578|AFZDY37mX_&y#Zq1E5UDM#Oc-w!v$pnwEMRR{;3A!s@9L0r zC6l`x&SEm|DW=m>VAP=+W*{~oWDq@Ta}~OOh_RRBB0OFa9>l7u#=If!Urf-%2_Bmf z8xS(^SgTUOBy{#xL_UYVaJdIu5*^4&5?pmB-gV%<%dl(XiIn>^*pZyW8BR>SZBX3d zOz7-*KxVU$oHb%g4tl(?%kW6ob4#V>GsxC=SnM;dx}&C&ezP>Y?L!bKmN^4xr%i!Va>@U%3(JjFZx z($(z|u1?F+gQtnI1I#}(Elr1y(W~BvrKRY;QgvV)`#@uj-rWrQho!Z;2dO1;>|z|8 zWA=6R+VsT-l^uDw`MDhVxy|Hfl$W3UXOSOSRF<2TZ7NlWqb7fDS_y|uU>@Q~5#e&3 z-(#$y%|h7z3(A75BT=Ncshp!1BT!o*fsW%5kTE?Vy;+6uZZwDv+EF^y9$wa?NSxj zLFW5nFWAaD-SB`%m!E2w1Rhm9v5cc0eV=AMspPz%JBqGH(K2$np#yJ2w}Essz=iy%_)K5bVv)9vE@^aH57u_yp_YYeH~T5roMQuXm6)7Ixjvn zvum`f>5NPT9DgUvhX@=(5yBy9y`z=UTm%A+)g{x;MYVMVOeP^dY8FEU7A}=kA~78g z(xI6ZXuYGU81je6GX>1$A$G6;RZW?AJk7;S%}!#1j&Ec9gt+O+fT5Y1O$Mcfm335y zXQr!+VE^3Z!aj=;GcpUKOsk2T6J{&BJSjOwt7THj=zpG@o~UXZMC%snRK%!_v|Qf?U*8PQO<)OxWN zI$0AfJz6mUm#|fy>LMDO7@g!yK%PpHIUxnibr?+vZ_3^}i6%;#HXd(Loy)tdBY4k? zYb$Fj#swZUu6F0HQpi8^-M*8UP={7lG}<@ni=$CBTJ?0*sd0Lw>P(qv*_5YCaxpNX zYiEJBfN0%3(Inectd^&oDk?1Ukz4m5*JuIQ+FS8*LgDB-1+9M3rualNH}9 zIXif5e3)zSRjiv7w~xo%vpg+h-;S14+M*29%A)4lDDm1Qs+a)gfy9W4l$c;q3bQi6 zPS{nESp8wbU7Kl9P^x~yZU*YQpO4Bt$dkgUB%WB;@kU#N8|O@CcL)lBe7%A?yajSp zQ3Ur>-3BE<{ST#%DA+Iu(ZjtojG+)R!bBDY$%z6ct8b(YPF0X^6mzB(Kic>kvB-)j ztKt~w(HiTqM;2llcU+S3z`&W{5gwXJPqKPG&TP|aKe93WT-8*w8t>^A?1j@&N)46V zO(;UnJ3)?#Om3VSpX1i2Nl^rt>e0zg65T@y7Io-NO8U%WGL`EO=1I*swy_xSVnsF? zO_BOom?*f<-FtDPKNwcbH!oX|2BJiA| zW!0&JNe-$OD-S_HFQUlSSy`pDJu^A6$}>Ie)<%L6MJf*jUYm86iy_%_T<>m*jIC@tk&B}H815IK)4`rT~A855fqr@BnlS)-Aq#Hir&fUKJ+ zx4`*Um(vYv0XaNV48I61n4!M_j<+P98TA!3FBqSbuF_yT7b;W{(+eQai*QLa?O3U- z{0N`iv~M&D#ptSpb#6H5({-NMG{gdkK>@ov}4a+N?{J zUnQqPX)aTV`a!<^nvzQkG#-~jo!awkNTicw4_72&T{kIRM!a@Nk{wB7Y>9+@@q?3Y zP-2XzCs!XL1Z{O=A^}O3an~f`BvIB=9Q~ub-V!joO3l7ju!zhHndbPyG>z(cPFwC63N~XOf`|&73Q}yT^b@Jf`$`BEP0=biG}Q3_Z~Z z*0>X~s}am~@46TBjJ)r{plmQtH=uj5h=<9Z?YBG&iPX zteN;P#s6abZ^IumOtOGH2Z*ikw^f0i+8>el3M*-kVB7>;d?)a-ke4%f5frB9tH;HE z6QAzpWhXEH;N?wT_VePPAK)wCg(&_~KK0;bFfWsMISCj0bX=TTKAp?Ug}hwG%XPfm z%FErnJdTTR4=>!?;ronnDGX-#k_Rnr5`SVYFw-%a0wp6%M@Pb z@UnoHxx8${CA5-H7x0N+lMi3Ur)wB@E1&McCHxqlcJs0a7vD#?*pAN%+wO4K*Wg!9 z`_+!`7~4j%_-$;k4%_Yk+joajPUL`-I?RO*1k@e2`|bsF@B!OLLZ1@^$ek7NeQ7JF zUJvPdUXu zxCxaHcPh3!O*=bz+dTrmsK=f3@ogwnPMgq7vJZUZWC!fhOwCy1xszSKCks`mqm%Zr z)3V;_LF}1MOWvw*u>-@LEZqHpDyMTFzvFcAT{JDU&L40}ea~5ie!r7JRNu`7g-$M? zhB>Wxn+S~7zORVtcRKnmE_lW%Vti<#lk%P8E3%tW@j(ZlOS0WrMPEdPo^cBHIpNT5 z#}VvdPWEsuQ)rbW{)`p+$V)uvq!G*aRZXEJce4U8=%oAJstHwn>^L7g>77DnI=P`b zq6I>$aI-_hob4JtGYJe2RFn$RkzuRSLV1f~0&{7`2n zeaD%ObEea(lVsHny(W3}LwTt?oEBT1c4P;tW{)_jeB7>cvCwHX+)!-vC{iAFRFRXi zjaO>S=Q|@bjQ7we2sX-TYY)wG3ce$oKxm7wwo!^IROGbnd%(%ury&a+Cx8$MJ37q) zY&Oh^RXO1*Cu@>K+ouWQb|)(kI>~9mz;;LVae9T0M#l2@AyZD~jz3`*2D7{qohG49 zPByHZN!X$0hFOz9Xr7Y-ke7$C_LMBxZeAm~@_-JxQbW%=VNya5KztG8?q%#p(C~*5Dr}c2Bc&5{u$OoJpvJ7>^ z)fYf&u>fQwz1>ce4ReZ#I8zXziI(3ws@M&M&78=R_~CX=*0q47GMVUFl@rjs&- znICJn%0eY5+~?$lo)v1lRR+o!^~NYO%Wjov>e4F5VIfhd4+QrkBoz9=QLufxRT_+C zu~TeUWx-ILeNJ{gzCOxASmmUJiljD;3oT5lOl=7D&D3?NligYg4vuGfCJ9Mw+;^fz z>iFkK!e^F7=|GgA6Y-5dAnb;tdb!Rc=rj}5lL~dIta9QaV4+ijyA44Z_KT3MeQmdc zkCdhFr~^_Or#o$)74Kw+wmX#GzujrK!;7J)h$&6Pu*48E;9=)*_=VEYSy13`r&qnx z7627OrNP|}t&=bidog;uQ}{6N0k0$q5%f)T!Yql>dQ-KL5TZd;^)M>UncBcmBeWG4 zI&IH%NEcC2W@x5UG~6kC$SFD9Ncjxd z7ym!m$H2aGz0)m;eU(#q*55I0dZyEThm)_Vq=wDZp^f->E#*I;gQ#f*JDgbPXs1oR z(?THY+yV(d1``)<``w z8cB|9u%(t6TaQ5_K)@zNPfyRN?dk4uch5+2z}Uio1Idj^AcTY%l3(`5`@`J85(3C1 zF%WWD^4KglaUPc?*~A7f$wDwm$ea8B9_Lhbb@lXAsifQ;u)6y6sZ*!U`Of!#3<35C ze({xl#v^Fia;Lm|@Zmn^o&Q;C9Xf)bi{TG>uc9wBG7yS)Tz(lQbdftnU!LP3b3^W_ zw=xa^CE76Lf*8Mu6Z9w_>~B3Z{6y$v(@7dY51LADXqZMBJcZvuV)xTQzSf<1k-G4y zT1WVe_yZ7&D~7)-$Q(^XgQz+8Y3}+Q(TKkXnw4+#1JQ1m{uwj`{BEGDJR=U*eQmBj zK+kkv&P1J1gzLUh$*Buypd(A4v^4JUo8`b0!RPNM7=~TJN(1= zcX+7Hn+bvgT!M!D@T+;rJq#qb+~eJYA2&;|12`jP=%i6ixIR<3NS@$=&}YVO)oqaWyt$_f&4+#oPwDpEz1$kam9pq)~ow zfkD^hjC-B?TLYk(7k#k=5j-o*gbr|=HMF|Hq4@w|I;m(YOgz;~|885czN z8E3$|@InWF9Q6i=ls{j`?`C{X-R%Q_&JFH)IO*42i6`d zbGx_xGoH64cYxOC9DcU($aNV%4w#Av^TUtlhJtr_@{KHsI_~c~1G(!qd6#_C+n9UYz0Au$ z?_K={@N}oVbHED^f7Cngaqj|feouH8KH+WJ;$8fdckL72rO$fjZ1FB~AB6n$``(71 z@J9Z~J0C33Q{ILrz!-TOz>~b!yKu92{!^a!p4_GMVBitFj|l~E|Kut_%*GEI3k6M5l2%&#UKJzfns=X&p|Wv}pc5fV;$>p$w{hZk}$r6&zDIGf-a z_c1h)Xmc0RIUHvAk$e>8mhHoi$0@T-{F zRe$Gg_{`wBSdc#)0M++~w_px=_oEMugm1ae-144t20#vO7s3M;_c@usdAvX$GQIwI z-2jA}{lY;C2Q&Z}qjfqZ-0Lpy)_Ga2^B54mW^VlhgyIc;*2}fMbFeJ;3Oq@lTuJBs zW%Pk`@RGLtD#*r!`neBdiWd!k*xPc_1ChP@C%qd_;{7gg-}~V3E-dCb?tgsC@N?cE zQJVoiu({z8Z`aUM=#+E+EH{Gpzr_8fH$w7q{x@(3A3gU!A0yi74xPmB7Z16=J3LIs zZ~*8i4_-dEUUrYLn+bGuUmOAw+x)z@@g8p*^?lCUagSgvnX-wVbl;KJjweN?e9qgc z9c5un;HH~=VNGnPyUN0vSW`E$umbibO4j{Xfc<5|_c86kyR5?w&|A?m0I0u&4;Q=- zJ_d)Lr7spyc|e5gg7q=sx$d9kp$B-{yX&Mk*7o*45#CJ`{_8%Ey}tbKyzAQDP1ugx z!+lIRvHJq8^G&?YEZ98fjoIa+4KXpx?mrC^FMZwf-WE{Cd%TTLd1II;Nq^hy4Ma{% zbhLX4Pruqd7dM?t9Zz{TJP|%|-Xem(e;9Q2^I7;@v*< zoTwLM`%Qqk`wwyND2s2R<=y||C32*QJBwL-UUv}sk)g-wX`_(LUT?4w;jZgR4TwMY z#VhHUU-MTq3wF%*p-26}c?~xlO@# znv?|YznE<}3GE5ba@?*e&B0_tNCCwr;lgTAY!Wy`p;#8%WT$X{e;t5j{WrV|Xo@e2 z42`|ZKP@Lymfd99aDVEm*yS1^&dw~?&s2b&X}P{0EY}Cja(yFMF2Q0Z`G@=Hx=vtx zwhI`~XRK<{q7bu{yJeHN<*(!f0=z`2aMHVc*_(LE%Rl7}{sg_%5Fg3ht()-0ZPS-Q z+Gw!Umw{BXs)grI96KSm9LW9U1tBXKm7DO>$lJY}2rFLTKI%eUwieWRzIU1XPj4Ra zhMz)r8fU=0X}FC~!kg!NJBM69_j1Hq(=T`u^Wflm>AQ>Xmk+-kDvzg`%f(@%ndY8? zj^Q2N*q_?zF++r#ShvJT7>DZ~@5Z6wcY32wKwWZ=h?95&Z`m7iSJ2?O=j28Qau*ZS z$_|@6HtsjV#C%lsSx&3&e z2G0#auesq-@Ge_&*U<`Gz=y%4i*x@RFL=+>-hNf03*TgN<+*=>Uk9Hi1P?8=;gV#D zOisRzB@!HAQVP0{K%<=-J_eo|;D4$6eFyyc^~3Yb8J&FVNSFkel!fk7V7e}O+Pg+4 zbiPPHONw^Cg$Z2*j>s@2yauO)hsM#ML-rqCQbfhDC(zu4xRdk2o%{)o7`T&*|CEQ} zvkbX;2-=tYXTw~T$w2A;2pF=BPz85P&g3X{KkG7LS?``hL-F2h7+M~_5W3iF^(+Or z=GJBDa}t6!Ob1`{E_&X(>JPo^pWv7HEhJpjx5&K|d(fN9Iv=n6YuNCc{S-vZ6!1*b6Mocq_{_|Et4a`%nm>qYLby1ADPFdIx0 z{4y4L5VB1kN^mI6-HV_!6f7dh+@ytdKLHZH?z`TV&kAhFuU}u*-H$B4{A!W}$KPx6 z5=XaAAk}0zc0Xe{$1WCAI7gFQ+5IHA;t)&DIy1|Xll~$1xOYoifJf+#NfJ%s8_?9q zH$*6Xk#(bFt)K;VNum){#$X6e=~9y25bXAnr@b2p7S0F%^i=0+uXo@5mJt%++1P?U zKq)5exBGuzIgqp;o?#bAIcjMFE&3YnawM;5>_eox@ zLq>pEb+yjJf~?D#OzZA16C^-6r|4A%HtFBpXV!IW11)?{$!HkFVqMOpymy~mKj7^I z-0pqKyZUeGK2QuY(dC8+kS}n*y^Pn7MIa*I2tBq!%#i!7^Pc4s@SSBS$nY@t$Ilrt zatv|7rdELa%Xsn?0B(BdDc;fdwK@;bu(yL|;(mYK$dKAD1tY&erf2-QpTHP5pYpbz z6mli#(G+KJKL~_-F5m>5DO`76DhTnr&KeQorS7|dNb)CtgI9&L;TH}KLmxn2pJP4& z#M%45gpyv!&}J%kxSs^QgTE)>7NV~lUZFIm9*Fxzpza%<_HOFHou)(!xC7=e^!l?_$jP5ymP)fj5VL(!2SM z5wr<=fnv=^$e?!3A9>rJ2g=0B`)KaU;7FJeiyyX5U;^=WGA~$aH}X# zKW+Lxjbm};DetDX;VCZ1NWW)({VaaHNx3*VPhT@XeF{JAgm&R1#OLrVoJSn~bN_j0 zz}w=kW7~3g9@on}gc&jg*xaARF}T9r2y&VqevgcIA*-SuHRF8$SsQ4J|A#U0&VmMZs_h-(U(5x?h7I1}vTz>Cu&aGG!3m58&5phCdt` zj=^r2Oq(x+$21ieG53Wgu~k>O2Z-Ie#C<2o;jq~B-7lUq;$3*J=&Etbpetbox$K82)9HS^lT8&c zFttO$ibHI0{|degg6-X(d+QTI_DP5%IWfnd^Bz1EUiMw@Dp>E_bB}ntU$nj+vdE^4 zsrxjZxBjzs3uH%4wN>}?*wM?}^T1m{(T@y$p(8`s8)~I%1Uo=rq92cV>wli0gVn); z53YN=F8%L-W?%ZZqJcT(UAZfKDt4PrKZ!kmIqWKT56_2xHzjY~FJrm|=r`F?ClcsD z+uJqV0k@_QulpEwdmN)pcaCPN{JQ^*UjDnVU4)-ystda>VAp#?{jKlN_j(Fzv~BoZ zOeCKFVW=8nX?!PJ}_P~An;7Be{$5poL+vZ_^1Kf5s zutpo?a3MVFk$38JVCM2}bkE@)Rnvpmg;$#%@5dO|KziB)?E=`qtzwMxQu z?wx5Dw$GMY)w17eH>>ppf2CSEHdRJ*p?tK|^xMr+wcVO37mM2}wWaon;)=7_s4tB0 zKh=8MK`dCiQQBp`-#UWETSw?#zPtk++9#GOes!)=Z&%wVcD34bx7}7+Tx^s}?M73+ zB7w~D6sOD6_m*ppKUH5^Zcnu97k5t-tJBl>t{l2|wKG%j%^_(Q#{H>A%RjhOsn;5F6{lJUfRz@j z4_2D~VzmY2@P-CR%tSf*rraTZK(e3PFW2I*0yZsnzxy^F`V(^T?z_?WmQG;|TMNum+Xp zO2t{M*3Cvo(DwFvqwQDl$V2y59eU?Bz>Z%v>2tT2EdcW&$^yUcnUEuyW<|I2iq2P? zSW0h@wm6Ej%hkm>zXd``YmQ^M2rO#OhRiUFa2EWz-!k_I&W$$>o($n6A_>Px@loMU;LbrMx2Q&qfV zC}p`(Z?%Pp_kO6(Dny)Cr~WcWLdu{C^~y0ESmiTPu>r;HOgCCBoF4E4z_56Uw8w`4 ztkfpV@Z(v8-LJYhRp#9r~(6{oiVTv+(7dSQFa{jdZSq@0RnXgrlwaz z?_G?a#r6hbXC{dP;9oFGOZ$pSz09wv##VM~8{Q7*uix}(FJ`vm@!6dutS+{AyN`b+ zvCjnOiSZ-$f=-(y$G{OuO0L}p4egnb0@^u-zF6u7BaoMX0Tzh7xK>kR_;Y*_Jl4g@k7 zk+~Vaw6sJFkOEO<&M%jiN@ZvPa7J1y{;?)HC`IjuD$~7o^|;WdG>4mbDH2}n5x_ew z;w01F&$P$J!L|e(R;heHVMxDJnA$g6D5fK^AgO>qK;aD33p;!&2D`z%hnwOLv! zLL}(RETkTs1SSv;pT%AW!aqMP%}&Iy`Xui%H)`?x>5~jn6wrnrUh3F$pmSoKm?rhZ zg3Kj@<-DK39j)2ylk9k~Na9{<4xWPc+V+6HS0$E?_FTlNu@L)$>NBIth$@>IXiwK@V=7EWWmYj=sD{Xytp6_vL2Fb1S1jJgegffn4{c=q7?DO|fahf(rV?z1)BTCD-x)()?;c47Q=(Q` z9qCn$#vZco8M1ndJTj@A3XKOV>S3wcHdkFiHCSwtrSzG-#m=SW)=?1f^8H3n8HilE z#TjzRWI36uSY~q?=v#U5q|38i?Rotber0f<5X*P^2XK<6ruFMxzJho|j9RO*J_0rg zaM1*GRC9oVsMe~V2#^$>UwVfFt*sc)BdjKw4(ip`QEXxw><0EM#Lr>bip7<~Bv?Xv z-Kr`*s}&|BT0Ai6-@ObmmVqDed1kmQ(Z;2DBdD8W8H94Ss^Ei06HJr~Tz_Su339{8 zvs7?C-86=4cHvl^~^M6q}QJ~PaGUy8Z;O1qq zFF7!8v)MPrqoEICWEBGJh{1GHEyBtdV1pwa0*>bp*|#v6)JEX~q0(yWzU6wkZ5WZ{ zTIk7Aiv-lOax!91A1FYezf7yY08+pflaVbGm{N|k1BFeH0Uu&^NYzp)|XC}hRaKzM>nK)XLlHBwj4 z9i=&ijtNj$mmP7{*X}wvqJjsQ8h$s-6^kL!uR;z1Npc?Y@8q32iu2xdh>0TRsbfMt zc5{r}VwReXrP2a~DcV=IiRl?3oupyF{E}bjN6goR61%i2{di)seaMz4B@BisF^uWR zY=h8`e?RF>?jLhH>{00+0c*z$DZs!}8Gk@REwK{Zm|t}2%ZrOp_+x*T8cWQDI^uMo zD)CH~_ztHmYGlAb3bb$Zj7Gnh#hiExXWBc=m?_Qbz@5UB9m4s5>R&mTq<{fQrrTP< z>>r#!NXtqJ2ID_hZY<6LUP?`NPnkUdrGu<%KP_u{WfmN<_U*|TNiPC|zUvI;mo02S zG-6>}Y%IVR6;`T7lPEC!{Z5c4nLl4I)p(Z4>0=5pLtG1qyNd<;F4R`st{f5AHTYUO z4~b0{YaGFu{T3vt@L>FQ{`a;4`^)fI5^S|5k_%-qJ1RQF*0OuCfyo$VJn-Qui&59; z){-8v6mS$vTp_GLrtp{857&psS>1VHxxwTO5NC+vY8*uu{29`!el(q~dWpa|@bLpJ zZj@o=TxlI^l}mMS+&;WkXLXyROmT-JDr_lmc5KX(YdHBz%RO1VS>QxVXk!PM=XQxa zNq{Sg#IS8MPELl$JM0$=(7nv7#*2Za2nLUMJQ6w@buwwR8}Lqsaqd_d{_b_wg<`O^ z_{{Dp2tr&ts!-|ov?+&@jqKJIuL}(laYzxQMKTU-w|*n7l2{!hi6@uoCOvwE@zzmr zBli}NJxhndt6&0Pd#7tq zBoz-7h%bk8Bzr{IO&Qy2C{bgXd`f-5!$O5f5$I>B*(4)ne{FGwjInXtfFlLTiVW`7 zG)K-UW5zyB-W2JWkRm*^$oq|b4*I`cO555Z>%ALG#Nscp03U21-21y^vosj62$=#0 z9vp0G@mT3Z%db4J%lHB-I*Q~h6~Q0rfHEM31eu_0+D#Ayl%o<52*`pQm5lN#1U8@;Vl;n=T(k{Vf4patL1uz+RHW!q>WkHW|Zmoa&n)D7v z?NB=%We?ewc?FB498I^3Vw^`@5^q93!3X<>5@NP%r)zn+D1&X~!B$6VtZ<6KPsf@# zO(tjtm@kXXf!36$xe8Vs=pvGpyhs+0!2Zwpa}BFgDUvyeyw`U4BmP zMT)O5Ba{l|tKR~Q8XzL_veh~SiYm~3b78rLz$1o|-OvXuG@2mbGr&;N(ddF`MM4`F zhr=?Y>9r~2HJ_9b!j>L{EsUm{fUVzFR$G?bmh_><5j@52SedCt2OchDHN*iDpH1u( zm>F{NIoq}^@_FEsoXG*`9U&@6VJFKOC)m3!(WV*ym3a#8$Zo=k6~u?g8ydTXqf#Ls zu@*RDXph3@r49is1#t9G1sB;%+mB-;*hL$L;JX!VCxzrm@;8Q6mtm0vKWM^O@o@Ie zJ}3#EzC&N2kf8(U`1TgIs0^v4PPR$}me%35%H}{eU6Q*79B1h9(HNJVR^JPkVDbqZ zAM4V$$Kk~6HeFC60y`VzWWq9;&mNJOu>k*CRdH<23Dj}yzX(5V3<3(V!%ztJ)Szw z%=yI?`fv_tA}@Cn$I(|tL5FMdH!m(X)1~T*?2DQ-8 zF^czMiwC>EkWrVv!7Cm}R|C;GG#4o;$iYiO*U1@^^k2(l!Xi)TFnx<7Mbqi_pjMNh z3&JzvpSNmAzSVS}!TBJKMcaR1xmvy-X%t|4l@qdNbldH+32qyF9@89ur2#g4sX;b|7{};f>;$Rha#_;)U$&8gq)T1XkYG5$41eP_? ztePb!+juuC5V!!R_Ol3C3-sDdJQ*iIv8;azoEg&9i_%Milhf!tlCQCKWrM^tO%hYs z8Fp1i!7gil5Fb;QRD)1c1ECxTE3UDx7zz`|Oc$fv<*fR?)LYZPlEtuz^z;zx6H)IL3J_BWMmS^~`H9dSa~3Yn(9d*w4{!uphlWwSJ9+6^WU^uor4GxnWTc>UKl_|&i?A$gL<>mR z75s1rC*N3d=dC3d4j`(2fuvMZf&T2pKrD&SLXf6h(5fzW+sccYm&Lpa+ic-@q~IC> zl&}vcrN`j)f~gnU!Nzh6Z`&dyL-(d2YvmQpI@T=&7DiDmCD?j#NJZudP3q%BY}Jty z5p$eVkpwc6b$iM&g$O+5Naw@0DI7Xd?)M`d$<0%wR}$GbGlf3M1QhY8N z7S=T~G9#02AkY(&&$%opOq(3J!KF=-N~=-xOXYH<)#`MKN2aLo-6_!v49<#Q?($im zmI$}UWRG(E!-vS6L)bbC8YPA)#{ID>DZ~zh1B|yyfHCkfaYy2U^AOnDaLOH-9C(CK zP%o4zV6=haP2^!Jy`jW0K(oqH+w!~>+34V980yj^Ae;jK%!o&wfstpWIoa#5qzI=Hbo1#mhgh&p={wlFpzHfLpIWFMEn zEhHb@8kkjA_tEd=Q3syb?k}WBVrnT8jU@Omsyh>uF%gB3pcHnmnrTmz;kzUtlLc(z zIEb}g3|q7#hX8~of}(7^ z@=B$N92sT-<*iabimkuBrOa@Am(fQieHNz|CG(YNqD3kQJu(iJrcYVHd3BPny)lM@ z{&pi?6HyuSQ;Kaa7Kx^kfr%YJLn{%H+$O>vTwOY!T@>wd>j-&$r;MNJG7e@&!Hu~d zJVEI7;x;-R&BOvS;IeGlwK5u$%G$8A?NDJftYl87%rH>!0QBLj%a^R{L3|L9S@UR% zaC>%?iM`KQ`=dfD1?~cz<9&{-hQC{_3I>mv?`Yst=J=Cn>6sYRfJS0O)or~|CIT#R z$V!op|0iEfl0VpEVTnZnX zVHXEPmYXC;%}OVw+hsGf-*#I!Gr&ft%v0#t`qg#%+Ua?k`i?zQ z?QhEmS500w(M*Zqb&WrpDGq)Qr_tRLQ`5lCD@B+w4?qJp1=iy(*3{6!gC0{VZ4f1} z(*{^g-B&E$ci5NAq#=Tl9pBFBzD&6OwUVB3gekX)-6fP8U;IYX1O)S{RnswI@#+q! zURUw5?GBp+To?VBS7mP_23O3wC1T%k^mmwKhv{^7g!l|YC8RhDC6)C6#E`*;oN=(` z#5ZtUo2!%;i5B0i=@wqbC=xzSHuS=8%-%=dzv<91g>9&7CdE@s!x(-D!IQ+xfNsU< z2UwzKVIhqbRkSSFbxtcQ3{%`wwwa+^st2Yz1S6+8U)cz&9fru$$P8%{XCiGp1cEvFP?J;A z-7|<;h>cOdMb^Z+VByfh4VinTKp>NnrifIv$SFovIKWtk;bzf9hi9r=IOCfQgD&V(l5#3>ZVq*+%1g1GUO=`t8{oZJpU znfwEf&o{9xQbozmbZv8(AhVq6&-*ZM*@+~Qxqr{ykVx zDyEC`xgCjkP!0^zENPpx7Vzr&51JxJ+yPsbQDn5d0;0-7=~_I8L+P2a;c$$qf{M7B zvZjHZ6VP5k?#dvq5LR9-o+$`(C~Utl-r?SzRx#3B&bB^NDYhRQp^2juv<36x-KqQ! zCs4vQl7|uX7C#?a6s@gDoD!Q&j0cd-f{|j$Of+Rz((W^+67csVvO8C6U8YbnoB97dM{WOl;>dZn(^8Ot-@V-p8__JxQ`xS>& z{V-F{qf{dj<3nQP5Qo01Z(IL3ljFgBF}vl0TuZ903Rq%v)j}Eqt4QOyaB4#%Wd^X1AHY)R_<;6C;09BDA?m==rFC(*66FGDBWB?Cl|oq#Rhl3;7DYijiFebkj1LNYKAfdaTT_3}z?fI(mngbRO;qa=bX zd&VoS&%2~^jF!w%9a#u51*E$qcn<2Tpbaoyr3_fqteF-Bx{{(9gF)$p3a8~j*S~~> z!8T2O0t#lLm9hATL0@6lZJrP*YHb>!q;!@H*&%aeKQe9=POIo?j4O*h#eD}gPMTP! zEY5bw?vmyNr;x-6eNhBzR@e!?e?&v0E}mSPlT;)~U%Uo%kV4q%=};y1l5F;e17bwF zr`o<+aI_zCGa?qL40)lG9#ohnY}E@>Nh@ffnK&!0P&`{dZZW&%HI{YYjlI<~S<;ph zPBDSY4pza2Xt`w61SW#Prk6E`pKC#f^-iPgXF+BG6rOCs8v zC8W`i#2YYY5UY>OG$^wr1sh~CYxPR8lVIH&LPr>=5lOh-^wW-(!ejWa}#7JWCw8Y|6I=xB}Snp8$GQdEk>mX-3Ui3n$%>q1`c9vVJDL1j7smB3@{m52<=d0|HB3!#JfAX zm;DYJdF&#$v`=~rs;dl^lekSIYsq#c1u{xQ0S(MT`=|tufoIw&5+jn^#3lVyKaG%* zJ|*@H1vO^Gs98@8eIt&Vp%X)^WegK*#j6qBk2s@dCM9!7paJ!MVODogfL047eu14x z{6KysQ@fRn%PJe{aqW`gHNga}fw(0kN4=p804WZ>k!aw$3QG#!!6=;i*$qsZ5y^dz zwYR5-Y@w;N2gc1Y7|I?*Nt>KNwhH?;iH)BrN-6Uwm_DLyO2$XXOKNx49_J$|{()$M zlZmh?;6s&n1DY%tF%bMXTOvfv)-n=(f)GYx<=D@{B)Y{YX|<(e;#C2LO7*3CDRVS9 zt5UlPmVr1mI&7hBi74K-E1E{+0qKiLFXiyD)j}CKij_KZo!J6)OacW8J%;WWUM654 z9RKb>8;6seg>=kBjEqRu9aghd;CXen+EPp$xn=uJDD2RWbF?bah!ILtV3=Yt%xQ)8 z1<=@KTT3&3uvDPeghP`)p!5b)KXK z^cU*O@Y9=JJ_F9PK}0Q9Et(0xFeaQ8a2Kkd#xYkSpa^D`LcyR%NdZgE=a>M;zrbPL z=KckeR91GyE^oF zfF_IzG_(EQm;_t{(Ia!HHzKuz0oE}>jldp610=lC%<|~C7Qap0$rWB#SDmah6@`78ZI6Nhh$^u71_E_u42$`ai>snGmW`TS_A#Ap?ur#SD70$Ms z{lAN2|3emek(giuD4V0S;z?t#T${Er z>F8$z%ZvR~tuSDL;KC>DMHX<*VKqi)DWUnnM&7P$4Dfy6lM9c5!g$Bm^eo{{n-v~v z2SzW%(cQTSe-Kh9gbTaMRFdK}_WN8$LO}`9=BN*2Us@}77V>|EFl6LvlV3eEcE`Bo zDzg3IR3I0vkuVa2XV-=q|IzO>k? z==%b!d*pa$mbpYub~DgeLZbpJFVtYbItC~=-yU2B{4ZIIX@`^U9A?~TR-xIz#Fy(S zrBzdABKeXhDf-N_9}AUB_B)B zPX@nqxl<^)si7Z9(MpGFfQ08_t@SLNDO(D|PN6^)UZ7ncmVpC7sFi>Hx zC^LZoUKVf=794pQE3ks99z5xGn4B>+LnX49AXAdFF=-s?caV*25ccdT^(%BR!G6zCK)6wb1-QBLK+0ef zN@f^u(Of;?qyVEQDNXkv10s}wd-0Wk1_-Q=%MjNQR;4<<2QkHB_~6Kup5+B&;#Z_f zH&$#l?JW#nSWTp_!UVxR&iPba5&nGXjx&Ik4+#Ddn_RF3l=6{5DU@}GO5pV^e??61 zIM>1UNm+pG$I+*P>%x-I3$&c z_!vl&3|^8>F9~6dM4qk92%S>7&sjS=Rhg@bdTe$fn>A8-;^1f=1Y2(pxuD=Z3}vaF z#kFdg;!N);NePHX$PtYSFL9Mx%9r1(N-ctCBu@v3nsHK3!L?d`v_>FLmdLCyIUJKT zWhjl9lm$q9;o(cxuEIz~56=u6!+K{kTWqF&{6 zPy-<$t6d`p7G|0H5?(@Q6k?A|zA0CO;y)CKNtX$WzT`0{u?H!vVn4+2uWTu8W;;x$Rfwwt}Za7TP`DKtrcYA;+3RuOaiz|3@S(z1#Nf;^?mD=m?~q1}wAt5B_uvkC#$Yg(nfDqz}|2CLad{=0M-wUfcO*p%}@v1&^MAo^}*7CP{evr`z;#LCR)frEi;g8&aT zXVDZx_r@WMG!!#lS;<)NA^&bF?CJQs8})VxL{802XAJB_8)#hnVbr!+27mMSnq+2L#%@x2uMCm1dH^JIgJp0=BLEf;rK)0~K-hdEgW z@H-(9wY4x-Np+rs5OIWJPENoLi#>Ga9JYmv?t)w99h`t;bEOk@i8uH4R5M30k?&xt z*9fI`ikIk^uftKGeF{ez3Y7F?J2bToyeC@~VwC;L1Iut9;MHd#GKFAg6FH{=Q|rkY z&Dzm#Pm<$4X9>yLjI&Bo`~$AzPVy!8k5=a@O;WO{z?tTyjZ#D`8-hw9@S)knW=f?_ z@NIa~3TfDZZb=(g&~3K-GO47qj+dYGr8GO_4aBgrEslz3-#W5Z$4D`OL2?1BunQqw z2>3yXG4Ky?QxR59hGwr7N*coH)%@xltYB%@liV^yQX?V(97IJ`vrSP?=ozu!D2sT^ zI?qz-t@v^kf%D5+$>T)GpS%w{nWegc5|U=%8AJ+ANXs~1^#)5CWCJo;hUgl80np57 zy^l&+{3b0omx8<%iT$H2Gu_1lNKRw1+W5?^U3qTuQc%>hRD)`@8uR^75kfl50qBdJSlCKa%2OCPI7*p-vDxMvC4%e#X#kn>T8%cgJ`Lb2Nu`aq-#YW@!Q546I zyT$QiCsK36wIVg6PI)+O3A?12)|>QX*ksV?D-K@(IkBdMrxQi@6Kzgg9o*mlW18rMb9B`ztx;Q&Cu~_CX@7B%}}ruVFtl1?nyPsW=Pb5NH`NeSnLVP5n|K!&--=Q{mzj zB#WCWT*R@&p zrc%9WkVP6@0t|BiusBr=Zywpw#6b$oP@3^Mj9h?=ZMcw=*kYYxv#c5^Bp)P|GC0L{ zAgY+D#G9AM`eoQZSYx(wl-S}?m*>392>HrGX7!lWrobC9-wHXw?&N z%pH056WkZz{1m6dBtgJT1E`5*TvK}cbIv)~5*BK0m>kTKWT=_#vLU8IIK~jfq{!-; zBO+2%7OryQzi<($vz?}fbZP{*T~d40O@aKSX4*SUsZxqjpxa_~HrwW^^O_Z0yd3bF z{H9^d5)UIOAP~sRAf_;P4ylW@c`FifwH2B-AL;-bag`K>T0^!5N~mSF56oxxI$YF> zwtypRF5{=-U&z-oX1l2{bWKhu}g_p4r8&}ecGgv$nNk0X=7&OOhQQ^ z6gecGV7XCSLX9CQLLuiNvsDb~$v7T{C@-{do$iRlFR-$orhoo4zE=p#sf1j&V;SRy_calT@wmV)|{ZIWjYNJ zO3XpS*g2=QP6VN;09Wha5@DdmDi7f2P`>1~8h$4Ohbqoo45xLrg+RTHFa?4YRCpU9 zD#GW?ZEN7SYuZFp#gYR;};qvevLg7f#72nyHvB zi}Pia7$LlHIw;TB64Nox674S~OnHPX-jL;gq_|~g5_y8L(IhM$4FB{diYP;i*IdAV zl@fdm7bN8ye-m&buX6#Bc$q%U@)nERH9S&Fa%rKLbf5^dM7E_6wad`O7lWIS`9vaX zjCR|&E@nGBt`n0AKJjX?97vh)6njeQCiT@3AX>jh*yf=QLZ(oY9ZwuA9GB+cm@;Iy zg`+I=N8~C&9+dOVQaNz_2XqE^owlzNLmKcuMHBQ56AQDtan|xw2M63p5z6<#mx#D< zp~`&(wk*v<=?kMpYJ)IAWX}TZQ#LjQ>=7K^B93rk^Cf^xz^^KU0{B{CXO#J7rGn@u zCZpM7#IRy?k`$w%ya_!0P)K~C5F+)fv3Wh2LsEuf$pJH6UMQ<7K;oTN;6))}Mss`w zm;8=IL>&hK;!H+Cwb*EYPa!2Y1|7UOBp^6{@6Sq0mqJi`bMT=MEe+9y#tWwXB3N-MRo6p821@{0 zT2lQWQ7~!lh&RnjmmOn3WASK8y}H0mMN&{s+D7_F1{!;LyH`DjCwCc zZ!{1ObX>i2AynrOe(SVyXLAB7Y4+IMo^PaSMxn$+o;CKs!m?z>cbj6_;z2^WJvfWU zOiCnV6hVTCSX;fl3ozmi2Dx>IjCO046+^0Cz8j2x*?~Trz1qP^h1EL_e&jvqv+3FL z6&$?W^GNsHbs!fTxD8Qs5uS@>1c{W5xgrYyFxJw3ry!EhBi05{2!;EQ*iSTtRHqd< zJvZP$fT~ZV3OC-305cjU=~)2h8)72XkbKF;p%Qqps^YFGL=4FtSZz> zdx)f&OcV`?hwP=KCUQU-hUQC1#BSW#v<5~pSCuGSDHwA5hL)ak==5jv-1B<)d@7G9#>64KreSEY09 zt4(o~LlW7+Vp_2d&a}s&1e>bitYfQ<&Cn!%I-9^oj*(k^OhWu3XIlv6go-XpwkSeK zAdb~fEG?E!P&`0uw7j(BY&qJfRkqxRQlnj+KjGW{ z&X(m?b4#^eUR<85Y&pJT(x05z41RI>_+})&+fu&emMw+xEwiYa-Pu!qh->TFc}wMZ zJN5>t2*(pytj=y(D3`k@f=TEkJBR3+F->&~sbxDSyoS3Ryc3)@=Bo>%M^SU~7#AMX zAQ`lT83*YQxaZ+}tG(z;_#uCx&?<5PAs!XcQ!O+S*`XF(igr=3gWhX!2EOVr?Q*&E zq0~T+FYNJbk;B+Xqcrvtr^T%is zl%GTAh$qkls0qJ02)HwEZ?H0cQS^+LM}4YtWr^NZHV;4I8Yz4+TZlw+Nc$lxN7KhI zyC{~Ry}4SyL$M#)VAPo9x|u$W@6`{aC4L15NTC zn|Z3tUr{y&$z?{dd`*{e*`|G9DSy_Y^m#p6K8TiA*p{)uKhOO= z-t})!m_D_^#|D06z{&roozn83w&xGMMlLtxOL}!l{+M1}n17dE-IV{hUj61ke)+X> z%Vho|dUYWGk9zgn1Nq;4o&0=r{;&1wn*4c3r0tsgt$J0<|BPPUlK(Ax^&P$1mVfE% z<&NLYg>;59FWJ%Wr%6_y3UmzCZt*UOhRG|50BW3;AEyt5@eY zzDe5NkiSo_w&g#hSFgx_O|Ndq=X8@U&R?ci@6P3Kn3bFN<(KqoI{%Dby&~_F<<}eX zH|W*H`JH<8*g*dCdU;d+o3`WnIWyoJ^lCo;j9zWde@n04H;{j{V#a<_uYNdx{k*jO z)j)pzf?Q7Le@L%hk$*z3ZpeRLuP)C2v0lyR?>H)Vd}|$3eIS<~Uy{pB`Mr8ImOrjn8}g6o z)uH^K+J1knSKk}RKlgyS`S11Wck}t*T$aXb^IzAiP5FPYZC9+ATW-~>efi^hwKxCk zdi9S3`A;2_j=zx0|H*N4&tK`)-u#%Joh$PD^y(G)AJwbx1GFBLTmD1-1--f?|8IKr zW4ZjfZ1-;smzx1Tsv5PO}0P5G^Qb$|Y6ZQDonYB_)1+oj*N`Q3U| z$hY){4?QkJJ zegoi!`dd1x?R&J{9y)FRCA7!Q^B=Uo#kbo3l0g~&(MP1=c5Oe7_PBBWM*CZoq5WU) z$vE~9Y5V82-5!5!-w5`K*I`x~lml|g+HMht_WvH*xT1mo>l3nAI?vqJ+A-%(*B0xUygG{f3G=T#X|co_ZY?;LKI>+rv?MmvpTnACH1{Xf#9{~x0L zg4`9(@H6329Oo}|9Ls#_&quN8G`?j|wf#@E-LeAOejNw^^^d~s`_Uc;KYz*X8=cAB zGQbCQ{;#-5#<4u5j{ixt$Bv`@ErX~1{flKB%NA+-r_mla&cG${?f0Oa-pg{kI?flg z-Eu41e(9ys-wG7kzKr&3vHlyMkp`e0{(F!1w{nHH{{`CP=DFjt`1ZG>o#ts7eH{lv zZR|MT*Zx)})BZD;%Q#jd03D*guW0+mH}O~J4f5fP0EKPJUEo~xm^SFgOVLjAv66$f zAE5r7UHRMn+TZeg+UF5%zwb@buua?lRNJHbGIOOo*YMY_!qvyM-AZjb&iGZ*-!j+Q z{z0_I&GWzZXut6#)PJM%&|NaXr*)i@Xs30s47j%cv9?Rqn4}LLawYBmJZF^bu{hOugRog0@@jfVSsHWE?9DYWs|~TX9L-zlip@ zb=z^RjALb2?f*_~kJ9mPqn*~_+pm<42EQEu@~3sM!k~`xo7!%qyX$n_4qPw&#~+rC zliL4RwB70#wEbVS-6{^W{na(EZ`TYXp>4r=>X zwcYA(l#V>GC4N4?hISe!%0G`_z2fHILOb=h8Wr>09{n#VNPnw%(*AEo`vs7@U-^tQ zY*f7Q6KIcn?w{#6R*k0PjE=?k|KT3({{`(df2--zac&uxcB@|1_M*01Rg|{>s3nm%0Cy&XLb`_J5H3cec^DFQA>~x$#Z%+Z*J=xnR4rTh*hs z&uY8XQ)~OjwB4$hbMnJ~M|<4+UIn~N&yC9Iw`sf8b?NvY&~~dw)b@YWcB|#q_B){8 ziF@wR9_^3xX#Z@F_H%EO`CE0RKDVju)(W8QKaKW{q4T26&M#{JD12TFK8DuEC_(Sk z^?VZTaqsm9J=(9|CF59|g+BNeZIAM?Z$*3D_+QcfR)MMGYyn*){ALU#dvu-;pq=J# zHJaN08Eud5mj^he{#FsJ{in4(%D4O$+T-T=15hl)wZFDU`wH6Wxz@0t&;63NN8$hS zS4w}Yz199FwcToKwf&qs`$zG~ zHANXGdfwlP_PBArqWz=%=S_QMoT!}sQEj(ICY|T^wcVPWw0-~GGLAK&X!{qm-Kx?} z|5r(WtAW?{PiVU}4Ql%zXuGlI?H`aIE}Dve-#4M1*4dh>beylCeMGOrAOA!9TZ^Us z_{|>u2k(i0?qRgkbFD#B$N7M^Tf3yTpMP)sI499g<3tS)SMH1NUqd_fkLowbq#Oqi z+xN$}zq3dC@1vc@w`Mh+|BeIk4^WojV^?axr`obcdCl>uVq%&>#l-`b_^cE|q8#}rcW5x79U~j#O zV6bNC1WJvxk=+vUG_{I9w_K|s((qF+3)$0twuyAQm^FTP3}U$y5Dva!DYz@7W2c02yv z`wrf9=RW`7-n}#M(mQnC}bja+y!#{*L1975D3Kb^33VADcg9R48J1z>< zSPByJ#eS=Mq+BW;a3nI@ih3M$V7-tuMo>72vkTR8K`2Vw{olHMW#YE%R92*W{iminK ziJ>=(jKkp!3E4SEqsZgwhPZ^^R;UP}i|nR|Q1jO!@qVM}Q@kywy3twpJ~f%att)P=es3{7xa7l`ed~EEY>VY9!RDf6cuNA*3rW_9UWnkhMz?{Mp+Tsonsp!ueMa zVMTS}DFe$ZA!^)t*OXrv9jDh$A-ilVQ_jdvWXPMvkAl#M;>r(JWGe%?BBK)+yS@nN zO-n!pXH57}$io{VkwoMrGD)&DgEIG0QYJDw?Zr;({2$BP)RAc`JX7poHu3)f3$>LA{9E7 zeMn}8akjgWA01+Bd;-Zn)5wm7*u0NBe3f9+C23okKFp%`S)2H7Q?rkGjHHwb$cMtc z!=RuVpsmN6h@3hj+3-$3;*x9GBrIc#lYm6)!nIWEAc$3PF3pAI8Z?Vtry(nTjmlwE zng|&y_B&BHu3RnxhmT}m&Sz=F|8$BI%FZK7A*dPB=822S9I1ICB%JHOI5N;#1_gk- zM3SopBot#kod%ac2@6Dv_-R?*K8HSSX67ZZ7JFVd+CUy$LEe(8+UH7|i08gRI;*cGy5c5Q~ikNaGwn z*o_;))bX^{#lYXHdCB5!5~qbYM9d)XcNUMAgok9ciSQ6T@=J1FH-vo>KVNFLed4Nw z7J+RapI}@V7ptB)aU^6f0;>@cu1h7?9=)moCkU-{Pu?s0D*m_9iVTAqdkX}Z|b_(z(<(s++O~i3fXROv* zb_l;S128aPmT8JlyYM33GXUIJ)m?^i$P$s+RFrQ!r9Xjg7-@dG!2m}sLw%f53jjHc zhjDhIjLk%=X2H*{gyLD6H4>efF=ehY(iknAY9g0&k1g$vxitr`{luu%L1RA{bWmK`EhQQGx!D>CBWg^br85dm}FCHJuQ0bX; z;{IWu3gAxqg{=@MmnFRjk|a+0J8hM$B5H(!$)d!V=r>_g7D~wu!8m4NQqg5oOajFS ztUm$R3doa?```?K$EL$;0IoZOD&ZYgezn9=qLEY!XPg#HhU@?YkVHQ7n!>B{D5hxe z9w{2USAjBxsAA05-3LF#zCvD(NFE~g2;7ED_x(s@if8vq4knqw08A!V)G7%tduGQg z77t=d1yo;RoC2v99%Cpq4g6Z1paeD0NQF*lNJKx2Z;Bbn%TgLNdSB2AOgbXQ#8HVd zUIS+@vUeDxFpeC0IQ^OqI(4Gl`mqkl8Y9mwPOsELR+Uj@YO}y9n!&Q)(%UqHm`)mt zPEa=>?(j4gTgBxqg8W~0#jR#Jt7T~?_-)R7^gy;jinQk zEE52Qw}(!!3!+HPQNAC&?)T^6get#7)j^t$en%|Dyux@qt=x`Rujx+ zp8%1ag-$bdY4Z>7M>0Y2prtL$2>OFO=t$t2Qar=~2qiv6vdAv5;0asUK5eFoD?>wzxQa7;5<1eIMlw+H@z3Nu5Q>QwMq#5Y zbY=-lqol$~no|CZ!u&n*peIRS&jTrt+6y`MW&N|T-SeF`6iok*q)RT46F7B#VWCWxlX z9|;vX?=hHW8eGVpC4hc97=dpFYVQ<@nZt;te4mYoA%bo*goE#+pqcv)`w`<0SsYSP zhCp8wVqVr@aJXCFHk0M0V<_Ic9MXVOm;isv!c)HG((!1%D|J|Mo9VE(gZM9XqfLtENV1B-Bf`YJRc4fMZqbq2_L^(7xPjH-?yx1ekfv8}Y`~Nv zhi*+ljg3qnbB;oMS(;>rhAvNrIMgn&joM zTI2M6Wh}N$I#uHrL)8=G+#R!m7P7&B*8A+VglDnoWd}*i$gbW_OZy-hL$c6{AS_v= zVyH-?oz@S~aDrhp7P!i$o6d@zPe`4JosErgg^w=QdLCZl=M+R!I}%RkOcdupr+d@wWav5`%ICg z*^=NT)9kES73&$Akq?8~_)<&>;%!tW1<*kf4PxnigcPJ0xu}RDvuJw89GGku8VGMR zNo=VmYgyeeeoIlI5w&;3MehtLL*}5+b6{L2b(YBu0&P8I202`sm2i`6fV7)$4+892 z{&-Ctb(-c-gsKI%|5x6W*6&sWbP>}DpMV3%emIMPY^A3~%kL0D>6iic`3 z>>8$=A>KCgJey>Fl^~*QwnH7!g=}WAziLc5(D&G7haEcflH}`YT?pB4kn(jvW|)LH zI@hTArE<9fiOLpGLZ+W0v1Y9$%FFl1wpc zJ;xAK!gptOno~fg0gE1@dDw)qR&W3<3z^)LMGL0ZF|gU)X4Q%#vMEr6*sg%0;>HV( z%vu+QXin_e%aHm5oySXUrcyZ$bGs2Zzl`s|$;~9NT`Z2yXzN6+U7E!w9>kwV%@v*F z=8`j7Z?r3;DA_o=)NCM{u6-iZ#9CJKTJu+UVvQYicg3nQ*lE-mEWheNB@w@U%X!#NCuCQq!(FmubFe^LbTd zbWJO1Td&7eK6L*Mz2AIB(r#;^KzqA`^uZnXAJzNK=M6zuz8Z{tNBYT*`%V2Q^Endf zAHDx|`2Fv{|NVw}|BvbO%_q_`^WTtu4(q4+DB2S71J0ZxX}n1k7{wtMeO?`%OI&^Lf7MsGpJP zIA7HJ&HkG@N#^sdv^b$Zvwx=PcX2^o%>AbRnECt=dWnUo*x4T)Q#5P+;8f+J^oQN;%_PP{$}3h^D^8VzTbI< zZ*v?1Z2XyXF5iOlYrbENn`tcb{8v6Bzg%YSr@=#iuMAz&<@Ngft&w(f|1FVrGo1On zRqu~%m@q%SbmgU`+v1Lox25(?vmZsHeNgYewqPu0; z5VklZ_<;vVNCJdR3?v~Cn2-!iNJ0__gg_FuFeJ<{Ofmy`15925OhO1G=>2}DZnau% zdEoKA?|bhLU44B|)!FLQslD!1-AmiHZt^*fvX`sYD#jixGniJ7aQ-1L0MM$It76>i z)ohiIc%I-4z109v&Go!*Gz@xp7m#w385jdjHE3m_wUCfkQdK| zVb4wrEj^Q7EroH_$~^-&k^z^6*>d#F!G%Ir2iJ^-H+bp&+RML{Bbsv8dUDr#auzC2 z&O+-?`h>sbp1xeT7&KlM=F0VYa=CD$5mOd24PLu`lkWO3>23GqDr!ZI%7r!^3vGHk zAVuKP~i%Q!VO?b+$Aw>g!tA7mE)bTzGJK%fgoChE$@VNlc(! zwfM14Z9eS`7RQ6c+2ZtFX5v;KX%!xw{IM<7#ZNzX=Z4Tw;>$CqJP`b0-3!OaL%S(M z9$wUEi=1(WHGbqV{BV+>80E%|#-9@(J*l13#Aic~CTS3_b4vH$hENt*wSw#sqnVLOuP7cqo+) zC)1&j3U%z>7V3&7qdl=yI-19-x3)sfej`B*c?d=rs0Cf!EmTM z77zEuE<`p%XbTa~BmLo6++zr*qX%PY1!5}Q6h$>3N?*m*uK0UO747TJONX>XW^0I%=LB_zA%GTnflItt0)WqRga%( z+CGfrd$RECpX_yi7GB0xkMLj?-t^>Njj0+O~Wvw29K_(hHU#$|3rcnZ>KAf^@F~Igk3k2R`Rq z$c~bKbqGW%Is60kzWw=2r&0EBj-Mxkv#m{ zvLhG&<;dXMhcEt%Gq~#Vi{Bm|hFMKew297u*cYhisQ-7O=!Xa`6vCs(;!gzk<5x}v z%e9YZw0@sDe!v>=%BNxGxu`ZwQ0i2s7SWLLYup3l9vJt)xCh2PFz$hI4~%;t?P@Gih} z06+7_@bJ$7p91_XVEvoJ!$nvP@>wS@=fa)JIaub@6a|9UdU!t5Z-@LGGHeXUquSXB zHsg2g?}vxC6JJucsbuo0rFtlMnOZkx<@_bH&I9)SGyA@oeZPzk(s=RRH(oZ*cingu8IXC8 zx!8;E_TF2QH41R{eYYBqZr4gvytsY8jq4j;_MNgnzBim;{2uQmF#B#-nHR9{bUp9U z?Ym`h&p!L^+hi)iRcS!x?un^uz4yfIyKm=v99+lovhTi4GEo)u47B)HJVUJAwO;!6 z9XOl*bSv+{cZW^>z%HVAm?`kVOc2gOFa6Yy?CCd@BcQ)yyu;xc(GT2 ztsdO&!Sijw=J5ZYM(ulyn>TD&Sv&WP&cS$ku(q+Wp}Ar4!p1>~HeS-y)UddDo`;rK zagCcyA>84;B6-IN(tdjuUzc`-`Q*PteX5fMIk?A?4A#2;fWi!x<=qU|2lMh~z~#YU z-W1e0AS(g#ZikY*XC|Es6~SQON-!*Z0TmGcQ^41dD;A=V8Bi5BpxH2#SMdpijv*AR z_$8_mLuF7NI11T@VBWu=Ir%Flk+m|IU*dcP+TKEBQC|K8_XPxITn(v-@+;lH zqrjaA2l6YcK`!FU*LiiwWYAxI3c{10g?-N#GzK4s-`zWqX2B9K&2OO|6tomnp$vlV z_u-s^WfCcK&xHF5mP=%^n}lfvDMd4 zMk1~5r%`+btrBT>=fbpt^%B|c{s+xDMIw9MpTfX`ja4VlQ0jcQ1V$BXs%S){*L}7W zk#@0qzzvhqA(6EEHOic-x1i}Bbn8(d1=}V*2i#@uOQ;A1rhlVYLFqm2V~m6fcOY`VyN#|oUu=8O{VNUa42GcK5ta8#q*@q|A_@8e3*q|wVmPT0 z??J1gDo6h-=sw-5S$;l!RNo4PK7EaczgGWI=-259C;*@Sl-?ll(>f&ZdVQI|&*+;4 zepY{5;OF!|3%o(UA@D~1p1_;*Z1~itKd(;}c(d*n_yv8Pz`xaZ3p}PD5qPWqp8{{w z+qVzoI(?-l5|H@6y)`{5$<^f%oX=1b$QhQQ+U}8hFL0@6{~=@6$U3{)6rl z_$~cOf%ofM1%6w{QLTLXJNn}SzpK9_@B#gZ!0+jo1%6+bmXq%XdcMGi^cH~+>mGrR z=uZm#k^Z{CNA=SJf2>~@_?Ql06!GcD^<05J(H#PRsy`y|XZk9EPw3kOKB<4;!50NS zrQh{nHAXL=ep)Z{;28p+(J2pJC-CR`>mK|$pw`-{I*6L8b&*qby#$J#ss|)c)B2T-K+Inr^JZQ14*RjJ0%n^XLnaL*_p!ruKHW3#l@EuR)udEf}&jEic8*m-QSmzip zs_rLfC+F9rwC)ArJC>;G{)~ziJ_?SX0r&F^zIhN0rX*5)77V9?*Fbrl)Hxis%b3{y zLa_MQgR>iAQU>4uWz@kbz|~v4vmiqp_yhWqWgwiAA#OxgjAZ&wX2y3J%J*${8iw0CLj$%QbjSi z%vZ9ztbuv-m28|s#In24iI;2--U`<<^A3@!d^2n)n(9n@8EGs}Kxxqq5NFN-t+c6l zMH_tJl$sJ5Ie{Oe(>_WaXE5n~w71*`d&~AYbsUF^NSqbDK=nEgqws0} z17s(sVV~89fAnz9g$#-RG@4j=gz2Q6Kn%ik)qA9eC@i;DT3&b%o+&%x1ePO1#8ks5 zp{v5j;HR=rJApOG4<*)Gl0!ygLE#E0F1y7EEQMdXz!V`91KEk(5BHSa?F61hEgIc&xOlLdddm>qvyLymJszAWvilzZdLZI6KL~93txp*WxsR+{m2S+t+xWI z^iRk-%S-ttEYcASbG`|SbwXgHzDQt`{-nTWJ*%4ZrFxOT7QIT~GQC;g3jMI~t<+Bm zT%}(SxLW^*z_t4G!naNz7Pwx2TJWdnFAChCzb0^_{+7T^dYABR)**rIdcVL9JtT08 z{x9L%s)q$`(^~MS=}7{&>)QqH(AN-7T&n+GV2l1UmMp%B%X9^nGQRRl^-h78=_>?& zLcb>Phz?*W<14>f&lGr6FBkYX`ZR&p=q`cR>1zaDufHbnv-*buZ`A)P@Fx9^z|ZTN zY1H=xy;|TgeXhXU^nk!G>x%_`MPDQEcKvmMU)4_uyhHz9;Ma6MmLR_JyYxu{U$44f z?EPcaIcP|}^0%rs2>$J=kib7z-6!y!szHJ8R((d`U#gxatmxF7`}ry&I)S-}uOh0i z5ZJ9hC$LA~EwEQVA~2?35cm=OhQR$gSWCG+Jx^f2K2_iax?5mUUo9}L?-n?ypA>jN z|6brhonJ@!LwcIPOZ0q!hxKZKAJ;ntUZML1eo|j5@Jjtzfmi7V1Rm9o3B;rbaJ3JW zyr{uhzb15MlbW}^V)o^z>W`wytbG#A!KqC8wDTaM^^6|yy@qzN2T^uN1@AzCs(%86 zA>XBN&H#`XS%T@h*HNtULSNwb7&{#2Q=opqayWT2A>Yc;qw*qO@ezzm1;9AYy`wo) z(NZ9kuWF~B0=lnimo5>w+syB(&e01b9@U!!_Uf>}m>vS0{RBF>4w$k2yXaXaZC=Cy z!mav?Jo|#BHR}pK>*Nk_h{zyf)Z4`Dh(AY&aKK-UnwkZltZN=jZ8L5UBng+&X2gzwjDxO}fkHe+}x6g1~unrh6&1 zDLEvmwtw+~IpXtIz*b^L(;bqrZ2D*PS2fd|(pwSX1lN&4)4vvet$D>K=pyu`4sR;I z#eql{X?}M?6Hxp)a-*EbwG7B$p8s=5p@?BWXEZf$8Eu>`JH#4he*^MXQ{)y={vx8~ zW|CV=;d@X5HCuhcz^S#!d1fAl|7vy_8mHTaMhz2G;cwyZn(KT;F9A|J=i%85{&mdA ztHvx&&W%MiMJR-t-y5{Q1;t*|?3C_6_Gdtm_|0L=VN~UFwcvk-UYuvRIGr~xp^LLv z{r||U);p4uFu8bB`Hj@@C%R~-(QtJ}gM_jYqeg!F6&8-%9( zdr@&}&NY7GGQ!v=ialq|U=D8Z6;%P!SzKh8qA(2pr|7H-S84=T9u8}a@tFT(EQY92 zzmYVlGE$I?s{Ah83a4V7Q1fG7Q8^%!;CdyO)4zw7CXFgiv2!eSL|@@vbO<$1`if2m zq$)0TMyxeV{+sCTexr($bi-g2AgXG9>MLTyqynyuvgrQp%u$0W4zA7}xkUj!mU*JfYd`S z%(A5Xcd^3mc7^s>Mr;SnFkHl`{21K6Dc!G@PYnbacDX4vwZPknP_TMxp+xfBcTq*A zYKa8he?*;|S|pJo_t!9RYOzGhT<$hbEs;otdpTvyUdm)Q4DU=W6UtQgHsp8e1c}tT zd9Y<_MbTHWo|@}cGSSLX*6PKo=n0SlFX2}6E6EDio00()_zN>16~A!xIpP;-UMjGa z9_SaBa#cFw9FP78<8JY z?{+58bNr3Sn!Yd?^dE+L|1a4zzG;@5Tw&+(1+GBiHJ_9WaOItq5VNZM5fo%io#~~x zB$tM+{5P`wy9Uh_`bfr&kNshGJpo5@z@__fim#x1iVOqS^v5yGVHV2_0~h;-K^mPg z?c;2f`%H`GE`Zp8p8k8NZZ)6r72ONS*36v&k5*iX3U%u=-sw#46&TB@RtfdkBvR>b z?jVdLs*2x+#g9(oowD3l7|FGvJ~D|^%5t}1BuA?FS-9h_X}nXGdl1>_5`X6;-YLtS ziR^SAMs8t;_lenob=#6LBOcgk`XBRk!HK~;Wd8t;_l-o{9}rlg8Ve0vh_RPe`) zf)P(|E<%$mTI^`p%_Vo%^6vZm5T6vmRdVRGf-(VyY$^rZF5M z?K@5t`9+3#bx6xJhD+EOzRw2tkTc^&@bNdI!}0|VqrG(GL0{1E1yGhjCwLZ=1-?JI>`Co>+f@S_`5-XdE8WYSb+l@lV=Mq1kQ=AgsP7N|%BFHllul*h}SGrtt z5x=E$<>a%0QzcxRmfVC}zT71G9E{C-6U}UTeI++d^KOOq>2oH%&TupFCr$A~OP)po z)8|g*E^A&Kx9RgLSnG@amc$+yIDLNAjYuW05qX<_ay7e)yvvc;^o2F&68|^I=k(@@ zaq=&NdDEAcU&!!H8mP!%y1#`?Gq*4FVesclkUy1a{3L%p4Z^P={MF0&mWMv8Iz4YEeuy18wMadV~R<4 z32d8DW77H(98){l*jx-})K(iiW5|2$6l2?Al*ELkvFua2J#_C^@=MKs?P5BeU-N<|0k}0L+Ie`4uHBUK-;pwP8 zbt|i+(6Ihhb*sxIU$-JJb!$wRM-{LjLZmbqG)XEbKpj=8_;6;qE#(Vy1blpxhZ42xpqd3PJZi zRJfUIW$(Yt4WciaxltmM-53m<*(Q-%cNG1VDrlF;a`!$I%FGUl zw7T!WQ!`JMNV|JABU^%;GHrLSWn`;FcDPN*{LIrNveUf*B{_4uM0UB~A=^%g>~--DARarJ`qq`9XabLuUw3V>#C=uBt;ULzI zV41bqf1VLJ&Ak|L_LxTG^m2BBMr6B$A#w>tcKELYSNS%S=d8tU=`)Dr{{pv@*kN!F z#;LbA<-ZqIV3s$$I@nKfcvJcLxNj@mf_gVAm0X)KIUeS zDHd9!P$*Dyxlf9W8$_P=ArNMr=a$mP+%IzIV7V#(I(p_-v;5>9l8AUSn#uIX-DY0R zeI+x@W>$5||4(RVv%YMEx#5({FtLv%y~*V!lyeNm<>uz})9BR$zG7}qnIWm>WuhK6 z6Rn9aG4hzh-71G&x(Ylh65{MTi4}7gQu(Z@f#uB5H^jl*(;A^0^?~nG{yupc!M(0r zx_>P^Ict*16F0$xLHQSnTH_1uiJ2L)47)pMm;Yxh?mLVe=Kv!sCgnfC0_b$7v&M2> zkTuQ+K1$jJvsr;TRWQi~9;as?m+_qwhg>TI`;p|VCuLmcgyJ}Q70vyqOtd-C7@@1c z3nX1C(~AEbO`3cWd{Z{Nu&f-LZf*%Wx7kJVU{krbz@FK~rF_1NrsbgDon7KmeEY9p zNx_1WX<-y~{z(wb=QCeFJB0irxhZAo{1F4_ra<|aA3^x^60}b`xl;*{~Lxc6tN9O7)Oet_H(L?WparIRO z&7DP0$CqGf{r?ml+-LNde~D43-Z8W6U~LAy3dYyJZP2qV+F?lL(@_7rl-q7v->GDf zH8WeLr}#xO_?!}EpqmU*cX?C(7}{F>Z9Z9+Tus_BV6&QwWZEBOJ_?M6yUCT&;3ct# zNjz?he3A^5Gwt1U5!aF7uZH2Z3*G#dagdJye6PITMwn zK4{PruV!Sn%PmzgOa+!9^Yu4~gSo-#Vfil%^*0HY+pQy+P!s>a@_W|D-B**s#B-T& zyTg50lNowd`MK>>zt!{-+?yStnGR7J<(!)^gw;PF4iEG()hDEH4HQu{iOeZ9xISvh{y zfuYhDR4er=y+Th$#4SeGXrdkE%h77{siKgs~rgCmnvNsq^>}Q z41JayoQ)^wYqg64D`1k%@ONQ`5qjb!mQ{-_K+%?>IbvV2$68lIBS&~k%518oi(n&@ zFSD#AV66+pOPcDO)zw|)G;#u`;uEuytt&RxmwP#s3}G@T9;kCy)gg6ypt9W2+PEZM zLQPeU(;+G+k!2BBCYL*IiDe>7^$O!P|B5;k*OW}E#;T6;EW2tN)M$@lrUw&(E9+)4 zzs81X<tkQ)ujG_643(KJuFv8eL6Y56!q9_h=0udP!|Xig>rUYVo%S9%_r+u$^o$4gAY^Jx3ZI%ic~!HPOC z_)sGA8=TGJ%LRrw2}vN&N}W8xsV^zl?u?ol6P$^GGIT%-N4(5*8&KG0)VM83`b08SP&se)ckC3JMSDG8Ii9aZoANAWjw(g~ZopG7U{l z;)ivkl`{)hIof2fbub9Re+A;yjxOCfQT}P85pF@^>Kh3@Oucq*YK+V z1K+URjNfkje9jDC>3nY9IJ~JL;x5BYU4@%_J#Kkl;O&dNad^$Um$$ol`yp<=$8qyN z$I!pwmj4EBfj=`8@BvrK+a%s*@Wz*m@*5dCNQo5;weq%!grDISJOj5p?v~^yaVxlx zH=grbz~_m+3-L$OpMvSLN(z)&g@ zj(4j;y!aXF4yV$MEg_z`+7;~_>`_Dxgd(ZXKr$MMc12U>wARL@p-}W-Bs!3e;b_`{ zbh2^DsOW~~w(SQLj*?9$2K)M;O|W3n!gWbvg52mbfacEm88Kra-=gwX- zDkT+8Cy+p@H<3(t4tC=R+|xsSiO7ED;lrPKn~J6nP+QMHDAC=Gn8Gec;y_fT4&l&U zYj@5ux=Zlp4D3tyhYodx4~Zqv5yGjvUOsd98ynM!5FMO8G!Sju$&+xI8Z7Vb?i);(){mP&@H54Ae(Y}jADxDaL;I!X3N)PTCO2*PrV^*jqK8Uk* z52{diGKw>WQ#e^S#nK<`W2CnQ$NIicp+^pMBKw(oBn6FX7Edo}LLT~}@t$eaQY@#^c!m09N;uV#2{?OIx}0%t0lj4#2SOB?fVn?uUFSV~4}teBr&g_py&IO;X( zy%bJjAf*Q5Xjl@s- zSg@dRnfE^qwF~>xgYoE^o@hLpj71O)CnLRU%wh1g3wvr8q6@a3&Rp3ec@EEC8KKxA<~@{AJd(3RyVwbbHlrg zud*A9w4Tlss&E9YAAXCaV{(jlXh8DaoeW1pU9lbs<YllLIhwg&a`#`vFFsix-2GeLoVgOt9 z=B=lnvVJQX<6vi~13e8+8Rs$VsP(b_a33m{RM~zs1GN-o3z2S^n@CED>Rzq$dPj77K(I}HkjlQ1Jta9uox6U)V1naQk7@7lS{N!}9o$%J8yI?rlynnx zGLKYGM&sdr8Y2z*L!R93jVj1HJ3sWVrWtk_Y z^i`gJ2D-C)a`AdkGBG$1i}%=OjuBt{mD97fgi|crww)0fO~-8docdtIYi#^rE=Ok} zlO?#5^CEVEs3pgZD+-f@=zfKn0;dhamC9sdjlu*5f+M3WnIeh)0TdP`rB@y5kM>9U z2Sx@^X*niGuz4`PKb{zh;|l=YX&jG2r-r+hnsJBqmL;INO_e?%?R{kEgs(Yfkw+RC z${bOtBxaOPN+-YiEwPn>izD+aAFg{w!mTTKIrKrhy}d_7aYF zq0OM18H`ALv9ezhFzK8AURuKe+bv=Ui>10S4@pMT=*Wgfx>IRO($8>K6-${Rg_WDh zDsf?NQps$vRvM@``l!$bRL|YaoOIVI=}|DsB}1u0{hgRXLI=lB`iCDI7?}WZ&;m7y z3C!5Fu9;m?8@;e|S0hFumLtY$bTHvAB|}~;-ktbh)h)cMO@_0^#!!eBVIqK%!kr&B zU`HWeXOJ1Ak`Bvjbm&}@l2%u=yOv#=Oyol8aL?!%hb~ijnJcNx)F9JB^s}L^aGJdb zx}{F9&mA=?bw~OV=)zh!n!zr(E6yrQjb@fKR;z64OLKO+t0|USw`mPse36I}!Yoyq+&SH@T- z*!>2et@np6OvE`HKm&(g8pvf2er9SkwvSuPte%x0J&`w;V{L#Y+JE9o(b$w-6J;ul z(V{!Xub5yoYFu_)+y4Ml*fu2Fl}dzqk$?Fdie2o$r>rjCB2r-x?_&@cl8GmLi zf~C9Ue?o|#&=L&?y9xFKUOPl`rWX%&$4zy`1dpyxCpr~7muNhK37zR+L=*ef{?L%D z504+7(E7cZsnn(SS#OQZW9hbd!ZQ)8O*<#=_7*eAC})98xi>KgPaL1Je9?vTn>095 za9=8fhVONxnUY0`Qb{Tr;Z#<`lEiuZ}Pm~#FedjAa_lZo8PAB1-6$(Hf6Bl1i-GsF$|3Bvv1u`lf9syy|^a4r?kuCXJXr>=GlrPgD>=JuHU zc%ef1@W1`9<7sX7Rf`DmwcdkQOIzaM?KvD4-+_RG?}Tk%Z!olv*BSUZs!G{&Gz5v; zNAaWnV>$Y-6#mN0xg3`Nb_B-C@3(}1in7n9ZMu&FPyM+Mj^Fa|xzCwT{e^|@X~->=L0{}3ugmA@Dq`O-LSXMpf3`9Hm3>m!NUY!wFKem*l9%MZT*zIL<E8rGQAK2fMo)BIsA`=lDXHbf6!N^ASp@D-r7HOLSr%sSCSssZed1z&h^{cLT#sQA#HkAOWPkgw)qb~+AM5+@4|t3k?^A%I*9>$r z66IF|=?{E!k$Zocbn(4FW06^tXYkgZ5AgxS(Z*nIp1r#_nrJ3*A$;`FdfDzekLHtg zyfGhc#ne9(>P%ru&-{!v{pa@gFV9$~u*5KjvQ z_Sz6e{b+JPHDDzhZNLPt0sGe2GQ>9G2#OP>u7$BK54HZ34s3S!C}Ho#X0~eRIuu6| z24d|X6zo2vusby>5&{hi#4rWC&;Sk@Xb_(_AlT4@eO3u@0n~s!8APSJG$a#JbsM6+ zUMuYFf;Jm7I!tpk5;lya!u>HQGvX*C)qoX3Kbkjid;$y3Fdi)dZ=$l5WJ#T!$>;$~ z!DnHkHVhBiAkirJh>J@0gu5#%YP#IdvfG2^8_qxwSpeB`Yil*j{Jij!NN~@{4{m7HI<*#Zzb`R#xv2x{~$dRw`*I!oN!Z*N+H=#4~cD;7xLTVYQuO>DUxAK1lfpypGHZtoR`+auX zu-N{1SvhOh*MMUYXXMwB3kQ@fGH}3v%-zac$bWUpmRGGF>tX|KI#z*|vvHoqPn=D^ zwbf9{JbAOOv)n49-eM+r>3i%Jt*rcl48{a#D=!PDc=852a$n^s%++hxo`1HHug__KR^GyW zCy>9Q-^jm_Y1k%i<+5Q8i!dG>F#OBC21_^cHAY*1Z2!-F7h89Xgt^}%@AxUTE{AB- XwY=O0$zc)F?}rS>M{)#mqUwJGZT%f3 diff --git a/hws/spotify_playlists/nyplaylists.cpp b/hws/spotify_playlists/nyplaylists.cpp index 1ea50a8..e190ffa 100644 --- a/hws/spotify_playlists/nyplaylists.cpp +++ b/hws/spotify_playlists/nyplaylists.cpp @@ -1,9 +1,246 @@ -//import some basic library +//An implement of CSCI-1200 HW1 Spotify Playlists +//Author: Jinshan ZHou +//Date: 2025/1/16 +#include +#include #include -#include -#include +#include +//#include +//#include +//#include +//#include -int main() { - std::cout << "Hello, World!" << std::endl; +std::string get_text(const std::string &fname) { + //load a text file into a string + std::ifstream inFile(fname); + //check if file exists + if (!inFile) { + std::cout << "Error: File not found" << std::endl; + return ""; + } + std::string text; + std::string line; + while (std::getline(inFile, line)) { + text += line; + text += "\n"; + } + inFile.close(); + + return text; +} + +std::vector load_list(const std::string &fname) { + //load a text file into a vector of strings + std::string text = get_text(fname); + + std::vector lines; + std::size_t start = 0; + std::size_t end = 0; + while ((end = text.find('\n', start)) != std::string::npos) { + lines.push_back(text.substr(start, end - start)); + start = end + 1; + } + if (start < text.size()) { + lines.push_back(text.substr(start)); + } + + return lines; +} + +void debug_print(const std::string &msg) { + std::cout << "DEBUG: " << msg << std::endl; +} + +bool is_all_digits(const std::string& s) { + //check if string is int + for (char c : s) { + if (!std::isdigit(static_cast(c))) { + return false; + } + } + return !s.empty(); +} + +std::vector tokenizer(const std::string &s) { + //split string into tokens + std::vector tokens; + std::string token; + for (char c : s) { + if (c == ' ') { + tokens.push_back(token); + token = ""; + } else { + token += c; + } + } + tokens.push_back(token); + return tokens; +} + +bool check_in_list (const std::string &s, const std::vector &list) { + //check if string is in list + for (std::string item : list) { + if (s == item) { + return true; + } + } + return false; +} + +void remove_in_list (const std::string &s, std::vector &list) { + //remove string from list + if (!check_in_list(s, list)) {return;} + for (int i = 0; i < list.size(); i++) { + if (list[i] == s) { + list.erase(list.begin() + i); + return; + } + } +} + +int get_current (std::vector &playlist) { + //return the index of the string has word current at the end + for (int i = 0; i < playlist.size(); i++) { + if (playlist[i].find("current") != std::string::npos) { + return i; + } + } + return -1; +} + +std::string build_song (const std::vector &tokens, const int &start, const int &end) { + //build string from tokens w/ start and end positions + std::string song; + for (int i = start; i < end; i++) { + song += tokens[i]; + if (i != end - 1) { + song += " "; + } + } + return song; +} + +void write_list(const std::string &fname, const std::vector &list) { + //write list to file + std::ofstream outFile(fname); + for (std::string line : list) { + outFile << line << std::endl; + } + outFile.close(); +} + +int main(int argc, char *argv[]) { + //take 3 arguments + if (argc < 3) { + std::cout << "Error: Not enough arguments" << std::endl; + return 1; + } + //load arguments + std::string playlist_fname = argv[1]; + std::string action_list_fname = argv[2]; + std::string output_fname = argv[3]; + //turn on debug mode is last argument is debug + bool debug_mode = false; + if (std::string(argv[argc - 1]) == "debug") { + debug_mode = true; + } + + if (debug_mode) { + debug_print("playlist_fname =" + playlist_fname); + debug_print("action_list_fname =" + action_list_fname); + debug_print("output_fname =" + output_fname); + } + //load working files + std::vector playlist = load_list(playlist_fname); + std::vector action_list = load_list(action_list_fname); + //get current playing song id + int current_song_id = get_current(playlist); + if (debug_mode) { + debug_print("current_song_id = " + std::to_string(current_song_id)); + } + //execute actions + for (std::string command : action_list) { + if (debug_mode) { + debug_print("Command = " + command); + } + //split command into tokens + std::vector tokens = tokenizer(command); + if (tokens[0] == "next") { + current_song_id = get_current(playlist); + //remove "current" tag + playlist[current_song_id].erase(playlist[current_song_id].length() - 8); + if (current_song_id == playlist.size() - 1) { + current_song_id = 0; + } else { + current_song_id++; + } + //update current song + playlist[current_song_id] += " current"; + } + if (tokens[0] == "previous") { + current_song_id = get_current(playlist); + //remove "current" tag + playlist[current_song_id].erase(playlist[current_song_id].length() - 8); + if (current_song_id == 0) { + current_song_id = playlist.size() - 1; + } else { + current_song_id--; + } + //update current song + playlist[current_song_id] += " current"; + } + if (tokens[0] == "add") { + std::string song; + song = build_song(tokens, 1, tokens.size()); + playlist.push_back(song); + + if (debug_mode) { + debug_print("Added = " + song); + } + } + if (tokens[0] == "remove") { + std::string song; + song = build_song(tokens, 1, tokens.size()); + remove_in_list(song, playlist); + + if (debug_mode) { + debug_print("Removed = " + song); + } + } + if (tokens[0] == "move") { + if (is_all_digits(tokens.back())){ + //set target position + int dest = std::stoi(tokens.back()); + //build song from tokens + std::string song; + song = build_song(tokens, 1, tokens.size() - 1); + //fix song name if it has current tag + if (!check_in_list(song, playlist) && + !check_in_list(song + " current", playlist)) {continue;} + else if (check_in_list(song + " current", playlist)) { + song += " current"; + } + remove_in_list(song, playlist); + playlist.insert(playlist.begin() + dest - 1, song); + + if (debug_mode) { + debug_print("Moved " + song + " to " + std::to_string(dest)); + } + } else { + std::cout << "ERROR: Missing move destination" << std::endl; + continue; + } + } + + } + //write back file + write_list(output_fname, playlist); + + if (debug_mode) { + debug_print("Playlist Content:"); + for (std::string line : playlist) { + std::cout << line << std::endl; + } + } return 0; } \ No newline at end of file diff --git a/hws/spotify_playlists/output.txt b/hws/spotify_playlists/output.txt new file mode 100644 index 0000000..79d0b29 --- /dev/null +++ b/hws/spotify_playlists/output.txt @@ -0,0 +1,18 @@ +"Someone Like You" Adele +"Shallow" Lady Gaga, Bradley Cooper +"Happier" Marshmello +"Blinding Lights" The Weeknd +"Levitating" Dua Lipa +"Uptown Funk" Mark Ronson, Bruno Mars +"Imagine" John Lennon +"Bad Romance" Lady Gaga current +"Hotel California" Eagles +"Bohemian Rhapsody" Queen +"Stairway to Heaven" Led Zeppelin +"Smells Like Teen Spirit" Nirvana +"Like a Rolling Stone" Bob Dylan +"Hey Jude" The Beatles +"Perfect" Ed Sheeran +"Rolling in the Deep" Adele +"Bad Guy" Billie Eilish +"Dance Monkey" Tones and I