From 6b8e38a596fdd1fdbf64786614e3b1a68ba5ba58 Mon Sep 17 00:00:00 2001 From: Xi Xu Date: Fri, 18 Oct 2024 18:33:00 +0800 Subject: [PATCH] Create Clip2D --- Clip2D/.vscode/launch.json | 16 ++ Clip2D/.vscode/settings.json | 3 + Clip2D/.vscode/tasks.json | 23 +++ Clip2D/Clip2D.sln | 31 +++ Clip2D/Clip2D/Clip2D.aps | Bin 0 -> 105668 bytes Clip2D/Clip2D/Clip2D.cpp | 184 +++++++++++++++++ Clip2D/Clip2D/Clip2D.h | 33 ++++ Clip2D/Clip2D/Clip2D.rc | Bin 0 -> 23262 bytes Clip2D/Clip2D/Clip2D.vcxproj | 223 +++++++++++++++++++++ Clip2D/Clip2D/Clip2D.vcxproj.filters | 87 ++++++++ Clip2D/Clip2D/Clip2D.vcxproj.user | 6 + Clip2D/Clip2D/Clip2DDoc.cpp | 138 +++++++++++++ Clip2D/Clip2D/Clip2DDoc.h | 48 +++++ Clip2D/Clip2D/Clip2DView.cpp | 283 +++++++++++++++++++++++++++ Clip2D/Clip2D/Clip2DView.h | 64 ++++++ Clip2D/Clip2D/MainFrm.cpp | 96 +++++++++ Clip2D/Clip2D/MainFrm.h | 43 ++++ Clip2D/Clip2D/P2.cpp | 8 + Clip2D/Clip2D/P2.h | 8 + Clip2D/Clip2D/Resource.h | 19 ++ Clip2D/Clip2D/framework.h | 49 +++++ Clip2D/Clip2D/pch.cpp | 5 + Clip2D/Clip2D/pch.h | 13 ++ Clip2D/Clip2D/res/Clip2D.ico | Bin 0 -> 21177 bytes Clip2D/Clip2D/res/Clip2D.rc2 | Bin 0 -> 796 bytes Clip2D/Clip2D/res/Clip2DDoc.ico | Bin 0 -> 4710 bytes Clip2D/Clip2D/res/Toolbar.bmp | Bin 0 -> 1078 bytes Clip2D/Clip2D/targetver.h | 8 + 28 files changed, 1388 insertions(+) create mode 100644 Clip2D/.vscode/launch.json create mode 100644 Clip2D/.vscode/settings.json create mode 100644 Clip2D/.vscode/tasks.json create mode 100644 Clip2D/Clip2D.sln create mode 100644 Clip2D/Clip2D/Clip2D.aps create mode 100644 Clip2D/Clip2D/Clip2D.cpp create mode 100644 Clip2D/Clip2D/Clip2D.h create mode 100644 Clip2D/Clip2D/Clip2D.rc create mode 100644 Clip2D/Clip2D/Clip2D.vcxproj create mode 100644 Clip2D/Clip2D/Clip2D.vcxproj.filters create mode 100644 Clip2D/Clip2D/Clip2D.vcxproj.user create mode 100644 Clip2D/Clip2D/Clip2DDoc.cpp create mode 100644 Clip2D/Clip2D/Clip2DDoc.h create mode 100644 Clip2D/Clip2D/Clip2DView.cpp create mode 100644 Clip2D/Clip2D/Clip2DView.h create mode 100644 Clip2D/Clip2D/MainFrm.cpp create mode 100644 Clip2D/Clip2D/MainFrm.h create mode 100644 Clip2D/Clip2D/P2.cpp create mode 100644 Clip2D/Clip2D/P2.h create mode 100644 Clip2D/Clip2D/Resource.h create mode 100644 Clip2D/Clip2D/framework.h create mode 100644 Clip2D/Clip2D/pch.cpp create mode 100644 Clip2D/Clip2D/pch.h create mode 100644 Clip2D/Clip2D/res/Clip2D.ico create mode 100644 Clip2D/Clip2D/res/Clip2D.rc2 create mode 100644 Clip2D/Clip2D/res/Clip2DDoc.ico create mode 100644 Clip2D/Clip2D/res/Toolbar.bmp create mode 100644 Clip2D/Clip2D/targetver.h diff --git a/Clip2D/.vscode/launch.json b/Clip2D/.vscode/launch.json new file mode 100644 index 0000000..850ce87 --- /dev/null +++ b/Clip2D/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Visual Studio: Start Debugging", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}\\x64\\Debug\\${workspaceFolderBasename}.exe", + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "preLaunchTask": "Visual Studio: Build Solution", + "internalConsoleOptions": "neverOpen" + } + ], + "version": "0.2.0" +} \ No newline at end of file diff --git a/Clip2D/.vscode/settings.json b/Clip2D/.vscode/settings.json new file mode 100644 index 0000000..d47ab15 --- /dev/null +++ b/Clip2D/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git.openRepositoryInParentFolders": "never" +} \ No newline at end of file diff --git a/Clip2D/.vscode/tasks.json b/Clip2D/.vscode/tasks.json new file mode 100644 index 0000000..6e0a647 --- /dev/null +++ b/Clip2D/.vscode/tasks.json @@ -0,0 +1,23 @@ +{ + "tasks": [ + { + "type": "shell", + "label": "Visual Studio: Build Solution", + "command": "msbuild", + "args": [ + "${workspaceFolder}\\${workspaceFolderBasename}.sln", + "/p:Configuration=Debug", + "/p:Platform=x64" + ], + "options": { + "cwd": "${workspaceFolder}" + }, + "problemMatcher": [ + "$msCompile" + ], + "group": "build", + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/Clip2D/Clip2D.sln b/Clip2D/Clip2D.sln new file mode 100644 index 0000000..429480d --- /dev/null +++ b/Clip2D/Clip2D.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35327.3 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Clip2D", "Clip2D\Clip2D.vcxproj", "{EC5E118A-9177-477E-B3BA-626132771FD7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EC5E118A-9177-477E-B3BA-626132771FD7}.Debug|x64.ActiveCfg = Debug|x64 + {EC5E118A-9177-477E-B3BA-626132771FD7}.Debug|x64.Build.0 = Debug|x64 + {EC5E118A-9177-477E-B3BA-626132771FD7}.Debug|x86.ActiveCfg = Debug|Win32 + {EC5E118A-9177-477E-B3BA-626132771FD7}.Debug|x86.Build.0 = Debug|Win32 + {EC5E118A-9177-477E-B3BA-626132771FD7}.Release|x64.ActiveCfg = Release|x64 + {EC5E118A-9177-477E-B3BA-626132771FD7}.Release|x64.Build.0 = Release|x64 + {EC5E118A-9177-477E-B3BA-626132771FD7}.Release|x86.ActiveCfg = Release|Win32 + {EC5E118A-9177-477E-B3BA-626132771FD7}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5DC2FE4C-9EDC-4A37-B388-F654C87D94E0} + EndGlobalSection +EndGlobal diff --git a/Clip2D/Clip2D/Clip2D.aps b/Clip2D/Clip2D/Clip2D.aps new file mode 100644 index 0000000000000000000000000000000000000000..61a3867d00d44f604edb12aed4ac9e84bc2ccccf GIT binary patch literal 105668 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�X4(okG9QBL8cDywPuW#ILNO@aByhrR9DVSJIQ(B0G(bZsn5U3xWNp^X*LU|VJ=Qalor6rHp>+BQ-xOtgUtjZ!^w3oH@b;pbLC#PIaIp|0Nv|Xhv z&a&;luuuN+qu{lNO>J!qPCA++VS25!Ky%-Dj=%taFSj5%@jb}TsAq=ccwgK5_bCx! zA$ZS()1h9j7%@pL2Q;nE-#>o16`2(FwkLMllZ0s2{al0(eYda2&8L2wkDvF7_V@Ds zwKnkaMp@O;ou#iMOMWpS{{N^4cvgXGYnGP$(?aln6M&Tz%DZR^g^*7O`Rhj+RDRVI zN_0+gOn6#2A>=RqDAWC*F1P8;!^Y0MaKi8PUna&s_1?dmmC;cDcW=%3a7)wO+>CT$ zTEp*nfU)MfyO|kLQQ4h;uLo#6d#~%ay8qkX?;YuXmvbv}>`!~09gPQz;$QYU=C=V- z^FPbR@?x+K$+@+b^03)j2{zj)BUz^mTuy4h>#YymK?Wdsoh0kH?!k(^ow zR5_J(g8HqP56;YNQ>g#vCXA;bER7v=n>5H$1W zK;QfUXdLSXgA=bn|I|Y`V%q_Rc70&(^aiZmdqBhNJt$ibfu`d}(DxaIBS;P$ObP|9 zOA%mxJ_5{cr-FHHCRi1b!2D@0xHeq`kG3-Ke_a8AT{qxF`V?5lPe4HANAQmw1AN>k z@Qt4VSM&|mJ@p5K5^~_d`B1ojJ`x^Y3WrCRk&Rj&0ncv7!3$(dhc%QySleZYKz8W6 z2N}@clmR`+X6|`Z3Xw@4Au{g^#Gd~Gc|}8zUN!?!mve9j-OKj|mtf@GBX~624POVFq5ah?yzQHZ=cE1b z5Z%Xb$e&^M^9LCI`WZe>EWq^KcUWAQgSmP18}6n5*7woh4)_1d{&!a3PkTM!HzK8V z>}=d@D>d7;18j`S-nE;D6&uPTMo%wFvpO<_bHg6~HS3+2FVNCSFpA_VZrUuz&mj=L zg_5+&nMnpmDdfRRt`kahxahcbhp@b|!hX330v~dr<>V)e+aJ*J58AtTA3iwE^;DSo zQLV#jx+)m1ol?Yt^J(sf63otMAJyrYSNUvKhKH@S7b*5vMW(Nvjj7eL&GrBH_dl(vzu&_vKkWJa z9*#E9(`04gW<?SSl>-3X2}K1*9n3VX^W{j(8;=~_-avVW$moV`uMIxXJXZE#oaK! zhAo7vo1yX|`-^j=$a+&g4#K7*e_&Q(%|on)P^T`h4H~ z9Z7+>jx!yZaISguW!c@up7QuE*3~WYyD)?t#yX*T43?1{_aR7Lv(+7SQ5Q7gt0*NB zahf}m%3MdE@~Nv#wQ!cNo`;qLYuPD`OQuudlA{T&q;)^XPIBamu&eTzo198aV7AH; zj%V)oPdm3%^yPT{_`t-jZ!)S(hJEVw!NgDPDo)(M_%?aM5 zBzlfqu;NnQYQALA6j5&U0!?qwYyL=`Tf>uyy{<7Ip9<&u>^WnROmoZonK2IJs*UNz z#@0+OvE7ppWRGN!XJpr759@;M7E_GA@yzeDccaebb)GGJQTnz{jQfjZlSIHlzThB3 zy8az<%oxA=n#LWQn8<3(Vr$zaXxO!JX>_*xnM4Ws?1UllrLG8O{UY=95gMo9^?9}p8}e=INU&s%9dvok^2=G|nmtC`pprOL1^j7doO{fzliJS9D$I`njr2Ajt_lvU1rSI9PqXYiA)w)_v*!l}emjU~^Y?|{RP0Xsa1CuPu8r+1T!jPrt z9~EEmaUK1;MF^+#IPt^7Zcqf1%5ZK!n^rx=iQY)NgNQ3YFK$17{uPkUVg_VTem63DsRW|OT& zNEv4#*y*#}S}0h9_t0VLN^7DkXLXubtn<5^b>c3s?Z(?%5}{6OOvy!Vmk_YJpOZC6 zUka$eibsvmw6qXzeA3y@EPxJomwz6I5N*I`afg=XoncvV95%^ionZ_AnvYX>HtuOA0z;6ZLdlkUCaVlKo=8=G zb6l%_h;UUPbT4jLIH`rQBbA^R-8xxNw`tvd6U1CX^3=kkx&T=bPFLA-OdMu>h-qz0 zHwIHPJ!NEQ*}f)|DNUQAwVJzMhx_EwD|d|OK&u@=v4pW7>4`=e^>G0hHA?YB`+%Doxf*1^dW>0o`X_2a$Z zGz!bifei#Ei9-yl-Fqz#e&4ix{lRO;Ba(DmXuzXBR>fe9J)?4~m|v+d`gQixjR{Mm zxr6skq;fy=rad9%G#IRO*K&=y=RWS#%BcuGo7F9A`&Y+dS~da0t|^Drp>dI+v`1+N znQY_wI?0NoW0Hig{)GEd4W@&OzN+{1>Qu>NH`RoVUE`+YcJZ-B`Ed~xXD3BiOZG zG1r?C%!N5s`8ZXe=3LThY|Gb?xGL<0)+ma=Cb5D1sxpYz29dRFw0paDsL#qI6KKAh zXw~cJ7Ip`7?M=WfPFuTvPdH#hvnl0W$fV7xZ}qpEpMDs4n*ZV;xxM3U*k-!&%?zjD zk|egA#lYmvCbw5x2^n!;9+RL*V_cZ)Z*;@?aV zWSpffSQxH3N>2#o{dA*=ag=6c;0A855pNvZ1Bn_@=8Q){7A1mnL*(^6#F2+$xbVXa zm8{BKhlDvAAG~a$^|~a4F&-=VfXROjJ`>6g*4)?nINQhi?K zqBOVdD5$%|SnJApL70N>urp0`kRS4_?hacAV{iD!8A+~tMjjSn0UFvA_Wq8pTOahl zSs60D?)~xofIJ;eWQ@5$%yu(y9W}tk-8kWNN`wV_jguf=ls{&2dD9wNZ3$ zT%@0Wm?Fe(;?jBnN9uKS!h9xFn`Qd<9yc&>#&7eM7a{Dp$g2yBb#tZko+G-Ih4P-8 z{Z#b%+B-rO7-ZwV)N7l=b6xj<+Ud^QDVF7Cw5l5;q|&Edyu*teIt6N2B-@+sUf4kD z)7#cmzmJjdbrLI8f7#<+4~D#5In(Qt7S5XP**Q9fCfeKuG%+!|Y35LYRKl32sE%!|ASStkw6VuyJ0#1^EXjDC zbUbV+_{L@Rz#P^(i=GWLHK*FYi(yr|%dlk7s%Tx|Yc%_YuN+`cSQGIL3BCjSNrzX5 zW$NV9gy~?dif+7l5XCq|HWS9|+fQ3r#hKlvR=v}5=aBNH2=*oxOUHMo>H0q}WYP2Z zb)44uT$`2m=Ia@~&>S&_*~c%>KESM9C6@jm`{DS4dsO5kUe z^26&NCb3~ODse{-wMr>!3>R+8XLrLEtu?M^$F0SsWf86@hCRvfQ^E1yk)E_mV@RB( zDM?se!a=un#zli+`#5^{BKMEX@RnEmAIj$(Q}V$uTtq#82v}7foG;0G>tpEBMN0bd z{PBiDVM1KmUH$F1qx*%pIZ!2^Phs*_TIZR( zt8)6?RvRp7FWfRq6346y^7i5ES6&mdbccE4F-Dpl1)Hr4R&gAs1r=@r9lfUo-=W$T zZod6s+`}F#AwiFwK5?s|BtO4#)234YY^Q+S-gd95B!J;W_-1Kp1jZh{@GB!Rg@E-Oonr9?x z#IL?}w!ZhlhykuP9b#-TCe-W}Y1I-w7ag`Eh$k4=# z5nmZ)JBvq)WW~q^mU<Nf3?R@^m9P>{6^hR^% zjTiUOO3Txlu9}fm&fSyWIeVeLBjRCS;>l2c`ZgQp=aKpBsc~!Qw?yFfj*!SL<=@Wx zhwzSa`r^!H!QSSj!RDg=GxefdK8F+xW$Dbc0QN#s60jeq-^gv$QGbngMH><(R#8oe!UrAG0vDTac;GkLW>x(sVIhp!rp*0}?K|z;`^E{6r7-&) zaqaq{#~xqKDE%ZWp*~<4wYgYfLXL)%AJs^EYhS%vLurt)bf9>`-OQVH44o%fbDz}j zF1EaAA6n|4c@!-g;Tv~*7u_t+hiGLpnk}tCt85mk>i9A3c%{a8Qc9lkqpuspOivck znYz-RR#VrDuxXV|ZskX|sRkj5`^mu~tIzy+ z=P>+UnO7Aj%uINtqCrDQ3Qv|I4KeMyy0Lr=J8!>s=v`FhynlH@c(8m)_-v=0Hj`>9 z-IgCUl9<)H=vbXR5%;J{4->zBVXs6!DO9Y?sB;i4i=)k+@h=-_L>w%OKZaJ*jGTh( z%lRi5M{Ws7(k`Z9^|=SERHG%avt73nuSJJG-Id7AWJTBNw%hb3!D8Tnc-7^(`raM` z;d&w3E33C#+HVY<3m!S;^*+FPn>D}CkK0T47%Fajp6-bhpzELMOm8ZcLGK=x_2dPQ zdo=h9{m%v%lXoYbxw?fJj03#OPh+;MQ*quV7NP#;EsdBgZZjvYr$RJRO~Al<@v<}r zhTju6K%sq{n`Fs55T`_cVrS=D>x-d^%-x~IBF(LP9c}A(o9zlL!<9Mrn{-8&mDz=; z&oergMdwdT9zHd3(_8N`y&zxlyIZu(z+7U4E8ci_Est@GWtDh-=lL7QFEdnLXSh

