From a816be2ec7ca074d1f2c33521cd94ec15cdfa098 Mon Sep 17 00:00:00 2001 From: ramraut-osm Date: Wed, 1 May 2024 09:01:03 +0530 Subject: [PATCH 01/11] docs: add architecture diagram document --- ...transcript-summarization-block-diagram.jpg | Bin 0 -> 69244 bytes apps/api/docs/block-diagram.md | 57 ++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 apps/api/docs/assets/transcript-summarization-block-diagram.jpg create mode 100644 apps/api/docs/block-diagram.md diff --git a/apps/api/docs/assets/transcript-summarization-block-diagram.jpg b/apps/api/docs/assets/transcript-summarization-block-diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5cfa7438b4f7f4c9ad4771009384625f0825412d GIT binary patch literal 69244 zcmeEv2V9fevTx`}mENQ%y(3j=5s(@Y1nB}Iok)`w1POxl4gvzwq)CnR7C<^uq=R&l zSg4X9V1xiK``vTTxkvZ8_niCgyXCzdSiiuqvc9$En{U?4e`XfvAI{eS7xlDswEzSJ z1c3YaFTnW{Km$NTNch_~{zZ)cCLt#wAtolFAR{9sr=p;uqNJdtq^6<2NKHdWLrHm& z`63+yBNG!76)g)ZGb1ZKBNO9qgAfqmKSNA%frR7&BQ+&8<3Id5e+!@^C(Iy~CnC54 zAfzK8q9Zu(18@TX1SI&`{x;!1y$A^Lb0j4rzd%8W@6dP=KuADDL`Y2Z+pO`upWy!v zAf_XszkF4Vl;MsY*%fa_>8B}$ES zyRN8lQ&US@M_14Iu8FCcxrL>@gQJtPi>sTDub+PaB=B+gvxvy3=$P2lwCCv=nJ==k zUlkRXl$O0Nuc)hUXl!b3X>IH2?du;H9C|lAH9a#sH~(Q_5rIT~{Pg+D#^x4g|J%Xg z(Rb{RmHmAS3;TDi?9U7P%eoc;R73>$n@2VS=ng*#Ti^yx2s2YQOPlOXmn>rlMsHs*C{nPQg@kyN&{J+WY#Z zyVnNf>m5Gcw-*@PWjY7&Q6d#ilZVkhIh>m(w*w zpDJq;bHSh9;L3$!P>9krM2AwJ*&3a)up{DBcTq{)5@pqtIJKFnlpzd?cqH|RG4<-0 z`xf^_Wy#`Af6J1+7}+=#`6GdrMtDnC>@|-o=A-c&pF$nUDKm&ei&U<|@>C@uTPiF^ zvG8e0W#z z8|Q#}TtJNX>p^D}kWN{&%Cbs9ssa3XGK+^ijO{KHKcSHETNC_db-0_3YN~bZWgVa;6YpN1?V^C3^l~XrELo!GqYv^gZfuPvymmF4 zyth;-DMpo2YpCs=r!+spB{7KudLz#PiIf%CoHHhzJeTmKUyuP^zeC#6f^8i6k%4bw z0!wG@9KU=?hpohxlb$YodN=4}4C5)>`r=6iR)ZKf8DCr%Sp z&7`icniIZ@3?nj3tSfXa0mt>dP*ykzij&1~PL`Gf>vL~P_UJ+&v~+9k`$a2yY2sAg zbage9H{+NfaxfBir_!PuvBv;$wrU9UxZjdGZ569ql)+@`t1}_xZ@qR+tb~9#{H59Z zb3g-2VkZmE7;BGO>LP8-kMqdvF+VLI33V#I3G#VRi03OhYD zu_<7hd<+;t-Piykfh(FeUh>vzH(|6GV7kGHw;6E%b-j7~0WS$7`KX_hKIgyro#GZ0;SxofJCyaB{n33V1( z;mZt|)~al~mMtSAJ6dS%2$1n4=zMyb?^k^dGKl;VHFo-D-W_h?6C|JYMRJk1IpbQq zv25Tn-P>yq?siRiK}?@2Cw64gi-jq1XD_Z7=E}Kq;(edk7Alb6Q zE16C1*N~AYuks|VuQmx_oQg0kh`mUhalz_Fr}WIMV{6NFVM}xBmW5!#UF*RMrk)KE zz0`g6?gF8zU9-XV1sgsq-R0oN9{Fa`XJZmQp95^QzhN*Ze$0qIXW)}jM+YVlqk;C&!9hXc(;yl0XiAl z*i88ev%gM%ZP54z*UCA7QlmQoaY7A&G^;Ce6}BvFg&Rff%wIOijeqoY5qsBPN%yUm zU?^DdjOBYT_s$a~({n&X5<+sPS`Sez=GoOO9voLb6FPbGKHxu(kDm?)sOD z5FgO>>O~j2mrE34XMTJTsnh7OzRU!y1h08~rUP@drpD?p>!!+ch( z_AT@ZylIoPYL(~N0Mb0;<~NJ5;#+S&F)Df7lj6O`0_Vh}z2&B3FoaTIw|hhQtyQmz zZ%!Tt1=T)`@@F>?U%IbkMe;_~cmv#hxR=ldd~3@X{0Ku+u9AIkyk^s1(U)c36-@Qr z$QAv}ENjRdb*WzIl1L@jZGta{o{SKIk)vQt!dwipivnkZ$t&@;4?wPH+?t8lg=^`e zwDKU;W%QIBepEO4XINi3iUnNd;nv(d2XL!$fb%%#4p+DbS6Sx{s%eP4U$3~fjWzc9 z$Aqb+&ko)2@-h$gwm1h+gebYJu_|9(?+DONVGuuuG@2K-|20#Z3J} zvWL-2dKzzAWvp%A8v1$2)FM-VSKkOUX3CB0;yjN+Cs%D#lt#oH$O&ZS96hwNr68j% z-Z$F1vQG+F#A;MoLEim9N5;q&!R&+vHyetQd*^1C<;{MEf5H^(HMFRo6|Ly(T+JNxYf|*V!2&L|v*g?=9 z2iAYYw4*gh3CxjTxgwb7cfXpR_nMQRlZglc&l_SNTVdBu9`tJMiAt~{*1K5N2zPJF z&sqSKM7>y73M;eK4B)V_F}Qd|C(ZNao(!O-&d*bdvtM5^mTqP7Ac;-=5s%t!vKMO)qiKd@E*h zm*MGq0N3o)q$Ysz&L8a$9{kUdfk5qk&)803bbeAWKZ2GV0=k9Ks)m`nS;i>Vv>ZDa zYP%e{470gAON@Flu15eae@rEDJ_q!8V^C)?lHovfXZ|@L{cfkiIUub83pxipXpT7t z9E2p#jexxPRK}|B&!MB>aDXwPyq|Ly;u`5f3+PE?}BN8*FKE z!Jw|0YRQIt2Gx>t09TS*Vq$_L>GEkc`Q@Y)WwQpec#S)5Z!;kY{@RyV0xK^-76*hZf`9L98e~qK{qi`HXV8 z97n5IpJI!(6~QCF;v?ztN8&3Eky|LOZ($WZB_OJg86LOI?jt)SyVshcqLl41M0%6E zF!*Kpv?`mX{Icq#IJ?$)Vt52N;i^3;--GJm(XWNcZ35D}wm+r~=WMF%tT_pTm(S3t~mhS?MSwFQ2r+FRk0?`oTIEH-zTtW3A{?PY6YeH@NIj%5-?&LU81=wdexCS4FL?Bf6O`FyA)?l z*`rF|G_mIi^Ej}jyfJr_{Nreky~;e{W)&s%6l0vfOl`=n_o~2Y#@9nIr|QwS-cD-F zTwxjb_VT>d5579VjO^E*?EVAU4qn|ouNSJjM_)ppPFh* zu|<9C2`ek7FRxl_DtxGR&t^{SbJsE!qfb6jb9qrKLa@9E<&ul5*65Sk>f~-iA24%C zH={pQeZQ#YCGqOHc6jvO1yiN(p7-S|%f2pz3$0Fc0$nXXcR0Gqa{7;`&D1RR>R~iz zq^Ondv{6%qh~IJ7Mpo@PA)p!6;!+o>Fn)GzQ@rTe3U2` z;~ev9-@lSp^wZ@J@?ZV!vsan0nkZ{|ZVIgWu|5ru2y1MZxIbvp*p_w3u~E3}zMipC zXpRuE(9o%S2iNWqI0rl@^6cqqh)hRz_-Hm5P+~K0Pc`O@sbTv1Fu76#Zj(SF* zbgMX;Uu5@ULKymEGA+z3#>JMzZ%m>096%%H*!IR1ejN#_cG^wV7C{e75>^G?0MRy- zssX%~Us9d8|BnVMnLe*^s`4!dOQI8M3aR@eGcwIE=3_P6SL-*A)vtLTRHmD$+mo1h zf7X(@@@d9lzIa|3wGCtj**W{IpDYO-iYh%7%l0pS-Z=AMad-kg!tsubPb!5eT8O~Z zNE6_-N`UQpyvjU#cn-L@-N}Xth;T2`eF(Q(ugw8{cXnBv6_4oejY;Wwy~Il<4Iq3Y zijRLG3dMXoXl=VN3K7b>2+C^aS-%Uu)wh)_YMdLz7~VfyT-N6Z?JKuNbQ6gv2zxLX zp1!CF_AbUE-K}n*lfor&Aa_FjBA3gsgOm2x9@IT6HtkkRIg$Q7(l4Gaw6M7My5Ykx z_0>Ch08C<*J$f4v)vFIOuT315LqB_X7HCFe15R&fz7M~D^U6cI_Q3ZO1Y3%d{U`bw zM(xvwxn!p3^uwkXi@h4v9L8<44!+LR#QQa74{C|Sh+|&T-xz?O7Ve-Lo7<*w9LQ>q zS+RnyS*JH)^JjdMdSRL;>hHYbzw+`gD*0v25TuXrxUF%kQg1^U@XO}N>^)9M%<}V; zG2g0&)MyT*sdfhty0fkJ$S&Rn@TT2M>N8kK<+Mkd)+0G=Bk?&C!GSdGoGlrsLFSVh z-|{Q*nlH2$oW3E2DpqwNUc+m^@pQnU5_epa~JW1T#(wld#eZ*Fg!-PLTVZ3=@d zAX0Kan|YnE-H73Q+RY=pVtpF;JuHN46=FZQDmZ6d#c+G3%6AFm@-U@nf2>WXN*Qj) z@Wr}7<~|kI%VX+)m*6v@RDTEMw2?tUe<&F|>pBvJ;Gt0MjRS(6ng7EW0Mj>EZ+;?> zO;rd&+uJEI*-4MpaaH{Ej6LCX3ubv!DDf^$;f$*TDPTQRXXqNAkFBOz{Mi6--xW#@ z+%cWTlL*s5i>DdR-5=7d86Smf*KBOVlHTxSU%=VJ#Ph%2ECp4F&wl(EGO z%iWiR^OMC*K5;J`eB=efE>$c8h~4;1Hf6bKVZA3w#E@Z-0S6?!SH8KeacpF(jW(-7 z+uNUEq@DdqdYvx2{DPU=QdO)6rDBbFC{0=4s^FBI=VIkL?ntpQVTS?h(=U%6@qCmj zmRhx_>tJ+&B-D&wn@999JKlOiYCpp%AhtV#Ofgz(q6LT|*hmrJ{EU z`vN9+)7ORwthmBf*)W=oNm0rmzu(;2@PkSNMo41dIpB?~kRP?t+OC;|yGO`7{>Dj{ z1%+}Kr1PC?pYC=7RP*Ol#UQ-BXN+~2+m$FF?PeZpC%L;^<(Lt9RSi+XkbUk;UJpP@ z*dtO+qZxco8BiY^f#@RDulaBe@W93nTb(M>1<)SfbbXUhVe7+8HQIhRjMpbW11@Ta z&h3hX(-wd&J?b$ay;)#`AIFF!UGuZT8Htn{fJC#Ubw?g{J?pvrY;&Y0&sUeM#IN;l zM_?A%Gz9-SAX-`OG=(qwc4gT+=7=H#&XR^yeWJGx5y9iNQLzFK>YA8h)IYr;C!2Ww zJL)WW8~p{9G++?RMTFjqYwNzZ<})sD2tO+q<9QI9vB=(Qia1wrUF9(rk-3zz1# ze}Mvwe$rTG^?zuie;HHzNAxZe+8HT{6CZ!pc@a~K*Z*};1kcp&q2!w%s{tvW2VnIf zvn%l^C9NkU{*5SLZ4xfqwuknF3IC9vUQFMa0o>7K{BPA3uOHt@>S@hq4Zbk}rv!g- z`~HsT&G3yb**gCphL5y@4mgJ@%WnHQ6za>b-L$uCRJ`aX@{X^qgXV>OiNF&Q$Y8`d zz;%rl{J4J6c42vAq8>?^6UN30ZBAN|Q%ONAb>dX^}ai~mUaE{qM+h087Lu{~je8=M1* z4jv!5Ve&c70q+)r@eg0ERUba96R2H4>-3L|`g?t0Y^U+ik5gwCp&zQt&H)?GU{1e~ z{*KGQl7Wtri#~5xIZm_AST+?Zk@bO&h$UA36Unf~$`{RIA~f$FG&uMTAyT4M)UI@P z{dy7Nb3kM(HsExe4Q~_@z|H~t)ZFNKAk8_T6@|~flRF2Tsll9Ig(};hv426VeOJau zlAn=wodbqsp}qHTN@ri<&jILAe7@@s(vG}X0450w&X0mFWAe`~vY!La0X&m<+tCNT zcakTA-`0q1@z4hQ(PJT^0U)9#g!3HWGXTZj0G|VJ;o3O4@!qblknwW>IW_bgkPKef zD4=Ei51t^l<{K)r7f5|JnNKSzYbD9F=$f+0C6u?x-MzS(UgPn#;hjaQLZh^FJ>RqE zM&;>b9-qjTpg+$Q^pgd7xHCh5`h{^tKl4oPpX|4v8TSj%=KmC7|Cw>W@XTgh695_f znQ<<^@+=6S5%c#>a5SH_%XN)rdyNXG0Y<1e4|K9)6c-zgZAz7iY92;@R#pzV52h~_ zaHK#yC9!CM<(vZ?fmqRE8|69KE^-_QT|F`Hk?X#Dm`|}V;@eEUb>zmbd5t6{E<_i> zNO7`;BI{iU5evRPugul9vKCc+_<}lpbsm1{g9N8YCX|s-E*fO zJ$>XerJwm!S<-6@3uz#%8a|z&DgPYs zioPQo?)*E%Pzs?}e`+w|*-kM?S~ninAgy(;yr&85^_09l9YZJ5nI3d4c~GVW@WSza zEoa}ZJsT_42f+6>(a%Boi%Dk}Z7FN#8*OQ!9$Q@ebH2NZ28`QM8v5_MUNJ^=qS}S$kb2>yqy;Ov`s%hfA8w zuH|0}zCX(sSmg`So*quE_IZ@wvHmSWnRZYxFLXW;gvi+qFqGC2?CQv>vuM`kP1}1X zhxa%KwvqZ;(|YsbnT87Vd{=Dne zNSU@R_u_H^0|aq=C}6N0HYMe|bw8(2J=LhG=Gdy^`ww&6G(%Ki(NW{J0>|#Lm1owg z5N?+|roL5?PV>(I=}l$_m0n*SCExf; zun*nD8K#-HqmhCJO1pdnd=5iz8r-<~-Y~e#OoLA!U~Oep*$qf;rdTA=3zT^I zvD9mul0T$w&fpX2w176Gyd|L(N(fQN|&i_AEH52f}~Mcm<*Zy$%b$NBL&wlDb-L6&5?Mpr1PS|Q0y?^jAX?I%JV7q{1# zgH4dO^yZs+d}!OK`x7A}o{Da&?Co9Bw~lJZL}OU)go=URtG+)%cuY_O9Ru29yU1{e1#KJ+~WDVN34SKV-|oKp0n z4x^NNMW~q0@USlU1-jRj+NYnJ+>g@=U%P?_5$*h(X`_6X9(f)tD2S!qQ?Ch^tHK06V+kr>Syuw;2gl@7FXK)I!pP3wL5Vok=U(T zf;O(3ZhD_XRg+)U`(Axr6Nfhy!O<)xC&~|YEOn+dKksrJ$%v%3*N5G`_H_0s)1@7*9poq?TuR*S{x)IHd7Ox>57w-)ggC3s_{IHD zuH;l*1eLFy)V|8F|3P$v>oS6NA> ziQZ|pAZ$5mMfH1cJ*2l=ku?1kI6!JaBd`FQ;jRU7df_A~&GyiJphs(Jc;{})eo88U zbA2te8hr`}$Z|edU0muloyV7&O}j26e&)#3<-C74o#c%LoxcR1i9x0-A__Loj~*O! zMk+)k)*o^2?AY2Y1abx7Z85Iz(rWGgvnQ)IJN5}5-VGR7{e{o?oBZ#&J%1|%%Y@n6 zDLdiEv0|KeCed9Mb0I8PTjN&7&gLY?{)oK4jMONr_z?*kGM7wRGD674vwp7Y$u+2qiD9|}6vTe68 zaXwn&c7~~FlsCIbznxF(n`bZ62X3%cOVWklQwb=7xe*B@e$Y^EY7{1~{Wadx_^|1} zA0xYWJ$)s3WWHY8M3_z4s&-kuqRHn5_q{u|e4AbMv|*A}esLF|PPS1^A>y_Bj$CI=}nG z%Y!Gk@cxx2iXGcwAngKFLhAwF%&11e_<=xMyJj#K-Z4S z{#LzfQRqFoPfh25)p6FP^dC19+CO&JV>pgnvDO9H=H4?7bmq<}8f81v2m-ecy1S{B z_ELGtig-<0EHgXF#8X!QjK|#o$33yw_iO8W-5sj(br_bNZ|hH#`s5c+6Jr8gAJke~ z68JT~%41txl}{$IONSI)4yVy#>xepIEnAm7rROF)2dtNJp9zGj)Wl*8un+P>yAE`M z@pmrl1r(bNM8t*=;`Q=nH1v$Z?i_%0AzIvkG2*>OVJsyc0FT1EL|Eadb3jbd9|QhZ z@-Q3z4fV0ppl8MUTT&kPDSP?|UWGCR|FsI86YPV9s}f*k(9nKq2ygc>FoLFF?!n%P zz~udJJ-6jO7fJp1f}KlI+cp{It+g{|f!g1+^Is_4-|G6>HS{fsRF_Is8NJX92emkM zM7gqQ8+SaaDl7a_%X1`13J3K+?p$Ns=2ek&;>Mnsy~2|9eODasgHq&_(T}#pQ+|=+ zvJcz-o>R#Mf0<_>7!P5IKTPPnIrNzlJsd?=`MMJ~}Je*PY%v{Oo-2 z!~)gm~od) zkeKhu4$fqmpRT&7-lB=$r8KnkH>R!0i8S}Y=qGHeUva}R}A(+ zkBc%x#cecymh4mxl52v4R`A^nB>kDF4+Rxkd!n!-`e_a9ITxUW7e_h5eE4aZm zrU@DUbs4~)89hN(f5!%YH-6!E(yxrhN5{?Zx8rAa7yYNqli(kBCIX`dp`_bg^vWtF z5CgsJZT;y+eJ#n|1k17N_zeFPCnF|7Gc##LZLVpK8qPQ>v$Dw>+zQ*a#5gdb!**a` zuupNmj}piNvH9GyW$k<-zX$?dgA^If+BH5Otj!bh@Zd|hB(KRfow zEDNT86W24bEQ<#WX#BwL;tr`F=!fUtG4(Ex(ldFbDn@eD4Sg7Y1rbC_WMT+cKf6oJ z+cbil?|N5bL(T!ZPJ9mTRxMW~RP@5g9*I^I&{Ch~p0SOrQ)^pg>YzKz(cikwye~JR zL#oU9QC8N0b?|BRlzRr$4YxP}vBL77bU(cK(GGoP!#NWyiCDQkZQOh!_6?j}@)6u& z>ua>Yyj-*B!$^SQJzYizM|bz)mgJA2QYn>JKYk1Kk~RQjci^2$Bs9#wjW$Xd zSc+BBZ+S6@tfY1}%saW0@pa4YQiVe{I4+Cb!d#>xVYE-A;&l&Rsn_{J>0FNw2g*qj z2J_`#+e>Cj-F(!_2jf4jDBcet+n#!?(tP$@ z+osj#&WVAGVt$M&1te@xr#{oL)ARD&D#=J))zDajA0Oa0ncyX}^5?@>N2T_2>b@kb zX;vtYj_Iyf3RQNR{lFh!!8fBk9&1B??{wGb1N5Vsttw>CTojdbG5%o2gX~Px?Qk#r zJN**Q0sRENfgWw^uTXv@Y-;@ZHBb1E+{ZHl`QtCUj;}VGy~Jm$2jh)|?fjN&BGDd3 zN?|g|kOA=bop(Kv(tf7p#s*&>0i}l|jcM>WQubPy3N2!72Zh{Y-+TjBtjbuWMei&R zz6Oik`9j3DU&sv)DF_cOcBb;S1)Yt5gJ>UlyE|x9Y;%d`-`zL0Kul*W^6if#o7m_t z?|o6mO!!tFfA6P_T)m8Os%RT%fAVUr*9)y9S$%86!n~Y(GF3h78Zi}tk(v)0xl7rL z8lw_=AN<87C+Pu!9NMH7Xj6)a|Ey>0sBIwraPK=V$*q2HsyvwQLFz(trAof$X(5ic za;R2cWiETis|y?&fwRyh!d&U#n%d{scKOnjB^ai;oT}9wPHU(c9R3>8i;#%p&;`cP zyxvYau$GuySlakXNTXt4TM{(CgZD?Oc?WC=SQa_MH;;V-9%)>9q}#E?q3fg~t^1yg zr~sBYioW*vqKVX&uHR?N;D%erRFw=#m4Z|clG2+`4Q{`R75zM3`e)trlP3Lz{$B}r z|Hxb)OB#eev%L_^y`GOXU8S1E$6>jrb`RE?@mXEUs?g`LIY&?@`DN6#W$!H)qRk3X zeB|^R7K3-wGQ0D!wgz}(s^V7);OOxm9sgDK{2XgAz}{9>hEDRMozGbC`55~ZZQKiM zZ`*#$dVXp{h>ooP$Z4f9S?#-B^zakX^-4UibS)sA|Ir1&dVDCPfL80ToenTP0gnUf z=?$7!o!;00bW*o1b0?={La=kmqAle8kFUio7|ouFEz6rR%9WoMm*1?py| zpeEMew0G!9hy6Cdo)?9Hao^iu_l)udb71{MMT3-@XFs-B=)F?{F_ectT5RQg}aFv@7E6MP#9oQrEHFR+oUSMe5{$9+w(5qa_e%{ywuPw!I66vyPoM@ z+uuB<;n+>2{*`{g_B`e`jM=lDMoAhgF%ddB1&1*6yC|_zP>vZv+(k;Cr#Colf2Ss) zdyQH3a`3TQj)327(%F3a}Bu+zgRzN$gd}bkxL|;0l6|%y?-E+X{)ke!I#8p zIQ-%Iamc@jDgTqn^}8lkrz2Lz99Hll3Z5}Fhs!~++6V1V6n59pFAZq(KV2z3 z&0k1pzV=?>(&KEr9{lAw|A(IHPt`t0CD+7*3B10> zXdS@41AE@YCz{uJH}@@BC*CqZp$1RsZAqbsCwPQaWMO$+mURfbh72T^?+_su5FmDt8Sk)r==;B#%qC>h=*J2jtxFF z;NLvdz>utd^6%?N_)8X?*~_!{XCyQDv%e_NEYIZfdA1h062N8F9L|yqx{P*g>CwdH zqRBdB#12ILkLCW&Oy*z1HNO|a3HrAO`sYJEnAU-f%&=0Iw)tMsYFi{3PE?eC&f_jN zYP>dlSfD3ZVEaSyGmp*Tv<)>_$g5CQ3rurtupAP$@MSO~TW~-V+k$B<&;BZ|eJcYj z2aXOaa93niCyKoMg89AI@_h&FQg@RrElvZYp@z0e;f{hUN#qu|S=Qth^d9+2HSWBF zO6k1)vAB4J^SOuP?MF9YFrfn4XKE>RiX#^S!f!=g2Mh9MS;Mn~Z!#-J! zE(|3TU`XNdL{VD{G_(;ZBsgHN&B4}*?8*{?u`1uKvN~7JUKkHuQvf=AQ=aPT7#LfV zUp&qk%%iHqh9f|Gv|Gma)Eomp#qc%yS&$Bzv5HkGzJ9NU0$Oft5aCTM251i+3LuZ_ zGr-=3E^wo3pmhyvN@sLX(G%_y?cI^~;r*_FFM(FUV=qs~aJ!XULTIh9TI|U{6sQ@> zytzjIFm=$%cO}3nLFJi8@=%CNN_v*X-3a&H7S2JS13u0ojAqe5!y<7(n8)K<(+5u^ zEz|m-Zk^4wVXPjO*ToARQcVn5D`jpCk4ou2y1-w#xbge`+AjvnKN~a}Abin7rw|s1 zz&oqqx8`97FCv@Emizrki^%ssuW&?~JWxIUXb*M{^9~<#43<324JJW{8+Oj%R0=h@ z8lT{!lUvQe&bH)s87Z0&R?1KgM9XDr*41#4HJr=yC-hBj$X?+qie9cC@|0p=l z5RccmZi9K`Z5ixRXru)v7j!;4r(7RrQ|VCI{sde^9Svces!v>9J5|t{9iK}Ov=QG^ zUFRNI70Fdks*}FzANWKmWKZXJ?W&l5H*9{72r{CFO;}%{?N?-)Uy^lqdM~=ITN^ex zRG8^?#tc{wAHv(+Fb&$5DD4dk_-p zg+G-~F=;L_eJpOY)_hy!o4Z7gWGnkr@ARuZ5<7euLEzwxzc)AY*Q&nX9`v7g+TWm> z|B__SK<9qZk==kn8(OrOWx`QPDcEauWsBwU!(C4wG1F~UX3Xd_WzEsP8*U-1a8Xv8hE2K;@VaM?z2sAOa2K zlLqsnw&N@gpQwIvYL40|JXq1%HjuIU0(8#V*%!>Efqsh5NlV+`2dB+deT6#bQ-Rx> zGAp+_FHe;)Hy!&&A*r>HKM*PZZ7vi9e)d}&eWp{#**!i~;`NrR9S@0p?|t{$#%8co zo9cVE!(-)DW4Oyhlr&?+9UT+O&z%&ZUfwSW;#WZHY3zdvX}lr-Q<^|b&p%jy;s8>Wy=tJxqjYP$tvfGkI6I?!C7myVzhUsCDB6C+2vz$ zb^ph&gkOgU)dvAGQj`sZUj}HOov~mtcYV;q*2V_u#hvKRPD%ahoue*y9l1??@QhuG4LUU(T-nI%4n>W zgRo5VMa!Q0Gc4nhca!o* zfS;n-TOi5iV+mLZ2dB1C^DMjso?||@*T|7&DnNY+>e7<+iLR3BnHdG;)d7oodm}9O z`k3(mS>L?ky}fef$rTXc7K^aGN*`qZOU9T3^ZsbNF+Kbt>VaLS=HUCqvcY^#>|i&L zsR2w&?e zxku+Rl%W{eb$Q}oMEE24#V+;i)F`{tvrz=EbwrbvhCE??TBITEoi?l$B5s@d_V5## zCru^ggH_gpM={!20UTP}0ve8969fL`6#o0<{oJE<< z#wKZrr>jay#8}7ad@|(?=M0@(iXqy)dzVD194fwZQ{b$TPe6UD66nD=57}G|vk8Hw zrE-_1M+<7+jOZV6FZi>aw2asc_E_n{t_}gXGBp_u34U&O55?7~MGaay+tP*`n-WU1 z^^12kNnWfI-UcWWWVdPpLPYTojmZfp*zmO6T~%TMYxM0Vh7*^`z829S`U4evEDpS# zF-ynJ{E(NVHM&l9>f^BgzCuVB?kc7Tr;dddLK3Z|ziGD2xEr}1j9@K=cLfIcB4$Ic zn^Cn6UK?7EUB`Kz0|Z^snP>f;4EWsVQ?8Eezc!%%uQ=qtYm)!_0Mx&^A^-En{Exhc zx%5pcySIqO)5n{H@?MhS3I9r?X@Jk_HH(2u7C}HL=WcP9n^RQ{30D^9tzs$hr#wcI zPgtqTR|rv%Dn00c_I9#ODRUPOmTWwBEKMra+T-*0m#Q)>Qets`T|lxtI_gCVVwlPP zW*fu3?`=zZ4%kk_>#Jh){F`5;<7a94`S)Kc=YBsq=(i}u@5tW&ZQ8xEBsh^HYDrWx z_2@)vR?O){E5FM1cDbLU#8gRgTbq=K-t!a-)=ScPqLuiJ_RjHj<^*rM>OrKny%nak zta3>_eW12#oH0O{P#!zQ)R@Rxu!!}V9H=rUb$U<`yM`WD^gD}zSwh15xvt<9Tb0FN znSS+Fon`fm>Fbj@p$tk0;!eAm!E=ikj;yAd71}r(UW`*tB}73J9a&i9YPR?ZH}}m3 zZ0WH0%zKctp+2})(}!SLPv~7Rz<{(iSOKGCgNDT_TNMVY&mM5<%IaUC_HIldyPem6 zB}^-Y%4n&hzt?kAYKTTs_L6wYkX0iyXS7tqnv!27Z`~@dN$EWbG7(2+2!v*&h-f# zEew*=mq&#$i+D9TCG1?=*${>dv`^`&?3t_AXDs9U#H_*db~s_Ag=n->1b1Z;r+H!t z@viakOgp0=Cx%2BbnX|ceHy%!Z6q8g8ER@ZlVmu)5wbeb_ z&ACNrF8GS*4W8VxNSFO*fpNSZKf;9<3(DEZdX;T4)3=&W%W!l7uno(-2YjNCvia*q*`W`to*ZWBK} zD^YplLjh0V(7t54$#^>tOi(9P-R zb!zzv3f8VL@$8XbuQtHmdk01YHj0C~&jcnL?I3NzTpaMQ6&Or{EkG+-*{2cyG&2|J z9?b+F&`)R}dSOP9|H;DW)xd6#Elo;#jj4_DN7Grsz`N{@KbnHT67@r!89#Q3zv zD7~oNk@Y0`un{7Hq3I%?rwyuklD~U(Xni10kI_0*h?nPEYT#yKy1`rEMPAH|t+YCE3{ z@@Q#5fwsVv*-U1Oi#|@>vvGNpk9(8oZk9p%i?$mTeHo*1p#ZX}1GCZmi?~1xuy;ii1bq0OU&5s(6qP0E^$r3I^F@{?rG z0c_YxJ&f||#U^ybONQRU>hy*;ZuA`FFz($1F?S)2&(Uuq5cip0)YB7w#x5ZR6B|XL zF=t>qMtg(;o`5uimr#4r zA+qSqz94r4>lru*F;4VO9QFa$kjp%6Jh3RRDP8)C$?}*?!oei#mY2|e+*PIYx}-i> z?3o0n23C%B*1$X&$SK*b+mzZosw|L*@+M{oG-~V}_i77GPS|Zzsc1=}8zPVfJf{8G zA^E-INPa>i{*l6Ki|oiU=SyQ{9m}Fnad?`xo5LN^ffkyr)^~;$YCQLu*|vm;ZpZ!z zLTK*A1UnW$XuGooWB1?;&Sen!L9^_WTMdnQ$gjGfz7%M2zla#+lmjTf*%(%N=!0u@+Z4nq!JJ`O?jVTc}==4j5P#*`veX=HrW{ zobW|X*e^Y+bQ8+rC{a#c19;P1gS$K>sI|;7nl;aS@>bl{2k}*UO=oJ?c!;*yg)4Lc zDdCBlihphS{A4)%cePpY(^Q5cwQ(=ay1R~1HPB6Exg93dIe;Gc5!p$74w&ck!3Rwd zu={^^h6v3l-&6*^0xu@!gG($n+uU*AGm`t6CRzd=T7n?CS?_P$xk$knJl2x_;pYO9 zBR2p(h{YZ(KGz6kgnTh?tV6Fhdsc7wD>^6wqbEN$w7EFteu_n?OPQ}YQLtW+f0-Ij zI`_@|9N;i=G9LBa(r+#XQ5?Hw8E!rWCxVu*fK@p|wGxv&JCT4%ZK3oJVqWBk`w{l; zWdXBy4au@_bXX5nE|=q2d_}w9Tgf2BAzv7AcQonjBD)1HTKS8L+P<-iQpiIO)vUju zEd(QD==okV8_F4FUhiTxKSYO`2mQ8w>x!6<*w=9(_rCnB+$0;B0jaA|HMk4tsAv{l z7Q-#{Sg9o?xkr`Usrq{)$UE#xo{O`E1Ou;m*^N>Y7j9~*O7c5wRuv!Zr^xE+Q1HsSLMN}W45e<4KRWc4;$RI zC`DC(x^+{<%@lK9w=Bl`pVwU#7j>qmks?)`&O|B1RGl$(!$8Fw3|q_!3jUAZmsNqm zuQrZK=bR%x2WAPTFfB+|@OmlO;ZqO@K0xZ%lfvQdFzrgWV~72fKv%|1&)4^stX2o2 zgfhJ}uk`!I>h`>^0XP8wI*N*Az1-B`tB^dU4w8&bBo{4$44Sev;HoS1>{cV7f zxbZqL>@bN@qQl4Tu_vYaH!F?GRZV+e4B$%O&Xk>}l8^~ONkSss^&e)mGo8d(Ni&RZ zCtvII9`$M8CT-I-O!okoEccRxMfsku z2{EQ3#bI~pX2(7UdVUgtzu-4{@mlZ_;f-rtSfGaORh$$y2g8gqtZm1ne|;yn>uKIl zKYcKA0*({CwoC8D=zKfUiQ^T@w`$bHye{%8fYu44&bIwrY0wiaUOcjEpf+_?oN$0&!KRw-j~ zo|#YZ+iY%%UAuNz>stS-C-o?X)ld3h2(+oEwULrIoyb+2X(@o`Y|rmdnGltTkH>@0 z{sj7Dxn|+ZzD`|4KHs<+&!IW`#>y3J#{4wRaBD?X82v}96qLeF(1z$2_ zJCb9jHZI2OcBL~3FuU*!kClqfc+VjWL!U}`zK#!3z`CLN{%~a!KY#92 z7}XuqlO|RcPnvBzXObe8WnA6MBJT94hBq(->$}RZusBNbp?4e6`LG!Q%5geX?2Y6h z!nRpGF})fQqped@_mn{~c4=!}Iq{9(G!YSyPNIDWB%rQ9x)eu2`Z+`P_|d0I@U*-9 z`j48M!X89!Ew046H#K|Qt8_FZc-2MyG}AId-VrQSe^vlhM^ksKpL8V2&^AogEHi8# zlV!T*VRAi41rdbNLQP9Z0ftuiO+``~hnIKokj#NHG2`xc+!u|FT716mT1;}s8X!N% z&kA(H3UuYAE-mO(645?$tM^=YOhJJo!8N&nP%nVV=Gdt^6XHLiGI=QFC_W_wG9+P| zT1k5Pa=~cxT+=X1FHvQ1>qMR^Fp#|E-wgxc|46CP2Uv6$5@7%CBQC_C{uAN=_;IJo zK)r7y2EhB6c#NEJhqeSme>{@>aX`X<^ML$c{vqt&t;qVF=*;hOBCtPuWsm}HN&X^e z@lrUL3FD?ZA-3I6wq7#@5|TcI305d!&kBP(8?Lb{Zp0GaS-4$-^f_|#2iAqG42kXRRf(#AD){A4#MouOuML4pEdD8tblP~Z>ZL(%J^(#k{i$mzL| z>v5%aOz)GuQVaw`? zQ1w_FoCuwsmbWCIZDcc-lTsG^tH~6kewlu+w+V$KPW*F<$w@`C@ zAk4h#$2yFx2^TG%MstU;J@R=?lOQ=r+On9HeJj2yQ+YE`QojV??sFrYXUCu_D~%4zMrX*~#_Xs?$^A{5YdJ|WcI$Wwa^YMgd7@8tI^Jd0o@JcgOOoMA+3TrG zPC2hEwVgXQt&6Cdosw{ z&$Vruu68UpRlyHUtd&X)cj8F9*3c}$khG{OTtqN6rCRWsNZyb5ucxNp1CwB1gqTcS zZ2H~#`g@Q2&uYWIcx@?do8voIriVG7(3b;TE_tB7BJTU`@)rSzy(Yh4jYI4wKnn0} zaylEyq^M%!v*HJnj-P9rUifgoV=mM;?UyGBR=kVnDT=-S1y-uHb#ml4)yhnIZ^w?( z(3H3^!OIZf!Ew|`@XmKE=q7#$tb6usRV)|H+_S_vaViCrvQnYxqx5wvP~9zHe5*4)(sE!>+9~ufEP+_m`-!(-2Rk2ue=xDvl1`W%um>o ztr9FAqS#+rnbFCSfahIN&z(~h*X+%BjL-u#=}>5@tz+FTViiezO-hZq33gA2pnq1k z3%fz$-6;*G4-q4^qP|}C)RFj{Vvo@1id5&f_IJpv9THcQtEl?q8 zw9<{+3LrZbLd}FcRhkg}7JPra^gxp{SwwZ&;$>sxHPb#R-`?+WgKmAd8Op6uUL8j_ zZAQDZl-6vS98#o9ocUwhp2X`K5#rwZ`sk$@=VGw%o%KKvM|X1Tb&SyJnK3N+oG+u7 zzOMBWw5e9IrL=|=FL;Y2^hDJ4Mwr_TtU?#sDrCnM`p8=6a9Ofl!2=tRy*J`a{t@bI zso7raFy@Wh{DKjPWVExQy=b(*DiKG)mL@uaAzhleOBUOg94@t8ye)klv9-I^ebART zb;wt$kUsYIR{iyLLs@qMxXe~?haAb>=9P>W06sFn)mtXs+H+z7RyQP`UubGa_KHl8 zAO)dx>mK392%-#*+rz?rs2{&(M zCI;R)0%RFsjkqNN0j#R1Yndry51LYyD46PND zJNXk5^L9q>pLZ_=*u3#hcCB%$dMd6@N@8vID&Lts_!;)hKgvb_&)7r%cK!M1c4KV4 zW3=cAUsU1!7?xW#(HvTX_kxv)?r_IqeV!R)N=9O%=DRbl_|svQ)zCd5u5e?(SnTb> zR^0P=1)B%Qw`RrnNi;t8-_~QqiagG1yDDoVgyBw`iI83SFeez2JEuk-=xfcNeziHB zC8Q=;f;51^5mspJLF9rZ!GqNz;6hI9T|Ae&rN@PNn@4jGGaM}}ov)Opm8g;2yqBqUdlIYY!>?)x=}X4H-C6&g zFbnxlfRBFMsQ>afz5%GxDj;=v-OH5x5=!LmC#-&biLq9e!oF^Nsf#3GExRsu`i8kJ z!w3Gs33j=@kk{UG*ju9d3AVEIyQdr;2z54u{HNJvOn`>z6Lo8q`gaa{C2GQq2{=y^ zxb?J3={8*xug-hoyA?pb-W&H-Fwb1FBXlfWHe9fyP`GwmuRicY(ml*vrtc&?Tvh^W zWd%1Y3;MMqfE7fG#@CVbk0~@28)%;q2Ox0cyE_)GArG1CRk$PQwr+I@5qe<1`9hMj zC6Ctc{3gSO8m?!}Z+?L00!lh{e!;SS$k!7Eu z_INGlebDnEpAX761%P6yBMTl&%Y9gL{S6Z*yhr$1|L8;f2Y&uLJ81diayCpnkmaRC zIiELdXB=yg`ds>x?Cn_qP3@3Hmn@mDdhrI`QT_9l*bK3u8vW{;n@RTtk}P9Bw&ShZ z_F=ick4rB-zX6mrbOw-n*!x+4TcBvu@-WdB%kuS<{&iaW;+g0oeowmgv`B3J94t9p zUeneTv{k6D2Hej=@$31}S*E2}enx#j@;b+LWFupbTXghlLAel`duP{Io~$He9vJl# z|De1L?-M#?#?uCG=no&{@x@xVJ8l;?A1Orsz_uWY~OjxTBxwOr%QTHD>D z^V@lT@GBoCNS+QbHS>JWReD^e%Ye6hkm#)t*V#q~afZ!>qn2a%YcdGzjH2w4B~6;x zG6HC-#J^83?F@6=_qr7BJh^eo4DbY|P|bhh z31|R30jPwz^w8RHJgyoj28Yh;Nh7}oXSxb!y883-(_3-vfL#?U2~b(c&vvRV^drm@ z$V>o)tRH%@p?YL-WH(+xfD$;oiU9P#fw>q?2>?97-IbA3Dxd}$HU@wREKnTh5%_>@ zmKsoXNd0Hv*8iZ#U7(}>lVa3AplSt6p5DQ%0*RZjz*8v%k{O`5hQ2N{xLYt66?bJg zA$(14>xyEM++#8VyyzFfN}|{Yy0ie??7c6rUSt8ftW%+Upzc%mVhfg!^uMqpBq`U! z3k61mMfu9RX4*5=heEY!TPDnGrm4564435@!uk`IW;x&Igco$)kC{?!aBMW4_>t{< z0rsndz4FcMCR!HB;f?0$TZwV*l-!Xa$WR%tk+y!=R3lkZdeeKoE@hoS0!9!-|15iL z|6^eE&Z%xKnjA@qkWvdE#5luJ6iUungzDi?Z*FEx1GHEEpdxv{ww2YQk=r`Y-}?yIS4N5phP=s{}-z#YeF2CrAt9dKxtI zP^gZG5{y1f{MPpCp==WcTdR1^zAs!|S-mdNp07ql zgXD3#6-BlKe&)@FXoQ_JVq%xO0M0jQt)D%@a;cEDg4K~~Ua>OlUV?1hSvFE$SJF5z z)%B{ji#0#d$}QUIUdKX=6hhnBS3DIV7~$=MP)OB5IaPm*PSyRu7pEr4=sxmtyla%y_ z1YUhc+4$tLqDTVvhJClJtpFK0^|G(WBY*ty+Wl;zT-T_!GWrjITZ#krRi-KKfRrp=-8QJ60lUh|8rgzV;K_=S$xhIi1 z^-W`^nzryZK^@EPNtXq&?YtG?QtqV8Fg%4G`;kMWeV1fdk14q+P$vKmJ5{n>EpRBm z8eu)@t7l=K9Ffxk6^t>*4W@k@|1=^oTgSDL2Fq`x(9UI3d|PzW^_plQ1zp{^iTIbt z9};5>gM$?fVv2+f0txB2SMyM1G2~r-&M@0t!#E0)Q&nRX4{f5{A<^k;l zYN@-NtDLWU?dN7fJ;N6g!<1nqWTwmgxEu)a!!KPz{{6*>9^_+CtDX@BdJhMZn+EktRR-{{#JiBfO ze>;xiNQ}QI#G+j?Db>92iq-x%&3d0^8vw(-#nddy^RbkJ_%_#EqX$+U_F|9y00w2BK@k(9suEN$yLEU~ z=%W>uLf*TKTLhxm&$1d`bvg6J8tPPxJiMf)X`*OVpGY5S$tyAe{2wwlU`l^JBi~yS zt=H|2^Iv+zk&8t?FWr5SZzG|n?>bi%8X&m2m!}AsOzL=v&ljDy6T8|CW~~_^wWpu1 z*kIaiGtYs&wtrstnuOdjhoitl1V54U)pu)e11ddT_C)4n5U|Ox_-aEjU~|-j(S$Eo zHpJV3TCI7eX3=x&c-Pnx+k~t5Q)lEpJ72?K2eA|EZO1fPqH~1FU@Kj?5*0t1(RD7W zd*U%&>?W!&`5?nu%^G5^Z0aPh7}>$3>{%fza=A0mU2+eJ4-X*QtpE0{(En=Hw4=M; zzPX`9OJ@&yxZxQnL-5gBAG0n?{Qfwkc(o@L-r^}uH`8_eExgw7kWjSQ*zr1pMuzK^ zqJ^fgBpn58=1V!2kGh=PqW8}^&(d}eN0@U)x9B3^;;63%8ur3>8XXm``q&8GWxGCx zH-7p2njXl7Pos0003@FW>~)pUDQEZjG-LVnqZ70Ag^z`99&WhBHSC34zP&4V@OW4f z?qDU1tS%U>?FCs?);Nl&PYa3hNo$clxtXj-WhBq1!c5~CEew22gsTg2d0`Y&*>G?i zlXb*l6tSVNbU7dasL>D)E86lzMfsUis@1=$?BCCJVD8jlc`%SrRC;& zPde?yL_hx$F0>1c01t{E2M<>kSz;|^SuT)ab#yo#i2{`zvaP9|$DVE8nVU`Emja*T z9!!Zwtfy~lzMX5S(N@QczcznK$%>~+y)nFt2mBV-M;`Odu>g`Xp*#(`f{4TK0>p=l zn{!Dmmug(h6tKvz64G`J5j$KxT2P|4U=M6B=oyo>v2UaGRYoaBnZwmBR7QOjNY@sa z$|@b1au1=8ihKDl-+7m{U_$jeOIhbLdlzLpMB>O`CKDYRR=oXOD8zv)c;L~5Seo6u z4s`Oc)Kbv#v=Wq@e6u9*GK=vo54kRfKz8{>pv-3kW*k80D|@~eK-vr6!=E>qjc^dO zPTJO7bgJmOqZp!xgHyNhLRseV{V)c0)}SIx-F_D$ISeEo-|0{*Abz}W%OH`$ieIlw zAKZUR0MuEqRSe=R z(*`?0;RBUgRYdQFf;3mogziq~Oq7(DIPo72J@FHL;uVxQhNx{=P7Xptc4OU57RCiOZlnVH&7uqx;|G8I%e|+-dCe$dZmmdVT4s%ay}N@ zN{vn%Y704ZCfiQY2rC2K&67vmHs7yhcGsKdjq+X$-X(72yrqmAUGU{feV{-0oUdF{ zbN$55ZrRm}7>=f?Y+btR+gN>$%=AmU@0cSC74B%wC%$n7Q_2u+rwf?gH(WGOI?BK` zgIM~0XL+)&6=DJ>-|d-rJ(EW>z1%4qqMw1kCwLIUeIi4Sqvl9b*JRr8)KL<}W0*uk zK>zVI&V#44&%WTv_G5490FeEkTg8AoD8O&|5#oL!|MBLZ^C9`^*YLNegrEH$xKjO) z{`kb#d(Iiq*X;}NZptLToWJfe>-Y^}@TY9=f9{y`_c@h6^+*05x9|_N{|k7S`oVoD z=XP0Ypwjhj6FM#!bO+I#YHupYbA9?C)u%Uv#Eq(GoP!qcYf!8W?ovT{a&mX_F<>DQ zD(XxFNti7?RVcJgk!}lhZ}3nz+Mint{lt;7$+|>n*t$>G^T4xxL2(@V_(hU9^04rVVMsf7Z3+ehSO1?6wt z+oD*7QxRW+1x1%BAjL2likaHRgZbvvGn_7sQPr~)gn}`bOH+`g&7+97L&U+K+~RB7 z2zNocsBfJzq%&dB*QZ4Nz_4#j4_X=R`8;Yv8TZO)pT;U^$c`uy4I1f1m!UYcYYOnE zY4rOgt-IqG2hjE%+MDU@XpL}Rj`D4{&3b*K&>-{t4KDv7*K4H-73y+TH9YqRtwK5+ z?tGjtgtJAa3!%ayYn4F(J_sLm^PN3Gfdc^zrD{p(ulLJ&0l6mF=my`uBCOks<3a!3 zPYu@tWm2+QoiJBdH6oX;qw&MU9Kj0cr|E1n0x}c+bDu^zCLFvJ))l8^EgF2Xaw}4; zzY^-s0^b}h&u|T39pmTcV?R%O-g@^ zYh>Z{tmuPN@7wR?Ic+N${_L2D9RGoH<_45RS2+nLX+SGw{p8VfEjjbRr8VSN)d7(O zMbR&F+qI8y20axsL|in+Wh;yLGpaN?Xq0K^8mcwM20G5A2E5n$8 zC_}AOUTbrGg$6I7AOX?%cl-U&$Hk3ra6aLE4w7R9Ksbb7dfSdU&VeG>&U5E;T_D!= zL(5DpkZ%UqoIf=GZ^!>LV1F7Oj}s7vTpMGG5^9&Bm}Xk6btJ!EGqIa8H2`}W%cVC5 z!_jA7c_ov$QKKn$>E{;e->!MAnrLH0d89A*>M|ijzLS+|0;E}NKh2bs^{}{1<{b^? zoOFtCsIlQdHFNjvt8xV1oIyZ_`9gR^=%R@G{|WDwD9nG{3-$-?`p>;fKm5}FZl}Qf z{)uh%zkWOQ9*L3xtQ&h|IGbnoxX@g&`Cc?G3o2QVa^3N9-RPU@V{;2V(Q;2DXoty- z4(xbvgJ=8+G4f`k2Qgd+C#Av@N+kSj_a=91nxkC0$cm*)D*I}is&>05h;ih^Sd&rQ z9Zamr`L@Sq(Z{BFX+uFjtql?^`jYsq=G9xbwZimxx^UvB{fqF+fRj$Bb> zugeYWP@58QK6y)i%@64%TXs;JCEIr?w%N7bMl|oDS}k?RxwN?+qN>%krplzE3`smdlug@ zgrz@tc~6eri36+dvWrLp-xtrehSnKQK*@TPw*DH>j8gjEo#d}2Mhc^mR(?rA<9H1* zi3lNnA2kj>OQO(A1-P5cNWEV5lwrPsc^?&Ls}t!e4c=@G!SNFcDq`_T&pBb2lIOVk z#h-Z@IB+sckA4-@--m?m`}tv0(k=ah>$8RGqB7~()@%bz{-Va)+cx3plp6S5o zPuk{xP6_=Zl<6Nhmp}(#8I0vM<&1XzEMu)KnBpD@CWl9A9v<04x!rhHkGkp41ds3q zLO9{dEN*hFsS4iHwdjHIBs1T&VMD8a`;~SetqT#vaHB` zpS{@RF~|$>L`_?$j4+xuDa`9gs>S$$pU}<;OohWC*7$Q;XGv5iOocs!#5Fxk2Q#)J zM2^u=MaxvL3Q*rgofp^d7==~_(7w?Yx$(Hj((-#niRvNqL%EI*WJ{4NPW}=Q-ud2i z22|WBCzEeeZv?;PqgBxMQm(M9DTQ#bH?2VLP zHj*;SI^gK>e7)6kakqKePZzU1|9!GGx`5e0H=0@<6Th-Y0-1pCzQ{DfB>5CWgbp%j z)e1n)q$SDt?&=lL+?+?vHTt1i?^SG~R_QJ;TQL=TZt%O6dBUrrRY9}gL&#|k;hX_0U|DZ8T~C9jT^msy7dnrTeR>Qw#yE_uITJurn0JY-imsA zM{z#GngB|GUQG+iV5j`bAi;aq8J27Hgq zP(61MW~IWOe4?r@4HIC>;`6T8{Fujb9Xpz>0$`fqp}xSjWyAc1F%fxo{%q)&ZseD6 zrmc|^iB8Gf#g=}t+@?ac0^}SPG2acVSG=#hXtClyZW)0iq4@b24)w;`R@6>1UGk7u z8N|7BsC+A_YQfZdc^376BZ*Jvd$M~q41F_>Q42S&2&mkA-AcZ3{N<&u6e_~`RHV!= zkCfbGJg25*e4)lm!_D>yl>Wu8}LaV&}~fUcKb*}db{_& z3xToQcKC_|Hj98{bNXLIp+DRU{;mC|t2_Sf7ydD$5Sw zPYFRzdNFCndc9MH&kQFs%{v&Am(T(_}1tat90gL6WM7@Cj}?Zo#(Pl|{gnJ+xI~$rKaN!?XitlwtC{S2Zf? z6ZIVlqR$ptFs>?m8s9#(PLjb#8fLZH?$J?}Clu>wQ3ffSJMK|e;FqnwHtyiwfYmxF zC|EiN=92%&L86*KEL>FZWQSG_i`+a5st=gLGKrO{b?gB!!Sj?Q3Usi&CzHZ(8e*HP zS^OU2sX}6QO%ow+)h$b#FFkkhLiIF@voP5`t>kF`HSZ3- zl8olR9qq$Qmbmnd-AYdhpGT*heH6cF%uFT!)XyGicZGKwxJ5=CNJX8f6}K>{>k;2h z)}i3>ys!CeTyCeNgl_ZkZBFs&ON!3H=Q8$ld!5Udx4)i>pcRYDx0As3scK_cRk|TG zB>h$?$j7=*baJdLZjh#B@FB5|=J?*D@MB73I3TjBXu+gpN`oy*??TcAGn27bs#TJo z1N++xJ2==^;$N6v`DgN3khUIjBFxuwx|u+z{Yo0SBAV?;FtNn8-cz!*;@JAsukXpm z#Ytrs|1tmg|CWv&HEiUk57Az|&V-n@?sIA&P!MvEMyxpH zzS5*0o-@UjqSnZtW>7pQN2z02@sVG}wH+(vTgq=&J@QupmTdICmbGUoGW7DS}adb$OCP8}D=cA(-5oKZsn?#gLV?gdBU zKY8!|L-cF$pG|uIx8twC+zW!pKMhas-h4hHpnD`NqgErtBLLqvy8}$)p)NqTr;2iF z6s$eVr;;LIf{?!FMTU3~4P4jb;^cW`yiFb?!;cw2?8USZ?4FBal+;jVtso)9U8g3$ z;Y}xwuLpr=s~grV=3g9|y+&+uMASTNWZPSNmQ zeYFS$H9t)?;dL}L

H|gd^h)AVZ-?S1%QPcOp=$q>L=f8MAztZ_Rd9YTZ*Tw)Y@hd zo?Nxq;WS^VM zepB}CM`hul9xleZ#FbWpQ!cbwCYl;h!#X#o_Bv0A_u-2 zb=MMg-BF?|on*rC@Q@ngY}7anBq{|4L{#hLu4>$Te4`2f&Yjt4(pfBq`T$yxJbw45 z^6t5~(Cwl)A{D|Q@7AXaf-he>wZAVd8};1fj89jxUvZ|kd)^Bx51%t#8%ZKzut*E)QHjqMd3xm~u56F}sEKIaix$cRnH7T0XXG`1KP0=ZMAM`}+TU zB;$KAA^2n;4+dvWcg^ zk=H`53`?cWA%^RmwWHif;$?2LN3z7Xxtp~5#6b?*S$ z{6yN%O<%g(Xg9k$p8I74nKz+@BIuC*1Foexo}Mu{_+OdUIO0?28RiBU1JWcEb1FBLb)btTtaQ&JBDXa7xaaljo2AzMtH$wN;|5)og>i zVaL}YbK`u{bD7ks#*}pv#Pxt~4676nUw#OE@=*U}AS5A0X1V8jb1#d49kurB{c+wVu*9;LH>f)jXIh4X;+GnlN+jt&1*2igKAt(1^hAWks`}*&7ArpF4i=(m>$i}W zSC~q;)W{WI>1lUnLiW)8BQfQrwa6X<4~qnv_)frW90-^^lLZ`Ny;sXa&G=DkFJE>0 z72E2I19CQR%hgUZt7%yb7p~ zv30P4(;HZaE-a>YilvaK`{82#CJ|7U9~BVHv>t`pR|bi!u!XUbOwX89OufE`I;b-I zq+IuvgHr6Xr`@;|Zykd%X(RDhzpZVDQ;yX(X8Y;qBTGW(vW9cXR?pd`RzkTk$*gbLyXSj&R63vF7dD_h3l(Ap`nf?Bm9 zeS>M=jeGq2iwpM>E|EZuMI;N%>*OeI_|3G-GJzrb?Q?>a*%1A1Nwcsg$EG7;hXT(J zMH?&nueK!7*52@(r^%>(n5r4hCn#rk>VyELT?w$?Mnkuu?XD2=np)K5$uo4RP?4^I%HR`rR_r=)IRvz)hIYHl1gx zcAHd9lUsL&?Li~~l68ntUZ7-cHU{yY;sYKiL9PU_%KX7N{-bovpeTwqrf0{SUxn*=G_F~$nFInH?1I@| z70)lTCr1!VbDvNRk58}4qXmu zNOocv^~h9mUrPT3luF|7`eFb(vX#yM_5!=XB{PK5iX zT`O-U>t?IEw|#s`2};g2qS1qDB7%kyoKvMf@ZtOq+bOh3L0K9FHlvVxCtbxLst%@k z<@*BE%2kq;di#-UxD>Fb*hyH-V4?t<3_@Rn>WPrV?xEORk6fkVvy`KrbpkV-0#oEJ zR|H4XeZkChI!op^@11Bf;c;FyG>4vS*=}Bjfikwcc5}P2rXS z-q;>pg~N<)>&N*WU@AzI0*Wk7lv`a5jJ+kpHYxbBvi{Ry-~GoQs*3f45#@uwgU+ z>*10A{gDkTP1A%2_t$J0g|6IJI_*!4uQSS6e*EqYiXK6)b~++9`F9QhdphUt5qwc9 z{E3&I)>>7~vOFn5b!s%mOyVB=Rh;4XR&HBV;ATyn^IuO}@kw**Ns-=rxyQdd6fzXt zC9s*Y>Y_{Muj6kycgK9~O|%FZ5g$$#aHqEs!kxFNlT5W^3Zkzbu)h>+Q$JE5iZ1)| za+W~7v!D9Qr?JrauNEvb?`(jTR~rt-$9O%e9QQCz1(QL-?U^)Qh+Q#s_8|7TTx0KM zdsMi~B*I%0cdht=g&BoPJ)UQk5vIP^Obp|V;M*fufY?o_O$w#ktIeO-mYD}3nMA#l zxNW*bUj|l!J_t_p6Y_pw(r2r|e|Z4O^|Qhls~(pQzqYowu=VzK^AP3Xv`M0^rxKkP z?h)1B@T`7}sGUL5!t19&xVE_+h4yqyg3amUe8qmks3?huD{0o6*f&3xH8b6bc6j@& z9nZnrv(gp;4h6*Nz7mjD+EkND}>fTcT8l-wQ%PJ%B^hMxv zFgb?2`?*yyyqv}a^6c}7H(~%dIVuHjeHzNU>t=Vf-4dN8@$@^ZCbh)iQ1xItC+>#o zuV~Ky4Nd>9s^c#bSe#!kZ4FZxFKahM9PQTg7Yc<2kl@aFjSTg4EbW2t2Mo73L&>hQ zN0T`2rAq;zq3%){T>BKIkOM!-uAX&M{VvJqWHYA8Lv_$Xs+yi++>V!O_0=YYm|5J* z5fzmQYB#JFC!y46+()QLql_z?!rN5~B8$>rLiHT4+b{{oI3C?{sR~DV;W()|4I94N zVSQ)jjHd2g;u!@Q0zp$!j9S-o#kNAbqab#;Nof;Fj0Z|1MURpTFbvz$3$+mH8&N zo=de=Xe!8h&wR&mTUgSKT7nNP_VfCoCf|iSB$Ao?uOz;@5dnTqOY|(a0;+VP15r{z z$wt(k$;_Kf3LcPiAfF3N2NfEE3*H6ytS=dx-;8N>Q0BOiXx_}ef~(OLfEQ5V5l3t{ zZXXv=V5=_~b9OLp9CG3@gb3o`Aq`K|SOll8VNpFaSX=TXL(^siucLOO5NVX9LPE7t zF{-_=bS9>}48KbYd$%H1=qbfN3)Qem*yGHy3)CHs_>zOL-f z_Z=}YZbBoGpoA-scb7C`@F__G7T!!wPL!zKMn`<$)i<9ho>SQ1!fFC$_w+D6*6=SF zFGP&2++@unzb(Cz!5Gu|@GdroYU<-i#6qX$l6nx>E<2I;lU8e6=BGv5IrY-g-E6^f zZ>mcv$2Q~Q@0u%h9%ZKol3kWOlmrf~(U=R#hu=#_{+3hsI~S{|-vO%ukuk8y#yR!O zwbXX51IN3U>e>(y`2u#U{ju8KpR3XP#k=Y`sQF~ZkL7tl5-=QkXQiA1qBqc04GGi3 zM8MOev`}Wrxk`?3F!9}DN=`NQhT5iBb;(_2LSa6fB@@Rayfwbb8q+5eEA_FWl|{C! z;;9dSTe+0R1oBH<*G$t?d%}%;fh%2`D0Qa(qV4w-`Lcove)I}hz9R@dv{+l1ufi&` z25C!?efss?L9r$v`_t_2aXc|#s&a< z&3{m~I_|~!HUHsdGG7e@a~p#l(^6@s(URF>K&NwQ_j*6NSj0iCTepup1nW7`@h(*R z2+*IuR>sH!fy(Z<^9Um>S$Ld3(=S+FJ!}}W?d8){Ks>P51>VJU0kWe-AE2}S+{OoT z;K&pzjj=ylW(a`$ln3lPvY~q0NCTQz$xnqm_RiJI?E!?b_Bq2hc=#5lJUbHN#Wv1=BcuN^@jMczcEQhu&qQlPVo4);mbsdnullY)!PFimQf}n3^ zzhHfyJ8A-!vY&flgF-Q2lzJP*`53rH0G49j0;vA4(D58#Y6Suepi_H?+#}V428Q0j?3QZ^k!nj%v*iWxYJPrlwr_v3_-D%@cPX6? z-{Z#N!neuxDF6p-b`m06M`Apsl}Ui zZ*GxUpW zz=vJo1Hc@=R>s+7g8VtnUB zHOk0JYjjt~Oe=L8nqpE&V8`J)-HiB5lkQ^esaxIRtFuVuq?L~+$xjFdWDe(;IoMf} zFAOjZ>S=35KI1@L_QQRI$XP>9$J=D@&muVp#G6fC9tupp`sbaw?TtSx2+uwCH zNE+bUeZ?IG|1;D1BlIkJfE(ts5`kndyqCS zGvG{zoKKdjw|Lwm>~^qraZ~-PI~n%70Qi}Z&ZPUv2~v1`|Ky=(LjM*5&s)IoO|j^M zyF981IfZyHUUb`z{q~lw*);A@?##ct>ww%9+?h?E^M0ZSVSH0e^F%nOkUc*7MP$pL z(USVnzQB5$aEM|)?`*0+PbuS@-R_YQ3g~-|0jTrlrpCWusq51Ks?7h?c)-t=cKrX* z@8Wp>Bn*P~a~pLV{MzU_Hw3WflYJo;$2e8t--&E7xQxzk~ZCi-v_@E@>&W?CUKnTY*ah5qXrw zA~5kD!=82GcH0bmUkgrI>at8!eT2Y_>8JxoRa`eKXOtG8ns}UIoyd~d`W zcI==_gqGm4U*${ZAi!-M+^u|SoR>icY1-}o1xpQIuBsZ)O(*BhejFvgB?OHMX-E&a zDf!*;i&4c>Mw4oxNlDN%`J7qKF;U?X%CMMlE(4za1VX$Qy?Al=?9OO@4U7Nbt?y62 z1q2p<<_P)M+5Vdd{I5H&ex!f5?7l4=(|k1t#n--9;mUZVu*Y=m!! zq`QkQ-~q^fP(+H_?kry!gVUjgW0$D+{f9-V^I;D6AAjbKuOFCC_grQCK>iM@W=+>v zXk$j%idHQ1mCE&1H09HndYF5&b$>XSueN?Z%Dbe~kd;j$AVnnRq}|+2uNM8VG!OHl zvz2A$%d|U^x?9LP-?k|^YEQIy(TcXhFsCX`H_ERsf$?1`XQeqae>4r1Ojs&B?nN1t z&mJBD<;om@H|yAx9(YZdi@RRcQ`C7`)_uuzG7#(PTlec(P>jlopIS!+h)x4v6<5-s9btJ9 zj{9F>!>=##>L_0sxOC}Vs%yDI$r=6q38+Yp;ii!y;2N>%=~_ZJt#_0EW(QL=?=>Ex zB0!>xRZ8?FYiv8za%{Yy>3h70p7Js&hgt8kdH zb$FbgHv#4e`5^JT zlbh;8ce7vUB=nivZ!;JBp$lFM(X9;BR#(JFuM`ZE@!)oynxpo5*yzR7?O{XkM(7O> zTig8kPd3Lxi`6ojT&4R;|-o+{5j$-2cAWM!p`b=f)Amwpu-CC(}|qXA4b5jT%q zLt8o{@j@@FZ`E)2?(g>_@%Hb9V|T`hR(4U*2l}1B(gE}_SJtB49FRf?jxjVL=%|_%d=# zHE3)sN>Ks{iy9EZbw!0C0I)VbK0EPPq+m3$?f)#mc_WQf~df9si3}kC^Ilqoy-T$7uNu zG?MXvc5d`HQ}cHY)IO$={2gr|E*FmqJMWHSJEN+>Y6StIorYhJ%TGokWe+^#O#z6_ z9-}(y8~j^1NX7X{N?K2{HP@i$vxkojXO#%X@ty^~w+w#&oHel>^7Z`TDsX~6i<031 z4xw`j9?L8s0l(F_mokE*?jJcDTPJHa9Wx{EoQ6K>VxV#|%^$0}HAyMQa##-AyRyN0 z9feGeIi>$#E2-D$b(ZEF00$CNLxmuH0cJ_UCrLf?1RX3+dQZp}$_OntdVAssC8D*v z?wxOJk>07Hmz_-pKbF9~Q%~Oto;}?O29=BW-(?0|#9+%fdorx2TBx{4s03N#s=zhj zY5il3aHyttp-j>+fvMsMa)vBR;ZkXj|rC>}eDByUICM%xvtA4%(=4B=(91vprpkQ(S4Ehrp`JmC~-wZ#U-_ z1{lpbDNUgEG_SAsE)q4y-@C<&^WJ+T#Fr9rM!zcR#mWZgoFhTBnbK#2bCX_1hh>@Y zp?g&0l6|&L&G-F?1z7CrQfb*HZcS_|Jgr6pi(R8U;h7X=x*rZG`JdYxpQ*D$NC z+0rtOShbf1D+;fMxvV@ETe%)dz*7U;Syw-tI-#5+Kw3*|6Nh&`w+X9|h^XZ+bX$9I zdVi&w+gznEku%KTvh#PF8CU9$(8ENoCR3 zx?ce;3|(Yu^q8B~tXUm7rCkYNRLVP*L@jO62{xoywe; z+g?k#FUNZ5$#7-+jle{w0%(~Gxbq87FG&OAIPz^TujlU_T`4JGs3qRYtKkkcW6^@j ziyr}~_}D2oy18RXbZTwFy+!r&@T-zZ2QzbMDC2-`vu{=fFFJs#?;jgLq|uMLC9Q1lXF zv!u{aTM3o2#wE9n{R*Mnc_)q7Z+%lUz2QBN+A)Q42@ke>WW&ej4?$X|8f^NPBx1akL8Ihm14rwKGgwyCzB-9=cH3bJhb(uxJ1? z<#E1crApotoQet`7uIW4=_(YrHud>o5iPbl7+iyg%UfIhxc-(4 z)hZ<6ee!zwS3P5K+%-_HpLL+4VS;R9kJD(#vbQ~Aw3f6ozKRL+^4ur;jj!h?EPH@0 z@y8SH!5ms}k@7*>>DeA4dp#jFnU{4^=*E;Qf#@Hu(2q0<7&pGa^sOcrUn&v1PCB=Q z8dcDK=VImqOlt~u)9Z@G`_5yBN~%-*0O~$UEf|zz#@8Z*Vaq7Np>dX~$>b8^V^dUG zvq-9ukLa+zN<<`&%3A)a%6gccShEjK-MyN)?tiW%hByqPeCO5vVz<;nF6Ix$ny1%| zVZ^zrAH%JTlAX^mpXs_&3fCHZ2?x=Gc0zynggDNGXc7w2nWi5Xyb%z=>WCeg_l~45 zmATLDV*&z;;hR9!^@|uOZJ1rsWMdBp1$sNsvrTlEn4i3QyYn@t1mPA1m9f}*DMVpH zhor_`?ozFKv#o;>e5p@Q?2g7BfS!%FM_%cuG>CC^=C2mDJH1kF3cK6uA>CGUg70?2 zB2*#Oq>0X+g39=jA`|vXb2BVvNl;$aRRsr$MB>PFupI zopydtGe~vQCEZYV5_LF*Pj0WM+=jp`Iz_ojO-+L$4cyK?`Aixk^xY6+~6Z2p9F z!Z_B4SAs9ED(AuJm>W6{Zt~SfYoN>VQrsd*#t1t(2%Inl^q>3w^0D;)nfPxUMJ(iW%i`yIdKX~aGwd|M7vzN(cTe>a@ z!BPr3DW!p!j#6?2+HA6WT#YU*(RK7a#LLso@!4)O4l<Sm%D%eQNC!U%*!z&c(6 z3Rm-Oo@AT&4_wroX1)c2F8Z=+9W^=238og!Q`WdxjAH|_%_(W|g%@G)L%ra@ z^B&R{>bnRyURIGYlia}7_knh2EsX~RPlL-quEpA5z`FxnzzyM;5gob&fNs$r(KDDj zlGrCjuJkHR@Jj&ye{Y(^6fKWUqF?FAPBgg3{{n^)u0Z3TEj7 zfU~c(pkmt!;GICrB)5YTQdmhWu6=8MYrf~XkbZwv5hKJ(2!tIv2%s6C6V-*xayC6l z^9FDi0lGZ^n}Y%|;ekb3eVgSg3KX+!GSX-L6Z13P`tw7tDXykvR?|X+-vz(IQlAEu73SaV~F6H_YNX4!z-C z>~71hca(B+h%HEfc4eS6tVpfzp-p4I_-0k$*ZFZ*Ymx4OzS?2Knx5`X9$bN_Yf;sJ zGw05ZZTF<4b8J$foewALI}t;{wl136`$bd>U5!B91k*H`>Bw!IkPqG9o2JpV14-E*80K?R}G|`0=FjX z1!#-&m6wX}!BE1xT7$Bao&)O!NK{V61mSsG)x=D%qV7uLwKw~ zs2D!9dV%HT+b!dHjTR4`gzsg!9e0xwj&|gh!w=c$a;K;Ir6)nuo&KzdEMsZ(uhE{3 z$!6Aa>(g?>81uybr1q?6``KOwrX?yeifrbS`iFdq@)4Ana%*<__Tro(igf@$KX@1N zp4Jbu*Y_VDE|W}Lhua|^$u{P82Nu=#KwD5u=lXd=QZuZ)gUI8Mz;*bZo?Yk$IWuTZ zl(8)C>PC$nC%Er6fof0&x)cxK?af3hrJB)FCeVe&haVYWl@1FoW;=LE)=LB-V&nT{ z1lssOTjV~?U>k{)6C^HX5GuB`^I4-RQ9J+5hT+B?kn)>7V+Z`bNSbjSGo(*Jwzmiw zbjb8^Z{*GDbJc`ONrtaNWp5=TD-xHXH71*_c^#tTc=yLQSzC6s%S3U+a4dF26UTo1 z9?@OH=CbIhHlBSpFz7TR$Y>B5+n*Njml#LJnLvAPmi5=0HSK5laB%c!6GrgQ0XfVj`Fo|DF1{M{)iiw&2Ic@rhJ5m&>?v}u7-ZT+;iSN+ zzBhE7(Idk6`uxW$ss_S;vP}HHV!HhcNp=^0Y91y4C_sfC8`q!-8`7-F^0%zMYeffS zIGj+$$Gf{;D%vf*FYu7DBtH(nMRMix2tMeOX2#&aN83#4G$sV5E&yivNX+4*!-DJQ z6OWk3G=H>&X`lUb0!q`q_Lqv3NgJjVgqe}{R~XDf5!|wd6PPzS@LwdmS?W*Q(Yz`O zkbxr_;$k{E0lOMAZA{m>WJO5t-I2;2nu-M^xsY0RF*K z3*=0K@L%5!K1C4TMgRq@K$_>L%rR>?W^#3w>>$j04@*&4io&ueENd)5W^Fx?lr6mt zbbb&#tz_*Lti9rcU-w&jDpc>IgsEOMTXLzzWCuCe53SV~Z&Z0-tWK_6xeXaZY^*j*HY^=r=>SUySUSMcfxn*)yzlrg+|V$Z literal 0 HcmV?d00001 diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md new file mode 100644 index 0000000..4341b95 --- /dev/null +++ b/apps/api/docs/block-diagram.md @@ -0,0 +1,57 @@ +# **Block Diagram** + +## **Introduction** + +This document provides a concise block diagram illustrating the architecture of our software application, Transcript Summarization. The diagram outlines the key components and their interactions to help you better understand how the application functions. + +**Block Diagram Overview:** + +The block diagram represents the software application's architecture in a visual format, making it easier to grasp its structure and functionality. + +**Block Diagram** + +![Block Diagram](./assets/transcript-summarization-block-diagram.jpg) + +**Components and Functionalities** + +1. **User/PWA** + - This component is responsible for making the request to the transcript summarization API with a .vtt file uploaded by user. + +### **2\. GraphQL API** + +- - The core component of a project created with NestJS, this is responsible for accepting the incoming requests made by the user/application for creating a transcript summary. + - A status response is sent back to the user/PWA to signify if the file has been successfully summarized or if any errors were encountered. + - Upon receiving the request, the API stores the received job ID and other necessary details in the database. + +### **3\. Database TypeORM** + +- The MariaDB database is responsible for holding the records of uploaded transcripts along with all other required details about them such as the jobId, CreatedAt time, CreatedBy username etc. +- The records in database are updated with the summarized file download link received from the server upon conversion success. + +### **4\. Cron Job Scheduler** + +- A scheduled cron fetches all the uploaded transcripts in the pending status from the database and add their Job IDs to the queue for processing. + +### **5\. Queue** + +- A queue is maintained to allow processing of transcript records one by one. +- These queues are implemented using Bull Queue. +- The queue receives the Job ID of the transcript to be summarized and fetches its File data from the database using this Job ID to pass it onto the service. + +### **6\. OpenAI Python Script** + +- The script holds the business logic for generating the summary of the uploaded transcript. +- Upon success/failure, the response is sent back to update the status of the job ID + +**Data Flow** + +- User interacts with the progressive web App to upload transcript files. +- NestJS backend receives the file upload request and enqueues a job in the Bull queue for transcript summarization. +- Cron job scheduler triggers a job every second +- The queue processor picks up jobs from the Bull queue and executes transcript summarization of the uploaded file using the OpenAI Python script. +- On success, summarized files are stored on a server, and a download link is generated using REST API Endpoint which is stored in MariaDB database +- A download link through a REST API endpoint is made available for users to download the summarized file. + +## **Conclusion** + +This block diagram serves as a valuable resource for understanding the architecture of our software application. It highlights the core components, their interactions, and the flow of data within the application. \ No newline at end of file From 0c9be896a2a7a164e420fdb49e137509ffc69522 Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:15:42 +0530 Subject: [PATCH 02/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index 4341b95..e5a39a4 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -15,7 +15,7 @@ The block diagram represents the software application's architecture in a visual **Components and Functionalities** 1. **User/PWA** - - This component is responsible for making the request to the transcript summarization API with a .vtt file uploaded by user. + - This component is responsible for making the request to the transcript summarization API with a .vtt file uploaded by the user. ### **2\. GraphQL API** From 62da452b117e9f7c43f8d9cd14ceba2de6b957dd Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:17:15 +0530 Subject: [PATCH 03/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index e5a39a4..4965b7b 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -49,7 +49,7 @@ The block diagram represents the software application's architecture in a visual - NestJS backend receives the file upload request and enqueues a job in the Bull queue for transcript summarization. - Cron job scheduler triggers a job every second - The queue processor picks up jobs from the Bull queue and executes transcript summarization of the uploaded file using the OpenAI Python script. -- On success, summarized files are stored on a server, and a download link is generated using REST API Endpoint which is stored in MariaDB database +- On success, summarized files are stored on a server, and a download link is generated using a REST API Endpoint which is stored in MariaDB database - A download link through a REST API endpoint is made available for users to download the summarized file. ## **Conclusion** From aba24fe6be109c13a495f33b17e78360379019a6 Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:17:25 +0530 Subject: [PATCH 04/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index 4965b7b..89a8907 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -30,7 +30,7 @@ The block diagram represents the software application's architecture in a visual ### **4\. Cron Job Scheduler** -- A scheduled cron fetches all the uploaded transcripts in the pending status from the database and add their Job IDs to the queue for processing. +A scheduled cron fetches all the uploaded transcripts in the pending status from the database and adds their Job IDs to the queue for processing. ### **5\. Queue** From bed53a936f232c50130b3c1016dfa3102dfe7823 Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:17:32 +0530 Subject: [PATCH 05/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index 89a8907..eb2271d 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -26,7 +26,7 @@ The block diagram represents the software application's architecture in a visual ### **3\. Database TypeORM** - The MariaDB database is responsible for holding the records of uploaded transcripts along with all other required details about them such as the jobId, CreatedAt time, CreatedBy username etc. -- The records in database are updated with the summarized file download link received from the server upon conversion success. +The records in the database are updated with the summarized file download link received from the server upon conversion success. ### **4\. Cron Job Scheduler** From dc50d6f94df34e2cd47367e44b2b7dcd2ec966a1 Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:17:41 +0530 Subject: [PATCH 06/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index eb2271d..dec9314 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -19,7 +19,7 @@ The block diagram represents the software application's architecture in a visual ### **2\. GraphQL API** -- - The core component of a project created with NestJS, this is responsible for accepting the incoming requests made by the user/application for creating a transcript summary. + - The core component, created with NestJS, is responsible for accepting the incoming requests made by the user/application for creating a transcript summary. - A status response is sent back to the user/PWA to signify if the file has been successfully summarized or if any errors were encountered. - Upon receiving the request, the API stores the received job ID and other necessary details in the database. From 46475e0108b541d99e0fb58b99e0cb4d132b506e Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:17:59 +0530 Subject: [PATCH 07/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index dec9314..afb138b 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -43,7 +43,7 @@ A scheduled cron fetches all the uploaded transcripts in the pending status from - The script holds the business logic for generating the summary of the uploaded transcript. - Upon success/failure, the response is sent back to update the status of the job ID -**Data Flow** +## Data Flow - User interacts with the progressive web App to upload transcript files. - NestJS backend receives the file upload request and enqueues a job in the Bull queue for transcript summarization. From a407805d5c06b2a3e219890bef74618fdd182b9b Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:18:19 +0530 Subject: [PATCH 08/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index afb138b..4f825a6 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -54,4 +54,4 @@ A scheduled cron fetches all the uploaded transcripts in the pending status from ## **Conclusion** -This block diagram serves as a valuable resource for understanding the architecture of our software application. It highlights the core components, their interactions, and the flow of data within the application. \ No newline at end of file +This block diagram serves as a valuable resource for understanding the architecture of our software application. It highlights the core components, their interactions, and the flow of data within the application. From 4065f6369b7956cb801e3b0862882e595db59658 Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:18:31 +0530 Subject: [PATCH 09/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index 4f825a6..383b1e6 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -15,7 +15,7 @@ The block diagram represents the software application's architecture in a visual **Components and Functionalities** 1. **User/PWA** - - This component is responsible for making the request to the transcript summarization API with a .vtt file uploaded by the user. + - This component is responsible for making the request to the transcript summarization API with a VTT file uploaded by the user. ### **2\. GraphQL API** From 7b16ac6a04445de9ee9302c4c308e0f68454a2ac Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:18:43 +0530 Subject: [PATCH 10/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index 383b1e6..e599c96 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -8,7 +8,7 @@ This document provides a concise block diagram illustrating the architecture of The block diagram represents the software application's architecture in a visual format, making it easier to grasp its structure and functionality. -**Block Diagram** +## Block Diagram ![Block Diagram](./assets/transcript-summarization-block-diagram.jpg) From 5f7df1052a9219add2f184ca84b5d8fb8e0d3529 Mon Sep 17 00:00:00 2001 From: xixas Date: Wed, 1 May 2024 09:18:54 +0530 Subject: [PATCH 11/11] Update apps/api/docs/block-diagram.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/api/docs/block-diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/docs/block-diagram.md b/apps/api/docs/block-diagram.md index e599c96..13f5f30 100644 --- a/apps/api/docs/block-diagram.md +++ b/apps/api/docs/block-diagram.md @@ -12,7 +12,7 @@ The block diagram represents the software application's architecture in a visual ![Block Diagram](./assets/transcript-summarization-block-diagram.jpg) -**Components and Functionalities** +## Components and Functionalities 1. **User/PWA** - This component is responsible for making the request to the transcript summarization API with a VTT file uploaded by the user.