From 23204b53983ff219b63d26ff484f002d04ea7f0b Mon Sep 17 00:00:00 2001 From: dragdra Date: Mon, 9 Jun 2025 18:01:35 +0900 Subject: [PATCH] =?UTF-8?q?2505=ED=9A=8C=20=EC=88=98=EC=A0=95=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20[2-3]=EB=AC=B8=ED=95=AD=20=EB=8B=A4=EB=8B=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DIW_2505A.json | 4 +- diwScoring2.py | 73 ++++++++++++++++++++++++-- zzz.xbook | 2 +- 회차별채점자료/2505/2505확인필요.xlsx | Bin 17396 -> 17533 bytes 4 files changed, 73 insertions(+), 6 deletions(-) diff --git a/DIW_2505A.json b/DIW_2505A.json index 3a2a951..d064530 100644 --- a/DIW_2505A.json +++ b/DIW_2505A.json @@ -340,10 +340,10 @@ "desc": "섹션이 1개 이상이면 점수부여" }, "3": { - "path": "//P[@PageBreak='true']//COLDEF/@Count", + "path": "//COLDEF/@Count", "value": "2", "points": 3, - "category": "OneAnswer", + "category": "TwoColumn", "item": "② 다단 2단" }, "4": { diff --git a/diwScoring2.py b/diwScoring2.py index c440ad2..84691ee 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -770,7 +770,74 @@ class XMLScorer: break self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") - + + # 다단 확인 [2-3]문항 + elif (category or "") == "TwoColumn": + + has_section2 = root.xpath('//SECTION[2]') + if not has_section2: + # //P//COLDEF/@Count 속성이 시작하는 P태그 부터 + # @Count 속성이 변한 P태그 이전인덱스 까지가 페이지 단수가 적용되어있는 구간 + + # 모든

요소 가져오기 + p_elements = root.xpath('//P') + + # 구간 결과를 저장할 리스트 + sections = [] + + current_count = None + start_index = None + + for i, p in enumerate(p_elements): + xml_index = i + 1 # XML 기준 1-based index + coldef = p.xpath('.//COLDEF') + + if coldef: + # 다단 수(2단) + column_count = coldef[0].get('Count') + + # 첫 번째 Count 발견 시 시작점 설정 + if current_count is None: + current_count = column_count + start_index = i + + # Count 값이 변경되었을 때 이전 구간을 저장 + elif column_count != current_count: + sections.append((start_index, i - 1, current_count)) + # 새 구간 시작 + current_count = column_count + start_index = i + + # 마지막 구간 저장 + if current_count is not None and start_index is not None: + sections.append((start_index, len(p_elements) - 1, current_count)) + + # 결과 출력 + for start, end, count in sections: + xml_start = start + 1 # XML 기준 1-based index + xml_end = end + 1 + print(f"📄 {count}단 구간: P[{xml_start}] ~ P[{xml_end}]") + + # PageBreak='true' 속성을 가진 P태그 인덱스 + pagebreak_index = None + for i, p in enumerate(p_elements): + xml_index = i + 1 + if p.get("PageBreak") == "true": + pagebreak_index = xml_index + break + + print(f"📜PageBreak 인덱스 : P[{pagebreak_index}]", ) + + # 다단 2단 구간이 PageBreak='true'이후에도 속하는지 확인 + # 다단 2단 속성이 2페이지 이후에도 속하는지 확인 + for start, end, count in sections: + xml_start = start + 1 + xml_end = end + 1 + if count == '2' and xml_start <= pagebreak_index : + print("ㅇㅇ") + + + break # 한자 elif (category or "") == "Hanja": # 점수 계산 @@ -1135,8 +1202,8 @@ def main(): # 채점하고자 하는 유형은 주석 해제 exam_types = [ - # 'A', - 'B', + 'A', + # 'B', # 'C', # 'D', ] diff --git a/zzz.xbook b/zzz.xbook index 4c0d068..d61bd2d 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//SECTION[1]//TEXT[CHAR[text()='DIAT']]/@CharShape"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//SECTION[1]//TEXT[CHAR[text()='DIAT']]/@CharShape"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//P"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width"}] \ No newline at end of file diff --git a/회차별채점자료/2505/2505확인필요.xlsx b/회차별채점자료/2505/2505확인필요.xlsx index a42c6caba3897cd485c2972a72e26ce835e07e70..d1c4bc39211f9eaac29334ecac8460f980cd1963 100644 GIT binary patch delta 8877 zcmZ9SWl){LvaS~%+@0X=?ykWX?m>dPTYwLDU%0zF!GgOxK|>(8yCvAkK6UHvy0?E! zbeIgN|zi*v`Et)Io z>Yo82(A)`$)`)xNp^f%+_zBF~HJ&h2C6TR3Rh{rAgNmY&i(}UMEk}HJcr=~^Cg(j4 zN{2q;$YJt5s?#){^mP_dK|Ry_F=nl)YLH#U_Y0x)@iLf5MKxqMp+L%V)3tFeCfx2C ziZj%xoVZ{B1;3yDX;)=?eWMCfNuEXL00b0tvmAFnAwGQg!wi@GN+OKPaEH^2*%~gS z&G@FEeT~Kx0890hJ^$g8-JAma__M+{>(OaBxd3xAqQdwF=9q?SNoB)0IiO@RR(>2C4CRb0L>VK6=^=>GoDsTBR$X_c{E9mrJ4 zumQqei|)zaDKbYKlSxJ$abP7B@G$ejN1Z4LaIKUUercj-HOvVhNr1lAksVpyVdUHw z`IWdtkOkDW7^4(l)}pTF1=PbCpUT~@RyKEFI54bWNCtn2Jn_tV#ztAZ-|hx5N-JG) z61mqzzRnD5!KFypB{|^j8`uhbXTodVWzQROR8xv1o{1jH{Y&kE+#4A}Nlz&pgP`z> zE+;$$uN`&SCgOm@VvH*|iTIlC>)K)f3Q`Dz(=36+1&tVhB?4F>f)|L}DGaSIM;19VJ{&&Zl5~(bH+x_5jaQ5%_++ecQCJzbjq?=>~_+ zXu5xKFb*&LO`JFdTNQzp&#j;cSYE5wOD)=&wBV2PlE|syDbNZEVkr2dO7X;PH-P<^ z3Y%f1r6!pVoOp})tg`l2wy75rHUfrH&oCRYY8&LxOQmmaOg9;(wON+^BQ-|GC3ZPR zj9pu=AB_d%`&&4x8ljR0DGpcm@l7!~11P%d-Wip0!ihWwc&-R}0t^&@>%9RYvB6}% zfhOcBhjiAqqPimu-*lCOTR*|*WM;Bbvh+3UJmp)pykQ>>hP2z^h&}Y~%pcG~XH}F$ zS z-rZYSKMVhO6}x<#LS;2{ZH>Mv)Oj+DHlWjQaA?lL2N|f1)0fGZ7PE ztS>SV#T*;vTG%JD5!kEA#F;m%cHq`NEEtrn!q{M_W6`h(g`yk%fLRxZuN07t1Z&v$osUc5*zUsHq7hg2ODVh5O2$#Z zqy6HL49zlw5jonUKx!HMUs2+$tX;csBoTg6CG-Q&Fno1v1pU&~E4(8Ye{x8qYLl*M zxe3vy^I{WqVz1dF$82G~M4ob!QjVY0nqA~q-PzmJ?c9sw5HF`Ibm2yoJ*Z5-EWHlCT+ztx(};Jn1(swFeacZ^)&_4Xb* zJ9}IBDlfh362Y5F;XhCq5aAY!QZSUvX7dbiu=^Reu00tx+>XuPz0Rh4dR4^I)!;o+ z^e9SjloSzF)fJkHLLaq<52OSH5ya|nXgB?O$#axh2kO#-0mHCD-W*FEi^csR6SW`n zjpQ_C-WNx@uqc~8P5nf^5C1yc?uuKa?Osb&Mdm& z9Hdm^!N0LHy}`$7Gj;*=+7naA`%YK8Tvh>-qN9qppsHA@I(RA0xQLCBhl#j9DNHgU z>W!unqa0>R2|VhzQXJ|pCO=RDZamkeYy=Td?jUelz~&wn*HB~21s^=eN)D>+%pX!6 zqPXDWN^*vET;4O8TPYgGsk0lYwL!<65UTR!=DIHOpN8w>ONT4P8P&QZNJ_UNbuvl! z)(LF3S!B^gI|#;`!DL&L11_l8;`{9f6Avpenz7I>c&jxS-;pf)`jZbLpoboboL6yP zaPFC70n}8GKp}xxYbeOb|A$*3H<8RfQ+3N{0ukyd@s=14gy@K!2;210y%xKI^?iVWK^GhS zp=FF~UO%Ue+&*)4%UA8TW5*>3a@Al zcA2!L;YPAdsM26BYUg2E%7B8bWO_%PDj`#L`D$7=G|1MnRP!v?v^?^k1o^L=$&4;WKafRSq&paF!Wb#cd;wkv?(cCHJowTn&{O6 zE|%xtM^&SD=v*wTF~u0+nfT#LEtmyE_F<^vWh`1+>zQHYn2&bo&Y288S{sLGYtj$keCvtnpte`TYGtA>{Fm%; zjNN!Z2&dY&x-_izDZ5(av{Qvc$A<-|>RS7ex&jTyr7jcgCEq!gWFK<&DttSvV( zb%}sP#&-v4x_CqM4=SoiIC$oVhvkorr^q*v2swu`xyL7^L0Id5y{ZW!;A3Z)ih0c6 zGaQXQ{;o1ap^;HpZxV8pYFD3nnulu3Yoe)SF668BWR%UVuSFlyJ0= zSR>KcWTO)~0?j29@s&Hd(R*|k|IMjdfBciRk9&X`7uvN`XZBa{*@#Vc*uaV>`bnnr zQBxtJLqb;(v>Dboe1M-S{YpVF>KNT4=Aa^Y2(4Q;>KYZ+%=DD{K#R3??@NAtX%pX0 zx`kxQ1NQ%Zrk-%45P+Fr5yx;?5XgiG1Va6H5Z?A|Ztgzz7H+KG4)%L`o6)cT$b`~~?}Up##D-OFEH zBXqi5nF>9iY&Ad5xy&iPrLuXVRLpQuHCKQ`PxLpX2)P1F11Yo6cbl6fi*mA6>UU;$_d0``wFDix*hMJh{fnUKRDBdBF4RNn{^KxR3^Zdi3hbH!1}n?&iLi2& zc`59RjWv0hCKGBBriq~&81fB%&4%uhNz4sJ8WR=z``;3iLPK=8SgG?k1GCmx(c-2q zO#G9-(M!l9?xJyC;MSm0j?$>*7A%@kj0A4~SKl7DJA zh;kE+1XnM87*4JR89{?!UalWi}UulmsVIVwMzVrPwe~LZ?>xg+F74Yzw%C>%Al~*`S&YAWxGncIO%w%_f;x87cI#F2 za|E1Gp?PC}`Z%>(J$aM3d{uS$39h8VAN|naA`T)mSu0@*k}3>JTvQJSY)J@Cm>ize zmGuo%J0F42vkPyNH^K*pWDkikbxs7r7IR)47aD&UHaz>%Q+}huRF({lwh^De+6^`) zAQi{MxVEq(@$Msr?NNo1okJp&6&#_`H=e!4;JX(cgn_r7{SE{#*T$3>WsiYQN&gSi^6YvF4l;EMHc z%J|fcva?(@hkUn3<+lk!-iZ1F=+&94=dRv~R;Ao2?)hVzVpsfST)j}wX#Crpdof|&>ypH3$CR**L7GXnWUTlpyML_*UOrM1z>tj(pAvyh-9gDk{JXB9_ zpr$@t7D7RZhqSMpiB5(N0$~V1Bq*5yl59om0tI=YxH2wmp2{-yWCT7J7>x$PjbjT^ zMr@@KC@bgzwD9#Mn;Zgyb^al6G0`+IUi>KfZraoGD9}owv}oFCORSYDAo|?;@ZIm! zVA5*q#m_g|pD22Smg=`!`uw3=BlyX8Z^ZoRpyD)S^3prPh#3z(+zGav^7kB2aT)`j zx2dP&PWb$L`rnSX%~yx({{G6nS8*(o93AyLx^A9MMhF|#ly)?Az z%6L=@C-SL1EVmKHM{bK|P!0l}`t((~k|reB%VsnW*$i*~`n?639!)Lqf4VC7IAvn# zh}0xqS;XwXX^zvEF=ieq06u9j@2G7~99K@NDC68h)u&e8Zfe9$X6eqSSYuhcB^2SN2|%KdjS1gO_Jg;PuJY%p6=mGx>`fL z=nR}rt+)1>f=sXhZ4mRf$Ai@5 zTSj(RLl$~L&tucFe%(2g;rCURRuSlzfs1$5AhC5x*qd(JrEYyzW=y^8d+oq7U!k)Z*DWG^avnHdPwkS&m*=FPS+eRqHFW;5 zv1gbpX*(VjieNxz#!a2^aQLEbe#LQQ%j7VYq9?zPH$%7b3hsLd%GRftAEnxnU*a|e zel8QuBy{^`q}K9!GI_hjTv~E4U=uT_ed0x1FcVo^c`O5dS#%=|ndcDl7vp**&yLNf z2%2n)m0eu&{_uav_}+<_S>w>L^*(4oHAO;jMG&ya#s0He)2PZvaa2aY#v&;He#!7S z?Kn)2u^Kk;wQW_m2{oTW6fE6M6?8>rlT_6!;4^lyEbAP1^%Qg{Q8D?=w} zs-nRm8dT@F^-aKSduyqw=Z9Brw$>^EaM$*EL2eQrx z3AcXXpr z=+Nk z95ahJDBDu^~b+cEz~HpvuKW1P^98FJ^Fqm<$yrn zfE_U`O6V2&+Pl3MxXO1Z5qe1j3XL;RwK;nvDQRtE=Wwj)gp2u^!*GU5Wu*Xj4MO_k zHiuUrf#7z)l!QnYyp0>{Y`*n%j34%!MMQegT*-9%tTDe=N4nl4(=xP#vCt6xHC2A* zW>7!5Gx;d1dWxGm*|7|Xj=Appgc`gSpfa{sVFR}4$}<9O%IZS@F3IGBdI(~YPHDn4 zGKf@Xx{2FQUrG6es)0#wAmyo5+|Zg0y{x2b0;^4)Err{5$2OVZTo?uhO_DdyVCX47 zY8%1N?e8b+GDp2KgSlaoY>~Dc@TEkb&zgJ2qlha4?)S3C>GmcQx*(ld>SFQlxOe@3ThS%sD>|Z#o^ZqT2X!Rl;w13BJ`>X@deCL?DfXh zIJ;3nj@lG1{l$VCF2`mSshktWGo`|0ACw0;O{5?dD({fAne;hmx~?5SJV8hGfeW0o zg-g{QU#iwz43VE`-VP^9)pNEMQI2wSL)cjJfGI}!GY1Q@UwKwGv?G{;rFLU%(oblalqP@ghQbAW{I?a{uchTp< z5zQ+uVgzD1wYZ7+Le}NN-@WV_ER>_Pz)*_vL-`{p2`w##WkG$;lP6S>#(<0(o zYif=ZaCcqTEL1hIhkTa#5kZC{gIOv3RQGL$H`|D%_9E`#E!PjTN7?GlCAXh$PPpMp zghTbiE6ok`61tv#F+4)7)A?g!_MJ zNc+x+$Y;5-g`_ouaxxN`Mg04;xFO5nmHE}MgGOEYzcyn$vZKDbrLZekL{g+*bj$LD zK1ue{gtaC(GrJW9z?_QO(q(HVu2v=23uoz3)I!I!>8IuZwbJibX-y_-hD97rL_aq7 zkB<2JgW`N9e(et|Jd@^Q8fLhktg`C5)L~NcZHgrZzlf52xDZ}Wo_vRR{cKir&;-xF%Mvlvcw=8vh(QR|(2 zX}5tBU|0|ezY`}XFEe;iviy!A9aa--&8G%I^*Z`qDNd$p4BI(Mc5BPh@jHS1T{rlN z7IB;%lP};cb=uh8;+;u{mgm&zBr|y!g*!4z=u!HHP$D*us%n1F{I9BmtT=|c7kINM zaYjcW&@aV!VsBEGBD6qlq~&7OsJ%g2AQI>a=a{TlC9#$Y{W5oDG3aPo*y_K*l6F1@ zEkNcw^Jq^lRZgz$;(^GZ;)RdeqWV)fty`)Q{#j?V1%3H|Kil~_l6sqHtic=-t;~`< zmvvek@qtrb99oQw|J$(KxiPs|q`8fjtoW4X@8MOMyEJnBard7LLGvx@xUsAwvXj7r zog-Y<*L}WE?%*PXNX?JSn?~F-=*o$RxcYU?W1-Hs;+{h^=jV|>oTAD<(YP4jEU4{C z$HCKNN)GrRpI=Ynzuj25F9e*N_*;`hQ~Y&$0HF!CI|wom|2bHNjz445Af8LK!+<+v&%s=MQ)?f0G@&{bv{ zzpZWFHxa8v!|zyU{v>rB=gpl4OP09e(=#t6w*0^%K`nj5BT^IzUiy?R*GA5hBtMo2 zZw{_7eFkSq93TahU?<3y{VNrdpv%;+F`1MYZRx|MuUqEhhww=`{T`Ldk9`1!irXYb zSgd}W5hhmSSpak>$TkHcISkFV7Dl0Vn$0fR*pv{#{rc$mC6^?`owBqw+(A1uLyhx( zWn*fKf;vd+;?1XcgmyE-(^TSA4+FS9`#zbrw~o8T1uL$0tk3-J*06{pL;6^+ErM%* zT~e&4x2R^E3uUW3{+y$;F(m*DUmQ%aa3Df z+?XX~)|s-zu@L^tO}9&pBaueSD#~xK;aLs&mYR)O1hG3}3rX0JQ`G5x-nm_! zya1Cq73VaJu2mIaezH_$U37x*Jl=)(Ma$ITMWgZP9nj*rUb7>csV5&+UnmAR8yg1^*eF8tsuh(s0^}W$UJ`fNpU0E2>AwAL!AopkfEWD7C&SD zx-L7UVotnp(GHEUjc1?8uQp8KoXq=9*suT(*e0Anv`r*!NG zrA%9M6c8=^B@?TL9=F6A6+W(cw>VTMC7r0wLocXRfM7N$rLaq3eqlY@%>D_$qUH*6 zqoXovc%r7CSuvMti&yC8#%K_Uf(mBPc1BKfl0 zQc(J*xlrpNhqLW;;{01&=PX_q_SeUWz3#@k(}MU70#+dMvRsGnyegnB%fLlkkCK0% zD1*hL)dzU>eZJ!*V?+GK#7C#WoYAP^b?$?<v^DWT- z64g5q6`23i>meth4$F-M0zuS}h#+ke7{vd#YRv)y5&Q$K|1~Sfj)V*}EFOeGl7{&I z=du3{i-Xumk`w_m6xvA?G9^U`FCpcjVUXa?-~@LM?ykWl5G(-(cXvB`f9KTs>i^e8 z->hDJ(OtFP>ZkiH3i>t@`o|gqJkpsWzYus6fdn+`{7V3*x4!v9de@&wxQ{M6yGYR* zGYv|+d2Ui++*2g}E0zsuIk)ymJT>BszaFLQHWFmE=tcb0y(|mH{RpNwn)E<0zwhDi zgULO4&B;XPZWVT;;-}T2aR?eX+;&Fu_I0upcGNMCjR<(yF%dOOD*OuM z*mYwh$X8tc-91l?Il^2O5~Lf`N<44pMc$rW72DgARbv<|fSop{3(L@Gmrjz$uQA_* zvS9-5H(-8@boqoDCY%RXmRoE$kb1hSaRGvEZldhj5g$OO+zdDCAr5rVk%iackJ&(WLvM8x)6f~nXs*9SM)Lg@Ie|2^f;OdwIoiBn#0%28 zG2$cg@HzQiZ|BrMql}EwmUq?XS15pkcL)dwPj38{=P9q1p;KRlv-cC?i+IkCB8y*} zQZKL=D_<_Z-+te?Ntc|Ad&`MKb$nfIIT@zzgH-e2;CWoTG@n5?^iSlto=+n%+xjS1*fg@R0 z`5mIocPR25@`(BSH35gtO~8QepIpDG1%v#UvLt2~%0WsWPu{ve$Ps&XKk`5^QW=cb z3M7vCq7XR6Ajw$S6V~COHCa&{OIjxPFLTKVmV|mv15O46ZZu-*&_64uTlR15i$kbF zI1-7EK0*Tx&O06WD?vD2Ub_PRb-6Fx-efBKO}==Ua9J3#*TQRiK=hxF@LVj)RkzVa zr!YJpaqQe{Aw_)X(59HX<77*(YvET@4uuiUS;kN(ov| zSmVHqxM02`rP>5@BS#}Kccz{x^;GzE^Uc7qKm=N*6{~yw#}v(Ui|}!f3Fv1&-njFS z7bA-+azz=Ytu&MR@1kMRz_iZG@K0BPg4vkz#A~U|>1a5+aM>bLfBSOCO4g3if?bp5 z4nrN{zPisYI>3h7>9)>osnMntAb{AH))s4F47{k+{R=PX^9s5tMJaXLI4reY5dc5E zV2Bo_aen~H$U}@QRpkWIR&7C) zs?e#hSH_7b{v0pZTkw!%pT2NJU9TkC6jV0cFlXZ%YMSr2PC3`8y_INV#g3K*n}Bh7 z>_3V%$W{>-g`ii)X3dYT8&Hcq&mCKx^X~)H^gpSfe+q;9XKBA$Bmk!OFM$fJ>zG~- zX@0i|s|5FVLmqGHSgS@kgm{XXJq zwPDJi1@EJigU;FWH#f!A>dEU9A2xg6yPxiVaChZQir1U6-S>SSI^Q>4?CA}B-sxL> z**kli92;^1t)G)!Y?9paN9MAg-o^Gj?_9Zn9(JzY&sizxGN1kDz-HlTDeQJdGkv@ynU@azcW~TpSU=vXkb@|B}8V)EKbPL+s*zj~Tw!9+EvIXLkwIG^z%Ei3$nxj=?M}TamyJ@{f`_`@ff%U5s_w6`Uml zjo6e@stp57JCrEAO`H9W2=Z>2SBiMdryv{^*vddG6}z2t!at7S1BAwXk{X_foNqDs zaJ}AOx#(Elh&c0zPhbKjo#DAJ*JOW7;FyogSBrG4T{g6A;lV7+3{9^bTL&~jSXLt_ zYg2-HxT%_kjEv6ntfTg*eUmPWig@;^#bGSel!j^$dUc%|3gCg6Hc*Yewgffi5Y%*5 z9nV|C>{`zsDiBU4n$>QwGm{z7F0TTq)BEI|*wCVcBL(&<-|dw}6P!-o#bk2RuXVK! zT$DQfCz`8H&DQxp(HL&Dx|L@rVmE@kUkv@h&j|-8$V=0fdeccMKn_+V{tgIH>D#@1NcU`fsc zU~qMp>eP;LT${jd=&P4DpRpP$o;E2dK*J*DAR$3^&cfHWGu3^sV|;H_d!a*&n_+GW zCA`c`D8L3&MF{P*W2h~{%xWjB9!<4wp-%n#!1aA3m#Pl)p4xy1&$lR0kqU#I4o~Ez zPCBFdl$C+NW{)G1^CmmF>BsxqTfO)JHmG!kwjsIo)D zzFA6Y^LGrRx;oUp#7j=`+Jt4h_l~8>6`T1nDa3e%qxmnt0;5s5yIz6!KZw}}k~L5C zbxkmx*v>4EZ%)*wv{}&M%bv)77mfQhkKyx9W5}vsh1EL^Bwm25w%ZY!M1Q{iNGRgv)So8oYVqYT zkhy_p7E{TP!pFk3Jx<>iPa3@R9LT}?z@;z_Btv16TM^kTXN29&^ zY728}ZYYS5(ep^TexJ}&xqs!?NVHr|EZ<3&8YjLzYfQ`P60T>xnOv2^728*Q{p@(H zWWDToWn4yl6WDwIL2n*?Nm#ZkKg`AJf&DvZ=Qu`W3%dNPj!ma8=Z~|x-kVrdI!?VH-t^^l|>Cwo}1aJ>MQSt_uqN<7J)hex6H_tkX3}ROt5G#m3i@$AJy*Nd@x>XjA*kW`t^Pd<2ritf>v6N zsH~P&SBFcXfan9%0=&A!FV!xH3r#5c+?>Urwns~zbSnHxA?VIl1x+IGx{I`Mv+D*B zW+GDE4R-y?Y20KSmhq{T=C@W3hU#eL7E_x=!#WfphP z3No!E`>!w7uTz}*Zaigsc9p&14`ba6Z{ZH8gvmu*g zbRCgWPE23MSTD_96S@wjmuJl{G)G&-)_$KO!GbyAxMgYbCC94PbaQY8s3Y4AI}@@V z*qiXNoQ>F50wvi9RC!`X^o8Lb$2GJ-@}CZNc~FN6g$d9j3pc$3H+^2av(OAX2Vq|7J05J$+F`J6>$Y3OJYldm>NPqI)EreSC-#_-IyfYq!LP0 z{JK&Rp_Vw5E#E9P#u{gnzvAIW=I#@-AWWz&Lc7KLls}caB(kk@>)h-($JJhg$bLci z-?sD}d;b`8pgc8RFN39n^57cY`8|_ z*nH#!v?yhmh)&k%BG?!KiB#cR^ZUAP&Ybt?I}W%oijw%f8jgz2l&xiqPOOr+Gi!h=2Xa1gLFi^8tO_!;X0nytqfss@}OxYyrN=Goop z+P+2>$`ZJZSJ)^1dVTcpz}hqYJ9S|1vv1YBRvUA$wFZwoue)-^tz(zquwzH?4`juw z?8@r1NhIDgX9cO>gbuZKpyjq(0|sd-Db<&jUQ{>4X9MJg;}a4m=dG``wDEHo_=}5| zuNM1v5i=euH!n1Y;RCnb_>VS=H#ho+J~OL{wZb3%8;?1kagrvDL8;u2Y!uAq%$FI{ zdfyCkv3fgjU{@SZ3;A745b73l?nv7XFfM=aliY^=WpU}b2@&r>Vz!n9_`7UnK#zI- zxh4)nAdkbDMk?-Z)pjhrXCOfCG{qdOV>RdB1krs!{o5R(Z;+=dRipp&R|!Bt;Xr}e zr18KmR9K*ueJm8M)Mibd+^h;k-n0~v_GseF(CHO5_8VZ98JC(1UBQ-Fg=+3-bVy-5 zWdzZZ?YlDB?B4_NskVEuF}`nKg&cGpi>tWCY&MroGMoeLeIKW1ZOT^5xAg*;hzMN? zMaA#|@^!NHpJkom+Qr&$6TIg}Akn~GKU*Opevo)L__jpls#8+ zCh756ylD>V>^F$${HhDwW&lb2^f#q9%U}~LrMU<XK$=Y%e>6|3Y;YB&@vhVob9a}z6MQ9SQSPwHt6nsK1R((Zn2`uX$3X< zzHeov{c)Hac;UfN^S*5V8&L}fBbKXAfy;FyrD22RiI{L>rg{Ng4kd0;%47nEb+v@G zY2sptapCbr^qwk}3hLOO-M)6ufULhX zw#Q-;7S2>%2?EVd9YDJ4dxdN|AqnDtEQV=H-yXky9t)pf%wWJvnR|J`)B`MjLfr5()<~<)^>=weW9en_6ehu1DYK(M!)Nel_sc!O4W+; zN#GfVG0AS%r%)}##wu3-#1u9~V0QW-XIV+fLBt%goS?S}NmO*9kAOnmWH0Ib;kMG7Z(M)2GUuIfuwm)un$H+rt zW@>bNGegPLP@JCW(UGs_MI-1htOeK1UG8FxaHX*uPbr_?Lt^Di7n&!zc;UH|6rH`{ z`NPNMGUm<0oo`(5<|6+}t(I|>ujZJnpp{if{@pL5qx4Ncla>xL)QfXNgC((;bU;Cr z87rM{Lqv`fzDtJ$(t{BYK;Qo{pLf^Y(B36I3iEnTLH@|afFf8nSOnT;@IN7bProSa zjuYREq?BxF_=F+Mmmxn>3RByX)TYDrdITDmdK}2s`?Fm+=Hg;k(nCckn?W=uo4*}C zB5g&F@fF%S$aKe4S4J?p)UqVqaOFK@FvZb9Ka;KIXI}Evnd+5G7EDxNSS&4p1-cV< zt#uVs4o=V&Db)fF7{438TbCzIHEH6ehcF+jbM9JqiTUCFu$e_pP zFoPLghmv7_fJLA#bAV{|RT{1@MjJPTjY9-Ne?EA@+YN2Vw!lEs{M+5a!xqGWIR`fz zT#fYPxH4hZN9H1|V!_;bpT$gR;VM;1tlS+C8NIZgKyEM<8xOMT$8Jh#Y^scy-rp~% zwu2*#=E6UrlqFG`FMP%UO&O#GvxU>EEM~^V&GPSpiR!sp14y4f)$}m&;U&>sjVxTO zxh`cB4oD)%H@La`89p(8HSQ}+qrZZuLH9M&2`o8$NXhXxz;8>SaHt!`Jc7jbkWUGBf5yMuw`o<`wO3WKpuzbccH*G9Pc~;%gU5!G;Rfc?HQ!$!rOgrsaLlPkJW*6-L#J z%QeFHLkS`5aC?5Lht(QYBZ2yhGxun-vg#Xbn4gO;Ihi|RR3X~=*k--_B8B73-jgP4 zP_px2-{~b6W_B~-!&7vF@}H?r(}r`b+ZO3KEb;5C4pIVC7(};IDp^7LyJVALSJ{ZW zdJ-$(UI|Dgfe1l+^klWGU>!-B;yceZUB8%1c$5ZTkv+1yoosKz>vi@*mpK!RmHl{~ z9nSLoLVva*Ag&*Fd|zRN^=%S`!pN2qr=M%QMpQ;;s7E^k+QYYl22UA60l-0%EFm8B zULQ%C6?>_%vAY(kA{Wgc-nu4IOqCZDhmfeX@q-SeLh_FF!{&YFam7tHQNcEjT+$myXJ`&jZAA)`L~dwthkIY9d7l}(&;h@>MydewmRVTX!^ zP#mZ?s0Rp$=>4XVV*RF)!WJS~TY`?0)}A|m`?ppGd5eC*&LvvaZp54w6M#=E?Ed`) z_=<{_jR;kfGkd~!VUIZfTiv>8e^CM2p&ac2+GF&w_QEog4LHNF55Vz0>WIm7(oQVq zj|%)$YPA(C#4yP=Hvu(!^I0$Bt>0RA0}gbDh|moqVcQa_RBd^zU3D}-vnS{xZEb~4 zVxSwA)vcP1HO+W4YZOv!p&tu&Za4jDXnPGro&*d zp0Dr%)ijjmg`hg+Qc6sP1D1xc!Zj?1drX6noD{jV?Kwgi+s!!D1dV{HQA%1K+|5KNP&k zl~Xdf%H;Yfpz`qa_PqBkqIW%HbKXIQg7@a`rTII4X_ExC-&Z0SOh~O)9sMjf<}bS% zii0HfB8@q=rYrw6c|gD_XaO;FvjWrr^;FMAA@W@@1%5haf*>^_rz_1mEu8R{sY>ki z2Sbd)-hj82N9*dL-B&N?=KG7?*h@#Do5T}TvGDzn@QYY@sYCW;{DPqIg()Huj^36{ zX`*!YL0v%_L|c=?}+st)P+|| zLWgzI0`{(^P`={obuU%zI?#fiBimBpV&%MAxpi)^^W;J1dD9PC`)3$k6>s#0QBe zIM?6&ZedD`h6sG-?uPwwLS-U*-4pPAF(E}_jDl^Y;4bKx@zq9frHjMdE{85&yCm752*@;(PFS}mr0)LkEb%6AfdF7 zaM19oAe$OIV8RI#5eR}+XTv}Tpz|_T&+NiPL#Vr%(RB=J4;)B4%1AR^&iF@O2J{j&@bt;g^w z-dK=40hAIoWAe1KGF-~MbvhSlX*H*!-xsPzPigNX%H1TXdjVozmdv>xnVUN0`Hm-4 zI@?ZDkTT9@Ch8NTTXXPRuOvnUI>Yw%)$u+eHd$s9An%lvgendho$YJz-J2O>2DyNZj<63~?5o!mudF_cFMi8r6{~ZBt!q z*S+xBSk%#r>OtmH*C(2YYna<`JOQgea`Y;!Hoao4m>VT#BJ*wniO1&{qqL2TrD7IW zC8f`>`4g-zfHec}ORi^OEdnzLMj~{`?Fd{ft0fkiu{6!2&xe$uDk(|*vxw-9SL!eL z;}}%>*=e6JxwU;by`Xz&qjb1Py_L*7YPH~tV;klh-$2=hA^T2GXjr7FhtO2ok)Ae) z@c;>IOR4bm6BaJY4Ur^LSH%}$i#tOI;{xMGMz;r!pn9>SVp)=hX@LLh!m#OkoEj0( z__j9WJD^#WpMaVdx8I4#7G1o(AYc3y$Hxax#glHF%Z^;b^KRm1@)Xhr1+$^5VN{Cn zr;m>Y3S{BJn9e6GY~n?&G%rEI3SO6HTPdnH z&)dW{$Xm7AK7yRAn0uuwJ9gYY4(F;ldD^&r_h77jHh^YIV^vTGZe6@pNI-0NFgi;o zPV+Q`?|0~zZF}#yU0kr?ZpShaaI=L&9vwD7d210`eO64hW!<2jxpa!xI$2mJH_;%| z1l`lI7Oz{$Tas1SHPx_9W_x5a(1fcC3p4aC2=FBY+(0a&f(rKd4a~j|`(7mUd@g+W zm0cM#cTa3LXp*fyVrRh-^HCDKpx3XC24s&K*-PDM!-3qF^#pQ2-;yF#JM_>tT$~m} zD{8j!XZfWmS?NjF3crI+n>sixm@JRkIedeKw3<+|CJMmR`hrD5;SW!jpD$KtmJ;;X z|0JTCE$GY_vl;9Q=iuE!4g!il;Q#Gqn{qjUC~(jzvAIoG!t~Ifd8Hu^oQMnf&BEPY z)wNDesr8VFIuaxuoC_(pR@`+Snt3Ph-cXD!Lm%o#nW0Dy$F|PGEvuQ2{D0tNl4WO| z(gk5Nqg_@J2gNw-PkZ%os~D%7EOE)a1{D;YWh{+m=&-WYBgH}7y_N`jW9GS5s2#x+ zp44ib+8S+~FGIQ@ASbp!qz9yE8Mo=YGDDB^eLOvwT57Z%W)iLmwN1hlO{Q5IMT}wz z%qASXMW9q6VGuS%F)VHZ=;Q+Nc}#>fF`deF__AsvA zUXRNRm)I@+nb8@P;mVC*n_6aCFX~O5^Z(xO&<-H(-G9@h<@P$S>tT@i?#xxF9}3DK zt(p9bE$PFCcGh%}*7XSC$}eQ0njfd97N--8wk27(JT1)i`?Xni0$6go?;CCi+qaY& zLMD|(92TWGaU=hTIwk&3nghkuVE^B4#+;-EG&h)9ik0~P&z4!Cpa}lqp8q}8V0$T9 zm}6Wp1s*PVObV0keC!P4OBNP-Pm{nR58UgGq4TMGl_e%@? dr|{r+X*_5hFs_Uk%)TgCTZRguUE<$Y{|E3Wx)lHb