snJByVtrJnSuRIyj==mSmO)@A2PKmwwbuX5Gy+l;ldGC6pYI-2>(^?5gDn4T|OJr>Bt$}TIgjezz;Zy)+V zmtUYbU~!tmaB|qP%#%aw73T)bCD%yyINJHmVzRFn6`SgJi&z#rgqEtmkzbW|s{JFq zK2vV|rsQY*v@)Zf3~+Z92dOE8R<1Gc?zPo1xCM11vPt=L!LHPGgMiH@=k7yYGu0Br)AP zgxN3T&Tt1qo5$6EUdP#BJD=LyOm&LN=4*YIp>NcxX0MVGCB-9mi1Wpy6#vP$hgk5@ zTyaLH&;ZzzvP_2qCXY0jxy^BWFFnoiqHONs4>k{8N35ir!9Mmdp*443(~Upb9`ndQ z^DRx(-u$+0<<)HOy4Acl=4%%z-1#OWMvEtD^$L+bwO|TV`sEpX?D;a42)!rQxCZOa z%?AYCbJYvE7YrlPG+H9_?3xRECYxC-#hn<}!g|N8+rls$l$YCVv>NMJMqj-q&E{BEXl|iu5yfj(-XSe!|LwsO8NvK!EYSOdajh_6t=0_RNXtd%~8QtP~F0wNc z&JSKB2oVl6_F46N^&e=gYa{Y+nmRIOVBv5;#sE5-FMl>Vv@yjO3G2tR-ZT32vAvEB zPulV`t5^G6WUi8FH>1DZ<(_?tU_LYIPd1>5JYmPgD!eXk^^+$wj`m6c;-{*fu9^&0 z;ARclpVr*UY1;s@D#qvFo8&}XfK#@RkRm0 zQ0ea^Me{&`IF1gzhMqs3f2lAyR}GI(JdEF~WN~G`wsBsajU3aAlY8P}oXAA3YN@th z>z$w16NB2qYm)w8c6* zLvQav>(N&$kCB!Rw{~3<^Kc_Bd)K13LEr<%jiqWlT<~OpugaRUX1G&1d)T?*IO}J- zjpp<}K3%Q7bXkviR|EU`G+aJyh+uA6WZ`LccVl!A4Wh}HnU#*cPUQJ)v@wL8ymQ+? z9><|t@wJ2OXW3Kc&3oAtMe<+K^WPjl1!H3)xgO`(kEQPF=y2TrS>^g}=0O>&$E;Ot z3{M(QAb~SIE}zx3uccVOU`8)~bogGd-J8TqU20p4q%77)ynD8#^NBjWtln)TE^stU z?UG{ob=Gsv#2*B);lqrrX$>u;I$TLG~uPUE8P{Rg&0bD#J;3 z24;gpt41P(w_T4oxgE>8T`M(@zSor#2v#0gWS<;JyH_a zD&;+I&eyRE&Z)_s|1!D>&qjX9%8qk5KnT@;JI7J|Az-L(MK}6XZ$Vo_SG57>++M)o zc$ZB@?s~XNI;-u2n{Vlo&hlL9=l>|U`o_Ye8cSZxTEeSvmQO*v24^0hJkmTa-X+z# zQxUH?BRYKHlaYy1O4+(n{%8UE+O~b_-Gjz?KEfCmvqlSy8J7XZ*Sf*875%!gF$pcu z?3PCKXNo_T=Jr;6e&pRgI9zR(KXw`8t2mzVXn~IWz;?-?zcXB^mhoO~LM9W(v$5(C zhn-2cgqZtNgqFA$XjZG0caj%wd)vpHKjz@0qrS0FXo;XB{5aw0^)ocrX2{8w#yVIE zxBl9@t;+nw#ZLwE`Bld+6L=QV!jwyPei2e5m1`*D86`jc1j_#9y$c3QjASDF<$L%FNI z{#bObIdmzL@Oah8LEi1g*TZYx;5WB&lF;6kMKWSc;DKdlT$(-VSeMhZ-RY#ljHN!-h$4g=MU8v zE(6gg(0nyblg~(L?HH*}jfq-{>3RpO!?v6GT|^*PpPcu-&awzQgD)9Vngcm8w+ z;y05II5My?G4^`V9$OV#HLZzX3+;;DYaPB&c-n%$tuvjQ(Y)^EF1wM6Cz07?jUa>G_q&ar2(kE z1?L(%eMzl3$MeoMB~{R7Eiy{b9jL5iTc6k!ErwS%D=KaMHrSr+)_7jFj|s$NWlz6< zzjNRTt*HCFPzdJEx7|K<2==#j4PhHy!3zG9`gQ-}76uLvB5+27$3%oL&)7qrf zbpqpeQrr72&m{Xnvzv7lA897f`p@dXJ|^olE&Mj&6W3nO%ulF7tSjMnLJ>zY^Ew+|PQ1y=V6>>QB& zK5*In)A^l8u6|Y5TyS0ziK%~;LMK^z+@+D9eRM+7Bz-X3`@?j|o-`tIp*@d6> zJg-kYrD{E8XKEnP^DT)i8%VwUH%~p=dt9(HPhIMD!R#ej``N*@f=e7Ti>{R-1Bn+t ze=y(V!ntlr|6{*r;NwkG{0u=D-#wEVjVw|(ye{xhKga5Y=8Xi;74{GeWWQWz{XUf~ zPrVcCBiLkYP21y2PKuAV>wZ!Bv2b$yO~(4E?{#hSd)vmVX~xR@c=?n9F~}d>S~dA3 z%fO`d_<`w798>xWGvl1$;YsJ~9>>+K9`F4$HhA64fFA$w9j%A?Auv+?n?rlx}scE5e{D_w_@n-)soEto-T5 z$(^pW>04x$kJaagS&0i9UVo|Mlzu95(ZT+?i>}zDz4y?%Q(lc0M?&?8|)(I_iVd$-S>ZA^@h9&kKU9~r8 zc7#-S(ny^vA}{!@WTw4%MX}hfY6?5sxKadd-&YyHxy{m;)Ge^LEiN{n{)B!T`>~1p z;zj#i();q*b?7V>a{@fJlyrWzn33Fgt#i%9!1Soioq!tGq37K!=MOQMM99&VJ=%^p z{ix7)Iff?bq|jv1g4`?W%hX6}+jmf%tA$S}9T#H58$X&A+O?*4Mq-BY@%wYf-Hm6* zM3>f1bFoiZD1~4&Lq;<+D~jaz5s!D?+j!?%@QxD;MwMaa(ea}9Vpdr!D4bh}_q93g zU<2i4okKcdXag{Zl=W9vF7(D(YNULO>{bKaar@gN*c_CR3%erYB zZH(6w+E#Hi)~E@W1Y>*{BV^7ErT_S-yH5|ZI)*&Pcwjf#yO?)oAEkd-4hCCuSc1;T=MWlAkme`R2tP4qdy-aImbt?5c#t=1D2+1HS`VYWZtc z%{+9@tf41aaEdNET(0k&U?ULQG{>F|OX|n=JxuZL^A; z@3B5pm{L=>``}6xEn>oZL@W)gJ$CR;-qWK$8rOWq0%Hk%9r^XAz1P)sySOD@s$=p( zgE(F*?cRNTh}r3a|Fygg^>VCw`<~HnT0fP+ws~I-#(J371TA^Za9e)09NmR@2IO1c z`rf!+f16@|rLSz4++?AW^bJJZqS&lJF8R0%RISZ zF8^$2{jlALkYm5+9lxDwh`-?$?`kRj8Y6fgs!fVIB`^6p+!oo zVsw%Dtv~yP+USRCCUnGkMRSqf^ipHNbFA!&^?2B<(mwe}6E|MFz+lH}Yx|AaMmOKf zl_VWfp;2?J>^wc0OL1wO;&r(xc_SX?)&zYZyqY^^Xjy)wA#WSWkB!4~`zwKZ@BXhJ zO_GoGhRqHy&aqd|5+(F&$a1eP@M?oMN5}+Q`Oq${9V7V`*Ke&k$jD|rO_r z%qTzU&vogfVl#^J%e-Bk*sL#Hq4?sTN_`=WX8OG}_q&|q@xThYo2EUuR^Uul5j zBF&HQVew?-M3sy#ULq^SZ@)7$KX&^4_$Zx$ciD``gv`de;g89)SC<|*XjUeMXkawM z_tN@tGvXM=75LagH-}14MqDP!E!cVku+9{v6w=G2WUW^eexv&QnJ^xDa){#m8G2{# zO3n)J&GN*)g%RDvy&kPaV>@W&roQ$q9{JANee|gR=k3;l)t(MJncf=Gontbp)lHl5 ze)InU#6Ua0$?1W`?9>c4n+0Z-5@GODzYn*z3Tn4;VeEx&uq!@#fL( z17M9G)2#UW3Bc2Q)itOBpK9vZs`Xb#P4kp(Nk{{s4GeI^d!>LMhdj4*d3I!a!4bfJ zT)z3b!Zwdv+c-)@AZuXA9xXt(6t;DXqdwmI;qPB@-@&yvP_C{5y>3t=1UhmAjfFkK zkL^mF{lwpFy@Oi=>Q{aIs@12#0A}!`hDd7n^UIey>^Io@hhyrxkXe7k^BJf5^nxLP z|9IzH7YfsQPhlr+F)(m&evS@XH6j>eU{SzWyJ(4S2Iyu-4*%hAzi)+zmTy?Sa*;N* z145nmq!ouPIl+|LwUFd*Aub zM;`aW1E0h+S|iIP?bKFR0hfWA%YR2ek@)xE3ev1H)mi}%o?YNi4xs%1ty=$T+r}wR zF9-tot-IfTQ?oIB+@e_ImqZ#eAOo1tF^tS~H!^#Vh+vI{v1XBoZeA(6IFd>4G#-%t zbP#Z8GDhmLkADfS--js%U)sj5{aD{z#X?5`Mg8409UOY?4I__x=KuR`Ougz`x2yns z5HME&8hjaWwZ+xtG0ge{3F0&mg>(|Wkos~3kjQw%>mw~lfKO6Bl91L0<5ZWP*FnJF zy8GrM|L@0t@S{_$g+FW9=AtnM#(Jn5M!7LC#zfrfsk=rk7=TSh8u8bJ5Q^|5osek6 zf5t%Ehna=l*!c4OBllT)=Rc2fnN4k2ZocUTpwSq*f4RPb-sc~LDa^=YiDk7$$U*~F zTYUzM2EWK^-j`H91OBC2|G0OoE8c*dL`adIRs-tz8HtQjeR|#!!0}JM^VaE!r4tja zx$BLw9?Zu0KQ`n87055FGl3L@5KJTtVxURHKP3Y_ycA8+h#yM@M`$)CuyW_0kKAYe zwKt%LeyE=0Z_o6x@2x*Ra{mjT`6ycbLe$5We!&MA9r0Iyi;PhL>mc9@lr@PYz^~RN zmpTJ3sdgydfvPS&eocOy2B+tp3-CK1f5)}0=IrriF?mebo2Re=2*N!2|AgSD8{NnK zkQXcrxn%fD^)4h4e;pJ|p4S&P7@k6XZetzgy$^wI=>bFBfMRhk+NOgBP0RcI0AO>W zg^A0r8fmpozwiG>lP}E{Eu1kqXi4ScxjL0saE6qmWC`k@n5Abo-@lGT81;2-fYh$r z!Xz?gfr06Hr2u~a(?9y|naRB;CK|KHjIqI*2kUJRq<*mOR!ln#qU8r5Zh#5@%C;Q* z>ZjuX5%fmyGVljuP_CRq@2Rh%JaY<@&Z7P3=SS|h^sb*tUOqxZnE(DC9JycrnJ3YB zrVW5#tlhc*uokJ+N1^}#s!Db_$q4){S%0pFi{%y{Sw8GfS$**^sRBrWufU$U zz_0OyPCL@V8lb#zR^Ibhkj44sKgGn0t{J-9%&Xsov+sK!Y&gc|L>~v=bo0pLo%xIR z!IZ*LTUG#G6%CUA6i%6e7TqCM1bQ9Y>nFj=U{n1u#54 zrv&i3fB(*fiDK^dR%7Ni1M6QU9jv&I@^c<>xG#`^UkC``2p|Du{6{@G{6|4Wa2h!L zSCcm;cC=y1SQDO(6|;%{XYL05L?5ul!2KF~52HI-Vq)D}ar@FMVds{HS}a2j8-INV zY&eb$LBK5~%dS*Sur9HNovU=f(?H_`d(7l!WV2$=rm9(vi`B5+WIF=9;ZtBh7-Vlx%XX1{`kJ1{nPo$ z1AjKrm|skNdzSEeh!6GAeN7lPP=MM$#slKMB3HSix!9?yDgayl>G%TIWlDp!k9}a| zzO%3UZa72ePZ6fC{+iBG`Kx!Rxz~yrVv_HL7>o4`z0blmk zbtxH7r1m9s+tfWvNJwr0^yq=Kcbsa|Hj-;W`Jvz>pDeQZDzo!*WnhBrMPQ zGcx?{hyD!65{wJmxU)$x(4^qcpTQ5E$+b7&R?ow&UI3YXEHf+_1qKEu0gaA9@5wKs zap)BTcP&i;?3u;<_x#w%<7|H66Tk(I{)KB|?dbM#Gp$ipUq}3FD^-ui;=HK!1 zp}S7s@V#gqebvb0oc*uw&A^I_90gznkVpI#xRN~k*75xG>1s9LS5n-TDG4Ezq)rWd z#B)R1HdU#z@Txqk9AwLUyfF(5OkXzw_@f7Y;<~wsgYTIr=8yTC;XuZ~Q0TS6Y8w-W z_aIcDCip0o0J7e01#)2D+k@SM)mRV0_^d#v0*Js?;HO>}{WDL2+8YUYy|P#Gc}Ozq zSpezC;cx%bcY$vHMZgRm4VXUmX3)g!P;+J1PJ^DfPywh3FZ$d{vQY$OmYyL?Dfm@h z?Eghs|BxzXI^UK8KU#6(+m*H_Qw(w6NQUv;(!-Banzo$){^avNxiH<_bNfWGa9d$p zK{^6j@<&S_)&)W!QUnkP0tnVSX!>MGFd*9q!hHwuwfjB&kyR()H}UkkC|AzFt)3qU zUhRGiOT;dKJWBxS$i)hwJoPZ_WmgZ}-z**+d5rZ>eE@E~pMVtvdDHKfk~JeE{z=`W z^SnLxzqjEvU%Bc*=E?oY4+?7CzPVfBN5SOKe70HX;?+G+V-sP<;{;EO-KFx}jHe5SeQW@{R7 z#82z-z6I&Jj6b`mJd z1pK;liS=>PjYb2^AkOFKD&(&p4Z!#O9LQYSpbI_oD9V$a2v*guiwOeqi%aSOn*uZ( z1Ug=z?6V+iJHGCtEjVAicuFau5YoEz`2bAVDRGQRU~qcY1n{AUfBx3_))lu;6tjy2 z2S+aT=Y!P;)OfjUC$-&(FK>;3OQrzpm;n&wIr-UwL^96rrw_wByv~A*3xq?U&5acN z3|ejVUF_?8C^wP-OawoVD5yF9IMah$c^tHO#U)+i_Fw*IxSo0iw{}_V7TU+nw20tm z%dNnlTKxb}2AGiAC0c)<(MuU=Kq#UA0{Iw`M8*^_I9)OU-0|?w9$A<; za(t?>>v{tNM-DNlXJBEx3Lpa*3ql!y7y@}r5QH%0m#sQU-jD~lmihtZQVtY}#Xs$4 zVvNxej8kra{8Gy=7Ki`JTZ7dLG=?M(th^ot)-{Lnp^w3Q+q*9MIv3Q(#yy{nV99*- ziy8(rR)IeSYT~OaB4CiI(z1TLhW&EuAGss`E9GM=q`tVG>kB+3mkRK zq(%@ys6_l(5kzu`BL|}<*vKe=nhFf?em>v*_}`AKr?&3L?m_RV%}7KHrjX|tz?LQg zal9a_qmtL>9rDpM`*qtH_zM?HM3_{alL+N)V@n@NM94z7Yn%qAi&6l8{m9Q=H*IJgq0at|sEINkP_i9Qwa~D~hX+p?KMMpjyL`i-Pw!}gQv|YOO z=T<}NMpC!3{_$`L!ehIt3P87o&p`f;@joz)B!G`S@$Tzp8~cw>HTE85;3wcjQ~+`6 zE{k*Zqd2}#WC1trkUrq%LIT$E}5Ml=MppU2lQX>GNE>;Kd9l+RVK_cKozTyr9 za@cfm51mE%#gCx(XCH=LXaKVXimP9N#>>7HwEtBor*?x}FLufbSfd)~f8uXJ*SurP zH^=?so#>zICY@Z@7Z||DU$&4;muj)nJF;KDosqE+DNktr(|j8b|=kU;7^yrW=O%-2pgE2b@Q8q#^_RE?;Wq1GKO-?izbxh}I*3s+Ci0!jq%J~vwg;T) zq5sIe=zi#4mSTZP?EQla}x|$fo>ngJYlc~QP<)=tM z0OTz}YVNNm8?Hl4vvg?b*a_$%a$dU)sf*zMx{VTUeIw2pNc`n0aQo-Fu#bKMboJXt z-k9dbQ+Vd#mBgY7L8<)3OaU)U{@KYp`q5 z%J$`Jtwdd#-_q6DnJFQFkDdJGBXf<*k1w=dd_7P==I?8nk1&)+ltksD#LtvL79)rj zUd8AWcS1iGK#E`pOeXQzkaF^u)d7^N5Y_`ofu37=1@t6PSTkZE5&vKk>-_U1AIxk2 zlYfWSi~l=x?99*`63B9#~rl_u)F6OxM8ew^x(5WtBu|HrNKt(V;1vU7`0e0^<=wLec0uoTw|aCJaX zjS^Vn1AEF>yIxv<^<8`Lb7{ICdS%xhv3V?n2-Bb8K0M)w@1j1#6}#C@6p} zy8!$&kg5YgwJ@;j^I;NF1^Ajss`&)?idcNMYW+oVK!ICtS0ti?fRO6}Re!8x4FAEY zanI?0b?svFWyfb4hmRTKt$r%W31I-)gOaUx^59My@JmMm5X(rN(ZXxD!IuvKLPU~? z0Y*~CV3z`Fq-H)KPdjhS!Q17`TE$< z8ASxKoe9B6p$Pmc>Lc)lMAUVy4*Ti4Qqafps(p%7#;KYb2d8g1(KK@)>O&&@ng0$j z$oQcZE#re#;V@h_4*&ts?8{pil!`neSaozC>e$(I;jpJQ6h;Uj2pvkv zdFialw*jDf)nKBibW#EPV6X}Rz}5SDJ7+erdAbdJ{w(N@hX&L~NqthSHU4F)TS)vB zp$H_MhY(r>HWLB)z9E-PAy1Z7UhZL4_VfP3#{UJ}s;&gsicF>I3Na{sFvkDD)Uc)q zF|#HtEK0Ox3NBlIeyB!3W}*UMsqX)eWRMVu4jw865QB)?Qipl{fb5@67Y3qg2%SNx zjp#OzJSI%sZXOB9Wjs-3MqoNA2+>_oAMpUxb`4gxX9Iz&$OBOMs&Ytxr1A^`8Qb4N zvaFagkmcZKJ*`!M$G;*%Zb?o8S^a~pKVLvqm)a*5k18df@rP_VKPOgRWBdJ@ns{Fw)K_9WDcIB!WCI8!P$haNl4e z0lZ#Y{pcsLI57qLlGmX#a}*t#La(g9*)a%MQ?~+pf>YtY8sO6?;AeyazCOdPKj&q$ zY7eP4B}Bm2P!6XRz?cFCrAFy`0J`4L!vLm$K>>>fJajA!nlOf74N$r+oasftsURVF zfiLR>khT6lZ#4o|jva`fA5?|R9U!${JuL`64k-Q&vjL&q3I$9M)LVfS&?_ziU3A2s z0zhl?sCd@$|j#2hs0i=D-~0U$ThVmt2AA*MAqfi!a4yu?HKy z@W=Njss=JDyAp5ey-h4D7mX)nPxO5UESuTGf^+QH)c4 zYH;WD7R7;FUoO0dV*!H(tZ5)x^9fkv9p@5V0KG^c5;F*7fEcLb;9;C1Ofi5+=?g&u z^igpWlp7$^eg*i73uul8!t$%CCta*1_Bq zfhDYlwI?rN?TPcC<;Ot(`7RWb1r}ej8#9;BWA=^Tg*D4Tz<9ouJcD271*nRkD9y(+ zN7C+i0eDkJE{YtrVu--k*9*|me#={_J%8|oE$p%_?6R?T`D-8e z*XOarllk)bKa|TASynFtK8WYRKmVQtk*>zU=-0BPXw^pCD8H4kh+_Y6q0YxZgrm?VR58U~4Qg+z!@-|C5Nx2eP zdA_DhZcc4;TvynicsnnH!uMS${Cs^Ei148U--(BhTnAfN*rI^37Phc3*1#6_ge{6? zQ`lu|i{*!Z@75hh2#vwuN9YMo-E4cXKX zQeTfSa7-b(0aikJxkZ=v{>iLE&XXtvc`=8H>VVx876Ng0UkU&LJfHYb@cUNj>!drr zSij72T{8IjR;c=_bzcnl)ivPO)`6e5hV`**Jb&I0EpAPlDcx7soe&2f8+@(#ex%ns zwnhC&ELUJm2iy`^GvI3S08~DL z73w+*lq4U?qw*0C?)3~Pb+7n<8klvGUt8x2_!(577#o2)7SdzM`GC4t*ycKm6@5)}kmZtSw*)3sYEFYy7e&0RMngVLdUJKnNDM z8EbLP&;QPeqS-h>M9bFL<f@U@&R=<#K+F?SLKrdl=-VK~p*yv<`0B4H zg6y;1DOhuW4$2FHYE(q*!~+ReDjfXTZoWei;AuXo8}a-otIszq2dKWsHNe+xRduL8 zP{kq?q(4l3ybK;HMJ(x;W=wB7I=e z5DwuH1d2U!XvCj8T4KS|4w#;6O+K-*vAzn35`wMf2Yt3%*DVm&fK+wFdj0G-+_#<1O?xJc0@QQf>7~ z-QWP|#L6V3!A$O?9xm$yI3;?n4?-L4t6O+NXqXn7XrZKjc&l(1C3RuZ52V1)3=raj zMieFx=}AD8x(*0!mmx5OPOd;v3w}Naf1zsSzaqV8=~W&XKu6>Sb_%S+KifU1zIcuT zAj#+8)WEDEg`{m&vPprj+X_{m0rV*U9V%eItw>#To=fDi6{9UeS#JuoqiMxnuO z0s#~X^x;?d*UnjE5{nPR1YiOQAiPD%2q}2G6#AbrM~yMJz~B}D_$UACpFL^}mW?sX zfLXr#U%%~nPY4a^T9pniJwK9xbR00Oxkyw2>Lz>Z#U04WI#CtQp(I5J@PtrUuMnDM z5)M5$SE8gYO6tHG2WNZ?frtC}y#O3oj4uR1+|CV`h<|8q_V73nL9lRW8s2Gj)n85rfxL!FCWPJy2iiw1tReto^`NI}=d zx8-xi96tQgo3Og;N-y(ml=>zH`2_UVdMh8-MeEL>2QM29coRmdl^Q_0PL^SgdNMG# zzyRO*YajH4Kv;&cC+_@LZ@CZ8vlQn6Fi4gDN&uS!!e>=SPp$s2dIse|CHm;0S8j+x zD2$IE6sCp3PN8&N7$TIk2?~TzqU&wFj1mBz9QZo}YCezxdLnHvBH|yfnLtnoa4=Xi z@=$e9QlA2m&I`8F`Vuf@d9m~=KM?$N;8b7~!bDzwdJJhZRGYcC#V#TH==~{cW86Pp zyE8=it3%(3e>{2vY+=!0na@^VD*$cvgVZ-g1h;syw?t=bNmucAL?4;;({9K zZ$|?e+yVgC{rVj%UL9bWfaN=X<@=sGd`B#(ehuptVeFijM;iH4nkF*E494h)s(xlK6gz!(P#qYV5E1Ai;P5|08zAR!(;1$<)Z z>%m$9E|UshF{J=<6(RYgzDOQh{cJZeqy~UVTYago4*XJmTA$B{c^KJo2a!tzdR}iN z6{zFnWEV+7*9Clh_6mIX%I`tBa4aC7+Kx_|eVD*!D6SO&0s=dXO@6+%O9rS7Z@SPk|; z;I9KSQ3igP^r8R&AOJ~3K~(-6_`0)X+sI`dH{IsYL$@D5W8ewFw9v3qXxTaRT?fvU z=usQabzw{&F#dz0K9a7$U-uD@ppofcp>8Tz~JG&6s%OqC&VPz zunw3|`N8!`UOzcm0lsRxfHxzWj0gxd`J4pgkc7w01U_*2n{e`q?|>rG+ zplG46Em+e;zuZJw_R&KdGmo6bfxkb4>8IB*xzbZ}{I>?&{M?g#0#?LxSNV8dGq9@s z;E4Yg@_Bti7&&>=t=H!j&z}GklapB7y9czkT62t?q|#$K)h=lx#bHgNIIB-@BO+`% z!iQ(Bz&$U2JKW4J@8h%OXX~zfd=GHW!@m+fk^4H>r(6KG@bCly6G5K)`3cBnKVB2( zq(~`60-6BQRWxY(*PRf|7tZ`HMesv)$~@xFpQchbE6kYD02a_@Bv8#q;8sb(rQolr z1LV{c(MUutsS_w{3k};s!%o2326|-&eb+^Cb`{fKIg4G7x3TcpDq1VuDnKiFWNktX z2rdS=DS6Ze{kBktZo}~W#e*M2uuK5!tJ(2}9G@+?2DgwxmUk)ei3p#^1peZxo3Oh7 z6);5+C-4-R<+qvyi~yb^{0OALFPyQ~f^zT!LIO}$-*1T0pEpNTYk8k8$F&)%FP;Q+ zS^;nZz;bu9xBSW5Z@zPA=`AER4*)e_<2DV7_@_5FM*J!MM}zXJo(eJW>MHo5!7tmY zDuh5jhEQ&xgLUcL4ckIdOu+71!secRc*FG0#^Nqro3)k;|Cp0qFbAb?|Q0<5jOgJP!AjST{)3&w06S zeuoQ=@WDOT;EPwkMTYkDBpw@P?y<$U#sU)9v;Lh2D#8yA@F~D^86YSDAmsgD5+7fo zJ6n!IfPI6A-1ydORJPS|Lb74tb^yR4fa@F9T)$^-f_HjWsiE$60ybHv*t%-16**8+ zOA5rAJaW)x#K85+@r7_wLXmDw%KC%+*MRcllS8N60CfW)7@%P%P}m93?nSis?8C~d z+xT+Xfjzs5nXjC~(&KF`J-&g-^L=nvu1bELhdQRZCJMMr9^lsVHRZgro)z-Q??*xe zeA@;EA=>Vy=LVX6v7kw9D=O#(|31!lQ#Y(uJj z7)Xw10gwi6>Ow%})B5-XVxFq?@hb=UoVfRB5|ehxM!rP@juYGcwUY3mE3U^^ zkG=skF^xu1s3-R7hV+mQ?b#gUsh{uBtW^L6(Bj*NRvTmF{j)}m=Y4hBT=Ih`_>=l|+P>}D*Yw+*%0ueummApZMwg+mlW5urnB9BO*?S0I{nj?V)ZfJC z?|B5XX9@dHui@}BT^!mV%-miHeVvk$_&7)rzn}zC(nMPh5t(Ui}XAmk!B<9;5#nE%}2lUu2PdApk2< zUC-J}{rW7p7p%8>eQga1Xvk!$+faoRD!?9O(YHVXg)x|KSS&OOl>HKYA~@%^kpL<; zIf5pY*hsgB&QcfghwexKK-nxnvDS#k(qzLHTRQbH;PbE{Jix&~LUzow{ZR!dGRS_8 z2>t##Hfc@b8_i-0&0-p6ZUQH19bcPo;NF)u(dawuIorqODzTQH2>exR2CA9E?L*Ie3 zFZ*s-Ytbycw71IN&x3pddOeFT8Nasz`eee6o~V-t{lLR_{;Mg8-yc%?7HhR$6^h;6 zKwd)~*8~!%VS*vTV5+d#+iCzr==DnhzN2ka0RCoeeU85dk5lC|X^0#qLfvp*rJe-% zv13Oda2r!1BHcchtBD9|7xw4l3LQyV4Zy6!CqJOwT>~|N#hFE%KYt!YBXqV#foBdi zaP}~8p8*;@!k#l-Tz001gJ=5KcfnyQIE94j9RE}~49J5|A?7O}lxvoPzmiYxQ3N%q z`Vvxr%BX9W0w3vdYubAu4DEgHRX+fl+wJAP%-iRObqY1a7b5ya7}Bc+z6$z*eRbnM zIROBcpA=Pu04Sf{M3k~XfTx4R;8Pa-Bj}O}#{)N|Yrfz~}sS zq(<5SAix1qu<4G&pyiz+80+$}lL@3NAceAMlpHe-_eDZU2qZsdUQc8Vwarz_I!!SC zSRsxmZ4?)R2&OOs{%ByLKS`4Yrw>o!^x;W--T+0{Vd?1(4xa8||LGp~tdwXO6WfOf z+$2vrKLD&*K30mlJ95wObtKWk2SG>+YwP!7C zBLd$RUcy^`G*?gCRYQDY;bmUFQPX%Wpn%Kwhg6`B34-w(eSLp{v_n7|$bm4b(DQ&# zF<&jYm7w5E!(#7b15`S6%Q6AHhfChNadzkOPRn6DiBJz*G5v@EXAK1=&Kx zKhlY^>S3LZ_-EkHkLgHIoo$B@TjDZ^@=)s?;=FTX*!7f~EPX;0tRLWDJ7<%+chuFKceky&M`sV}WNJWoOK*p=f+U4U8x z5OBIA+_88yzVhmK0+Tan7W`5UKW*10a^FEU ze!i{oJBF0rX9MXF{Rx9pmrvl-~D*L3$uPX?Er>SF(?p0`5-ftwOnJrM{~r+My_ zst&00jrU!4j`uN?mDSQNWkSL+Iz;${ox|P7-iiLcm-v@-1i;66``NSkA&(@;hh!{2 z2K5m0fXw1!>kU9X8>T&Wb`?@EL^qw(3cwmG*B@M0g#>EucPN{aK)%o7L=%hQqb=Qj znSi`>F@PQO&I___NHPkb!7jH_ftvwXjreQp7&{YmnL6+%qyY?y_-o)N;1^J)U>7w} z7xCx%hme3ALj&Ha_2K6wtEsp6ChZ0C=5k`!kwRX948WQFO`N{0f%{)M1#-aNr#rap zWDomKb#d9#o)GFRJ@~pO+Xj(GfUR7wxDPi{>gIenf0G<5BOL}vIQA2LhYucp15UpD zpTbPe_-FNHT%Q47WBK!GyEgjs5(7}fcO=7nQOYy6MCK!s01+#J`1Q#IuS6kUK(Y_G zT<#7GAb|?z>lD8MCal5Ui6&aspx5u$`}!5%-)*x3P~eYwW!V(~wMEL90K0NU1o6z6?((sZF zE0&*uZ-E)^og#GQg-XEBuQ!+?wJ1^9giAi}AA z4Lr5C0eXese%Z+`Zocv-(R%0sbpPRg^ww8VZnUc)=3~h9M7(Em?3m~M_&iv3nVK@1 za87g_mS6l`IQPo$MNt%J6vjWfR}?T7*^_%lWWMYTP&`k+XnB)!_IR&NYfOri=-DfI5>PxUMnbh!m5|}D1_D?loiO}tp=$9VcL~(+T zbFLEccaFpj;6At=sSzz_jn!oE=T<`hP4cNV)(YX`BmTg^IsQ5LGa#o{KOEPovKJHa zM{51~X8GsJA-&4KiY&djf_0*30Zg>c3X0*co^qFw9+y`Z{KipPfY|XWry)`a_v|UB~llCG3wmh<`BK|Jq zQ(}nqvkSn6hyU{R^qql(1^9)=(klU_3b{?ZErOk|0pAyK!+cK$5zy{CZ1f%I@YS%F zUyX_HHdws1f$1k6LGz0bpuF$XSik3E=%0EL{f!L;UW#p1_g#Y@An#H^Kjg|p1l&_L zaOYM36rGpfpkC6E0$;y^J5K6B4E8DMAC&-GdbawI?Y;#e7C@vVKgE6cQmUK7=c)x* zh#t!M#ku_?BtRtSA4mdG9c9S?vki;=lT8o^n>`-a=g2-P6MX9O9QfPz7(gP&6F?*B zfC=zxz%O+GSb5?AcH67)50Bo1r!G8*gZp>m$}10GVzQBfIjbjkGsO31c(}N|0{8)B zBz0uJx^+ZR_Cu3m7zT?k4fR&h*gDrgLfQwEAb-_G^(71iWy1TV*Pg&_Q7TLbjN7M) z#eXV%!x7edUC_cInAab|F7vd-y@n{hvnrp1aX`>M4}%^++fTY<(WG zUK&yIzKq-~J;oQ!{8<8>9UC{d@`dGmEds^o=HfU_Fhu;xaYYn^G{;8P(q6 z8$mUXycd0*LvFvrA zuUo&36Mz1HhhhblT2#xQ!5eq+GVESv1p!x6v!2O>_ z`%`zJ^VC!5x7WcS5w)X^)gi)N{U$#9+8;*$$hByM*KnsV>oD06U(JLbw({A~9!qgO zRaXO*{dDc)^LDxP1|YI>5BS=6B^JsvkOj0gQeNFk%C}=U2`o-Fu%}gkoI|_UM_CTH z@}z@(HDxF-zg+}SYso9%Ppz^f(pHOqPF+2pmgaY1X?_>3z4|o(fL_0glV_g9gJ1d_ z9{AG7@%Xt1aP-JNT()lkt%-(^0v{tr{B_4?z#?g9n%|y?zbKTT0>ml?smQ@SFZ0

