From f72cbc4c8779e3abeb1927866feccbdcff808348 Mon Sep 17 00:00:00 2001
From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
Date: Thu, 20 Jul 2023 10:21:31 +0200
Subject: [PATCH] Generation of changemark CR: - generation of changemark MD
 files per modified Clause - conversion of MD files to docx files -
 combination of the docx files into the CR docx file

---
 .gitlab-ci.yml                  |   2 +-
 generate_changemarks.sh         |  23 +++-
 onem2m_coversheet_template.docx | Bin 42519 -> 42296 bytes
 onem2m_delimiter_end.docx       | Bin 24204 -> 23984 bytes
 onem2m_delimiter_start.docx     | Bin 23849 -> 23837 bytes
 pandocFilter/changemarks.py     | 236 ++++++++++++++++++++++++++++++++
 pandocFilter/requirements.txt   |   2 +
 pandocFilter/setup.py           |   3 +-
 8 files changed, 260 insertions(+), 6 deletions(-)
 create mode 100644 pandocFilter/changemarks.py

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4c10dc6..e470ecf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -28,7 +28,7 @@ Build pythonForPandocFilter docker image:
         - pandocFilter/setup.py
         - pandocFilter/requirements.txt
         - pandocFilter/pandocFilter.py
-
+        - pandocFilter/changemarks.py
         
 Word CR text:
   stage: generation
diff --git a/generate_changemarks.sh b/generate_changemarks.sh
index 0861f57..c50a558 100644
--- a/generate_changemarks.sh
+++ b/generate_changemarks.sh
@@ -1,6 +1,8 @@
 #!/bin/bash
 
-DOCKER_IMAGE=forge.3gpp.org:5050/tools/3gpp-scripts/forgelib:v2.2.0
+FORGELIB_DOCKER_IMAGE=forge.3gpp.org:5050/tools/3gpp-scripts/forgelib:v2.5.0
+PANDOC_FILTER_DOCKER_IMAGE=pandocfilter:latest
+DOCKER_IMAGE=pandoc/core:3.1.1.0
 
 echo "\n------ Checking for docker image --------"
 docker pull "$DOCKER_IMAGE"