qv95kiwCMGR^?)D|LEB#?G-o}~`(?cDH4l21dQjhVU`q}LKF`@V>dJ*bCa{5x*UeWOKO3j74TBblAWu|40C++IDpZiC zM&afDbOCgF-s+d3zYQjU4EP%KdO6v5dnN+NYr)0(A_c#6Mg@KWR|5Rlkw>LwqlL@& zAI0VSkK)ERz8!#936GzA1fTiBU3lP;WlYVL*tc&Ud-u$#<0!~bHR3P-IaOYn#N0KA z7JqoezfL*G?7z^a`tf}vVC2^8WdSZ7(}nR8EL`r!v)9{ddc;mN1)v4vw;pT8nneFnYq{b39Wem-BG z-a`OA1o#FvjO|BXUqA*35qQiRxmtd!P0x!w!1=n9At4TtM?9Ga6x=pty)_9i!LaI( zk4i$QM=c~OVAn(gdnOuirNc(2te?S0HGr>?_k-5y{C1>90tTcJ|D?m^mOcZ&RtS11 zWvhu*!ZlaD2EZ?()9c`gQ;*?+hwsIShwj3u^)KM?;U(({Y@@kLnMXtIUGH+Y%&4aS=IGDOGg&TY`(kLn|y zV|7{GYTq6Q^eHHW)&k78yb+C8ekXQK6nJM*U~^*=XP#NZQ>V}4Yfqg;*HQAkzEyAG z(c}9P>@)DMmGT<0VF&KEX*KF!sY3Kaem?is9G>5>pQa zbwH6zT~KhQQDE;x0~3Y8X1DKs{fb4e`u?d!&j3H59I3jtBQ>;Db<&YWMEs?bDl4Y8 z0jdLDVrn&7c+sJk;zfsEinm?=LjZu4)wB4*SMI|Yz0y$?nWW>3PN~zH&}1E7-T&OFj9FxLSzaBbe=K5 z#}Ma$Nx%eGF6+un0@eV#CkiZ06e#-+>z#6dukUL8_*(zIW*w<*LJr$T0EuN8Vd=u?|u(w@mEQkhDZEUU@_1cME)XF6$7(w zzwDu3_CRFOu#=GCJrJOSK>}n&kg_@eosX-pH!Bkt_ep^rYUj48+BNu-?XqLO9#u6! z()xsK0FqdXBcLB7?iupFcyne7N0(;t^5#MGyIriVb#UfF8!PLZ==1|?C<5?EEBJGb z;3>K~;K$b2sLN>p|0U_rP-DVl)!^BC0KzBao+_lmjTnQSv~nzPiVA zO^dw~4K%E``u*VRJ08og0s63@o){>XgPtb}A?z3C59F+LiK)ThuZ{Q*0DrCm@^as( zG|`#_^@ByO0e(f&Q?%@rJo$Qb#J_YU`u#roWf!F@qlE+z9*y(=NyktMK$EFjMsf`m z$b#f2qA)y&8mrG`bAqY|KX+y=_hU0P5yTC;UO5k!wn6Xj$f4f@Ho7GU9atDNiw5@Z zUBHVD?}F<&taW-=+2~+pql^E)y)Tcl>?-U1om;o6y1S~otGYVr&Oio|5FnV27&IuD zMx4O+;=I)5Q~SA=^Ar$xA}sAJo}l6o)_PCnA=5&As9+L6Ko?>HB!m}{BqR{XU^?9y zdakbVj^}%SoU`}-ec#^a4pr5eyt~)!y65bDzWq(V-`;1RbI)mY@)G#vBA%J*+l4)^ zW4Td7F@tb6s=NIK#o}LHLx#LOeGf=h>v{xsK9BeJ7QpEU)h^3`-J9#!S|3BFlVhdX z?z_U@Ys#-j{~SWs`inXwiNQU}e!Zm*k!Z!=C90h&`lKenxH>*Qt8IvGeT!Ro(_lz^ za!Jk%EJ28%c!xl@iFT)5u(<+Y3>cJu80-vtxNS!`0G;QTvjG0>Lg{J+PK0d{1lcrd zr@*g9cM{C~_;&Vq*E|7!OJ1Q*pes2#U0|ivfh?CZgs}`W)0=Vj+%%+ch9qMav+$e0mU$v1AP7$kA;BtE~=>Efsj0 zsMWA_d<6CJ8|pMV*Z7Nt*%$Ah3>VRL?bFTwOQspxJ4l(`l>ez5g5TB2E%Q(Z2>$F;t*@ zif+QE1bmdUCr>4*J`6y8zaa#H_z<^`jt3n_qqwV3ZSyJ}m~E;_(kn{77Zd2xK0BwC$TpWEUj16Ml4w3B~HC`(-!nWC}#l^wG6u_ z>ewQMRr*H9f15(x9d=co)f?xrDeM6hSU3~+JdMtR=ccfn8p#rS0 zzh~}TtzXH2ZM&ARy7^Yz^zWa<6NgU%ooQUO`z5&i;;V4cxi7@_>DlVTvygZm^t=rz zK;KzKtJ6ZB2hh7x1@L&EsS7YD6OBN?WGDd2slI1zcW;0lMM0o6{i1ZK*TMCY0$H>l z3V4CU43I5x@P0!+VGw}-y#ka@2=!Km@}=%8M{&Ba-0T2L1z0D>GECNM*gaWCee*b0 zx;d7+#qG__P8TSa{DMIty~_20Vm*Mb?z@$Je|^6sl3ERz9j{|B!yxN@fg3;!#5Q{Ae}ZRz7je(p9!QeF`Q&{D3~DU!u8bg~(Y zbZn0m{|Nl9O^P(2K_7vi^T_26;`X`ZSm_Fun}Xv@tH@BpL_Ndi`WVid7{~bLNi25- ztKA%ntsISZr^q4q3qg@`A+WeIP*|CHAGmXd48W#Z4QEc)FcI^I5dfjTFq0|254qwGZ-=%e z^oI)lo!?yUBuGsWNr**`94k%1a-$8%Dg=T}^*T1y$FOU%j)|=kSm_8>@*GQ@9F0~t zoFvfA1$+}w4H@PpYM80li&1~IiB31H#wS<$dx73e<5TDLYMP&#_7m9swr|UXzrNyc z1@=+v`ADz0u85$1q!;C6?^0fv^&n8e7M&;%Y~4DE>FIHZ2$tn`Or6<8tKC7Pvx;`7 zRRP{AU2tElQMF5cVnIJkw0iJaiE#C`OKqC+uTUGzL zk)d?Z;AZefqqrpx_8AELyw0HFL8J(wt0p<=FTtK1SZQ{!+-O6Vinf#WF>I>Wuyb-8 zlT+hZ%>}Eu6f=cZn-&!_OpO7%CdV-bV71jMNBtP=mDllYn_g3Y+Mk^ImoZS6`^xnN zPXz3P4JdV=L{fI7M)r_(E}?nF--pQrcknd;m%zil#G}<|pxIeQD{nxWA;De7vOWU= zydPP3Ibol(FeGHC59v!_VBlF$8BlwB5bF?F3rbD|a3JVpbaAn0XSzXu!IZ?zzes? z!nG%2a9X-^lYtZzgiCo$EF{;lU#HtbqqT@ur{V9IsswCuUynLU*ulvnfWwWId5Qo4 zAOJ~3K~!DO=R|}#&iNz)J&{5TK=M-p%mH6!A4*xSJrj?yGYp3b0!sOYb40UD1Z=h^ z#MSuJ_6xF|@=n`Bz@YYO!AydlE6r{}2nztPgvqfQ&Y0PPT73*Fonj$zu$y-($iZw& z#a|ET#B9LpZI06eBYigPvEUwP1V96Bl|%!)#KYayHCQo*k(^H6Mzg()W_uakyrThV z5=ViC0HuMrPO^XjgaN)!UK;(p8l^v27s8I(7uv=0JW+U=7M#>CgGp@@*i!pb;Bsx( zwBldwPv-+ga^i9-byHT52ctLJ0@YT+XjVQ-I>GEg=VV(dw+A(OyEk z(}+ey74QKU@ieOVuiiI^tkAbhdQr#vL{^Dd0WQ)h1}6v*nj}Jf5AZ8OiS-8v6drVR zydoBEqk+!#P9JM?XivF=s`mZC@AS+`?*MdBbeqHd_~)^Gii>3~Xm=ZEw3pE8tQ6Pl zfjH6Z-^w;?BMYrmZ?b^$Pj4Ln+6KHlBhG-_5JUt_t(phAmnVQ~&qnlfkwLVQZ~vnF?sNjw zxjq9tFHxm(L1SbxLrjI zQrn;PmD}wR=zGz2X`%^!O0W2bJ~zySiH;q>$bw^A8zc?BRpcTTT)2W z%)JFzRbTfmy6IFxk(81ULAo1hX;4Dx21!ArTT;4_1_`A>x6&+epZ>q! zx&P-p&%O72=brsIU9oXH-uaIA9b>M&*n160AlJd6k;tZ($TMJi1);J}dF6JJe=_b> zI^KLM9un8#xD_|{0o@0h?7iTb;|}bul1cTZR{uutBGL=~ZI6qx@H1Q*8n2QX$(W}$ zsjIwLBMSG}gH*fsyJVUq27*guYkO`LL=ovqHz2EGu0C@qXr#gOc(1XiX1EZllv$p4 zT*4)6tP#z%rhx>{OjktS{>FW$XP*lXegHFcUlER~jXF{Oyuq$#r(~dl#%}J{+=GU_mZii+aN>_2K2F+4GI^&Oi_v^!JkCxnGZQ=I$X)vj-4_g z?Y=0ll_L>4B-rM2M1cZ#;BVM98ty;Rlf6VL*mjqWSUmA``;M*K^g@G{ac@iHm z{P45=NZTFH9HU39x$1jZR60NDT+~x0aH4RN7~5xy#sNSlV^kOYKhbIH*LDq=;+FwAE>H0lbotr1Act!O1u*6&E=pX7Mu>xUoY ztlWP(J6kq?LP~#SMU&Rq`vTXc>2oWe;hxbIGC43D|mmY)`W-&MCcwI&OH zY?H@xFV~B1 zeQr%eXb23pz(f!`hBGzNWPPo5D8pYf#Tom7Hb}+O)!=UaBaO$zur`+X=1>*X`Nmb5 zd;E!~VkXKqmo}`*sVw2LWCIhi*uov$AIfD-OfcQ8$=(-X?&UhC;*aZe_dg2sNm;9^ zQjqURM2u6nM)t_X*ihubbsIhO87y4ANQJ!&M{u>040blhQD`}It)1y$${s0`pgp?=Z=5md^XgOkS`CkfQv@9J+rnh zmAY@zjIm7|(7e_3d0cuDi+}*l+h!3n6YKLg`m2VSAcIKqHNeY{sj$9WopjbEY3^xj!r-qO9h$}yT#VyIz!&+`n9zoZ{Q&#|;~ObGLZw8foq zLdV@EHr;f7)X~qy92EVPCG=O_)1|jv-%BeZP8IYwO)y4;xS4-YyXbjW04=e<>{QP0 z^d;2SJ$r8_ejCRY76dz3wb~wfJJY+$q|7lj!n?vqhHdYFzVb-ui6+9p8$n-nYs}E~ zIoD|<&-c5{MzbsGW=U<(Tvgk@nFv?NxxAYeYqWZV;HdM2AcetIx7(N60^i{dvr49s zDU;F!GbK%cxA%6_CTJs5x9!y$UnKG`^;seus_Iy+-HC+CAW<*NuM3` zhN+ZvAJ=Qr`7+P+q5-7vxj3IAN*L!pNS2|-S18b(8%9TL(lFUU6(rVg7b@gZ zIc=c7LN3p;X4!urxPmXOGr|OSzeogj)F-~ABc9E9#LL8u<4St!B;3iXUE+159czs9(x8sWaq!ocWlluPBvbx?mt>CE;Vi?79qOEc82uN< zb+en+9g_!6qpUpsm|wcZg=J71b{h`Ek-p84l3`i-T7C@mwRtqfzl-bqaPZdETR#6& zFD&}(rZDXOQJvvz#QyIOa&~7C!WNeBw_0N2HotCH(|wb-Zs|*SoE!FI_Xk1;40g{(Ij&_&nMA#=H{7@*H(pJa1J5BiH}XVu&cwk=4gy?Y4REOBW>BXuHoBHmKHmW#{Xg9X{iAa@qPN ztWK<!-?aSr z4lfq!0Ff`E@}btm=(hd$?M2hLqCN9BEtd62vyai9^$aTH!MnxnKkjedAz^B&7MR zi^C1=kl?;Ncg^z`-A=U?3vnL1A9iJgcJ(JOn{Y0+b=+>}D7H@a6;RIwkB=5OqT}RHrO!rZT z9N4Ac_T4n5-K1byWmTUl_}OWX)^PC*va2st<*sDph#Gy!k6S&pPKCa6Mlir*R?cIs zlARP=qQUDW_%}MBdYmusbU033A}<_xq_`YmT2*cP+w3+e8RdAeS~)R!WKOluo9`jd zFG=LU8v6-F0|ZCfJ9q@P`bGQVNp^{ih2bvWMBw6m3HP9gduKQwuzcnHUg{|M?PORO=sPyZkDa5V)5uo6_@y~u@piys#q>>$ zpmqI}E^)cQrpjBoaFJ~HIu%^so>wBKIrvv~YH*$xgd5G5Ljhvy-f<$tOFAtpuoI%J z;rjjVz-WS5F}5yv2UQ#F#@Yfk+nvBlVQKjCl>;{cLoZaROT*=sxU}vQW_2HzCtPCK zIF8>l6;cQ2v_xMjzLYUcWG=T*pXx0M6L7%vxWaH5sT-|SqTadp!0q#pc-ho*XXiV( zh<>@rJ!bHB8f1m6#bKJRvM!{EA=b%5Zs;c`%*ALr#T~D{@esG@&^lgzB;}o5L~A+@ zvY~Y5^nL5s?S8is^O!y|CI{xjFwavPB`jB7glL=U{s1eaz7rme>TZSl%eofUyO; zEv#ovTDbm9yMKg7@$MejP%plHmp+Ou*70($BE{M3LFO%ePiIAJFSn+kAl8S)dgREd zlYIkv+XxS5=3+_ef1>M`nqZf9`fqlGu^OUm8E?`Fk9i({QKQCvg7TKwsefx5L<)^)~x;JO}A^zo-}r4Ij8u z*fE^cS3fLN^&DxV^L@6}phh(bgdT6X`ztz{S<=nk<2j$6QiflYzS`~^)&D^6?IYhJ zb-Ux|8w(4yCK$p~o2y~OY|ap@NJ%B9#ZLI?t8_k_4zGpLYP-*XgB&ql=!hz7h4^#bGH;Kme7_0le(frDr}aRq#IQxT&Em(kYlk}jb&c44o)I4rc}Lb}CGzZn zHpqKamhxya5Aka5gx^t=GDC5F&HMfVjyihNEEZxO+7zmod_JNDQh>@E-KkIGkaph) z5fvQVQ9vSDVR}qYvht0+w98>zlp4R1?VK`!anG?mwR2*G?S$tDo`JD&9=~xzTr@`` z=flFv%$@=_BgeO1xrNhyp^4+UCiYqbB1-SfWX5UNg*cm&U4HG$TPw3_MNTX!cFPs& zrcM)FK8&sku+R;QB+Zx4S3>E8j06`A>-~~!th*a|9V8Tz81RZ=?EKX4# zLX$Cm&3elJdUi$Z_EYB-(QujR;|JKz?OaIk&9FQnnlmY6z+T0!9ikfNaJYaNj1?P<%Z#k^P`nvqBZt z7sdExp#mP|b=(MlE=A-W*L#93mYCGo`mXF85r`frPBaSKIhq%K*-Pun7--7q_v*J| z^iWQDbCTr;nfR}6ldNAM)O@&2{y`mimb4^Gs6G9{v`G0Xt#MYRb4Xt0JgLm3dwnVl zr3AwuS{*rnV)@Zr6;na#?W)KJhMs5*A!rkQEVj}^#22^8z3Jf0zc5sl_2ztJ- zEJWfbE$ragR1fze(f8gCWhk8AZFzK$$kM*Hdhk9hyVAPZC*-#FWrar@ncGQlJAF-h z>eZr%#O>#8!u$N1&uXy|(;Lq&8sVe0%}<0je>kb#()Se( zFx9ZrjUlWtQ|Y=|b}U+9#b_8^lV8pYy`NG%zMXr8M(d@r181P}+5!K_^ zPwiBuJ&7JY9+8*ANkIC^5`H^rRut05Fto$C(!fg#5zC98)_%=zo_?K8U(;BZ9~#cx zQI~=v8|U6JUCPoO?mBf!;^qlMK*5@GsJ``qhD&ear`cxWM9BRwWtR)B&NPnYOh}{6 zof*#ULL#UF>lc_`%lFch+(l7ebh1*yXO>}ckm1sXqd;H#XVYXXfN47GN!cLx`A73F zMghB7k{jCECCAR03RB~&aRxRgO~dV?PAbUun|6+eS?gWJ^JIgZzdkIHOym=A$b z+8Y7-@;4L>Yny`nLVYJAyfBEp$eAf(M?v-Hy5${*s}rL+!1>psdx!xRH12Q~Q z*vl${G4)!Xask`z`~qJU*v>;_j{z}+L9^xC#F)jHbwj^!!}K~SWASjcQGUWJjiEn9 zjC(RoCd-RfLU;eUU1>iS5ROljp21OIxNtF*MhBchb?r_Zsws`3W=*cndv*BHX{?7r%~Iq#Jl-EjFC!XAJ*= zxg@28lx3AbQ3UV4LC!#%qvb5s`Eb3zXHD&MZqETrHdu5+A6J7GS)}5=T=IG0n#id@ ziZgNj-RLdVlbI1o2aROhL-~w0@_Vc5=L>Te;-e)z-b;Bct~BNSP{xaGCfD_dXjsf7V0a>EcO{LD3g=}hAB9+nu`lg8QbaU5{8jM@ zYPzTM;31`mNxJ3H{jFb|CH6`$iarlN-&aDRNRZ}XO(POU@RaG|>Uv52$`cP@OWi+k z*Im!k`E+~jsCYlE^71yBo1H8>4LSR)K!imQT35)y-t#31QhU9L$&D$L-m-5qxpyK{ zP56Qgg<;Pc*f_((IHaYDd%T0j4?h^$@Y@Sz-BDlJZ3M=L(p|-Fp6k*t0x)FB`fk%( zH_aZN&sEqqi}|l_kNH_ zfpp85(S|)=-%BJSH3df6TcVhB#%AGaZ9X^_6-|OhwLF0YCcY1>Z=IVVJauHlruHt2 zjryvfqR8tUFV26E`{02O8K)mZWL8_Mi0VaDTc%E`Hg7wut3#IBpj2qU_Q*gu*NwX2 zJUokNRI%x`t=##m^zSY6=ESsdiR$W>dgiZ-X@Q}}X_9AnYmnGVF*1Kg(1& z=+E484B8uW^6itU5qH+bw1hO=7jK>BM*Y0wPa0!i5||$~PV+wgvT!Iq9~F~MYi+0( z2_xj*vf9h`z=9=LQo?X`BN%YL^{tylze&T52JyIWb^lQ3sjg& zSH)R>Tpm2YNNuCh;L*jY%(7S1M_RXW&>7Rn<>G8wCp&Hx8`xgvt{!aD&kV8Jp4TDa zsx~7z7H~&j*&1b4#MNT1MCwS?N)=_k^tn_yWBJKOke^+h$2-&qcFu>kgavn5r5*6} za@AEx{o_$DvDRhY_ffSj6O?N|Ep4T~gVHnOsr+j#3zyE&k;wF(VIJa6!~t?Kkzup# zo(}Jkeg4U@CDu%(M`}iJa&aOr;TOwnw@2Tjr!tIQdOQoI`r5#1o0!aao2hVq?v4!i zm+>bf)Cqir&we$P7-1r#gGskQVncnBM=G-Auyz7?y#biwuj4EZTP#*6@iC z|LBeYw1uTAuMFpe4J1F$HU92`NZx9GFt_ceo5=z~dl&%=uoE^x+BjK)o|4w3p zHa<>f0(Kb6*-tNU0eO!w@iq{c?ge$1|`nH=$i zM0OlTKEE}3wZ(#{v8V+92w#c0HEx!VX@t788xEbjgnuIKq?Ja{IvBcdr+IG)S@p$s zGL{jsIWZ!#4ap1BjG-7WQpB^2vdYX4E1l*X)C&Dp1m%gSguXTR;bebAY-_I!^d0Nz zBW{mWN9ecg&4ao5NO(QN)HODef-}@-O6H69D*Mu;$2&1P9(g<)JZ6sQNSLVlhzQQ` zu4zck+HcHC2WEMD4I>`Zkz!`+JUb+#HT#k4iGJz&R*>h(lZmYuRTPw!I9nU{F`v|l z6HE9w1R+EMGP2goj#y;pLQy{wrdq=|1yf{yB0ah#iW(gniCfQN7Y;(V!6K!`_R z2eWTDED)W*s~4%AY9jHhgtH2k*CsWlk*@8^?S=u5hjaIG+ElV;35rdDabdR0D8HhH zw=0P~xePHJ7FzP+7Fpv;ps)2{s?L~83HbOC*)sh8x-!+=&;*RbRSl-RRZbE>kdPHz z8E5C!8LrgBQk|nLoMID zhLX-(Ql8P^;}qS*nxWDI7C7-A5tq=d_pPhBT_0-OL5z`Ih_YgQ%CFe5Z66* zH)Q!hW3k%{FzZ~Z)0O3@?Aca9Ell%9a@`T%LXFIOdFs{c9A11=8w$$Iwin02MCRC= z{vnd6MnS8w(rsReY(;xc^K*Ff^bEh-2a zzcu)E%MR;RzPV7Yc7tVDgUc!hPXnPHU!~qho|#6scYO~x_6=u#hQZ@ZqUp{|agkI9 z8yxA(T=J~ND(I>{XpqT3EOwfx%vq>*cg+aJx@hClABck&urKwRIhn<$NM?k4--L?r z0%_R3mYmj#mU{QB!e@KueYM%(5d-I)c5$aJ;=Ql;` zd2#(z%as#mI=d$K$WrGoWNBnf^aZu(8Kplu;RAYGC2_nWi^fQs>R=-?Zmkg;%5a;5 zGEWJ=<-&WgC#w2j?72RM!S3iwi-|nbK{VyyJNf42r0I5b+^n_%r|Db&n;eMEX{niHws~y!S)aKhkpU?XqG?HCT zP21GPt*w_5Ved{HqTikEuj+xXJ>0hV*wm+)l3|yPuI=S}n3^^`v#4Q{P9U0jZJ>D0Wa%bUnemKTUgSNvr z!MM69saMg1D@qtPNoL`73rpfwNA#6y!)M9dl?B4>WydH6W1WGSJTLf0%#*t(Q=8iOqMW9j;!5?oZ*;r8FH}23A(|suMZL zL$q(qaRoBN4gj7Ks$1Ml z-(PTK>v&~-!YWUqB|IHsB72WJZ_EqD9&t9FirveUXPq0hFX_YA%_BN~_t#^cvIh$L zQI`_V(z*TV667v+Q7l(@Ui}2(ALGI3*^wTc!K2vM$*`d#;;}#o~abQ&} zJ*95o>a9W&5d(UC^NwdyepEPyU>;8Bp1W9Rzw4oG-KMvOrXW|KNKdHkY`stgN~)s` z=}yDxhABgS_=Vu?v3to@`PH=SAff(&39QzEC-?q&&lkIf5J?ZIBpp3s=MPk4xoe#B zF8Z(c_T47C&*qz0aC^z$vcYkgl;xmm4-K6)tms_MsBK2*vy_ngYBD~Av40ErHZ%0# zb?IeOaB$(w`cd_FYkk){4%?GK60b_E!G(FAeX`Jz9%|v`{EVRc5Hs`%J$%+U0)r1= z32Bjzj|Pp6Jq{%F{3ZQkH6>RKAr6_DX@9KIYSF)HCUyW- z;m{d5JTA@Zk_$sSm_Y%Lb@!}#9^(Z#WMua*b6L0?w%r)6C zf>`6u!iQozEA-wz<@thAgaf@UxGHVL^Tw0r4iu6@(bMV1DvdKAvX7KRqv`cDDAN^a zLbb2>t`1z7nzIw1nGQFWE46wsRM^gZf6mX@=>4+6J&POxHJeLrmKwirE<-Owlt+dEo$#*GE~fcEaykw&2udFU1>3cSxi z*zuGl;|p|8b3J<%v&C5T>ICe$%Jm_9*Cr_gih3V>s9jlhDanWn(V6@2-+> z+Ib6w~uV!QLb?s;( zo)T-7z6jaG

    GLcKudmJY9RlUWKXqTxu~BA<-# zauBP{$l&;~!_My#IrBQ)F0+k?@FgNX3*zJ_t`MlpFXYCA3adWUVZ_6ilT3a9ByrN``dQm%vif-K25-{0KcG>=BF zDDxQ1Oe%hCRGZ;`xQIJ_S>j^T^Q-?Wlk1QMckMLW%+F`6AXcBnSp?4Ka5&RqSB6|@ z&%Kx&3%t^?X@J&Y51hG2k7xCZ+<0}??!pF!E^m82SY=tabCS58MW=Iw zAZ+b7TXvQBhKk~-c%IK^<&x1ypf$Mz>w=hPihu^Nm`(!ECS03(U0I3*gjuT?V}7V_~_8 z_0=D6I8Yxhp=xlIWQ9Q(4u?yoN>!S&O z#DfJV^XROa1NIM5U&5FIA1zr*u&|F9Q*l1Lb_Z`K>p z<_*-k?%&EqUiT0vz}He(j3l{~j)RSpC#-h2`5O6(mA0)IQeF@h2g09-u8fxj!7NUP zQw8!-=hjpC`f*zDaE;NGgq!m*9!j8~5bJpaB=bYvM8S?gd7q4n4;}|)^3 zIfnCm8rVxKr;!J;s3UMql~><*)Pig9n?q0bWSeO-`tia7E(uFFgwCN~I(<8=)(#u9 z;A3{#mCOu9dfLwZVZ54Zc&nx3G-qgSwyoKq>M$bnWU|-00BU5NS2#88e{yP8xX||{ zkakorc(b5Z48IDOM_F|Um$Q13`62T$;q5PM>}o{vO927VePXWqo5ta55vq3(uotr` zl3WGIO>u{_2;?SOIo~}XS#_4(*s){UVT3>74Kf4J_tiXtmx`H~2DxWw2Qfmnu@t`H zj)KVB37!-*Zz)?F`mdInZ&jCbJxf=T_L|u$nKhvlMSnT~4*@|REqGHUPN*#;CGz?@+RwY)Iyz0CS!i%pC_AkvRwsL!Q-v->7 z(?JM|{BC!k@FPn0iT(SnEKH>%L?3VML~dBQno!c4SP$)=XzsdVFeSR3?q9yeE0PX) zzQQ?}?Q+6Aux|*ZfX&0nrj=>y){A*NH-Gh~pY$cYNm^JOq8EStM74>figs05X?W$l zd-*t3J!nEhDmYJqg5sAQ9;0xwi_M0V0Js+f#1 zDG`}6C!9#OKBmUFOkZ~C{mT0E9yLv&dPCG7k3#e4(nM3MD6Fwm75dz2t6w7!?aj9u z%em~+BRWF}Fx^RcrYeZ*H;DpB(dZ>a;MtDj`0?Lv-DTN5)-xt_rW(#6i~Z&;v`K_y zi+lhqUgg_4BMW!Xf8c1ipI7r#4m0CS?htF%`TdXMp1A4y^qjZ{@C2okE<@j6iiJ+1 z>oW9|E~^xTA#-MY`z3rlH0&7ttZAJk5t)!>_AX@SYjzqVea9qU3=-IvB`yh*MGm52 zmagw(#09A+(YB4%%lh*zWb_d&h%W0JQuq&Kg+2Kqp!eeVrrlr2Gf5&A`$ZaQptRq@ zS8&oRen&@hmszVte8}YKcDGptVmJ+4N7}n>de1J;pKApY0+9<%@RVqxm^f8=$w-{X z=`_3S&KqU|W1DTyLazLn2}Z9z>~fxRNRu?UlQtbrfn)y-P%jn6O6h6hJh#ZMJ7@78 zM!xqjLC^$ipB)wTeW6KYCTd$bbg|A=EsebmJLHo*X)YEGHgew1%Z=yN#U^KHZhNXH zLNw_?-)F-8UI^JVz*!-ex+ODRT$u^gli)P5)vbyPnC{vsx55jDMYbjfe>lid;xd

    =ex_X{)$D;Rj!(r*cNx{( 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 literal 0 HcmV?d00001 diff --git a/Clip2D/Clip2D/Clip2D.cpp b/Clip2D/Clip2D/Clip2D.cpp new file mode 100644 index 0000000..aa80715 --- /dev/null +++ b/Clip2D/Clip2D/Clip2D.cpp @@ -0,0 +1,184 @@ + +// Clip2D.cpp : Defines the class behaviors for the application. +// + +#include "pch.h" +#include "framework.h" +#include "afxwinappex.h" +#include "afxdialogex.h" +#include "Clip2D.h" +#include "MainFrm.h" + +#include "Clip2DDoc.h" +#include "Clip2DView.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CClip2DApp + +BEGIN_MESSAGE_MAP(CClip2DApp, CWinApp) + ON_COMMAND(ID_APP_ABOUT, &CClip2DApp::OnAppAbout) + // Standard file based document commands + ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew) + ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen) + // Standard print setup command + ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup) +END_MESSAGE_MAP() + + +// CClip2DApp construction + +CClip2DApp::CClip2DApp() noexcept +{ + + // support Restart Manager + m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS; +#ifdef _MANAGED + // If the application is built using Common Language Runtime support (/clr): + // 1) This additional setting is needed for Restart Manager support to work properly. + // 2) In your project, you must add a reference to System.Windows.Forms in order to build. + System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException); +#endif + + // TODO: replace application ID string below with unique ID string; recommended + // format for string is CompanyName.ProductName.SubProduct.VersionInformation + SetAppID(_T("Clip2D.AppID.NoVersion")); + + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +// The one and only CClip2DApp object + +CClip2DApp theApp; + + +// CClip2DApp initialization + +BOOL CClip2DApp::InitInstance() +{ + // InitCommonControlsEx() is required on Windows XP if an application + // manifest specifies use of ComCtl32.dll version 6 or later to enable + // visual styles. Otherwise, any window creation will fail. + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(InitCtrls); + // Set this to include all the common control classes you want to use + // in your application. + InitCtrls.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&InitCtrls); + + CWinApp::InitInstance(); + + + // Initialize OLE libraries + if (!AfxOleInit()) + { + AfxMessageBox(IDP_OLE_INIT_FAILED); + return FALSE; + } + + AfxEnableControlContainer(); + + EnableTaskbarInteraction(FALSE); + + // AfxInitRichEdit2() is required to use RichEdit control + // AfxInitRichEdit2(); + + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need + // Change the registry key under which our settings are stored + // TODO: You should modify this string to be something appropriate + // such as the name of your company or organization + SetRegistryKey(_T("Local AppWizard-Generated Applications")); + LoadStdProfileSettings(4); // Load standard INI file options (including MRU) + + + // Register the application's document templates. Document templates + // serve as the connection between documents, frame windows and views + CSingleDocTemplate* pDocTemplate; + pDocTemplate = new CSingleDocTemplate( + IDR_MAINFRAME, + RUNTIME_CLASS(CClip2DDoc), + RUNTIME_CLASS(CMainFrame), // main SDI frame window + RUNTIME_CLASS(CClip2DView)); + if (!pDocTemplate) + return FALSE; + AddDocTemplate(pDocTemplate); + + + // Parse command line for standard shell commands, DDE, file open + CCommandLineInfo cmdInfo; + ParseCommandLine(cmdInfo); + + + + // Dispatch commands specified on the command line. Will return FALSE if + // app was launched with /RegServer, /Register, /Unregserver or /Unregister. + if (!ProcessShellCommand(cmdInfo)) + return FALSE; + + // The one and only window has been initialized, so show and update it + m_pMainWnd->ShowWindow(SW_SHOW); + m_pMainWnd->UpdateWindow(); + return TRUE; +} + +int CClip2DApp::ExitInstance() +{ + //TODO: handle additional resources you may have added + AfxOleTerm(FALSE); + + return CWinApp::ExitInstance(); +} + +// CClip2DApp message handlers + + +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialogEx +{ +public: + CAboutDlg() noexcept; + +// Dialog Data +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_ABOUTBOX }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + +// Implementation +protected: + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() noexcept : CDialogEx(IDD_ABOUTBOX) +{ +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) +END_MESSAGE_MAP() + +// App command to run the dialog +void CClip2DApp::OnAppAbout() +{ + CAboutDlg aboutDlg; + aboutDlg.DoModal(); +} + +// CClip2DApp message handlers + + + diff --git a/Clip2D/Clip2D/Clip2D.h b/Clip2D/Clip2D/Clip2D.h new file mode 100644 index 0000000..b833f19 --- /dev/null +++ b/Clip2D/Clip2D/Clip2D.h @@ -0,0 +1,33 @@ + +// Clip2D.h : main header file for the Clip2D application +// +#pragma once + +#ifndef __AFXWIN_H__ + #error "include 'pch.h' before including this file for PCH" +#endif + +#include "resource.h" // main symbols + + +// CClip2DApp: +// See Clip2D.cpp for the implementation of this class +// + +class CClip2DApp : public CWinApp +{ +public: + CClip2DApp() noexcept; + + +// Overrides +public: + virtual BOOL InitInstance(); + virtual int ExitInstance(); + +// Implementation + afx_msg void OnAppAbout(); + DECLARE_MESSAGE_MAP() +}; + +extern CClip2DApp theApp; diff --git a/Clip2D/Clip2D/Clip2D.rc b/Clip2D/Clip2D/Clip2D.rc new file mode 100644 index 0000000000000000000000000000000000000000..39820287882661b565d52e155012d24c87138295 GIT binary patch literal 23262 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 HRg?FBl`xr@ literal 0 HcmV?d00001 diff --git a/Clip2D/Clip2D/Clip2D.vcxproj b/Clip2D/Clip2D/Clip2D.vcxproj new file mode 100644 index 0000000..c54106c --- /dev/null +++ b/Clip2D/Clip2D/Clip2D.vcxproj @@ -0,0 +1,223 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + {EC5E118A-9177-477E-B3BA-626132771FD7} + MFCProj + Clip2D + 10.0 + + + + Application + true + v143 + Unicode + Dynamic + + + Application + false + v143 + true + Unicode + Dynamic + + + Application + true + v143 + Unicode + Dynamic + + + Application + false + v143 + true + Unicode + Dynamic + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + true + _WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + true + true + true + _WINDOWS;NDEBUG;%(PreprocessorDefinitions) + pch.h + + + Windows + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Clip2D/Clip2D/Clip2D.vcxproj.filters b/Clip2D/Clip2D/Clip2D.vcxproj.filters new file mode 100644 index 0000000..f350e92 --- /dev/null +++ b/Clip2D/Clip2D/Clip2D.vcxproj.filters @@ -0,0 +1,87 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Resource Files + + + + + Resource Files + + + + + Resource Files + + + Resource Files + + + Resource Files + + + \ No newline at end of file diff --git a/Clip2D/Clip2D/Clip2D.vcxproj.user b/Clip2D/Clip2D/Clip2D.vcxproj.user new file mode 100644 index 0000000..21b6804 --- /dev/null +++ b/Clip2D/Clip2D/Clip2D.vcxproj.user @@ -0,0 +1,6 @@ + + + + Clip2D.rc + + \ No newline at end of file diff --git a/Clip2D/Clip2D/Clip2DDoc.cpp b/Clip2D/Clip2D/Clip2DDoc.cpp new file mode 100644 index 0000000..52f8a56 --- /dev/null +++ b/Clip2D/Clip2D/Clip2DDoc.cpp @@ -0,0 +1,138 @@ + +// Clip2DDoc.cpp : implementation of the CClip2DDoc class +// + +#include "pch.h" +#include "framework.h" +// SHARED_HANDLERS can be defined in an ATL project implementing preview, thumbnail +// and search filter handlers and allows sharing of document code with that project. +#ifndef SHARED_HANDLERS +#include "Clip2D.h" +#endif + +#include "Clip2DDoc.h" + +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// CClip2DDoc + +IMPLEMENT_DYNCREATE(CClip2DDoc, CDocument) + +BEGIN_MESSAGE_MAP(CClip2DDoc, CDocument) +END_MESSAGE_MAP() + + +// CClip2DDoc construction/destruction + +CClip2DDoc::CClip2DDoc() noexcept +{ + // TODO: add one-time construction code here + +} + +CClip2DDoc::~CClip2DDoc() +{ +} + +BOOL CClip2DDoc::OnNewDocument() +{ + if (!CDocument::OnNewDocument()) + return FALSE; + + // TODO: add reinitialization code here + // (SDI documents will reuse this document) + + return TRUE; +} + + + + +// CClip2DDoc serialization + +void CClip2DDoc::Serialize(CArchive& ar) +{ + if (ar.IsStoring()) + { + // TODO: add storing code here + } + else + { + // TODO: add loading code here + } +} + +#ifdef SHARED_HANDLERS + +// Support for thumbnails +void CClip2DDoc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds) +{ + // Modify this code to draw the document's data + dc.FillSolidRect(lprcBounds, RGB(255, 255, 255)); + + CString strText = _T("TODO: implement thumbnail drawing here"); + LOGFONT lf; + + CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)); + pDefaultGUIFont->GetLogFont(&lf); + lf.lfHeight = 36; + + CFont fontDraw; + fontDraw.CreateFontIndirect(&lf); + + CFont* pOldFont = dc.SelectObject(&fontDraw); + dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK); + dc.SelectObject(pOldFont); +} + +// Support for Search Handlers +void CClip2DDoc::InitializeSearchContent() +{ + CString strSearchContent; + // Set search contents from document's data. + // The content parts should be separated by ";" + + // For example: strSearchContent = _T("point;rectangle;circle;ole object;"); + SetSearchContent(strSearchContent); +} + +void CClip2DDoc::SetSearchContent(const CString& value) +{ + if (value.IsEmpty()) + { + RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid); + } + else + { + CMFCFilterChunkValueImpl *pChunk = nullptr; + ATLTRY(pChunk = new CMFCFilterChunkValueImpl); + if (pChunk != nullptr) + { + pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT); + SetChunkValue(pChunk); + } + } +} + +#endif // SHARED_HANDLERS + +// CClip2DDoc diagnostics + +#ifdef _DEBUG +void CClip2DDoc::AssertValid() const +{ + CDocument::AssertValid(); +} + +void CClip2DDoc::Dump(CDumpContext& dc) const +{ + CDocument::Dump(dc); +} +#endif //_DEBUG + + +// CClip2DDoc commands diff --git a/Clip2D/Clip2D/Clip2DDoc.h b/Clip2D/Clip2D/Clip2DDoc.h new file mode 100644 index 0000000..fb56bf0 --- /dev/null +++ b/Clip2D/Clip2D/Clip2DDoc.h @@ -0,0 +1,48 @@ + +// Clip2DDoc.h : interface of the CClip2DDoc class +// + + +#pragma once + + +class CClip2DDoc : public CDocument +{ +protected: // create from serialization only + CClip2DDoc() noexcept; + DECLARE_DYNCREATE(CClip2DDoc) + +// Attributes +public: + +// Operations +public: + +// Overrides +public: + virtual BOOL OnNewDocument(); + virtual void Serialize(CArchive& ar); +#ifdef SHARED_HANDLERS + virtual void InitializeSearchContent(); + virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds); +#endif // SHARED_HANDLERS + +// Implementation +public: + virtual ~CClip2DDoc(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// Generated message map functions +protected: + DECLARE_MESSAGE_MAP() + +#ifdef SHARED_HANDLERS + // Helper function that sets search content for a Search Handler + void SetSearchContent(const CString& value); +#endif // SHARED_HANDLERS +}; diff --git a/Clip2D/Clip2D/Clip2DView.cpp b/Clip2D/Clip2D/Clip2DView.cpp new file mode 100644 index 0000000..73e442b --- /dev/null +++ b/Clip2D/Clip2D/Clip2DView.cpp @@ -0,0 +1,283 @@ + +// Clip2DView.cpp : implementation of the CClip2DView class +// + +#include "pch.h" +#include "framework.h" +// SHARED_HANDLERS can be defined in an ATL project implementing preview, thumbnail +// and search filter handlers and allows sharing of document code with that project. +#ifndef SHARED_HANDLERS +#include "Clip2D.h" +#endif + +#include "Clip2DDoc.h" +#include "Clip2DView.h" + +#define Round(x) ((int)(x + 0.5)) +#define PI 3.1415926 + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// CClip2DView + +IMPLEMENT_DYNCREATE(CClip2DView, CView) + +BEGIN_MESSAGE_MAP(CClip2DView, CView) +ON_WM_MOUSEMOVE() +ON_WM_ERASEBKGND() +ON_WM_LBUTTONDOWN() +ON_WM_RBUTTONDOWN() +// Standard printing commands +ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint) +ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint) +ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview) +END_MESSAGE_MAP() + +// CClip2DView construction/destruction + +CClip2DView::CClip2DView() noexcept { + // TODO: add construction code here + nRHWidth = 100; + nRHHeight = 100; + nScale = 2; +} + +CClip2DView::~CClip2DView() { +} + +BOOL CClip2DView::PreCreateWindow(CREATESTRUCT &cs) { + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return CView::PreCreateWindow(cs); +} + +// CClip2DView drawing + +void CClip2DView::OnDraw(CDC * /*pDC*/) { + CClip2DDoc *pDoc = GetDocument(); + ASSERT_VALID(pDoc); + if (!pDoc) + return; + + // TODO: add draw code for native data here + DoubleBuffer(); +} + +// CClip2DView printing + +BOOL CClip2DView::OnPreparePrinting(CPrintInfo *pInfo) { + // default preparation + return DoPreparePrinting(pInfo); +} + +void CClip2DView::OnBeginPrinting(CDC * /*pDC*/, CPrintInfo * /*pInfo*/) { + // TODO: add extra initialization before printing +} + +void CClip2DView::OnEndPrinting(CDC * /*pDC*/, CPrintInfo * /*pInfo*/) { + // TODO: add cleanup after printing +} + +// CClip2DView diagnostics + +#ifdef _DEBUG +void CClip2DView::AssertValid() const { + CView::AssertValid(); +} + +void CClip2DView::Dump(CDumpContext &dc) const { + CView::Dump(dc); +} + +CClip2DDoc *CClip2DView::GetDocument() const // non-debug version is inline +{ + ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CClip2DDoc))); + return (CClip2DDoc *)m_pDocument; +} +#endif //_DEBUG + +void CClip2DView::DoubleBuffer() { + CRect rect; + GetClientRect(&rect); + CDC *pDC = GetDC(); + pDC->SetMapMode(MM_ANISOTROPIC); + pDC->SetWindowExt(rect.Width(), rect.Height()); + pDC->SetViewportExt(rect.Width(), -rect.Height()); + pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2); + CDC MemDC; + CBitmap NewBitmap, *pOldBitmap; + MemDC.CreateCompatibleDC(pDC); + NewBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height()); + pOldBitmap = MemDC.SelectObject(&NewBitmap); + MemDC.FillSolidRect(&rect, pDC->GetBkColor()); + MemDC.SetMapMode(MM_ANISOTROPIC); + MemDC.SetWindowExt(rect.Width(), rect.Height()); + MemDC.SetViewportExt(rect.Width(), -rect.Height()); + MemDC.SetViewportOrg(rect.Width() / 2, rect.Height() / 2); + + Diamond(&MemDC, FALSE); + DrawRect(&MemDC, nScale); + Diamond(&MemDC, TRUE); + + pDC->BitBlt(-rect.Width() / 2, -rect.Height() / 2, rect.Width(), rect.Height(), &MemDC, -rect.Width() / 2, -rect.Height() / 2, SRCCOPY); + MemDC.SelectObject(pOldBitmap); + NewBitmap.DeleteObject(); + ReleaseDC(pDC); +} + +void CClip2DView::DrawRect(CDC *pDC, int nScale) { + pDC->Rectangle(Round(nRCenter.x - nRHWidth), Round(nRCenter.y + nRHHeight), + Round(nRCenter.x + nRHWidth), Round(nRCenter.y - nRHHeight)); +} + +void CClip2DView::OnMouseMove(UINT nFlags, CPoint point) { + // TODO: Add your message handler code here and/or call default + nRCenter = Convert(point); + Invalidate(FALSE); + CView::OnMouseMove(nFlags, point); +} + +BOOL CClip2DView::LBLineClip() { + double tmax, tmin, dx, dy; + dx = P[1].x - P[0].x; + dy = P[1].y - P[0].y; + tmax = 0.0, tmin = 1.0; + double wxl = nRCenter.x - nRHWidth / nScale; + double wxr = nRCenter.x + nRHWidth / nScale; + double wyb = nRCenter.y - nRHHeight / nScale; + double wyt = nRCenter.y + nRHHeight / nScale; + if (ClipTest(-dx, P[0].x - wxl, tmax, tmin)) { + if (ClipTest(dx, wxr - P[0].x, tmax, tmin)) { + if (ClipTest(-dy, P[0].y - wyb, tmax, tmin)) { + if (ClipTest(dy, wyt - P[0].y, tmax, tmin)) { + if (tmin < 1.0) { + P[1].x = P[0].x + tmin * dx; + P[1].y = P[0].y + tmin * dy; + } + if (tmax > 0.0) { + P[0].x = P[0].x + tmax * dx; + P[0].y = P[0].y + tmax * dy; + } + return TRUE; + } + } + } + } + return FALSE; +} + +BOOL CClip2DView::ClipTest(double u, double v, double &tmax, double &tmin) { + double t; + BOOL ReturnValue = TRUE; + if (u < 0.0) { + t = v / u; + if (t > tmin) + ReturnValue = FALSE; + else if (t > tmax) + tmax = t; + } + else { + if (u > 0.0) { + t = v / u; + if (t < tmax) + ReturnValue = FALSE; + else if (t < tmin) + tmin = t; + } + else { + if (v < 0.0) + ReturnValue = FALSE; + } + } + return (ReturnValue); +} + +CP2 CClip2DView::Convert(CPoint point) { + CRect rect; + GetClientRect(&rect); + CP2 ptemp; + ptemp.x = point.x - rect.Width() / 2; + ptemp.y = rect.Height() / 2 - point.y; + return ptemp; +} + +BOOL CClip2DView::OnEraseBkgnd(CDC *pDC) { + // TODO: Add your message handler code here and/or call default + return TRUE; +} + +void CClip2DView::Diamond(CDC *pDC, BOOL bclip) { + CPen NewPen, *pOldPen; + if (bclip) + NewPen.CreatePen(PS_SOLID, nScale, RGB(0, 0, 0)); + else + NewPen.CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); + pOldPen = pDC->SelectObject(&NewPen); + int numHexagons = 30; + double baseRadius = 10; + double rotationAngle = -PI / 196; + + for (int h = 0; h < numHexagons; h++) { + double r = baseRadius * (h + 1); + int n = 6; + V = new CP2[n]; + double thta = 2 * PI / n; + + for (int i = 0; i < n; i++) { + double angle = i * thta + h * rotationAngle; + V[i].x = r * cos(angle); + V[i].y = r * sin(angle); + } + + for (int i = 0; i < n; i++) { + int j = (i + 1) % n; + if (!bclip) { + pDC->MoveTo(Round(V[i].x), Round(V[i].y)); + pDC->LineTo(Round(V[j].x), Round(V[j].y)); + } + else { + P[0] = V[i]; + P[1] = V[j]; + if (LBLineClip()) { + pDC->MoveTo(ZoomX(Round(P[0].x)), ZoomY(Round(P[0].y))); + pDC->LineTo(ZoomX(Round(P[1].x)), ZoomY(Round(P[1].y))); + } + } + } + + delete[] V; + } + pDC->SelectObject(pOldPen); + NewPen.DeleteObject(); +} + +int CClip2DView::ZoomX(int x) { + return Round((x - nRCenter.x) * nScale + nRCenter.x); +} + +int CClip2DView::ZoomY(int y) { + return Round((y - nRCenter.y) * nScale + nRCenter.y); +} + +void CClip2DView::OnLButtonDown(UINT nFlags, CPoint point) { + // TODO: Add your message handler code here and/or call default + if (nScale <= 5) + nScale = nScale + 1; + else + MessageBox(_T("The magnification is too large")); + Invalidate(FALSE); + CView::OnLButtonDown(nFlags, point); +} + +void CClip2DView::OnRButtonDown(UINT nFlags, CPoint point) { + // TODO: Add your message handler code here and/or call default + if (nScale >= 2) + nScale = nScale - 1; + else + MessageBox(_T("The magnification is too small")); + Invalidate(FALSE); + CView::OnRButtonDown(nFlags, point); +} diff --git a/Clip2D/Clip2D/Clip2DView.h b/Clip2D/Clip2D/Clip2DView.h new file mode 100644 index 0000000..fbca3fb --- /dev/null +++ b/Clip2D/Clip2D/Clip2DView.h @@ -0,0 +1,64 @@ + +// Clip2DView.h : interface of the CClip2DView class +// + +#pragma once + +#include "P2.h" + +class CClip2DView : public CView { +protected: // create from serialization only + CClip2DView() noexcept; + DECLARE_DYNCREATE(CClip2DView) + + // Attributes +public: + CClip2DDoc *GetDocument() const; + + // Operations +public: + void DoubleBuffer(); + void DrawRect(CDC *pDC, int nscale); + CP2 Convert(CPoint point); + void Diamond(CDC *pDC, BOOL bClip); + int ZoomX(int x); + int ZoomY(int y); + BOOL LBLineClip(); + BOOL ClipTest(double, double, double &, double &); + + // Overrides +public: + virtual void OnDraw(CDC *pDC); // overridden to draw this view + virtual BOOL PreCreateWindow(CREATESTRUCT &cs); + +protected: + virtual BOOL OnPreparePrinting(CPrintInfo *pInfo); + virtual void OnBeginPrinting(CDC *pDC, CPrintInfo *pInfo); + virtual void OnEndPrinting(CDC *pDC, CPrintInfo *pInfo); + + // Implementation +public: + virtual ~CClip2DView(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext &dc) const; +#endif + +protected: + CP2 P[2]; + CP2 *V; + UINT nScale; + CP2 nRCenter; + double nRHHeight, nRHWidth; + +protected: + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg BOOL OnEraseBkgnd(CDC *pDC); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + afx_msg void OnRButtonDown(UINT nFlags, CPoint point); + DECLARE_MESSAGE_MAP() +}; + +#ifndef _DEBUG // debug version in Clip2DView.cpp +inline CClip2DDoc *CClip2DView::GetDocument() const { return reinterpret_cast(m_pDocument); } +#endif diff --git a/Clip2D/Clip2D/MainFrm.cpp b/Clip2D/Clip2D/MainFrm.cpp new file mode 100644 index 0000000..798e6f9 --- /dev/null +++ b/Clip2D/Clip2D/MainFrm.cpp @@ -0,0 +1,96 @@ + +// MainFrm.cpp : implementation of the CMainFrame class +// + +#include "pch.h" +#include "framework.h" +#include "Clip2D.h" + +#include "MainFrm.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// CMainFrame + +IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) + +BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) + ON_WM_CREATE() +END_MESSAGE_MAP() + +static UINT indicators[] = +{ + ID_SEPARATOR, // status line indicator + ID_INDICATOR_CAPS, + ID_INDICATOR_NUM, + ID_INDICATOR_SCRL, +}; + +// CMainFrame construction/destruction + +CMainFrame::CMainFrame() noexcept +{ + // TODO: add member initialization code here +} + +CMainFrame::~CMainFrame() +{ +} + +int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CFrameWnd::OnCreate(lpCreateStruct) == -1) + return -1; + + if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || + !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) + { + TRACE0("Failed to create toolbar\n"); + return -1; // fail to create + } + + if (!m_wndStatusBar.Create(this)) + { + TRACE0("Failed to create status bar\n"); + return -1; // fail to create + } + m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); + + // TODO: Delete these three lines if you don't want the toolbar to be dockable + m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); + EnableDocking(CBRS_ALIGN_ANY); + DockControlBar(&m_wndToolBar); + + + return 0; +} + +BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) +{ + if( !CFrameWnd::PreCreateWindow(cs) ) + return FALSE; + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return TRUE; +} + +// CMainFrame diagnostics + +#ifdef _DEBUG +void CMainFrame::AssertValid() const +{ + CFrameWnd::AssertValid(); +} + +void CMainFrame::Dump(CDumpContext& dc) const +{ + CFrameWnd::Dump(dc); +} +#endif //_DEBUG + + +// CMainFrame message handlers + diff --git a/Clip2D/Clip2D/MainFrm.h b/Clip2D/Clip2D/MainFrm.h new file mode 100644 index 0000000..976d34b --- /dev/null +++ b/Clip2D/Clip2D/MainFrm.h @@ -0,0 +1,43 @@ + +// MainFrm.h : interface of the CMainFrame class +// + +#pragma once + +class CMainFrame : public CFrameWnd +{ + +protected: // create from serialization only + CMainFrame() noexcept; + DECLARE_DYNCREATE(CMainFrame) + +// Attributes +public: + +// Operations +public: + +// Overrides +public: + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + +// Implementation +public: + virtual ~CMainFrame(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: // control bar embedded members + CToolBar m_wndToolBar; + CStatusBar m_wndStatusBar; + +// Generated message map functions +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + DECLARE_MESSAGE_MAP() + +}; + + diff --git a/Clip2D/Clip2D/P2.cpp b/Clip2D/Clip2D/P2.cpp new file mode 100644 index 0000000..44d1fc6 --- /dev/null +++ b/Clip2D/Clip2D/P2.cpp @@ -0,0 +1,8 @@ +#include "pch.h" +#include "P2.h" + +CP2::CP2() { +} + +CP2::~CP2() { +} diff --git a/Clip2D/Clip2D/P2.h b/Clip2D/Clip2D/P2.h new file mode 100644 index 0000000..cf8f059 --- /dev/null +++ b/Clip2D/Clip2D/P2.h @@ -0,0 +1,8 @@ +#pragma once +class CP2 { +public: + CP2(); + virtual ~CP2(); + double x, y; + UINT rc; +}; diff --git a/Clip2D/Clip2D/Resource.h b/Clip2D/Clip2D/Resource.h new file mode 100644 index 0000000..fcbeab7 --- /dev/null +++ b/Clip2D/Clip2D/Resource.h @@ -0,0 +1,19 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Clip2D.rc +// +#define IDD_ABOUTBOX 100 +#define IDP_OLE_INIT_FAILED 100 +#define IDR_MAINFRAME 128 +#define IDR_Clip2DTYPE 130 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 310 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 310 +#define _APS_NEXT_COMMAND_VALUE 32771 +#endif +#endif diff --git a/Clip2D/Clip2D/framework.h b/Clip2D/Clip2D/framework.h new file mode 100644 index 0000000..36afc12 --- /dev/null +++ b/Clip2D/Clip2D/framework.h @@ -0,0 +1,49 @@ +#pragma once + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers +#endif + +#include "targetver.h" + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit + +// turns off MFC's hiding of some common and often safely ignored warning messages +#define _AFX_ALL_WARNINGS + +#include // MFC core and standard components +#include // MFC extensions + + +#include // MFC Automation classes + + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC support for Internet Explorer 4 Common Controls +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // MFC support for ribbons and control bars + + + + + + + + + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/Clip2D/Clip2D/pch.cpp b/Clip2D/Clip2D/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/Clip2D/Clip2D/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/Clip2D/Clip2D/pch.h b/Clip2D/Clip2D/pch.h new file mode 100644 index 0000000..885d5d6 --- /dev/null +++ b/Clip2D/Clip2D/pch.h @@ -0,0 +1,13 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +// add headers that you want to pre-compile here +#include "framework.h" + +#endif //PCH_H diff --git a/Clip2D/Clip2D/res/Clip2D.ico b/Clip2D/Clip2D/res/Clip2D.ico new file mode 100644 index 0000000000000000000000000000000000000000..1c753ea1e58bd78e6481825532d5b1f36233d370 GIT binary patch literal 21177 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�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 HZ6p2%*LTL4 literal 0 HcmV?d00001 diff --git a/Clip2D/Clip2D/res/Clip2D.rc2 b/Clip2D/Clip2D/res/Clip2D.rc2 new file mode 100644 index 0000000000000000000000000000000000000000..85b78967d241c4c86fa3e24527c7dd087df3fae7 GIT binary patch literal 796 zcmdUt&1wQc5QM*Tz;_tPQFI}15Y&T6+<-~0qU(qYW|duY@a2D)xhr9n;?B@)W3 zOp!#1WH(#|qOcSxMc5h&pg>m;!y%t#KfOCe%H}uo-hKFNtV9Y;jWHZVl{N{sph^HCK|Wo4xyD=TORgrYJ~OyM&XI|Bu>(!isT z@n~3pz8obFF_1fzz4n+7z}{Uk0tJ}|{;`Aq%7{!>k__zzV@&Rh%PV{RJC$KRORDlH zy$`vV-#hd5lGt0NNmgUj{Jprk+Usfm59R*&!vE0u*dmNHU;Ucz1d(}m#1veHj}=^^ zmom(bWg8Be$Nz*%=Ln-)e-7^N^9`O4rUsiD3;WtSS{`kW>s~)>pO=@*w{c)Lw`G}b zs>58-*!s&yH>a}Y<>m77&0H?u&i6$}Ophg(1{gZ%bnOP;)X zCExtAP9g_;IDtbhI&==5L+4aS0o28#_dIy?9=%7e!xHof`UD|CpP;9cfIgrP=mUy? zJ|ait7%a1+bp&?=atv~uZJK4-O9o4~AeTd&o;jp8SJs<<;tdirfi)R%&u5U`j}u zkRSn5Lhb}(Lhgjz3At@KEH`@cC*)7auS=AWKcO}pUod*=pvy*8Z1!mAX>}Q?K_FiM zTL4EOpDnH8pauaPL2)oKTW$sgumrFKKm-!n7640NV8AJ$2w>q06NfbkU`#y)4{aQcBnlXjOG4vfC zVmF6$Y!-!s+4ngN3z6Fkhp`Zfp|HpF9rNqk-xXnC-`p%QjZ&#zKYjYNHM(sF@#8{F zH~H*t)^UMo)nPDxF~)^-Ax$^&DD3L+Oy{q3E5^mRn5K(`eO{eL>`O~acr7iZ>8;C` z>vd&y7>u_dc_~M0J#M#ojyOEq(tY~i!NWcDY)FqvB|QnggwMd^_c@v3xOkuUIlHF} z?{oP*WkK&c2U3GO3I@(J>u7mAx~K3?;uQrS-BXV4DcmLghxe3fo0mH8tp1z*%}lM^ zt<`GXLes9-Yc-C{S}j*(J9dJq#)f1&JNnLt@*&yoPT`?Js?}_FpwJ-IEZxoB^D)&d z@{;QhA!f#5JXEOMYN2QmwAC{EY@AJJcV~BI4MP^M=x6uJ&Xq#ezwEI`j9xE~XJ>pK ebf!9zJj>c|s^4=u%RGFh;Db)((f^2J&wm5njJ}%y literal 0 HcmV?d00001 diff --git a/Clip2D/Clip2D/res/Toolbar.bmp b/Clip2D/Clip2D/res/Toolbar.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d501723c1ceb781cccf04bc42408a2bee6b0eab4 GIT binary patch literal 1078 zcmb_byK2Kg5WFD46)N-_DGd%mbvRHJ@+(`2Y#@z5De^h$T}Yp#;yM?~%&rw%!DZII z_s!1Ct^M-)Tn3AG^p9vgT8;J){9rDyxEsA+?t8wt)o$n@0`>@NK8bGHkdKdb4m#tglAgQo-)Js1!#;+~GSl z37z4Z<|(I?jV44Q_xOeQ!(IFmLY86pVjciLPfC9(?0)$t7hw7W^>>N<@a4LVKPMb~ ze5>=j|BL>!3lPen5hUo~ANKN`l7C&3 z%0PPq3XFRT-e1OO0*EKjOA>DIfd!JKE>l7s8ZOWoALnDl7bEaBMvn{Ll0`lMj_p*2 zeyj@cEB=w(f%+@Ig9SfK=ePQ9c)El>T>d0F2ei{lnHqPg}It<8 literal 0 HcmV?d00001 diff --git a/Clip2D/Clip2D/targetver.h b/Clip2D/Clip2D/targetver.h new file mode 100644 index 0000000..87c0086 --- /dev/null +++ b/Clip2D/Clip2D/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include