@@ -11,13 +13,26 @@ rm **/*.docx
 echo "------ Parsing repo URL --------"
 
 HOST_URL=$(echo $1 | cut -d'/' -f 1-3)
-PROJECT_NAME=$(echo $1 | cut -d'/' -f 4- | cut -d'.' -f 1)
+PROJECT_NAME=$(echo $1 | cut -d'/' -f 6- | cut -d'.' -f 1)
 echo "HOST URL:" $HOST_URL
 echo "PROJECT NAME:" $PROJECT_NAME
 echo "PROJECT ID:" $2
 echo "MERGE IID:" $3
 
-echo "\n------ Generating change marks --------" 
-docker container run --rm -v $(pwd):/tmp/ "$DOCKER_IMAGE" forgelib-changedocs -vv --combine --diffs --preprocessor onem2m --outPath=/tmp/docs --startdelimiter "/tmp/$4" --enddelimiter "/tmp/$5" --coversheet "/tmp/$6" "$HOST_URL" "$2" "$PROJECT_NAME" "$3"
+echo "\n------ Generating change marks MD --------"
+#docker container run --rm -v $(pwd):/tmp/ "$DOCKER_IMAGE" forgelib-changedocs -vv --combine --diffs --preprocessor onem2m --outPath=/tmp/docs --startdelimiter "/tmp/$4" --enddelimiter "/tmp/$5" --coversheet "/tmp/$6" "$HOST_URL" "$2" "$PROJECT_NAME" "$3"
+docker container run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$PANDOC_FILTER_DOCKER_IMAGE" changemarks -o "/tmp/out" "$HOST_URL" "$2" "$3"
+
+echo "\n------ Generating changemarks docx --------"
+for i in out/*.md ;  do
+        DOCUMENT_NAME=$(echo $i | cut -d'/' -f 2)
+	echo "\n------ Preparaing spec --------" 
+	docker run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$PANDOC_FILTER_DOCKER_IMAGE" pandocFilter -o "/tmp/out" "/tmp/$i"
+	echo "\n------ Publishing spec --------" 
+	docker run --rm -v $(pwd):/data -u $(id -u):$(id -g) "$DOCKER_IMAGE" "/data/$i" -f markdown -t docx --reference-doc "Spec-template.docx" -o "/data/out/${DOCUMENT_NAME}.docx"
+done
+
+echo "\n------ Combining docx --------"
+docker container run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$FORGELIB_DOCKER_IMAGE" forgelib-changedocs -vv -sf "/tmp/out/" --preprocessor onem2m --outPath=/tmp/docs --startdelimiter "/tmp/$4" --enddelimiter "/tmp/$5" --coversheet "/tmp/$6" "$HOST_URL" "$2" "$3"
 
 exit 0
diff --git a/onem2m_coversheet_template.docx b/onem2m_coversheet_template.docx
index e93264f9c2751c408774ea4965565b0cec72a962..e59b7a310a864a161e843427276c01f11ee9516f 100644
GIT binary patch
delta 10443
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

delta 10728
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

diff --git a/onem2m_delimiter_end.docx b/onem2m_delimiter_end.docx
index 4e5bfed1ded1ae4614de8815b33a3ac60ba81044..c86f45b8583c94167a34463367014cdff113e749 100644
GIT binary patch
delta 6292
zcmeC#%eY}T;|4GG`c%Fn>hG8t7^Vs^FbFa*FqG#PrRb;RCzs}?=9TDG<mOzN5uLx-
zLge`U@LBI0W<0;*AmnsGWwGC^velvPp}RltDeB$nbI@&D@ofM7$73d6D)W?DYf`C^
zF#q%C`_FH%U)GP`9+|af<pj=j<IDRt_%s_GYHo2g{(SuYb>{OXOAgiR9MDWJNqe`#
zWdAw)zaLW{v(H&$bZQDChuU9XzqGV9A@7t`JbjFH^f$F|=vA)J<2WzCf4C)J%R?oH
zzSQWWv3eE@gAP@2pScz>OSCWN_eG{g^9O4hm0gl_MDA|m`JHh>!gu0zR!jAUgtorB
zuDtzjJ3UsvYH(9;bO>!XvFrU(f9lDd%N~ByO)Ps&-b~ta*<<e0DW&2T=QW$pP3Y#)
zt`HGCwV@*JDKo?K2vvX2Su11>bhjUS&|*7(0mmLGCo`TtHJ^ZE%(M8KXB|p^=4G(|
zlf22ls9o{D!lxf=UiP=G_2IIPyil#sx7xpstSi~SipyKjR3(F}@QKec&wC;5Z$j#&
zN{*SP{EcI{78!Lrw`lkCu<F%YVy9+iG}b-|-+B5{(9hp4w_i>4?ai?H<zXSSIc(BF
zt~_=-O_S<_TdT$9OFbxI&|7F5FJ^jpwM563-O<I9=G|WPY)a(CIZJrg+}+H!Ph>Ou
zghsAMi#7aY!<W=<JY+cStkZRusyQnPn{TI98`hs%+@ISbeK5Sz+uP1<cdqv%H+jFl
zgiz_M`pKvJJ1ct%`KB5v|I0nH<AA@WM$_BG16<}^JTLZd2>7ye$I{!2VxQl-V0vuM
z;gzpC*{y5OF3f-OJmNug#FWV!-`?{6eM=|m;oK!%*Iu!&wVU&xseNW<<n(tbDZ70y
zi}HTd3f*-)y1qw$x$pVE^9l_g?7c93KFhD`5?r>8i#%I9OIB-GA2m()YGOPZ6nl#0
z{2A*xZrW*g3PjbHm`vNB)$;hISjf-CX##<(cZ)|Itw`yelezGb4s&jesr;UQm(5mf
zvFR6h(Iw3GaV>A$^lcx5&n#j-XDt8c>j$T8aXtIa7&dO5%&oPuJ|eg{PbadV?BRdW
zgXT*<TxduZ>|XIP=wjsM@0A~)Km9)Ysr~)>JGK98i@)txUvquZ_3D6V`Dx<i4|UZ~
zAARKf^y!A@y`PG%IR*K<1uc3vo1uKGjnn?Tt^0h}O%HFKGviT17rRst<Ne(Mvud}V
zR%|TseVC(MQ!6B}-Ek}5y-j@er*6Kt^toToA-u5vNbk<vsoxZzcNMyxez76+o5RD^
z(JQL{iA;_-zo_fb!b&;YR}Kd|&uv>CHc`*Q=EgenO<!zl&K^E7b%V{W!&X6Ehb6Db
z-Ha1ltkO00n_S<Q$HL)V>2Hg@4)48Jl(ivkPt&@kFOF}F=8;(&@-gCU_lJ=5owsBK
zg_mczl^*N5{i(J6)_?Ug|5+yo$cSwA=UL9gD(=kfG-dK{K85<C*#-h_@2xMFCzQPB
zD0p<k=gk=vKkJ>jm)HYZa!efCC#EFtuMM9O+&uf>k{FJNjq~fmc5|11XP?Mkou(6B
z)VXN20IN^X)S{iSi|((tS1T5Ya8L0nQoSi8JJa?1>i75Gb)_txGWnFDG=uZ4B^OFM
zjh>e@ZColTd?b$3uXj^c{o{2jgd%dy<`~6jOnzk1bLf+owCl{R8y+Z6tWFASUEH3y
z<;n!6Ikq39F84?r=hIc*B~jEYUU858sItR{w!$m!zWQ!wH-ukhj_qe^TqXB1P3Gm9
z(`S!Od}Q~sOeXV|`q|?Xt6r-7;#_Ak*<fd&n*jUvv~E_z_tv(I8`S#tf1FdlTiM`n
zWUpe(zWxA~I9^Ae%iWyYBUVg#dU?yT6{@!+XNLTneC)orzu&*BD?cXu+>n~MlQoTf
zdUW{jS&AF2cdi$`%c&MCX_^zkR~T|BEynz=W6#oqDPhjv=CdZ~fBLo4$(`BzZT#BY
z+FNa67A|#L%a!ak|Id+VWiGp{EY+_lRR1q-bC{As^X*pm)@8zXG7>(oWGv)2Se*0V
z_@cBk+HA{mORM?hBf?CdZ_%E2`1S!e=IRIThO!O5v9n@bI$!TddhacBvLjdMuJFy&
zMR`(p0!xyXY>(G&neX<t#QSmlV%zPy8$Z;mi*H!f^h#{!-&r%J_hh`7(xi4idL>Wg
zX-C2ODeerCa#O4yxO<4yYw6!yxaId=zM6i=)#vg<161CvU`(8;)@G3^Fr%i)Z_y`5
z-gDPG=U1~m&fU=`_h>oC)UY2JJ1<4a-V^=z@lw3ENL%;umpOLXKH1w8ci$;Zv$^|Y
zVWiahcLkZvfzy+9Kd(tywd8S8__nvx`#&8vezo}P;a~xqe)0dIe<MZb@AZ6sY~4Qw
zP#R_3CThHG^5lJj^7Tcxpvm*Yi+Lx^9t!YJc-gXS^6h1{46b4k!mkY`9r*AqR#HC0
z$N1P3?#MNJ=GUz+yB=pF=OXuJ=Ej(ls$K7#L<~GbPdzQ`tovUjcQ!CVcB1CVsVUwi
zDPp$k_SHp-a86zs(sz?V;F4PFGVdvt%Y}P%&(2Wz=2wt4B~-e;+<oeStj!OnJan2V
zay(IFnsKg3>a|04{x0u2T}Aukeq9W5<|_DhpxVbcNyd6h&x@=REcOp7#YOlT4hkO&
z6gS-`WqLF&l)c2BgJqS~l9L9PTH9yyDIbl!lp~RONA+y`M5~u7yFjUP!wyjDtUoKp
zopi6fiY38Urv9;IdA)l=+hr-|9X0ZxN~uX=dAM*ID0M!Dr_ROD)VcIyLgoJ4#NF&?
z`1H1~`(|33R9+OXy-V0<mr>S@4Kj~bEIGR)Z&$N~SM$*|ZEx(k55ztBTHD%JHSN~^
zsN26vcyu@P|9SPsr7q~7r6E`KoMrANa<wXd>i4Fvb#Y+ZF3rz%HnL#xytB*Mj>sOE
zvT2@v_bkKp5;L}4eQUWVJ@V?D%PTAR@|mT-zG;*{I)^dm)ulIDUNOf-tK%PexaCZK
zG4I4WVbjb4_d+q{y?fUR)Jbf;tlN9vtvWM0>7l*fx`a^H(zqwz%na8{Uc8{m>KnH$
zNb=LPW+jdKeg-2O4gUlE6Eyw>`GHdBW^n5KwpvR=sQik<1|MPPIYt~lcJ}UpmGjx|
z|30#QZ$qIG_x|<Q@6QX&Y%QPm`C8=H&+9(4PX8CP$e^Y|%K!Q0V_VXsH=VwFvunAu
zy-D=rt4!0)BuXvAwDdWbd0FX|r=G9-t6{fifi2JB3VzwM|JHx&*0QVYE6WS72dB=>
zH6r-}^_!2i?RDf}V0a>p)VL~6Eh)*&OD_gBuC_$x=HIpu`d4@0Z~KAy=eN2{obn`h
z*M-++yM3dt+>L&)@1l^b@KtFI%XQT|{_k`4>Y7}#X?od3{@kaPX>G=b)7yl8e|mnt
zw6svWbp5SoMGyBCh>35~ycJ|>KE3<Cef_i3356H=7iqd)HTzUlIO*@B=i&eV96$Yd
z*Yv{-S$|n~Wc(_PjnVsd_`=%o)%$Loj{2g1%g>DAT~us0W8JISp}Jp|J8##ywM)49
z)+#UF<)Vc$`)1tPGQGPw@7m<<)U{l9zrD>fP<vgrJ-BtwznQvUim%D~UfO1HWs~Ha
zE^S@yj{1eUzxKZRbu;?!-g^vp&im#4*Xq2zYu4Akb)S1m`q%2c*O@0g&+tV_^of1#
zysK7QI$WJ2zAWBySM+bzHMUDLVjFk9zOnrG#LfA|4*QA@aR2;yyM|?Qzi7n0?~706
ze?I*F&x+#2*nhPL?-XB{?!5EAntsZ<*QaiDIlghNKd$sRu&zEj;LW+aEA6hYSU>OZ
zEWxV9+oE1<R98QB<>;?h%QCm#2ovB7c+OPz|Bzeyzc!^=^=}sc$$7eruRGj8dEb`Y
z+QOLfAn^+t1_?6h8;u;6hZ;YL5?RLRI`vI!<+NY?p?uY=6<@E_F<)Lcq4b`abAD@e
z=qX?I)m#;GGw;3%<Vnddub=J6BXD8Y{12yH13ei(%3n8+x?)h7*11*iu!6$lPm9;=
zJ{9q5>%)orwC)Bjl=qujqc1h{w$js8O+OCYT-#7owezvm`9-VD+}5|>IrIL}1^!&y
zZW(2xbF&{dp4jzn{jB?E|3#gQ<1#Lm&oE`zXspwbJ!57wVT#x3B#Ff)!arj_*FU^)
zhOw4+Uwe?V<F3D#wep`&oqy#=#-bhGQma;-f1x6K>s<9;16}R?p?j<5G#PBoT@VoV
zE9{DL()Wc^tP5ALMHDjYJ?B+mlzsSj<?YkQ_&)tVAZYq{%7&ABYH#zcS67|ck+;NW
zWz~&umtTji)_2ekTpA^#cqM*|ma&C^|K`P(^<9Dg?+5X(`tko(THuYl*$eYSE<5MG
zliYKet0jH!*|;gwQZ#uOwDWF#Z(k<CXSVwO0;7b?#-w+Xebu=H)C6|rt*$J6t=G6Y
z^ze)Mr-HLS+&@{eCh7mH)ZOoT6ST7H3wKYOztA*wC7Z=->(FaV&x{IZoK0=rX|b+6
z*V^Q*!u{-e>Guo&DLgcF<S$kcs>)`bBiTG-E2F9HwmDXBCRW6~UzmS$O8no7C(jp_
zlzl!>Q1j5jKKIyk@yn?WW)eK#<2}~h4w4F!+fw!K$JQ%mD|ZWj{LmVez+K>Qi)~Ym
z`Q_Zj`%bLTtZ#j}@WA4`-}eh1jAv!YWzgQ={PX|ED<@;R9x~MD{B-P&bb2=R)w-!O
zuZ8<^F8<K2yR6K5Wg;VMZym2s=q}q^R<jLR-tVx_xa+L{pCQ$vZg2mEx$_^DH5ezz
zS=MK(r|Zps$({dd>05`-9~iBk`duyLIGJJMmUZE|;+%6WwJil~`Cb}Ah5B=ry;oNG
z_F2bu;*pO`Hcc&?4ICy;slRmNu)y?9Qyy^?cX$V=sBpS|E>u>pNSfQBa?#|HymH-{
zLX|X?dZv%ceb;WCT`_yHpujr|k+m8*b0$CPI3Ki!tsvuBWRLP4&kMGy6UEykyN;Y$
z9-MCDWb{h-%CTaPM~inqu<Wr?>=H2V4{WQr!?{_;z2o_!n$I<}mSrrP_x^bO%zmYr
z(v=xkuCN+!VVfdws8HI;v+wp16O{}WlW&nd$`>L9PiZ~dbih&a(2DoFGFWs9HgojO
zYE}7qao0v3D{fbd!n+K2E&XQn`*WR(bh_wM$?@~Sy`)pcQ?A<>KRGCH|7&Gm(Q*Dx
z_ly5NI?vzjf8$48%duz2&!}n$|822QoK?Sa{-+ZMC*D!#c{}OALOwZ1hd&1H${ZFC
zEgm!9KRM5V>D|!^7Qs}D@}?G7#l9!=<R9EClKa5o>@=NC(<;{KRhpbtwevGpxmo-<
zbLKA+Y*{G%_ziEPqTs1!gCsj=^_`ARQ$8j>a$Kb`sgfn#W5#beSLF^F^8?RIT{QYH
zmMXofPq&NO-eJjEH_KI~&Hmk4bw=mcVn6ScU$pIgu%x$8C6V!<vd3K&*Xx~}+(}zr
zC%-#h;re(2JLfyyPn%fgZYVqwGsn8{%q5w#>V7AMZ90PG9zTzn^V!5<uj-uRf>x^^
z%;^1KIjiNvq1I=URX+S`d6zlqgMw?hqGznW>vHc`6_xcrSPliZ&9m2Bc%e*#X`!LX
zE0I2)If|LjF0#CxbmnUj|6NuC&JW)&p7}gk;O*NUE1iRTkNS1Yza9Bz63^YsI;kc{
z7oYoc#XYy^P>{{5JI(eP`cFP|H5nWB?=<&Ya+Twtxcgo+^E=P7t7?qquND8AF|ng+
z_0%0Z%*r2VFWz`{ep3C_Ge5%KMd`j*o_)BCZTe}!7ukWK&%6rQ-b}mp?V0LS>)$cG
z;#&PCCR(~r-(9zkfA%ZzReVYH3%4&TT+QqH&S~i_oxC)w&3x6or+*W7&s;0D(Es}a
z=iq(2uWs{u{z>LKbIrY*=YN?Ws#A-)J2&o`{F(N<VN;(42k5Q8*Rxe$Yj3?_e9Nb(
zlDj_=ckV6J7oWQ8CjaA5sXtn+|5EC6@=vq~c25-CZ10jN#QOH-LmlPKZ|2Q2KfPyj
z&pD&2X&WPtoinmKy<_5A|G8JDX4yF=eO^5A{jF75{hMlPkL?%gb=_dj8txk?>&5v*
z<MyKcS!brctB6fszh>WezU)iuj;yrh;m;}IO`Ed2UG9vp&5YZ<wFx=Wj{<d`wQUM;
zxOaBty?O5+{WE<Qy0Y%Z3BL@(Emg<rHqG!>eEo>)7vDU$XU|OfpXZg{ls)72V}It6
zWc9AeOP{Bmo3u$M`jE6{?5}l?g<qvkoNxJm_N}si?{|jRGlAN~lY?~saptX&SoMQ}
zfuU}4q@HU1K`&-Q0k#LbA6U2Cxtk*zaw@GmqE)U+^LDgDTZ)<VowF?|Q@*`DyENfo
z^YNL9`y~J66-T9g?A^)I6}4_w7+24<n2xy9k3ZCX*Ktkk;7jXT@l>+=&X?`xcNx<k
z><U>np=*VgPL$u7%(WpKh4liYyd++yEZM_w-Kcu%fx0I5()#<``nCR>rPQZ(&An{&
z{*G7I!#N-9&3cnJ>`?u^HQ|Z9pGHF4uJ>#)L2r|{DpsfH9ydt7diC`!8Smc1DLjH2
z##ILTnz@Y!WjLlu_1t8iz4F3|XH24>9|ZrZ$dY!i3H<)#)%|?+V={@;R=vLxn)R2T
zfq~)we`baNZ)O$|1~!JtaWZV1>-BHTaIWl<5LnB|z@WD|*++q~zGhNx_H6@!hW-5C
z<Xh~{PkiEVP0BqrUsl>wd-d^S`*?hJ-HOUR>EU(v&+n67Z`Lj3>G}9_UbV&jm3t~)
zSeNjh%g)|5W37f;!jjNiCeeS^?mKhN;FF_-s#SJE_xA@MS?hl;n&PauwmCbUy}+^A
z{bEXuV!LjhvjmsZo}7i^b)xm0!jrdO`>J&0f@zAtCqEO1A}{kL?Fv&kntTrBMD+Yv
z5mFS$XMJ6@aT1Hwi-RowH@YUen>D=tyO~w<Gyl!k8{{8EmiXy?X}->F(f2qjM&0Dw
z`4j!GUa9@fT6We%n{&o=FEPh<zKYQLKcV%j*4s@<v7EiB?)z{469+DT6grasvfhE^
zb;Z(D?FG)}g}(|N*I!7#EfunmOGZQXR*1#n%XaS)?4y>~gxGZ^UEq{owc~0u@2j_V
zt7gZV>^JnSsb|e)`Spm&L@9LMf#AK()wZ#M=Q5n8RZNSw&Sla#cTV%HMz_Cj=EQmP
zyGz<mJ)XvQx7n$1*U?1r;%C2q-TnPb=<^({XO+hm6$Nkhoj6~%M*VC5p?^2N{qKF<
zv+rC{)aB1fwQoLz6wG*dS^C_6aKdKY%ox79ezTLmI%EAU1CiSKTmB0?m7T=E8!$6O
z`0g#wwOwAf?84?1GhY+By_t8)-(RunCfu(>T!YPfm;Zh``*Cr9?unbhkrmMw+Pn=v
zFRpu0tuW)vj)=2=c7F-Ze^h-eXyQdDt{Fe84gN)b`X?KivC<)$@7Q6nLudYM-TKOe
zgD2YA(^vj7lkv_gs`Xo6yb4wLJjd8#dQNcDhJy+`j~V9abntANmnHS9^!Vkqe=jea
znZh@Jr~h}Z->NFDL84cjjAAsuTJZgzxkV*ok;>F*Vw(Djl5-OFd_2*#?tqFQXI8U~
z$J~YejklCOn_is~nPSjcn0Z=Neu|dGVzHIJ>ntx{I&r7UTr}>yuDavy`j!WB(+-%;
zx?L+YX~Ek`+Im?sTN`(n#AdF##$M3tKCMU0;P_p2OI@A`57HZAm`W$d2E6-_`}U>S
zjH$Pb|5%?Zdr}?0g7NsxGxvkeuG~-;8)iK<RwKD|Qc-lm`(x|Rlttctrp&&{EKWD4
z>b3ccSj(&bF4*0xY`u5q$%)y2c?Fy6%>+f;X0=J3E3NuCqt0)=-8RL2^K6?woj(42
zQ%K00$q$bvJ=8V#^32^UlF^xDwdBs1{j;p6o+@5`?Ql$gv#z3D!R|P%QvvFal|8o!
zrE~_K2uSYrnZ>YkP1OD;s<TRhIQ)_X_!d_Pl}lMYvlefQ<@UFFmHYfz@s5<T-Ld!Y
z^4DM8Iw@LIN7O)gO>X3u9Vb!^I+i8gaQ|;`JF9Ryf62P?7$5hKCa=z%`0#%*AFF!U
zh25?B(gxT5_-;Bjxxz$pza{JczSR$pCa>M}b8TgGYN%iFUs=B|s`FxEEq2QVeXIEu
zuXg8iY5adfk3~D=AFZ!iKQH;mD-->)Pt1^#WpbDd-{haMe481APqT6%hR-Koi|}WO
z<Yr))9M2;&SuI9D8a#f+#K0iU&A=eUfC45LM5@Yw2QZiz7(}@ty+eeGBLb5*M%ps9
z2~YkIX~U!_Hd!yqhUtpL<eVrQrabA%tD+p4rYTN-8|BQ@r!?6pT3co_T1OLM)K}%n
zmC?3LsXCJrbX6wbi58H7*AI*g3^E9X3=9m(x|8Gd<R+`dXfaLIn;aBl&%9ZmVe%RS
z$;oSDw3t2_OuiXo&9vEVvRJGGla|Nih*%XFc&W;a?uP>J$unY=AsKh_fml(d5WmUS
fV{I5YCyT^6uq1>sFiegLlbc)?C%~2#4sr$n;0w^A

delta 6572
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
LVg=ZoB0vfO8J}OS

diff --git a/onem2m_delimiter_start.docx b/onem2m_delimiter_start.docx
index 5b786d7e9db7dcaff417f932cb010364ed502c4f..ec52d4eb637802df8f3514ce4ca68c39763e7f17 100644
GIT binary patch
delta 5525
zcmZ3vi*fEQ#tmNVT!KPrNB%N1Fsu=n9Kx<qpBouby-`{{GayA!<?d@%=fHM1CDuuH
zUtd~ZIaxL(CH1&QKzxLd<>!yjc`O(G{ds!XiC$4rqsKXEx5TGq2DnvB*_e{{@5k#Z
zkr{0vGh8j6_nbSUJN4Q0pYQkA#<dHopKdZrWoSBC5Ibq+Os&v14$n!Km`-;qDK~k`
zt>!+&eWd=eg|f)nogEXBZ-$kIbNQ{9VsKA2O<U(Io4eWJjEM)b3$8ivPZZ&HHMef7
zH96uQEb_(i9H+vJg~{Io-(6f`cxhFY!h02g6|W}#x$LptC$C28<jcuw%O~Ek)3oTl
z67A<&-}rfw(Tkp)8XKD2CoW*>ex7Q{RL~jvZOYS`x0o(V)o+)Wv+=pGNMpFW#+?@#
zhgd{y7VVVYDq?3my{WbL|BBDoFCD(Me`krDiM*K(kGX5f;-ZyN@rEj8TYoRo)Cs*Z
zVS(k5iN-V2Qp07tf-^77+&1BAHDiQmW%hQxw~f(n*IwGT;_?P&zKQprtUHnY^u2Iy
zwu71JqR$da4-3wOc`|C(SD1hBTzHdvo$ZDnTNswJO9)$iNWEy()Yf<+uRPn&tRQ;p
z94qZvlixCB^RH>tKl+9-Wyzv18eNx<iDt&HDd<Ywe!+C2ocgKv1-Fy*-BLeo>@86K
zvFXmmP5l@1%2f;3@~gXVn8mww|H-GvkJv2R(c%?3;e%OX%!B1JA_u=2B(&B`hq8S!
z*Ab~*nfG#8*7cocCB25v3szM<x)>Jk{o?Z>A?_OP?n|8ObY2_nFj^f}p{{xNRow0S
zYIP4BvN_auyhu!ox^|_Ux%`r;Zbr}aotJE<J+2D7UcCQ$2ycb{m#6tmf3<m9=Q&(l
za>!*@=#{yTW*Ms<Y)D$U?-bAZGuCs|z3bEN6iiK9Vm9sn77q0bx+^}q-&I%?TCTr^
z>;7h&^r)2<ryX7goONGczomDT?s;XFU6*<sYoeR4FI{_BX7iJV&u850?e<JqE1s<3
z?UV3!N|TpX*p)fb{ak!X>C^wMme{A*cAQP7C&H=syXf1sYd5EUz5G-@e*gWLzkmKc
zes}r5asAZ)m168~S@xQ4{o1{%c&CK^vdIrzuSVVozW;r1^Qz*A=)QGU>1*}hrl_dC
z+Q(fGe_HuV_}cqw*TcKL{JaWXjxzVIY?yyAV59R^UB$){*M}#RooXEfwg+zJySJ(D
z)y?;oKKIKzj2HT!n!7Xi>NmsZU4^c%Uu;PI=&)3e_3a<cT(y<+T!mYmKO0qEX>4kq
zm+SvJ^6<<<a_sY#zJKU$*K>zMd$RQ!<)s!fzPabGY4W>HTjEu{J9ORr9YK3;*giM8
z_j>JeGvniquGfRUEVf_A<~MCsRn9Zliglasyy@!<HeGC%d^Pv4oXhV0lF$A#O;+R+
z+1$syoQbtSP2k~_$yR&{^?8d81lrz*-zs<5=g<4(f{5wLRc^6g%Xa@}SXbB-S~KBo
z%aga|J{Gwr!&>yj*^ZrgKL6vH1Ah+(J~`MZd3tKh!WU{TjFUr_#=HxA@qPXClR~W5
z1ZPf)@!aO5o_6u@uix8$E8Wz3x}@j~+kpvYnkKOe&sfe)$jLm$veCRLc=4KB^}D23
zv4q{$UCtwZYKaBk;thK)xdo=_>ilqd(ijo)@I|47uIUnnbpAPsvjiXC*qG`P?)>Zr
zpZ@O!6)YV04ElbpczJaN>$g=^3vOzFN`YsOJ;dYk4EsdBdv1U1aoH}@vhRww`bGbO
zr88Sjt~F}1*kNj|(@}Z<HD`lq;h)~;ck1UhNa|(rJp5GKqVyq)BWYHg?~bEROLgWi
zGj&~i;ogZQpXQtVi>oU7w%)Io{dBu7_vyQdWhFaHx2~5I+P(R=+r_;Jm!<|DZhI==
zu9|zS^s?-c2q~X5(<dJy8Tgde&(|(7*>L6G)mvuIb2A#9pM+Pdf7<-%d}p9Vg1POY
zj}l4`>))GZt1=nwh^+|8usYbwW;S0+;5!5NDYiPDtYe#!5^jZUfBvB{HMIEL?njn;
zcymlPu-A!PX1sA_>CMn7JNmT0?K?8D=Z4xv+ljI2S@$0JEfQAV`#VbUk3rV@XsQ2F
zZ<pqFw*I%?*%T@ovi-!{>qqvaxi~KuF{!-inR+6cuWLcQ4bzDa3+^!5J1zPVTzRr@
z>D~9G52|^h%Ij7)DHW>oa-23XJfhir;E8aF&{Y1cf_bWS?^t^-D$P3Pf8IDG>fz$2
zd%kY7+N1sF@lyM64W8%z58r&;XqbCr+MD9*Ge4F*ZcoeHv+wv)Uboo3t!KI?t(??%
zy7uO_c>7cQ`YY?}=I9BSpFUb2S|4~cJ^#|qjj!z)Kxve9xoG6P$&>#JC`^v#<Ej5(
z=<~*hFIRoL?{9{#3B77B3?}8g+5VoZxS;v<!6o|yK6U;5viVl*j@|dWZEhGQ@0{c<
za<@ezVbZE8r_T!g{r9zYi$i0n%QBVlNxBysBTM%G`t@|3#|)pPMQ7L=z=?7ZYNCwV
z4N8-*O`&PBe({DmnTs_xi+!tBDstCZRZw!jf0|TK!)A6rgR>olIrohgtyT=K=@yR-
zuwh{FmvE20@+0dCPj#s5g%kmfkW!D!iA#+6&86MCb}#v9aA}8k6pwQ0CC?J!m`t_A
z!nHjLeE(+giXGXL|CQswEQ^1~ir?`a;7K=aEBI;WAXs6_Qg7(DUhT}r0L|0KGkpWS
zx0o8O{NvucfBHO`zpK3;AN*8z`%u~T8E<3rV&7)}I`Zztzcnwy3|^jEk$AYMWAP-j
z$GcwgC28=AZI;@!Tcly`iPyimWWVZct>3!s`D4Q^2kbtr-Yonx@Mmh0$Tth${tTO6
z9zUwjM|C#v<eAHf%$oebt=@LFKW~S1gJi00yqIZnprJwT>f6N?=QpjgJRbZ}<{q2b
ztDDUBU6wc!<*f&Nk5t^MKJRq;k$5F+yU9PxTi&;Yxc?Uxv98uyaan2meBsZt1bOEM
zU3ikJJXJB@Qlse;hr;3JPb_~pIv?pjol^hSd$;}T1K%aKWbI$oq*Tbx%K}T3pNmDN
ze$V_cSEcSPYfqs~U5!k;q1M_D=ZfxGt*^T$y6?lK`Q9RJmzNiO`fy>!yqmLfipw`W
zdU=fh?6r#0c5msPT{7BJpR)w3%1*z%DSdyPi2S^ZcHLt4pZW7YtiM_pcC__*#`7|!
zuk4^ixp}W}z5u8DtOpI|91IMnCY!1_N_yTs{P(@}k|h>}>eZRzwH``m&5dRF_Dcp$
z?pM*O@2dOwd3F82$4~F>5<kq4^_O)=#_!VLIK6L&FRTq;z3)zU+jspC^(cmNFY}s)
z@Y>B;JN}itn6@;_%I?J4HBSp-1dk_npX}WgBU7?_UW|@(WY*QycN2WBWo@6lbjH6k
zV!tdO_o>a);_uC1w|?Z+EtM3IyMKDDeRcM}>(ULsZ=S4w8}IvQ+sgF4*4HbKmAs#_
z?w#&D;dzEHwrIKDKg?wMRc1ksKlA1FGI#s`G98<@EF-pY=j$8G+b90M|E!_rX~Wb<
zpSS<yP?y)<Q1ik)?EbU%yT2zcKeFr1@21KJ3)Z(~{r8PKG3WZ!jZc~HfBrYm_1NMc
z+ZOz(E<gTk%Hn->eA#X<>U-~Gtvfzzj>hFFuUF3w%iOnCQD(t8);0fHd(Zu8Q<-J|
zEwE-=(d71{+Ajp-r)259yEgZNstA{f#PP^AJQp%=^0hu&s_787ygF}Q>p$nP!}qc}
z(zI8d-6-!8yrS&I+5&y;jW1ndnb#Muoho<Kp=|4Io|=Y+Ykynf^-e_<bo|e&uU%Zp
zJU4w>gtQ%xOj=B>h;O*G_g*ubOW{+kwZ0tQDE7Wmn``zGr)vW87Q3HL@LOLH^LXa<
zug6||H8B4iC-=+Ibn^*ArN?_@<vQ2A{<rGy-8Ji{zF{@D{XQ|Qx<TYc@ymp14<{~}
z6gB0r#L|~1-rwSHFXMZW{lRvLl+dNO^TR6Zt^5BhIp!{W^zRbI)xTQ&E;*Lodwu-!
zrcco~Pk+`dn0#AID0OLmrLj_(tk%ZI?Ntqe<`0VE7=$hf-jm<GHzQa1KYvc3v0tbC
z%+=eoDr_}7r<5zFYTZ1%Nj_d%cR$14in*C}><j-bN}YPRtzwSs*}$G(|HY~%JpF&&
ztohKZxZ?U+<=b*apAS5kJ59mnW$w2<n^aCOV2mhSeNX;Yk;RS3zicxZy}73p&&{!l
zYcgoPuyxh*i)(j_d<)}UTkqw+^kBXECd2N(tEXq(l|DG-+P_C-x^~W)U0!?}u9t7h
zviOqv=tr5J_L-x1tCnB6u*z}Ib+dcUpB)bvI`S8*FlA*k&#9Mep0SnD)O6b%tv5b4
z{oikF&se=a?%W@nY3K6fB>UL=E?-Ww*)v0nd6Q#uMTNr7u&D-XY%+fS`IfyhciB6?
zBZt|84v0Ny*ua`{GjG>zw>rVX=)YWdotxZuzpGbn+Rw#siovap{qO(B8--gR9A>=n
zshMqai%!<fSntbg*Wcobs(;8Y?enh8=`e#3*I%g_T3dH*t~AT#IJd(-<BqfbKZevB
zb$j~*=FS%~Js@YWea`-^lZ>bPe`%dum8yNgrl!GbXLzZMQ;}5vM5!;89qw}(+$H9&
ztZ6%PrhD1D>NXX}iRl`Xtl~P{Cm7jt1*$AI`Dk#Y^sa_mZp^E6k?kL49|_fqbb5G6
zb{+Bi;lg6*`FQ2c`O1!m3RFINeq<3k!gF@(?CN`aCeKyAqI=;6N3l%TIwqZ!lWiL}
zTsb_kfhDs^xvni;#O%4!@m!~8OEk(o9<i6K+H9<{obhC#iU)^O<MSU^Is;lP1LGcW
ze2kg0IL=`+Pw%a6+x-V}i_E_TgawMr)Gsn#+H%0@0f#DUo-lLmg`XE%+*sD;&SI%+
zQrh>ro$nO$e71lx4WWrT4x1mlGamlkn7@kU?Ckl6rWB~OTe%)*JS6VerF5j!c}uXt
zBle1%o}Zeon-4ope{?5N@CmQH`oc91*^N(+9G!T8H=?mm*yX~8z+>!z0uO8rJ!+;e
zkmRiodgSuLr@80ok9`6nj2|za;*x#!K(Ixn<AWBbWTK^&pM=FvVUH7gSo#%~)%9HS
zkEn3$xGkcSqEYVjK*Z5H=gB1lXX_xBg~^L;?LO_j;QXAKTRbHrC-8}yMYZw+#~ve<
zuD=J4FJ@D5l9Ycccd$}Gw9)-y;exj<g0q@u1Wa2{zgpn30{?|KNA^vARGlod;ehLP
z^)_3JgA=dtbH39pzRYtr!|9KK<7&f1$EI}k&WIV0?j`B_U#zw6tQC)ctMYL((_H^a
z6V=1?PDV_6ASj~49hk3~?Ah~ef=Sb238~Uqhdy$~UN%WhY<p&PHb&ohwO#QZr7EVx
znf>pKBo_woY1A_<{F!lOroXYxE1p?4=O*ZU&*(C;E8ojxuiWU_F+Z`GOIj*#vW4J2
z_UE16MI}!cD5m|e3m33ItgK=4!?7|}<qUUjS(q}*ebKYG?j+C7fA;ZY&73%s#jdAj
zubuYi(XBfr>wAuc)qAB_KaSoQ9A)ET*8Y}9Z@TgY^F8a%9=*>~f5SE7&0jCIvTr-(
z*883_G0|Fk<lXh^_-B&>U&L>*Dp9UlUTI!ea!yNc>Exw3?dF?iKK+}xd*<4xb^ZJc
zoTK;dzG~*b{L7uS>_0j-%fHXx@mFHYF6+HIb~DazU%TcE`}~Nwy^_W8*Q%2D{XSy)
ze%Hs(h1HMa^s*{9%OB%5u2{XJ{$EP`HuIE29Y;@e+!T+S)!FpzOTnaxk>4E7&rZGP
z>6R{Od-6}@v-v4G(+rhw%UdtZzFF7QdA8qeUvTN#cP?LlwbZLhO-^{vyzbT}yAY-m
zfh#xd&pLbbZG~pK{<3}Fmt|dA_cKto&3zY}@u|DX{Ll8uo_Tx7&S)EJp;-6Mb{*A_
z3FXB(+m=gjukZc5D%C#6<+!Q*lzAKH>pTmZQCi7b%I>dR%pIjt?7Qoq?VJ7&^_yp?
z`psG5eg5oR)vupxIG<<i;)zjLxN`cjLis=Qsc--I?+C94ccCU*MhQ%wq4SP2Z;iyN
z9}El(b(8ybRqGFWF&hf7J=p!gy5-K@9MO<dY26X6a#fnQqaE5(%%ty}ZAqE(?d{p6
z2?v{x&rIAW`7f_HD(z$MPL{5yb+f{_dZxv6#GQWpq3*kmYhnjqTGxuFlHGT{Y&XBl
znEqf_$g&AtE4*}~{LW;q4cREH7a-*&@j7M69){~i)l(1DHMy78-{01+_1`R|KDBG^
zWuy0Zyt*FF`CxC>o4jF%>hG-yPwf3P654jXXNw7Xo4i%AIz{)mLGsnBuW!kC_a08+
z5!5iQGSJt|Z9FK$F-@xHCj0D_7fw8568-!j_*X@iw0lk9_b0FJ=c^x+Nu0Lo{gu$H
zzx)gg4FCT#GX!`uvxqRTF>GG1=PAR=nN!8LcJp5^6~_9SNrBn74FnqQv;XFII$x|}
zJ;C%?VCMGHoGWYA=*d=Vt}5BO_12_`Q+ECQK6&bmST9MA$CqorE8bmcQTs0H3(Gal
z#pV{V0X+`f%2U^w|5&!m!_S~-UiQi8#fi=34?bvC|6eCitJl-2on5sduF?76l32Z8
zym@=x7dy?#SnxPcu%1J9692KXJM9;)EqVTE;&lfjuka<z=T*PY={dAye(#S3Q<B2I
zMc;O76k&;a;ZW^<$<-?^f`40azSxm7_9@H%tZO&FsA+lmyx-Xe20Yz~k{1j9P5Gmx
zzy5Kk@Y3UPoCnrSQ2Ksq`+-xhUdMi2yX#NTgv$IgyWakl7npbSttH3*L-kDGk8KL-
zY;*2j=luO}gWZDn%Py{PQH_{z%6wx%)A351LwN>ayB64VIbA4ve%jzFJL{(!@he}=
zW}GjP-DmHZ*;g0AZ`wa~{ezA74o#Mt&k^mO#Hap!YUr)zl$WzEwJb{vo${>k@4UIf
zAu?@S>}@<mX3c)@ZkU=keZF0|_>5E&&C`=iG{Qr7o!UHk@B7fd-5adu{Q7?^)yZB>
za_tMN^Vg0a^W2dC@FR12{p3PjQ5H?(hW^d>eYuzzk8OVCUym|SSRC%plEKZuFnJ!g
z%;d@_0cr5?0TTm*G&ci-5CbycpUfMfDh=+xF)=WRax*XpB1<z|p6nZ8$2fIzPlPR_
z!Q@jBwv3M_b41!Q)=qYdbYfbnIQh1s<Ybm;fyqae1h^48=T1HssUr<<d`qJn%Q9Is
z%8n^ZXYw>16|f88S(A~0K?Y$C0|P_G<Rwv_jI$=ci*jJxF<C#_mFc^|<g#dM#-z!c
zq8%A;PW}?DDh*D?j0_CA%;+}Vooo`LA`J?ydL{-2cMb*y0Tkm8PA-nIWh|S#F~))A
fYzPCx<nJMJVgcT)Y#>z<3=#|`Yzz#S!$3R$j9f}+

delta 5514
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
byfnsv<z@&2!{pZ?a+BF(1=#L~fvg1pq4i)V

diff --git a/pandocFilter/changemarks.py b/pandocFilter/changemarks.py
new file mode 100644
index 0000000..9d4a0a5
--- /dev/null
+++ b/pandocFilter/changemarks.py
@@ -0,0 +1,236 @@
+##
+#	changemarks.py
+#
+#	Script to generate a markdown file per clause modified in a merge request
+#
+#	(c) 2023 by Miguel Angel Reina Ortega
+#	License: BSD 3-Clause License. See the LICENSE file for further details.
+#
+
+import argparse, os, re, sys
+from rich import print
+from rich.progress import Progress, TextColumn, TimeElapsedColumn
+import logging
+import requests
+from unidiff import PatchSet
+
+def fetch(url : str, expected_content_type : str = None) -> requests.Response:
+    r = requests.get(url)
+    logging.debug(f"Fetching {url}")
+    if (r.status_code != 200):
+        errorMessage = f"Failed attempting to retrieve {url}, status code {r.status_code}"
+        logging.error(errorMessage)
+        raise ValueError(errorMessage)
+    if expected_content_type:
+        if r.headers['Content-Type'] != expected_content_type:
+            errorMessage = f"Unexpected content type retrieving {url}. Expected {expected_content_type}, got {r.headers['Content-Type']}"
+            logging.error(errorMessage)
+            raise ValueError(errorMessage)
+    return r
+
+def fetch_text(url : str, expected_content_type : str = None) -> str:
+    r = fetch(url, expected_content_type)
+    return r.text
+
+def fetch_json(url : str, expected_content_type : str = None) -> requests.Response:
+    r = fetch(url, expected_content_type)
+    return r.json()
+
+def readMDFile(progress:Progress, document:str) -> list[str]:
+    """	Read the markdown file and return a list of lines.
+    """
+    _taskID = progress.add_task('[blue]Reading document', start=False, total=0)
+
+    # Check if file exists
+    if not os.path.exists(document):
+        print(f'File {document} does not exist')
+        exit(1)
+
+    # Read the file
+    with open(document, 'r', encoding='utf-8', errors = 'replace') as f:
+        progress.stop_task(_taskID)
+        return f.readlines()
+
+
+def writeMDFile(progress:Progress, mdLines:list[str], document:str, outDirectory:str) -> None:
+    """	Write the markdown file.
+
+    """
+    _taskID = progress.add_task('[blue]Writing document', start=False, total=0)
+
+    # Write the file
+    with open(f'{outDirectory}/{os.path.basename(document)}', 'w', encoding='utf-8', errors = 'replace') as f:
+        f.writelines(mdLines)
+    progress.stop_task(_taskID)
+
+
+class Clause():
+    '''
+    Defines a clause of the base document
+    '''
+
+    def __init__(self, line, from_id, to_id, clause_nr):
+        self.raw = line
+        self.from_id = from_id
+        self.to_id = to_id
+        self.clause_nr = clause_nr
+
+        
+
+def find_all_clauses(progress:Progress, mdLines:list[str]):
+    '''
+    Scans the body of the document to find all clauses
+    Returns a list of Clauses, start index and end index
+    '''
+
+    _taskID = progress.add_task('[blue]Find all available clauses', start=False, total=0)
+
+    clauseregex = re.compile('^#+\s(\d(\.\d)*|Annex \w|\w*(\.\d)*).*')
+    clauses:list[Clause] = []
+
+    index = 1
+    empty = ""
+    clause = Clause(empty,0,0,empty)
+    
+    for line in mdLines:
+        if line.startswith('#'):
+            matches = re.findall(clauseregex, line)	# Match heading
+            if matches:   # It may be the end of the clause or the start of a subclause
+                if index - 2 == clause.from_id:  # It is a subclause
+                    clause.from_id = index
+                    clause.raw = line
+                    clause.clause_nr = matches[0][0]
+                else: # It is the end of the clause
+                    clause.to_id = index - 1
+                    clauses.append(clause)
+                    clause = Clause(line,index,index,matches[0][0])
+            else: # it is last clause
+                print("Unknown heading")
+    
+        index = index + 1    
+    
+    # Append last clause (usually History)
+    clause.to_id = index - 1
+    clauses.append(clause)
+
+    return clauses
+
+class MR:
+    def __init__(self, project_id, mr_id, root = "https://git.onem2m.org"):
+        self.project_id = project_id
+        self.mr_id = mr_id
+        self.root = root
+        self.raw_project_details = fetch_json(self.api_url())
+        self.web_url = self.raw_project_details['web_url']
+        self.raw_mr_details = fetch_json(self.api_url(f'/merge_requests/{self.mr_id}'))
+        self.author = self.raw_mr_details['author']['name']
+        self.target_branch = self.raw_mr_details['target_branch']
+        self.source_branch = self.raw_mr_details['source_branch']
+        self.title = self.raw_mr_details['title']
+        self.description = self.raw_mr_details['description']
+        self.raw_diff = fetch_text(f'{self.web_url}/-/merge_requests/{self.mr_id}.diff', expected_content_type='text/plain')
+        self.patch_set = PatchSet.from_string(self.raw_diff)
+
+    def api_url(self, route : str = "") -> str:
+        return f"{self.root}/api/v4/projects/{self.project_id}/{route}"
+    def retrieve_text(self, branch: str, filename: str) -> str:
+        return fetch_text(f"{self.web_url}/-/raw/{branch}/{filename}")
+
+def find_changed_clauses(progress:Progress, mdLines:list[str], clauses:list[Clause], mr:MR, outDirectory:str ):
+    '''
+    Determine the clauses that have been modified by the merge request
+https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.stfubuntu    Returns a list of Clauses, start index and end index
+    '''
+
+    _taskID = progress.add_task('[blue]Find changed clauses', start=False, total=0)
+
+    changed_clauses:list[Clause] = []
+    empty = ""
+    changed_clause = Clause(empty,0,0,empty)
+    
+    for patched_file in mr.patch_set:
+        if patched_file.source_file.startswith("a/TS"):
+            logging.debug(f"Looking at changes in {patched_file.source_file}")
+            for change in patched_file:
+                # Check the previous changed_clause
+                if (changed_clause.from_id <= change.target_start) and (changed_clause.to_id >= (change.target_start - 1 + change.target_length)):
+                    generateMDforChange(progress, mdLines, changed_clause, change, outDirectory, True)
+                    break
+                i = 0 
+                # Check all clauses
+                for clause in clauses:
+                    if (clause.from_id <= change.target_start) and (clause.to_id >= (change.target_start - 1 + change.target_length)):
+                        changed_clause = clauses.pop(i)
+                        changed_clauses.append(clause)
+                        generateMDforChange(progress, mdLines, changed_clause, change, outDirectory, False)
+                        break
+                    i = i + 1
+    
+    for clause in changed_clauses:
+        logging.debug(f"Clause {clause.clause_nr} contains modifications")
+
+    return changed_clauses
+
+def generateMDforChange(progress:Progress, mdLines:list[str],changed_clause:Clause, change, outDirectory:str, existing_clause:bool):
+    '''
+    Generate the MD for the clauses that have been modified by the merge request
+https://forge.etsi.org/rep/cdm/pipeline-scripts/-/blob/main/common/Dockerfile.stfubuntu    Returns a list of Clauses, start index and end index
+    '''
+
+    _taskID = progress.add_task('[blue]Generate MD for changed clauses', start=False, total=0)
+
+    if not existing_clause:
+        index = changed_clause.from_id - 1
+        clauseMDlines: list[str] = []
+        while index < changed_clause.to_id:
+            clauseMDlines.append(mdLines[index]+'\n')
+            index = index + 1
+    else:
+        clauseMDlines = readMDFile(progress, changed_clause.clause_nr +'.md')
+
+    j = change.target_start - changed_clause.from_id # index gap
+    for line in change:
+        if (not (line.value.strip() == '') and (line.is_added)):
+            clauseMDlines.insert(j, "<span class=\"underline\">" + line.value + "</span>\n\n")
+            #clauseMDlines.insert(j, "<mark>" + line.value.strip("\n") + "</mark>\n\n")
+            clauseMDlines.pop(j+1)
+        elif line.is_removed:
+            clauseMDlines.insert(j, "~~" + line.value.strip() + "~~")
+            
+        j = j + 1
+                     
+    writeMDFile(progress, clauseMDlines, changed_clause.clause_nr.replace(" ","") + '.md', outDirectory)
+
+def process(document:str, outDirectory:str, mr:MR) -> None:
+    with Progress(TextColumn('{task.description}'),  TimeElapsedColumn()) as progress:
+                sourceText = mr.retrieve_text(mr.source_branch, document)
+                sourceMdLines = sourceText.splitlines(keepends=False)
+                clauses = find_all_clauses(progress, sourceMdLines)
+                changed_clauses = find_changed_clauses(progress, sourceMdLines, clauses, mr, outDirectory)
+
+def main(args=None):
+    # Parse command line arguments
+    parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser.add_argument('--outdir', '-o', action='store', dest='outDirectory', default = 'out', metavar = '<output directory>',  help = 'specify output directory')
+    parser.add_argument('rootURL',      help="Forge root URL")
+    parser.add_argument('projectID',    help="Forge project ID")
+    parser.add_argument('mergeID',      help="Merge IID")
+
+    pargs = parser.parse_args()
+
+    # Process documents and print output
+
+    os.makedirs(pargs.outDirectory, exist_ok = True)
+
+    mr = MR(pargs.projectID, pargs.mergeID, pargs.rootURL)
+
+    for patched_file in mr.patch_set:
+        if patched_file.source_file.startswith("a/TS"):
+            filename = patched_file.source_file.split("/")[1]
+            process(filename, pargs.outDirectory, mr)
+        else:
+            logging.debug(f"Cannot process file named {patched_file.source_file}")
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/pandocFilter/requirements.txt b/pandocFilter/requirements.txt
index 4c6b806..986b28e 100644
--- a/pandocFilter/requirements.txt
+++ b/pandocFilter/requirements.txt
@@ -12,3 +12,5 @@ pygments==2.15.1
     # via rich
 rich==13.3.5
     # via oneM2M-markdown-to-pandoc-filter (setup.py)
+requests==2.31.0
+unidiff==0.7.5
diff --git a/pandocFilter/setup.py b/pandocFilter/setup.py
index 7d47e52..066d12e 100644
--- a/pandocFilter/setup.py
+++ b/pandocFilter/setup.py
@@ -11,7 +11,8 @@ setup(
 		'rich',
 	],
     entry_points= {
-            'console_scripts' : ['pandocFilter=pandocFilter:main']
+            'console_scripts' : ['pandocFilter=pandocFilter:main',
+								 'changemarks=changemarks:main']
             }
 
 )
-- 
GitLab