Writing docx Documents
Below is an example on how to use pydocmaker to write word docx documents from format templates and also automatically “replace” fields (MergeFields in Word or plain text) to be filled out in the docx document with text from python.
NOTE: Updating word documents and exporting them to PDF requires the win32com api, Microsoft Word installed and only works on Windows.
NOTE: Exporting word documents is unfortunately very slow, but hey… it works :-)
[1]:
import pydocmaker as pyd
import os
print(pyd.__version__)
2.6.9
[2]:
# get a pyd example document to show the concept
doc = pyd.get_example()
[3]:
# some dir to write my example files to
os.makedirs('../exported_docs_examples', exist_ok=True)
To docx (no template, no dependencies)
[4]:
# as bytes
bts = doc.to_docx()
type(bts), len(bts)
[4]:
(bytes, 14144)
[5]:
bts
[5]:
b'PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xaf9I\x01\x99\x01\x00\x00\xd2\x07\x00\x00\x13\x00\x00\x00[Content_Types].xml\xb5\x95\xd1N\xc20\x14\x86_e\xd9\xada\x05\x12\x8d1\x80\x17*\x897j">@i\xcf\xa0q\xedi\xda3\xd4\xb7\xf7l\x93\xc5\x10\xddP\xe0f\xc9z\xce\xf9\xfe\xbf\xff\xdalr\xfdn\x8bd\x03!\x1at\xd3t\x94\r\xd3\x04\x9cBm\xdcj\x9a\xbe,\xe6\x83\xcb\xf4z6Y|x\x88\t\xb7\xba8M\xd7D\xfeJ\x88\xa8\xd6`e\xcc\xd0\x83\xe3J\x8e\xc1J\xe2\xd7\xb0\x12^\xaaW\xb9\x021\x1e\x0e/\x84BG\xe0h@\x15#\x9dMn!\x97eA\xc9\xdd;/7\xb2<\x9e&7M_%5M\xa5\xf7\x85Q\x92\xb8,\xea\xaa\xf8q0@\x11;&7N\xef\xd8\x1b|Y\xcbx\xb2\xee\x89k\xe3\xe3Y\x87\x04j\xa2\xfco\x1a\x98\xe7F\x81FUZ\x1e\xc9p\x99\x97\x91\xbbA\xcf\x19R\xeb<r\xe2\xc1hH\x9ed\xa0\x07i\x99)\xde0h\xf1\x06\xcbg \xe2\xf4c\xd6\x9dJ\xbfn\x05\xf4\x01\x15\xc4\xc8<[d\xdf\xe0\xed\x8e\x7fu\xe2J\xbb\x84\xc0\xbd\xc7\xf7\xd1\xa2\xfb]\xc4\x93\x85\x11\xf7N\x82\xf8\x9cC\xf3\x1c\x1d\xec\xa3\xc6\xf4k\xe6\xac\xb0\x90\xcb\x02\x8e\xbf\xf1\x16\xdd\xe9\x82\xe7\x9f\x02\xfa(X\xed`\x0fP]\'\rz\xc0F<\x042\xd0\x1d{+\xae0\xfc#\x81\xed\x1d\xaf\xa6\xff.YFB{\xf0\x96\x1b\xcc\xbe\xea\xcdY\xa7\x8f\x02Nq\xd2kn\xbf~K8\xba\x83\xb6b\xa5q\xfdF\x14\xda\xaa\xfb\x04Ql\xc9\xfb\\@$\x87t\x8a\xef\xd1\xa2\xfb]X\xd0F\x8ap\xaf\xc7\xe7\x99w\xab\x1d\x1f\xc6V?\xd9z\x9d!\xa2\xfeI\xcf>\x01PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xb7w\xa4\xef\xe7\x00\x00\x00\xd2\x02\x00\x00\x0b\x00\x00\x00_rels/.rels\xad\x92MN\x031\x0cF\xaf\x12y\xdf\xf1\x14\nB\xa8i7\xa8Rw\x08\x95\x03X\x89g&\xa2\xf9Q\xe2B\xb9=\x01!\xa0\xa8\x0c]t\x19\xe7\xf3\xf3\x93\xe5\xf9r\xef\xb7\xea\x99sq1h\x986-(\x0e&Z\x17z\r\x8f\x9b\xd5\xe4\x06\x96\x8b\xf9\x03oIj\xa2\x0c.\x15U[B\xd10\x88\xa4[\xc4b\x06\xf6T\x9a\x988\xd4\x9f.fOR\x9f\xb9\xc7D\xe6\x89z\xc6\x8b\xb6\xbd\xc6\xfc\x93\x01\x87L\xb5\xb6\x1a\xf2\xdaNAm^\x13\x9f\xc2\x8e]\xe7\x0c\xdfE\xb3\xf3\x1c\xe4\xc8\x88_\x89J\xa6\xdc\xb3hx\x89\xd9\xa2\xfd,7\x15\x0b\n\x8f\xeb\xcc\xce\xa9\xc3{\xe1`\xd9NR\xae\xfdY\x1c\x97o\xa7\xaas_\xcb\x05)\xa5Q\xa5\xcb\xd3\x95\xfe\xde>z\x16\xb2$\x84&f\x1e\x17zO\x8c\x1a]\x9dsIfW$\xfa\x7f\x8c>2_Nxp\x9c\x8b7PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\XH\xb3\xbe#\x0c\x00\x00\xe8(\x00\x00\x11\x00\x00\x00word/document.xml\xd5Z\xd9r\xdb8\x16}\xcfW\xa04U]\xe9\x8am\xc9\xf2&;q\xbalI\xde%\xcb\x92\xe5\xed\r$A\x12\x11\x08\xd0\x00$\x8a\x9e\xea\xaa\xfe\x90\x99\x9f\xeb/\x99{A\xcaK\xc7q\x1c\'iO\xebA\x02\xb1\xdd\xed\xdc\x05\xa0>\xfc6M\x04\x990m\xb8\x92\x9b\x95\xc5\x85Z\x850\xe9\xab\x80\xcbh\xb32<\xdd\x99oT~\xfb\xf8\xe6C\xb6\x11(\x7f\x9c0i\t,\x90f#\xdb\xac\xc4\xd6\xa6\x1b\xd5\xaa\xf1c\x96P\xb3\xa0R&a,T:\xa1\x16\x1euT\xcd\x94\x0eR\xad|f\x0c\xec\x97\x88j\xbdV[\xad&\x94\xcbJ\xb9M\xf2\x9cmT\x18r\x9f\xb5J\x06f\x9b\xd8x\xb6\x89~\xe9&\x9a\tjAp\x13\xf3\xd4\xccvS\x9b\x95\xb1\x96\x1b\xe5V\xf3\t\xf7\xb52*\xb4\xf3\xbeJ6\x8a]\xca\x9f\xd9\x8a\xc9S+&\x89\x98\xcd\xcb\x16k\xcf\xd8\x1b\x956[A\x9f#Y\xa0i\xf6\x05\xf5\xa6\xdc\x7f\xc1\x0e\xb0\xca\x8e\xf5\xadxY\xfa\x82=\x1e\x9a\xbeU\x0cV\x1c\x92<\x15\xe4\x1f\xdf\x10\xf8\xb8\x075J\xa8\x1e\r,\xd5\x96d\x1b<\xd8\xac\xd4\x97*\xd0\x924a\x9b\x15\xa3\x126\xcf\xa64I\x05\x9b\xb7lj+\xa4z\xbb8\xfd\x88_=\xed~\x066\x17\x0c\xd6M\xa8\xd8\xac\xec1\x8a\x10\xae\xe3\xec\x0f\xd5\xdbI\xee\xcbAx\xc3\xa4\xd4\x87\xfdS\xcd\x0c\xd3\x13V\xf98\x00J\xa4]P"\xa7@\t\xd7Y\xb7Z\x17{<\x83\xee\x0e\xd7\xc6\xf6\xa8\xa6\x91\xa6i\xfc\r\xd4\x8f%#\x89\xd2\x12\x98\x9e#Y\xcc$\xd9\xd5,R\x9a\x0chb(\xc9\xd4\x88\x91P\xab\x84X\xad\xc6\x9e`\x01\t4\x83\xa19\x12\xc3\x80\x1a\xcb\x80\xc4<1L\x84\x0f\xd8~\x9a(yl\xae.\x98\xe5\xc8;\xfc4M)D\xd9\xff\x85\xad\xac\xa6\xd2 \x1eX\xf0\xbd\x0c|a.\x97 \xa1!\x1e\x88\xce\xa5U\x84\x92Xi\xcdA\x17\xdfA0\xceS\xa6\x05\x97#\xa2\x1d\xf4\xf4~P\xafU\xfe\xaa\x0b\xfd\x10[\xb35\x95gi\x06\x82k\xc2\xe5_\xc1tK\xf8k\x1c/\x90=F\x04\xcd\x89*\xe4\xa7:Qc=/8\x00\xc2\xa3\xfeh\x8eP\xb0=\x0f\x11\x07\x82\x87\x96\x05nZ\x0c\x0e\x00*\x12\xdcZ\xe0\x1c\xc6|5\x16\x011\x8c\x15Z\xd4*\x93\xa0K!\xf29b\x04\x8fb+r\x12\x80\x0b\x04n\xbf\x80Ox\x00m/\x07\x82\xe0\xf4\xa6\xd0\xb9\xb1<\x0ca\x13\xdfE\xcd\x05r\n\x1b\x83A\xd0\xd5HF\x81*\xd5\x01\xecC\xc1(\x04\xa6\xfb\n\x84\xffAx\xf4\n<z\xcf\xc4\xa3\x01?\x91\xd1\xcf\x82\xa2uJ\x02e\xa2\xbe\xc0\x0f\x83\x1c\xc5\x05=\x06\x8c@\x18\x87\xd1\x1c\xbc\x19\x13\r\x98\x0f\xd4\x9d`\x87`\x11\xb8k\xcaA\x87c\xd0;\xb11@\x1a\x02\x7fJ5\xec\x92q\x1bC\x17#\x86\xdf\xe0&\xae\r\x14-\xb6\xc1\xb5\xe7\x88\x83iF\'h"O\x8da\\@\xa82\x06\x15n\x9c\xf9!\x96\xb2`\x81\xfc\xf9\xc7\x7f\xcecj\x7f\xf9\xd7\xd2\xfa{\xb4I\n\xd1\x1a\x16\x01\x87\t\xfb\xed\xcf?\xfe\x8bsm\xac\xc6`\xf4\x05\xb2o\xd1r\xd2M\x06\xb1\x8a\xb0Rp\xad\x95\x02\xb2\x94@\x1c\x07\xb0\x92x\x0cb\xb8NBE\xb1\xfe\x0eaV\x81\xfc\t\x15b\xce\x815e\xa0\xb2BL\x8f\xd9\x8cA<\xe3\xd6`\xa0\xd2$\xa4\t\x17\x9cj\xa0+\x84Y\xf8r\x98}47\xd4\xefr\x03h`\xbeD\xdf<\xc80_\xa0o\x1e\xd17o\xd5\xbcC\xdf<\xb7\x0b\xdf\x942\x96\xbe!h?\x07\xfe \xf7\x13"\xfe\x84L\x02\x065\xb1\xca\x98s\x7fDf\x08\x16\x82\'@L\x012JB\xb0\x02\x00\xc4\x81\x18\xdb\x9e\x82\x0c\x13\x83\x01\xa1o\x9cj\x8c\x06sDS\x8e\xa9\x1b\xe3,\xa3\x93\xdcML\xc6!\x02\x13\xa69\xd9\x10T\xa0\x02X*\x1cdc\x10W\x00i\x8dQ\n4\x90\x81>\x8c\x9b2\xe1\xccu\x13\xa3\xc0I\xee\xf6rQ%\x8b\xb9\x1f\xbb\xc5\xe00\\c>\x03\x10\xc2\x0e\x017\x08^\xf4\x8f\x85o\xc5\xc9\xe2\x1dN.\xd6\x18]]]\xacy\xcc\x0b\x16\xeb!]Y\xf1WV\xe9jcm}m\xad\xe6{\xf50X\tWj\x8d\xe5o\xc2\xc9\xf27\xe1\x04\x16\x18\x9212\x92*+\xbc\xb7\xcc\xef\xa5\x93\x1a\xc1X\x8a\xda\x8e\xa9\x07\x8e\xf2"\xc441\x94\xf8\xae@\x8219N\xcaD.&b6\xa5v7\xb8\x1f\xcc:\x17k\xb5\xc5\x990\xe5\xaa\xe7\x89\x05\x89\x89\x8a\x8c\xe6\x8e\xfd\xd4\xce2\x94\xc3\x0f\x84\xb1\x80\xfdc\xc4\x88\xc1y\x01\x88\x11C\xfc\x13\x00\x1cx\xf1[\x97\xef\x10QT*\x8b\xe8\xc4\xd0\x18@P#\x01\xcd\x7f\xfdG\xc9\x86a\x9d:\x07\x94\x18\x16\xa8@\xef\xf2\x85\xf2GDB\xa5\x8b\xb2\x97\xb5\xd5?D,\xcc\xa9\x85Q|L"\x98 \x8b\xaa\x19b\rX\xd1\xa0\x19A(8\xde=\x05\xc2Y\xe0h\xcb\xe0^\xd8\xa8>5^\xff\xca\xf8\xd2\xf3\x82\xc8\x8b\xa3\xbb[\x88RfT\xda"\xa9\x03H\x81>\x08|=\xe6\x0c\xcb8\xf7(!x\xc2)\x0eL:\xe7p\r\xe05\x06\x1f \xfaL\xd0q\x05 \x03\x1a\x1e\x80z\x14Rc\x8bBRIW\x990\xacL$\xfa\xb0\xc6`\xed4M]\xd57\x87\xd1\x99\xbc\x05\x0e\xc0+\xe0\xbc\x8a)\x00\xac\xe1\x0b\xe75\xbfb\xc5\x88\x85\xcd\x08\x83\x99-\xe2^\x91\x06\xa5+\xdd\x91sW\x89\xc2j\xac\x9c|\xccG\xf0k\x94ti\x13\xa8\xfab\x8c\xb7\x11\xae\xf0\xd5Pa%^\x99i\xa8\x13<\xc6\xc2V\x14E\x17\x1c\x9d\x81\xd3\x90\t\xeb*\x11\x8c;)\x1c\x7f\tpX\xa0\xa3\xa0\nU\x17\xd3P\x07\x99YQ5\x16\xae\xac\x82r\x86f#\xccRD\xe4\xc8p\xaa\x0c/\x84,r\x12\xe2G\x13P\xa3,\x13(\xa8\xdbc$\x85\xd31\xa8\x89\'4\xe2\x92\xea\xfc\x16z\x06\xca 4E\xa1Kg%\x03\xe1$\xc2MTQ|C\xfcG}9\x8bJ\x0b\xc5\x90\xb4\xd4p(\xb0\x0b\xb5\x00\x1e\x821\xc5\xba\t\xecgx\x8a\x00\x862\x1bDG\xd6\xfd\x98\xca\x88\x91\xf2(4Q\xa0\x7fG\x02\x03\x14\xf2_\x08\r\x9a\x92n:X\x90\x15\x82\xa2\x8a\x05,\xe7X\xa0\xc1\xa8\xf2\xfdq\xea\xee>\xa0\x1b:%\x80\x03\'B9\x9a0\xeds\xe8\x85\x13\xdd\x84\t\xa6\xa1fU\xe1\x03\xed\xa3\xe9\\\xa5\xea4\x8e%j\x00g\xd2\xa7\xca\x9cG3\xf4\xf2]\x86..\x12,\x16r\xa0\xb8yT,3?\xed\xa4\xbfsK\xcd\x99i\xdfQ\xfb\xa6(\xf1\xccR\xe1\xc5^\xee\\\nOq\x80\x16\x00\x0e\xba@\x80\x90)\xf5\x84\xde\x80a{\xc2!\x96\xe3\xed\x9d\x07\xa6L\x00\xfa\xfaE\x97\x16\x03\xa8\xca}\xd6T\x01{\x8c\xc5G\xcf\xc0g%\xcd&\x94\xbc\xcf;\x06\x87c\xe9\xe2\x07\x9cA,M\x94Nce\xd8[8ZX\x1a)\t\xb1j\x8e\xc2\x91F\xe9_\xff\xfd\xd8A\xcc\xd33"?\x9a/\xd4\x0e\x0f\xdf\x92{\x9c, (\x17B\x17i777\x89\xab\xd1\xee\x95k\xe4\x17\x9a\xa4\xef\xdd\x17)\x98.V\x08z\x7f\xc1!\rG\xb4\x98\xff\x1a2\xe1\xe7\xbeL&e>\x86\x99\x92;.\xf1\x14\xef\x9a\xef\xff~\xe6~\xff{I\xfe\xfe\x12\xaf\xf8\xba\xf3\xbe\xec\xa6\xec\xb4\xf4m\xbc\xd9$\xc18IrrDO\xd9\x85s\xe9\x17\x95_\xdb*\xc8O\xcb\xab\xd1\xe7\x9fH>\x0f0\x94X\xcc\xc1\x1b_\xe6\xc1z\xe2c\xf1S\x8a\xe8\x89\x07\x9c\x9c\xe2\xfa\xb2\xd2\x83\xb1s\xe8\xb7y\n\x94\xc1M\x14\x86\xfb\xec\xae\x12\x84\xf1#\x88\xac\xd0\xe9<\xad\xaf`\xcc\x1d\xda\xd0\x8d\xdcS\xad2\x1bl*1Nd\xd9\x83\xe3\x0f:\xa4\xda\xdb\x86@~\xfbtv\xef\xa9(>k\xf5\xdaL9\xf7y\xdf\xd5<\xc0f\x04\xbf\xb0c\xc1_}uy\xc6\xe2\xb7\xf5W\x1f\xeci\x0b"\xfa\x96\x18&*H\xce%KJ\xde\xae\x99M\xf1\x8b\xef\x9e.\x88<\xaf\xdc~\x9e\xb9\xbb\x10\x9e>\xb7\xaa\xeb\xf1\x7f6\xed\xad\xe8\xd5H7\xb9\xcd\xbfL\xbbzg\xa4\x9f\xcd\xc8\x81\x8a%i\xa9WS\xc4R\xed\xb5(wYF.\x95\x1e\xfd\x7f\x98\x81JF\x06\t\xb7\xf1k\xa9\xa3\xbe\xf2Z\x94\x8f\x94![px\x10\x8f\x95\xba\xaf`\x8b\x0e\xbe\xc0@\xbf\x80\x93\xdf\xab\xb9\xc5\xabY\xa3\t\xc7K\xa8\xcc\xbej\x89"\xa7|g\r\xf0\xb27(.\x97\x93\xc5\x87\xd5\xc0\x8f{\x872\xab@\xa0\xfc)_\xef\x16\xd5\xc7\xdfT\x00m\xc9\xf2\xe2\xe2\xb3"H\x16\x07\xc2\'\xaa\xa0\x971R\xbe \x87f\xba\xc1\xa5\xe0\x92\xb9&\xcc\xc6{\x00\x7f\xbaYi4\xd6k5\xa8%\xfc\x1c\xaa\x8a\x95e\xd7\xae\x16\x93\xc2\x10\xaa\xf5v1\xd5s\xa5Mq\xa7\xa6\xdd\xb7\xbd\xad\xaaR\xfc\x9f\x06\x006`\xc6\x871\x18\xe2V0l\xb8s\xebj\x85\x14\x07\xee\xde\xec\x15?,\xa2\x1b\xae\xc2\xe5\xfe\xbdf\x8bZJ\xc6\x9a\x7f\xc7\xbf\x07>~\x80\x16\xfe\x03\xa1h\xc8\t\xd0Du\xe0\x83\xdf\x9d\xdc1\x19\x00\xad\rw\xe4\xaf\xa62z\xefQ\xc3V\x97\xe7\xf8\xd9\xf6q?\xab\x1d\xeeFj\x0b>\xdd\xc10n\x0f#h\xb5/\xf1y\xd8\xdcr\x9f\xb3\xad\xe9`\x04\xbf\xdbz(\xda\'g\'\xcb\xf9\xbb\xa5\xd3\xdep\xd2:\xd9\x8e\xf6\x1a\xc7A\xebx\x97\xbeS\xc3N4\xaaw\xd2`o\x7f?J\x07C~\xdd\xac\x1d\x1fr\x1dM//\x1a\'g;\xfd\x93~\xba\xdd\xdfi\x1c\x0e\xe2\xeb#/\xda\xbf\x1c\r\xdb\x965\xa3\x9d\xb3\xf1\xf5\xb0}6m\xef\x8f&\x07;1eKIcP?\xf4\x06#\x7fg;[\xcf\xf7z\x8d\xc6;v1\xf6\x81\xd4\xe8\xe4\xaa\xfai\x90,\x9f\xb5\xe8~\xbe\xde?l\xa6\x87\xd4_\xef\x1eF\xc3\xe5q\xfb\xa0\x9b\xc5{\xf1\xe1\xd2\xf5\xa4\xb7}v\xdc\xd0\xd3\xfey\xb2s\xd1\xdby\xd7\x1dt\x16\x0f\xcf:^\xa6\xf9V\'\x8b[\xd1\x99\xaf\xa7\xacs\x954Vv\xfb\xb5^<\xd9=\xd8\xdaJrus`<3\x8d\xbam\xae\x97y\xfb\xd3\xfeampy\xbd\x1b4\xccq\x7fI\x1fl\xedv\xeb\xdb\xcd\xf6\xe8x\x1aO;q\x1a4:\xa3Z\xf3\xc2^Q\x7f\xca\x17c]\xaf%\xfbU}\x13\xc9)\xcd\x15\x0f\xd8\xc4\xdf\x1d\xef]\x9c6\xab\xd7\xab\'\xe3\xcbA\xc7.~j\xbe\x8b\xb6\xf7y\'Z\xacO\xea\x13o\xa5+F\x02B\xd4\xb9\x8c\x93\x9d\xab4\x9bL[\xbb7\xe3\xe1\xcdYct\x1c\xbd\xeb6\x86\xc3Iw;]]\x9e\xe4\xeb\xd7K\xc3\xeeZ\xd4\xba\x88\xb3\xf3\xa3\xcb\xba\xec4\x97n\xfa-\xee\x85\xe6r-\xfb\xd4\x1e]\xae\xad7\x83\xceU\xac\xa7\x83\xeb\xeb\x9bi\xb8|\xd5\xef]d7\xe7\x07\\w\x10e+\x87\x19\xef\xb1\xad~\x1e\xed]\x1cv;\'{\xed|IwT\xda\xea\xd7k\x17\xdd\xab]\xef\xe0fhu\xd6jV\x0fM,\x8eZ\xe7\xf9u\x90\xc4\xd3\xab\x9b\xa6\t.\x93\xb0\x1e\x9e_\xf5\xd4\xb4\xd9n\xe5\xe1\xfe$\xb0\xdd\x93\xbdZ\xaf?\xda[=YY\x8c\x1az\xe7x\xe9\xe4f\x1a\xd7\x8f\xbc}\xeb\xb7\x9a\xc7i2>6gk\xd2vi\xbb\xcf\x96&U\xd1\xab\xde\x1c7r\xb9\xdc}\x97w{\x9a\x8d\x92\x9eCU[\xec\x9c\x8e\x06\xe3\x93\xa4\xd9,=g\xed1\xcf\x99A\xb9\x006E\xb0\x1f)\x7f\x84\xf7qMwS\xb7\xa5\xb5\xca\xf0U\xbcqg\x9b\xdbn<\x8c[\xd7\x85q\xe2\xe16\xd5\xcf\xbc\xc5\x13<\xdd\xe1B \tl\x13\xbd\xe1bU\xf1w\x85\x95\xd2\x89\x8d\xd5\xcc\xfa16C\x98\xdc\x07\nn\xf7{#\xd5\x87\xbb\xe1\x93\x81\x10E\xbc\xac\xa3\x82\xd9)\r7\x98\x86:\xc1_|\x97=u\xc1%\x9f\x85\x18\x8a\x11\xeb\xa9pU\xbd[\x9e\xc2\xd1m\x97\xa9\x84`\x03\xb8\x05\x96\xdc\xf6trdf\xcc\xcd\xe6`\xbfT\xc8XAEH\x02\x87\xab\xf5\x15\x90\xef\xafC\xa8P\xbc\x8cs\x0f\x96rQ>TqU)\xa5Iou\xe9BP\xf5Ah\xbb\xff\x8c\x81\xfa."W\xef\x05\xea\x1f\x16\xfa_\x96\x80wx\x04@\xfb\xf9\x19\x182\xde,\x03\xbb(\xfc\xc4\x1d\x04\xde\x19\x01\xcfo\x8a\xeb%\xe8\x08\x95\xb2RYv\xd7I\xc8m\xe3\xb3\x8e\x0f\xee5O\x9f\x99\xf2\x1a\xd8)\x0e\xdf\x01\x0c\x98\x7f\xf7\xc7\xaeG\xf6\x98\x11\xac~N\x11\xfb\xee\xd8\xc2\xa7\xe2\xffe\xce\x92\xe5\xbf\xfd>\xbe\xf9\x1fPK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xe7\x86\x0e\xdaC\x01\x00\x00\xeb\x05\x00\x00\x1c\x00\x00\x00word/_rels/document.xml.rels\xb5\xd4\xcbR\x830\x14\x06\xe0W\xc9d/\xa1Uk\xc7)\xedF\x9d\xe9\xc2\x8d\xa2\xfb\x14\x0e\x90\x81\\&9\xb5\xed\xdb\x1bz!\xb4\xe3\xc2M\x96\xf0\'\x7f>2!\x8b\xd5^v\xe4\x07\xac\x13Zet\x92\xa4\x94\x80*t)T\x9d\xd1\xaf\xfc\xednNW\xcb\xc5\x07t\x1c\xfd\x08\xd7\x08\xe3\x88\x9f\xa2\\F\x1bD\xf3\xcc\x98+\x1a\x90\xdc%\xda\x80\xf2I\xa5\xad\xe4\xe8\x1fm\xcd\x0c/Z^\x03\x9b\xa6\xe9\x8c\xd9q\x07\xbd\xee$\xf9\xc1\xc0\x7f\x1auU\x89\x02^t\xb1\x95\xa0\xf0\x8fb\xa6\xb6r\x03\xd6\xf3)Y\x97\x19\xb5\xebrBI\xcem\r\x98\xd1!L|/%,\x9a\xc2\xe1\xa1\x037\x10\xa6\x81pJ\xa2\xaf\x0f\x88\xfe3\x83\xe0~$8g\xb1\r;\xd8|\xde2\x1e\x02c\x14\xc7\x96TZa\xce7\x1d\x0c\x8e\xc7\xe0\x18\xc2\xd8\n\xf4s\x83`\x16\x04\xc7\xe0\x14O\xe2o\x85F\xa5qt6\x9f\xc6[q\x0ec+\n-\xfb( \xe6\x01q\xc9b\x1b\x84\xf4WS\xf8CG\'BB)8;\xbeLL\x7f\x91\xc4C4\xbe\xc9vB\xb5\x01\x92\x06\xc8y\x05P\xc9N\xb4\xc2\xf4\xacco\xff\xc4\xbe\xc1J\xa1.\x83\xdfu\xe9I\xaf{\x04\xab\xf8i\xdf\xd8\xd5\xad\xbd\xfc\x05PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\e\x8d\xd1z\xc1\x00\x00\x00=\x01\x00\x00\x1d\x00\x00\x00word/_rels/footnotes.xml.rels\x8d\x901O\xc40\x0c\x85\xffJ\xe4\x9d\xba\xdc\x80\x10j{\x0b \xddp\x0b*\xecQ\xe2\xb6V\x1b\'rrp\xfc{\x02\x12\x88\x93\x18\x18\x9f\xfc\xfc=?w\xfbs\xd8\xcc+i\xe6(=\\7-\x18\x12\x17=\xcb\xdc\xc3\xf3\xf8xu\x0b\xfb\xa1{\xa2\xcd\x96\xea\xc8\x0b\xa7l\xea\x8a\xe4\x1e\x96R\xd2\x1dbv\x0b\x05\x9b\x9b\x98H\xead\x8a\x1al\xa9RgL\xd6\xadv&\xdc\xb5\xed\r\xeao\x06\\2\xcd\xf8\x9e\xe8?\xc48M\xec\xe8>\xbaS )\x7f\x80q\xa9$\xddXV0\x07\xdf\x83\x1e\xfc\xaev\x1a\xad\xceT~\x12H\x9a7^9\x91g\xfb\xc5\xfdT\xf8B\x1aX\xbe\xcd\xc7\xe8\xebI\x0f\xe7B*v\x03\x83C\x87\x17\x7f\x18>\x00PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xc3[\x87x\x1a\x02\x00\x00R\x10\x00\x00\x12\x00\x00\x00word/numbering.xml\xc5X[N\xe30\x14\xddJ\xe4\xff\xc1q\x1b\xd2\x12\x11\x10B\xaa\x04\x1a!\xa4\xe9h\xbe\xd3\xc4m-\xf9\x11\xd9I\x03\xbflf\x96\xc0\xb2\xd8\xc2\xd8\xa1\x81\xa6C\t\xb6H\xda\x1f+\xf7\xe1\x9e{u\xec{\x92\xf3\xcb\x07F\xbd\r\x96\x8a\x08\x1e\x03t\xe2\x03\x0f\xf3Td\x84\xafb\xf0{>\xfb1\x05\x97\x17\xe7U\xc4K\xb6\xc0R[=\x9d\xc0UT\xc5`]\x14y\x04\xa1J\xd7\x98%\xeaD\xe4\x98k\xdfRH\x96\x14\xfaQ\xae`%d\x96K\x91b\xa5t&\xa3p\xe4\xfb!d\t\xe1\xc0\xec\x99,T!\x93\xb4\xb8+\x99\xd7z\xba\xc9bpv\xe6\xd7A\\\x91L{7\t\x8d\x81\xaf\x7fW\xc6\xe1A\xe3b%-\xc8O\xbc\xc1t\xfe\x98\xe3&\xa8\xb6Rc\xdd\x86\xd1\r\xd5>\xa2\x17\xbd\x03\xd8\x163cE\x93\xb0()\xc5\xc5{\xf0\x1c?\xbc\xf9\xbcw\xf3m\xda\x18)^6\xe1\xf9\xbd4\x0b\xe1\x06\xa3\xb1\xc7`2\xd2\xf8\xaah\x9d\xf0U\xdd\xc4q\xf8\x8a\x17n\xa3a\xbd\xdb>0\xd4?0\x14\x04.\xc8F\xfd#\x1b\xa1\xd0\x05\xd9x\x00d\xd3\xa9\x0b\xb2\xa0\x7fd\x1a\x88\x0b\xb2\xd3\xfe\x91\x05c\xa7\x13\x10\xf6\x8f\xec\xd4w:\x01\x93\x01\x90M\x9cN\xc0\xb4\x7fda\xf0\xc5\x13\x00[W\xf8\x17\xeewt\xe8~G\xc3\xdd\xef/O\xcf\xdf\x7f\xc3W\x91\xdc.3\xc1\x0bejW)!1\xf8\xf5\xc8\x16\x82\xd6\xb9W\xba\xee]C\xaaZn\xc2\xf5\xffdx\x99\xe8b\x9b\xbd\xe5\xf7M\x0f\xd1\xc3\xf48X\xf5\xb5(%\xc1\xd2\xbb\xc3\xd5N\xe9{VS\xff~\xa0e\x13l\x07\xd5\xcb\xd3\xdf\x1eF\xd5\xc16\xfc\xd1\xe1FV\xa9\x9d&\xb4l\xa6\x05\xed \xcb\x06\xd8\xceC\'\xf2wN\xc4\xe1\xd9o;m\x1d\xd8\xdf9m\x8f\xce~\xdb\xc1\xee\xc4\xfe\xce\xd1~D\xf6\xdb\xea\x07\'\xf6w*\x88\xe1\xd9o\xabN\x1c\xd8\xdf\xa9N\x8e\xce~[!\xe4\xc4\xfeN)4(\xfb\xff\xd7[\xbc\xd6Y\xfcU_!\xad\xa5\xf6\xdf\xb2o\xde\x94V\xf3\x12\r\xeb\xf8\x8f\x92\xd1g\xc9\xa8\x95\x0cw>\x0f\\\xfc\x03PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xc6\xce\xe4\x131\n\x00\x00\x97j\x00\x00\x0f\x00\x00\x00word/styles.xml\xed][w\xdb\xa8\x16~?\xbf\xc2\xcb\xef\x1d\xdfe\xb9\xab\xe9,\'\xa9W\xb3N\xa7\xe9\xd4n\xfb\x8cd\x1ck"\x0b\r\xc2Is~\xfd\x01]\x11F\x16\xe8\x92*m\x9b\x87\x066\x1b\xf6\xe5c\xb3ABy\xf3\xe7\xf7\x83\xdb{\x808p\x90w\xd1\x1f\xfd1\xec\xf7\xa0g\xa3\xad\xe3\xdd]\xf4\xbflV\xaf\xcc\xfe\x9fo\xdf<\xbe\x0e\xc8\x93\x0b\x83\x1em\xed\x05\xaf\xf1E\x7fO\x88\xffz0\x08\xec=<\x80\xe0\x0f\xe4C\x8f\xd2v\x08\x1f\x00\xa1E|7@\xbb\x9dc\xc3kd\x1f\x0f\xd0#\x83\xf1ph\x0c0t\x01\xa1#\x05{\xc7\x0f\xfaqo\x8f*\xbd="\xbc\xf51\xb2a\x10P\xd1\x0en\xd4\xdf\x018^\xff\xed\x7fz=*\xe1\x16\xd9\xd7p\x07\x8e.\tXMX\x87?\xe1\xb8.\xaaJ*\x93RT^!\x8f\x04\xbd\xc7\xd7 \xb0\x1dgCE\x80\x17\xfd\x83\xe3!\xfc~\xe9\x05N\x9fR\xec\x80p\xd5\x97\xce6\xac\x85 \xcb\xc0\x01R\x96=\xfbEB\x19\xe4\xc6\x0e\xfeG\x9b>\x00\xf7\xa2?\x9e\x9e\xd2\xae\x82b\xaa\x0b\xbc;J\xb5\xa8,\x17}\x80_\xad\x97\xbcH\x17}\xe8\xbd\xfa\xb2\xee\'\xfcq)\xed\xe2\xcd\x80\xb3C\\\xc8Y\x8a\x8e\xe0\xcb\x8c\xe7\x0b\xc6\x0b|`;\xa1$`G \x05\x06\xf5\x8b0\x8e\xcf\x8f\x93\xef\x94\xd5\x08~\x0bU#\x141\xeb\x08q\xd4\xf8\xe8\xe8\x11\xda\xf1\xdc`\xeal\xe1\xee\x03\xb2\xef\xe1vMh\xb3\x8b\xfe0\xae\xfc{\x15\xa2%\xabX\xc3\x83\xf3\xde\xd9n\xa1\x97\xd5}\xb9\xf9\x84\x1d\x84\x1d\xf2\xc4\xd5y{g\x0b\xbf\xed\xa1\xf7%\x80\xdb\xb0~\x10\x0b\x12\x82>j\xc5\xe4\xa3\xf3\x83\xf1\x84\xb57\xb4\xe5G6\xa2\xcb\xaa\xc8\x93OE\xf1\x01\x06w\x18\xf8\xfb~jC\x0f\x1c`\xe2\x83\xa4\xf9 \xa5\xfe\x1b\xc9\x1c\x8f7\x88\xbb\x16\x06O\x87\xbbD\xdb\xa7\r\xfcN\x94\x07d\x0c\xbd\x88#\x1b\xd3\x02T\xcb[\xafX(\xd7\xf1\xee\xf9\x1eX\x07W{\x80\x0b\x05\x17q!C\xc5\xc8\x0c\xcdmA:\xa7a\\\x1c\xe4Pq\xce\x04\xf61 \xe8\x10\x02B\xf4\xc1\xca\xc1\x01\xf9\x94\xdaA\xd54![\x8f\xe3+4Pf\xf5\xac\x89G\xcb\xe7\xe8J~=\xa3\xd4\x15:P\x03\xaa;:m\xaf\xa5\x85\xb6\x13\'\x06\xefCVRwa\xaa\xdb\xc6!.T\xd6,n\xad\x01\xdf2\xdf\xf0\xf0\x0e{\x17\xb1}t\x92\x18\x914\x1b\r\xcf\x9b\x8d.\x9e\xdb\xa4\xedp\xb8\x1c\rW\xd7\x8b\xbe\xbaY\xa3\xa9A\xe5\x82,\xce\xa7\x85\xcfG\x06\x0cp$\x88\x8f\xa7,\x1cz\x84\xeat\x04\xee:\xee\x89\xa7\xfec\'\x92\xd84\x86B,\xf3\x91\xb8\n\x16\xae\x81\xe0\x1f\xe9\x1a\xc8\xaa\x8b\xd6@F{\x17\xd7\x9d,\x83\\\x7f\xbc\xcc\xd9"83DJ\xb6\x04\xce\xf2x\xc3\x95C\x06\xe7\xf5\x04\x856-\xd1\tD\xcdU\x8c\xc2\x9e\x08\x14\x01\x8a\xf1"\x96\xc6\x14f\xd1\xb3\xc0\xd3\x01]\x19\xc4~ro\xa6\xbe[\x1f-\xa2\x15@2\x86B\xc7\x9d8C\'\x84$\xfd+D\x91Q\x93Q\xc4;\x1e\x84L\xccq\x1f\xdct,!\x05\xe3Z+\xc6\x81*\xf8\xc8\xf9:\x8dr\x91@\xb3"\x90\x8c\xcdb\x90p\xb4zS>\xef%\xc5Y\x9f059\xf1ep,\x83J\xc5\xb9_\xd7\x836r\x11f\xb6b-\xafX\xe1\xa2\xcf\x16\x9e\xd0\xb2a\xe5\xc6ay\xf9\xd2Hw\x19\xb3\x05\xfb\xe92\x10\x96G\xb2GX9z$\xcd\x9b\x8b\x1deI\xd7=\x84\xfeG\xd6\xc7@\xa8\xfc@S\x82@m1/\xd8T\x16o)u"\xf05\xddu)\xdb/j\xfc\xdbz\xe7\x10i\x05\x84E!\xbd\xbc8\xe1\xea\xd5K\x90\x93n\x9a\xb7\xb1<\xd5\xcdm\x02\'\xf9\x93\x82\xca\xb9\xabU\x14P\x86g\xdc7l\xd8}\xda\x9ektS\xd3\xa6\xcfB7q[\xf7\xa1t\xeb~~"5\xe6\x89\xec0\xc4\xb1\\\x07\x85v~R?\x10\xc91U\xb5\x7fA\'R\x1f\xe4\x97i\xc5\x83\x9e\xf7\x10\xb0\xf3\xd7\x91\xb2^\xfb\x88\xa17j\x14T|\xde\x92\x88T\x9e\xe6.\xce\xdbD/\xcb\xad\x83\xdb\xfc\x89\xd3\xc4\x100\x88\x8e\x84\xed\xb2?dI\xb3*\xae\x7f\xe8\xeeJ\x96\x95\x01\x9b\xc5\xcb,/[\xef\xc1\x96vq\xb9J\x13\xb3\xe1j:7F\xe2$L\xa8\xd33\xd3sZmz\xc6x\x19kCx\xdc6\x84\xc7\x9a\x10\x0e\xd2cd\x9e\'wf\xdcI\xc0\x8f\xca\x01?\xfaU\x01?\x19\x17\x03\x9e\xa3U\x00\xfcD\x1b\xf0\x93\xb6\x01?\xf9\r\xf84\xd7\xd0\x05|\x1b{\xe8\xba\xe0mn\x9f,\x82w\xaa\r\xdei\xdb\xe0\x9d\xfe\xb4\xe0\x9d\xe6\xc0k\x96bw\xf2\xdc\xd8u\xf2\xa5\xab\xa0ydW\xc0\xe8L\x1b\xa3\xb3\xb61:\xfb\x8d\xd1$Y|\x91\xf1\xb5\x02\n\rm\x14\x1am\xa3\xd0\xf8iQ\x98\x03\xa1\xb8W9\x05\xe1\xac\xfb\x81R\xef\x18\xbd\x02>\xe7\xda\xf8\x9c\xb7\x8d\xcf\xf9o|F\xc2H_\x9bx\xee \xd9:\x02Mm\x04\x9am#\xd0\xfc\x99\x11x\x1es\xf3\x97\x19\x13\xaf\xcd\x14\x91\xe39\xfb\xa9\x83\xc8\x856"\x17m#r\xf1\xeb"\xd2\xecj\x14\xac\x85\xb93\x0f\x8a\xf2\'\xe8\x8a\xaf \xbcO\x0e\xf6\x9b|\x07!{\xbc\xa0\x0c\xbc\x17\xf4\xfaQ\xb7\x0f\xc8\xcb\x012\xae\x04\x90q\x0b\x00\x19\xd7\x8dL\xbf8j\x9a;e.G\xcd\xa4\x12j&-\xa0f\xf2\x83P\xd3\x89\xa3\x04\x01\x01\xcf\xf2JS\xfe\xa4T\x13\x01\xd3\x16\x100}\xa1\x08\xe8\xc6\x81g\xb9\xa7g\x95<=k\xc1\xd3\xb3\x17\xea\xe9\xee\xf8\xd2\xa8\xe4K\xa3\x05_\x1a/\xd4\x97\x1d8}+w\xf3\xbc\x92\x9b\xe7-\xb8y\xfeB\xdd\xdc\x11G\x9a\x95\x1ci\xb6\xe0H\xf3\x85:\xb2\x03\'C\xe5n^Tr\xf3\xa2\x057/^\xa8\x9b\x9f\xf7\x88\xef\xd2E\xf6\xbd\xde\xddX\xc6Qv9\xb6\xca\xdd\xcf\x12\x1fi\x9c\xd6\x95]\xa9-~/7\x9aZ\x1e\xf3\xfb\x8e]t\xfd\x10\xde-\x8cn\x16\xc2\x1d\xb5\xfa4zu\x06;w\xfb\xa4tz\x1aWj\xf5\x15B\xc4C\x04j\x19>a\xd2\xbf\x98\xcc[>?t\xc3\xd6WV\\\x1fv\xa9\xf6J\xf8+\xd2\xf2\xd9,\xd1i\x1c\x16\xdc\xca\x97\x07Y\xc5P\x1e3g7\xc3{b\x8cV>\x83\xd7\x14{\x03,\xfe\xfe\x07\t\x8bR\x19\xe3\x96\x85\xa8\t\xe9\xa7\xd3\xa7\xee\xc3\x03b\xb99 \xd0\xf2M\xe8\xdaH\xe0\xed\xf7\xf0\xb0\xed\xf1\xe4\xec\x9f\xb6\xbb\x82\xae\xfb\x17\xc8_W$\xc8/\xe1\x8d\x96D\x8a\x13I\xbb\xd1\xd0\x14[Z\x88\xd0U]\xa5\xcf\x10n\xa5\x9d2\xff\x89\xb2\xc7u\xdc\xd3\nZ\n\x13\x89O8\xed0\x84\xfag\xf4\xd8\xcf\x1bA\xb8\xae\x99]va*\x8a"\xaa\x19w \xf1\x8a\xf8u\x93\xc2qB\xee\xfc\xeaOl\x81\x99\xd8\x97\x08o!\x0e\xb2\xda\xbc\xad\xc3\x8e\xd9\x17Y8D\xa6\x9d\x9f2S\xd6\x87\xa5\xeb\xdc\xa5X\x8d:\x12\xa5J\xc5\x885\x8c-\\1\xa7\xa3s\xda\xf1\x1c\xf6\xd9\x99\r\xc4\x07\xf5\xbbk)[/\xe2\xab\xb8Te\xfd\xb4\xfd\xa8M\xf1\x9aT\xbd\x0c\x99WG\xdb\x92\xaaF,]\x81\xaf\x80\xaf%B\xda^\xc3\x89*\x1fB)[\x1b\xc7\xb9\xb5Q\xd5UN3\xae\n\x17\x02]K\x85L\xbdr{IZ\x9c\xc7t\xbd\xef\xbc\xdc\x1c\xc0\x9d\xb6.!\x93\xb6.\x95\xbeBsw\xc4\xea\xb77\x93\xe6\xf5&\xc3\xb9\x0f\xc8D\n\xc1\xad\xa6`)_\xafT\xc4\xd3\x06m\xba??\xff\x14\x93\xb9\xf4\xfbGM\xee\xcb\x85=_\x05]\xbeBl\x01\xe2\x1c\xb4tI\x98\xcaT)\nT\xe7\x9e\xb5\xb2\x0f\x08y\x01rA\x90>.\xe5\xab\n\x9em5\xf5\x04s\rm\x86\xb9\x8f\xc7\x83\x055>\xce\x10q\xf5\x126\x1d\x83(\xef\xef>\xc3\x1d\xc4\xd0\xb3\xa1\xb2X\xe9\xfe\x8ec\xad\xe9\xab\x07\x88I.g\n\x8e>M\xaal\xec\xf8D\xc7\x05\xd9\x19\x17U\x043H\xab\x1fpe\x1c5\x95)y\xf2\x12\xbdQ\xb12G\x97\xd7\x95T\xdb\xdc^\xc5\xe7f\xea\xeb\xdd\xedU/\xe5)\xd4N\xf6\xce\x8c\xfeI\xd0\xa4\xe9-x\x92Xp\x9f\x8d\xa2\x85\xd9")\x14}C\xea\xf4}\xac\x85bj\xf2C\xdf\xd2\xb0\x12i\x85-\xa6\x95=V\x17(\xd5\x9e\xf4M\x8c\xd9jQ\xf6\xa4\x8f\xc3\x9f\x08\xb4\x92\x80\x87\x8e\xd8\xa6\xc2l\xe9\xfe^\x8cj!\xa9\x17\xd2\xe8\xe8\xe7\x12\x03aY\xca/*!\x999\x91\xfe\xc7\xbe\x9c\xf9\x8d\x8a\x95\xb4D\xbb]\xd8 vs\xa6\xd1\x89BYT8\xaf\xd0\x7f\xe1\x13\x1bd\x83\xeeO\x14\xe2HR}$b\xe3Hl+*%\x0e\x8c\xcf\xaf\xe7\xc3\xe8{\x01\x89K\x1a\x90\xfe\x1a\x10\xb0\xa1\x1c2\xf1y\x9a\xa6\xfc9\xc1\x17T\xeca\xe3\x82C\xfb+p\xa5b\xa7\x94:BO\x87\x80\xda\xbba\xa1/\xa9(\x1fe2\xa7\x84\xce\x89\xbcr\x11 2\x91SB\xe7Df\xc9\x1b\x01\x9eTj\x9eVGp\xd3\x1c6\x8fi6\xa6T\xe8\xb8\xbe\x9e\xa5\xe7\xd4\xd6\r\x0b\xbc\xf6\xa1\xed\x00\xb7Hn\x81\xdc=\xf1\t\xa6\x99\x84T\xf2\x94\xd29\xa1\x93\xb1\x8b\x85?m\xd19%bd\x9cq\x80\xd8\xa0\x8e\n\x96e\x18\xa6\xd9\xb0\n7\x07\x1fai\x8c\xc9(\x8d\xac\xfaf\x0b\x81\x06\x1d\xd8g\xc9\xe5\x012%iJ\xefH\xa47(t\xac\xc6\x97\xfe\xf8\xab\xea\xe1\xc7\xd4\xa5\x19\x80\xd8\xa0\x01M,0\x1e\x8dG\rk\xb2\xf4\xe8v\xb9P\x8d<\xb5\x1a\x96\x9e\xcd)1n\xbe\x16\xac`9j\xc7U\xb9\xa5\x1b#\xa9\x16)\xa1N0j%\x8d_\x1d=\xbb\x08F<\xad\x96\xe0\xc6\xd8\x9c\xc3\xa6W3\x80\x1dv\xe6.]\xc78Z\x1d\xc1G\x8b\xd1|n7\x9fd\x12\x8c\\\x9a\x05?\x16\xe4\x99<\xb9\xab\xdb\xbf[\x1fb@\x90\x1c\xed\x1c\xad\x8e\xf9\x8d\xf0_\xd3;\xa9\xa3\xe3\x92\x1b)\xde9R\xbdy\xda\xc2\xc2\xfb\xee;\x81^P0QsD\r\xd1c\x11k\x8a\xf6\t\xc3\xf8O\x8c\xc8\xe1 \xd2k%d\xf6\x1c4n\xdb%\xa1\xc9\xa2u$\xd2X\x92#\xd6\x11}\xbe]\x0c\xc7\x8b\x86E\xff\x0c\xef\xa8\xdb\xff\x02\xf8^\xbe\xf0\x88\xf4g\x07\xc7\x8d\x17\xfd9\x9a\x02\xe4\n\xe4\x8e\xaf\xef\xdf\x00\xf6\n\xb6\x1d\x1c\xa9\xe3J,](\xdf}\xa4\x84\x06\xd6\x9c\xdd\xae\x85S\x8ew\x18\xcb#LJ\xe8\xaa\xe4\xd1\xf9\xb3L\xf4\x8cRyj&\xbf\x05o\xff\x0fPK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xbc\x00\x13i\x16\x01\x00\x00K\x03\x00\x00\x12\x00\x00\x00word/footnotes.xml\x9d\x92\xc1n\x830\x0c\x86_\x05\xe5NCw\x98&\x04\xf4R\xf5\x05\xb6=@\x14B\x89D\xe2\xc86d{\xfb\xa5\xb4l]\xd5M\xa8\x17G\x96\xfd\x7f\xbfl\xa7\xda}\xb8!\x9b\x0c\x92\x05_\x8b\xed\xa6\x10\x99\xf1\x1aZ\xeb\x8f\xb5x\x7f;\xe4/b\xd7T\xb1\xec\x00\xd8\x03\x1b\xca\x92\xc0S\x19k\xd13\x87RJ\xd2\xbdq\x8a6\x10\x8cO\xb5\x0e\xd0)N)\x1ee\x04l\x03\x826D\x89\xe7\x06\xf9T\x14\xcf\xd2)\xeb\xc5\x05\xe3\xd6`\xa0\xeb\xac6{\xd0\xa33\x9e\x17\x08\xf7\x0b\x04\x1f\x85\xa0\x19\x14\xa7\xc1\xa9\xb7\x81\x16\x1a\xd4bD_^P\xb9\xb3\x1a\x81\xa0\xe3\\\x83+\xcf\x94\xcb\xb3(\xa6\xff\x14\x93\x1b\x96\xbe\xb8-V\xb0OK[\x14j\xcdd-\xaa\xf8\xc7z\x83\xd5\x0f\x10\x92\x8aG\xfc\x1e/\x86\x07\x18\xbfO\xbf?\x17\xc5\xf5O\xcab\xc9\x9f\xc1\xd4B\x83g\xeb\xc7\xf9\x12\xaf&(T\x0c(R\xd9\xb6\xb5(fM8\x05<\x85\xbb\xcd\x99l*97\xc8\xb9W\xfe\xb8\xdcu\xa4[\x97|{cC\xab\xd0W\t5_PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x1fn\x03\x13\xd9\x00\x00\x00q\x02\x00\x00\x11\x00\x00\x00word/comments.xml\x9d\xd1\xc1\x8a\xc3 \x10\x06\xe0W\t\xdeS\xd3=\x94E\x9a\xf6R\xf6\t\xb6\x0f \xc64B\xc6\x91\x19\x13\xf7\xf1\xd7\xd2X\xe8\xa1%\xe4$2\xf3\x7f8\xe3\xf1\xfc\x07c5[b\x87\xbe\x15\xfb]#*\xeb\rv\xce\xdfZq\xfd\xfd\xa9\xbf\xc5\xf9tL\xca \x80\xf5\x91\xab\xdc\xefY\xa5V\x0c1\x06%%\x9b\xc1\x82\xe6\x1d\x06\xebs\xadG\x02\x1d\xf3\x95n2!u\x81\xd0X\xe6\xcc\xc1(\xbf\x9a\xe6 A;/\x16\x06\xd60\xd8\xf7\xce\xd8\x0b\x9a\xe9\xfe\x82\x82\xc4\xa1 \xb4\x15!;\xea\x98\xe7\xe6\xc1\x05.\x1a\xb6b"\xaf\x16\xaa\x06g\x08\x19\xfbX\xe7\r\xa8\x87\xb2\x1c%1\x7fJ\xcc0\x96\xbe\xb4oV\xd8\xf7\xa5\x95\x84^3YG:\xbdYopf\x83\x90Sq\xa2\xe7x)l0^\xbf\xfe\xf2(\x8aJ\x9e\xfe\x01PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x8d\n\x89\xb2\x1c\x01\x00\x00G\x02\x00\x00\x11\x00\x00\x00docProps/core.xml\xa5\x92\xcdn\xc20\x10\x84_%\xf2=\xb1\x13(\xaa\xac\x10\x0e\xad8\xb5R\xa5R\xb5\xea\xcd\xb2\x17\xb0\x88\x7fdo\x1bx\xfb\x9a\x04B\x91\xb8q\xf3zf?\xcf\xda\xae\x17{\xd3f\xbf\x10\xa2vvN\xca\x82\x91\x0c\xactJ\xdb\xcd\x9c|\xac\x96\xf9#Y4\xb5\xf4\\\xba\x00o\xc1y\x08\xa8!f\xa9\xcdF.\xfd\x9cl\x11=\xa74\xca-\x18\x11\x8b\xe4\xb0I\\\xbb`\x04\xa62l\xa8\x17r\'6@+\xc6f\xd4\x00\n%P\xd0#0\xf7#\x91\x9c\x90J\x8eH\xff\x13\xda\x1e\xa0$\x85\x16\x0cX\x8c\xb4,Jz\xf1"\x04\x13o6\xf4\xca?\xa7\xd1x\xf0p\xd3z\x16G\xf7>\xea\xd1\xd8u]\xd1Mzk\xca_\xd2\xaf\xd7\x97\xf7~\xd4\\\xdb\x88\xc2J M\xad$G\x8d-45\xbd,\xd3J\x06\x10\xe8\xc2\xb0=\x16\xe96wp\xe8\\P1)W\xd5i\xa2\xc1\x0b*KI\xf8\x90\xfb\xac|N\x9e\x9eWK\xd2T\xac\x9a\xe5l\x96\x97lUN9{\xe0\x93\xe9\xf7\xf1\x98\xab\xfe\x0b\xd0\xa4\']\xeb;\x88g\xc0\x90\xf8\xfa74\x7fPK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\4\xc4.pj\x01\x00\x00\xe5\x02\x00\x00\x10\x00\x00\x00docProps/app.xml\x9dRMo\xc20\x0c\xbdO\xda\x7f\xa8z\xa7)l0\x84B\xd1\x04\x9av\xd8&$:8G\xa9\xdbF\xb4I\x94\x04\x04\xff~N\xbbv\xdd\xc7i=\xd9\xef\xf9=;v\xe9\xeaRW\xc1\x19\x8c\x15J.\xc3q\x14\x87\x01H\xae2!\x8be\xf8\x9e>\x8d\xe6\xe1*\xb9\xbd\xa1[\xa34\x18\'\xc0\x06\xa8\x90v\x19\x96\xce\xe9\x05!\x96\x97P3\x1b!-\x91\xc9\x95\xa9\x99\xc3\xd4\x14D\xe5\xb9\xe0\xb0Q\xfcT\x83td\x12\xc73\x02\x17\x072\x83l\xa4{\xc3\xb0u\\\x9c\xdd\x7fM3\xc5\xfd|v\x9f^5\xfa\xe1\xbcA@\x0f\xcad6\x99\xdfQ\xd2F\r\xb8+\x99\x81\x0c\xd5I\xce*\x0b\x94|\x01\r\xff\x8c\x06\xa6\x12\xf2h\xd7%\x93\x05d]\xddo\xa2\xa9\x7f\x11\x12l2\x9eP\xd2F\r\xf8\xa8\xf5\xbe\xdd(2Q\x8c\x1f%\x03\xac\x13\x1e\xed\xbbN\xd5\x869\xe8\x9a|\x07;\xafJp\xe6\xbc\xf0Up\xa3\xac\xca]\xe0_\x14x\xef\xa8\xb5\xeeK\x1a\rNh\x18w\xd8\xee \\\xb9\xd3\x8c\xe3dS\xbf\x89?\x99F\x93B\xad+\xdf\xf5\xcd\xef\xba\x8a2\xe5jJz\xb4\xa9\xc1-\xed\x80\x9f\x8cp\xd7\x04\xfb\x0e\xd3\xd6C9V\xa5\xa2\x86d\x86\xd2>i\x17\xcfY\x05k<R\xbf\xf8\x1e\xf81sr\xff0\x1dN\xda\xf2[L\x0b\xc3t\x89\'\xa5d\x90}\xb2\x85?\x83\'\x8a\xe6E\x18\xf5\xffW\xf2\x01PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x1ay%\x8d\x88\x00\x00\x00\xd4\x00\x00\x00\x13\x00\x00\x00docProps/custom.xml\x9d\xce\xc1\n\xc20\x10\x04\xd0_\t\xb9\xb7\x89\x1eDJ\xd3^\xc4\xb3\x87\xea\xbd\xa4\x9b6`\xb2!\xbb-\xfa\xf7\xa6\x08~\x80\xc7a\x86\xc7\xb4\xfd+<\xc5\x06\x99<F#\x0f\xb5\x96\x02\xa2\xc5\xc9\xc7\xd9\xc8\xfbp\xad\xce\xb2\xef\xda[\xc6\x04\x99=\x90(\xfbHF.\xcc\xa9Q\x8a\xec\x02a\xa4\xba\xd4\xb14\x0es\x18\xb9\xc4<+t\xce[\xb8\xa0]\x03DVG\xadO\xca\xae\xc4\x18\xaa\xf4\xe3\xe4\xd7k6\xfe\x97\x9c\xd0\xee\xef\xe81\xbc\xd3\xee\xa9\xee\x03PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xfd1j\xa3"\x07\x00\x00\x8f-\x00\x00\x15\x00\x00\x00word/theme/theme1.xml\xedZMo\xdb6\x18\xbe\x0f\xd8\x7f tw-\xc9\x96?\x8az\x85?\x9b\xb5I\x1b4n\x87\x1ei\x99\xb6\x18S\xa2@RI\x8d\xa2\xc0\xd0\x9ev\x190\xa0\x1bvX\x81\xddv\x18\x86\x15X\x81\x15\xbb\xec\xc7\x04h\xb1u?b\x94\x9c8\xa2,SnZ\xb4Y\x97\x18\x08,\x92\xcf\xc3\xf7}\xf9~I\xd6\x95\xab\xf7}\x02\x0e\x10\xe3\x98\x06-\xc3\xbad\x1a\x00\x05.\x1d\xe3`\xda2\xee\x0c\x07\xa5\x86\x01\xb8\x80\xc1\x18\x12\x1a\xa0\x961G\xdc\xb8\xfa\xd9\xa7\x9f\\\x81\x97\x85\x87|\x04$>\xe0\x97a\xcb\xf0\x84\x08/\x97\xcb\xdc\x95\xc3\x90_\xa2!\n\xe4\xdc\x842\x1f\ny\xc9\xa6\xe51\x83\x87\x92\xd7\'e\xdb4ke\x1f\xe2\xc0\x00\x01\xf4%\xed\xad\xc9\x04\xbb\x08\x0ccJC\xd2\x03p\xb2A\x9f\xc8\x7f\x81\xe0\xc9`2\xec\x12\xb6\xe7&{\xa7\xb1\xc6\xf1\x82d\xc9xf-/\x93\x01>\xe7]\xc2\xc0\x01$-C\xca0\xa6\x87Ct_\x18\x80@.\xe4D\xcb0\x93?\xa3|\xcaRVi$\t\x11\x85\xac)\xc6A\xf2\x97aLS$r\xda\x19F6\x1d-)\xcd\xbe\xdd\xa8Z+2\xd9\xaaL:\x86~#\xfe\xac\xc8\xa00@\xd7\x95\xf6\xcdj\x96f\xb1\x9c\x9a\xd9\xb03,Y\xd8\x92I+O\xb3nU\xf2\x99rd\xaa\xe8dj\xd6:v5\x97\xa9\xb2\xcaT\xd5Yy\xd0\xec\xf7\x9c\\\xa6\xea*\x93\xa3aj\x9bv\xa7Y\xc9erV\x99j\x1a\xa6j\xbf]\xb7\xfb\xb9L\xb54\x93Gp0\xd3\xf1\xd4\xea\x8dF-\xc3\xa3\x82$dB\xc9V\x01Q\xb3V3\xeb\xbd\x0cQ\x06\x17\x0f-c\xf34\\\'4\x10E\xf1\xea\xc3}\xca\x06r\xa1*\x02\x81\x02\x07@\xccC4\x81\xaeD\xb6CA9\xe8a\x1e\x1287@\x08\x03\xca\xe5\xb0i[\x96\x0c\xde\xaai/?i\xcfH\xa8\x10L\xf1d\']\xae\x99\x8c\xe5\x07\xdce8\x14-\xe3\xba\xdc\xd3H-~\xf9\xe2\xc5\xd1\xa3\xe7G\x8f~?z\xfc\xf8\xe8\xd1\xaf`\x1bO=\xa1e\xd8\x82\xc14\xcd\xf0\xfa\xa7o\xfey\xfa%\xf8\xfb\xb7\x1f_?\xf9\xb6\x08\xc9\xd3\xc8W\xbf|\xf5\xea\x8f?7\xdbR(B\x7f\xf7\xec\xd5\xf3g/\xbf\xff\xfa\xaf\x9f\x9fh\x81m\x06Gi\xe0\x10\xfb\x88\x83\x9b\xe8\x10\xdc\xa6\xbe4\x84vS4bg\xc5\x0e=\x88\xd3\xd8v0\xe50\x801Z\x8b\xeb\x0bO\xc1\xdd\x9cC\x02\xb5\x88\x0eRO\xe3.\x93i\\\x0f\xb9\x16\xed+\x8a\xedy,\x12X\x0b\xb9\xe1\xf9\nd\x87R\xd2\xa1\xac\xc0\n7bI\xd2\x16\x8c\x82i\x91h,J#nCx\xa0\x97\xac\x9b\xf1\xa9~\x14\xcaH\xc5\xfam\xba\x1eR\xd4\xd9%\xd2\xc1\xe0\x14\x05H\x80x\x8e\xce\x10\xd2\x12\xdc\xc3X9\xa7\x1d\xec2\xca\xe9D\x80{\x18t .0\xe7\x10\x8fD>|\x0b\xfb\xf2\xc4\xe7z\xf1\xa5w)v\xdd\xb9\x0b:\x94\xe8\xb7\xec\xa1\x03\x15#\xa3\x18\x12\xfd6\x88(\x87q\rF\x02\xfa\x05\x9aA\x9f\xa41\xdbPxze\xf6\xe6\xccU\x0e\x90\x0b\xe9WSD(\xe8\x8f\x11\xe7z\xf4-6W\xd4\xba\x01e>/p\xb2\x1d2\xf7U\x0c\x13x\xa6\xc7lCJ\xd3\x98\x1e\x9du=\xe8\x87\x05\xba\xe1\xc0K\xa3>\xe73\x198\x10\xecRQ "U\xa3:\xbe\x96\'\x0c\x83\r\x9c\xeb.F\xe2\xacy\xeb\x8eL\xc5\xf9\x8e\x19\xcfDL\x1f\xbc\x88\xaayeN&\x10\xe97l3_)Gm\x86\x0b\xbc\xb2\x13M\x95\xd0\xdbF\x88\xc0C8F\x08\xdc\xf9\\\x8f\xa4!\xcdW\xee\xba\'\xb3\xe8\x16\xd2\xdb\xf5:T#(\xbe\x0e\x10\x97=\x7f\xdc\x88k\x9d\x07s%\x90\xf6\xd0\x94\x16J\xbb3\xcf\xa4\xdc9\x0c|\xc8\x8aw\xbb9S]\xb5?b2\xa9\xe8\xa3\x88\xb83\xa5\xec`\x16\xa7\xa1"\x11oq\x1f\xbe\xe1N\xbb\x1eT\x1c;\xbe\xe6EQ4g\xc1\xd93\x84D\xef\xbf\x15\x1a\xbd\x05Z\x96\xc83\xd8u\x08\t\xcaw\xd4!\xc4`[_\x9a$8\xca\x07\xc7) !\x88\n\x18&j\xf2Y9\xd6\xb8O^mx\xe3.\x18\x07\x1bw\xc1\xe7\xa5\xfb\x95]\xe4\xcb\x1f\x9e\xbe\xd7\x8e\xf7\xfd\xf4\xba\xc5\xa94\xdb\xe1\x16#\xb2}m\x97\xb21\xfex\xda\xda\x1e\x8c\x82]$k\xf6EW{\xd1\xd5^t\xb5\xebt;\x0f]mq\xae\xba\xe8e/z\xd9\x8b^\xf6\xa2\x97\xdd\xa0\x97\xcd\xb4\xad\x8bG\xc3\'\x0f}S\x0f\x82\xfd\xc2\xe7\xc0\x13L\xc8\x9e\x98\x13\xb4\xcd3M0\x97\x99n<\x90\xd3\xa9\xe1\xc5DB\xb9|P\x1dz\xf2\xab\xaaS9\x1f-\xb1S\x06\x93Q\xc0\xa8\xf8\x02\x0bo\xcf\x83\xa1\x14\xcc2\xb2\x9bL\xb9*\xd0r\x18\x84\x94\xcb\x16\xdc\xc8\xcc\xad\x97le\xe1\xa2\xc5\x8f\xfc\x1d:>\xfee\xc3\xca\xfc\x12\xa5\x92Bq\xba\xd2t4+\xe5M\x83X\xac\xab\xd5\xf3\x97%\x969\x112\xab]9Vo\xbd\xcaN"\xe4\xbbT[\xab\x8c\xaave#\xb5\xebk\x96\xbd\x8d\xda\x96\xf9!\xf5nn\xa4w\xc3z\'z/\x86\xb2~\x1fK/\xefFa\xfc\xf3\xb0S]XC\xa6\x0b\x99\xa6\xc6q\x1cd\x03\xef$\xc2\xcei\xdcm\xeeV\xea\x91\xd9\x1b\x1dD\xb3zN\xe3NQ[\x9bnT\xb5\xb5\x89\xc9\x93\x8dW\xc1\xc2\xf3\x15yM]8)&\xb27T\xbc\xde8\xc7\x91\x97\x94\xe5\xbc\xfa\x1a\x13\x07\xf9U\x97\x04\xe0P\xd6\x8f\x8a#\xb7ra\xd82&\x04\xca\xfb\x08\xd7\x0f\xe5\x9e<\xee\r \x99\x06-\xc3\x15l%v\xf3+\xf6f5{}\xd5N\xf0!\xe3\xa2\x07\xb9\xb7\x80\'\xcb\xb2\xf0\xb8-\x11\x88\x01\x82}\x99\x11W\x1d2y\x11"\xc8\xd3\xd6\xb2\xeb\xe6\xffI\xdd\xa6\xf9\xd1\x9f\xee\xe22\xcf\xf1\xd1d\x82\\\x91\xef\xfc\xa9\xb9\xec\xee\x8b)\x89\xc8n\x9a\x8f\xf9\x10d\xab\xe7B#i\xb2=o|\x08F$b\xb7\xa1<d\xa7n\xc5\x87?\xc6\\,=a\x8cY*\xc1\x9cz@\xa6X\xafI\xc5\xca\x9b5kRv\xb2\x12\x92\xd0\x83\xc7\xfd\xa9\xaeQ[\x10\xe6$\xcd\xa5:+\x9e\x95g\x83u\xf6\xcc\x8cg\xdcc4\x1d\xbc\xdf;\x927#]=\xe3T\xf3\x91\xdbVf+[=\xa7\xb2\xad\xabV\xff\x85\x1b\xa9\x94\xfe\xbanN\xb1\x81\xb3auo\xae\xa9\xee\x9b\xf7\x87\x1f\xbc\xf1K\x99G\xa7\x8cb\x9e\xca\xa6\xe6\xd9\xbc\x8f<\xb77f)u\xd6%\xa5\xcd\xbb\xc3s\xd3\xf5\xe5f\xb1\xa4\x1d\xf4\xd3\x0fi\xe2\x91\xd5Wn\xe3\xc21\xda\x97\xf9\xb1\x87&0"\x82\x97O\x86\xd1}\xc1`\xf7\xe4\x85\xbfe\xfdZ\xcc\xa46J\xaeA\xc4p\xcbx`:\xedj\xd7v\xba%\xb3\xe1\xf4K\xd5J\xd5,5\x9cv\xa5\xd4v\x9c\x8a\xd5w,\xb3\xd7\xb1\x1f\xa6\x1e\t\t\xcf\xb7\x9c\x85T\x03\xe8c2?~\xdf8\x19_y\xe7\xd8?y\xc0u\xc9\xa5~\x99&\xcf\x97\xca\t8y\xe7\xd8\xb2\xd7\xbfs\x0c\xb0\xb4\xe7\x03\xbboU\xed\xb6\xdd-u{V\xadT\xb5{\xb5R\xa3^i\x97\xbav\xadg\xb7ey\xac\r\xda\x0f\rp\x90,\xb6:\xbd\xde`\xe0\xd8\xa5ZW\xae\xab\x9am\xa7\xd4\xeeT\xba\xa5Z\xa3\xdf\xb1\x07V\xbf\xda3\xe5\xe2r\xca\xde\xd2\x0eKK/m\xb44\xbb\xfc\xfe/PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x0f\x9f\x17\x02-\x02\x00\x00(\x05\x00\x00\x11\x00\x00\x00word/settings.xml\x9dTMo\xdb0\x0c\xbd\xefW\x04>/\xb1\x9b\xa4Y\x114\xed\xa1]\xd6C;\x14p\xba\xbb"\xd3\xb1P\xc9\x14(\xc5\x9e\xfb\xebG\x7f(\xde\xd0\xa1\x0bv\xb2\xf5\xf8\xc8\'>\xd2\xbe\xbe\xfdi\xf4\xa4\x02r\n\xcbMt1K\xa2\t\x94\x123U\x1e6\xd1\xcbn;\xbd\x8ano\xae\xeb\xb5\x03\xef\x19s\x13\xe6\x97nm6Q\xe1\xbd]\xc7\xb1\x93\x05\x18\xe1fh\xa1\xe4X\x8ed\x84\xe7#\x1db\xccs%\xe1\x1e\xe5\xd1@\xe9\xe3y\x92\xacb\x0e\x16\xd1P\x047\xd1\x91\xca\xf5Paj\x94$t\x98\xfb\xa9D\xb3\xee\x93\x87G\xc8\xa0\xff\x95%\xd0\xc2s\x8b\xaeP\xd6\x85jN\x9fS\xae\x0f=\xaa=\tjB\x13\xaa\x0cE\xaa\x8f\x9a\xa8\x8c\x0e\xbc\xfa\x1c\xad\x1a)\xb3\x84\x12\x9cc\xb3\x8d~/W_$g\xb8\xd6\xd6\x89\xda\xb1\xbd!\x9aI\xbd\xb6@\x92\xbd\xe0\x01\'<\xe0\xb8\x8d\x80\xd9C\x966\xce\x83\xd9b\xe9]\x8f\xb28\xe6\xa9\x17\x1e8\xeb@\xc2\x18\xc1\x9eK\r\x82o\xc0[`A\xebn5\x06\xa8Kr\xbe\xd1\xf0,J\xd8v\xadl\x95\xf6@\xcc\xae\x04\x1b\x9c$\xc9r\xe0e\xf8\x1d\xfd\x8e\x84|}\xc2\n\x06\xc5\x0crq\xd4~\'\xf6\xa9G\x1b\xb2\xbe\xcc\xc3=3\x125+~#\x95= \xa97\xbe\xab\xd0\xa9\x15\x92\xc1\xc0^\xac\xfe\xc2\xfe\x01\xe4\x95\xfc\x88\xab\x9c\xd5\xa2\x19\xab\xde\x8f\xc9_\xf9\x93hN-\xfc\x99\x10\n\xff\x8b.\x0b\xc1\xbd\xb2\x15\xc3\r\xeeX\x84P\x07Z\xe7\xc6\x1d\x1aK<\xed\xe0\xa4\xa8\xe0\x99\xa0RP?+\xe9\x8f\x04=\xce\x9fg\xe6n>M&\xd7q80\xeay\x03\xa0\x1d\xde\xa3\x18\xfb\x83r\xfa\x92\x86\x1bhJ\xdb5\x81\'am\xef\x81\x90\xed"\\l\xa2\xe1%:a\xf3\x80\xcdGl\x11\xb0\xc5\x88-\x03\xb6\x1c\xb1\xcb\x80]\x8e\xd8*`\xab\x16\xdb\x1fXS\xabC\xd1K\xee\x0f\xf3\xe1\xd8\xa9\xe5\xa85\xd6\x90=4\xbc\xa9\xbc`\xaf\x9b\xe8\x1d\xd4\xf2\x8a1^\xfc\x8e\xb7\re\x82^\xbb\xdam\'\xeda\x1e\xc6\x06R\x19\xde\x83\xc6\xecG\xf7gCP+\xe7S\xb0<)\x8f\xa7\x9d\xfd\xdc\x05\xe3\xf1\xafw\xf3\x0bPK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x91^_\xfa\x9d\x00\x00\x00\xcb\x00\x00\x00\x14\x00\x00\x00word/webSettings.xml]\x8e\xcb\n\xc20\x10E\xf7\x82\xff\x10\xb2\xb7\x89.DJ\x1f\xb8\xa9\xbb"T? \xb6c\x1bH2%\x13Z?\xdf\xa1\x1b\xc1\xe5}\x9c\xcb-\xea\x8fwb\x81H\x16C)\x8f\x99\x96\x02B\x8f\x83\rc)\x9f\x8f\xe6p\x91u\xb5\xdf\x15\x81t\xbe\xc2\xab\x83\x948"\xc1X\xa0\x9c\xddRN)\xcd\xb9R\xd4O\xe0\re8C\xe0\xf4\x8d\xd1\x9b\xc42\x8ej\xc58\xcc\x11{ b\xd8;u\xd2\xfa\xac\xbc\xb1A\xf2\xb6\x10\xdb\xbaq\x0e\xd7{{\x13\xea\xe7\r\xd8b\xea\xcc\x02W\xea\x98t\xd0X\x07[\xa1P\x7f\x8f\xaa/PK\x03\x04\x14\x00\x02\x08\x08\x00\xb1p\xca\\#\xe9\x81\x1b\xdd\x01\x00\x00H\t\x00\x00\x12\x00\x00\x00word/fontTable.xml\xed\x94\xcd\x8e\x9b0\x14\x85\xf7\x95\xfa\x0e\x96\xf7\x1d\x0c!\x93\x1f\x85\x8e\xe6\x8f]\xbb\xa8\xa6\x0f\xe0\x80\t\x96\xb0\x8d|\x9d0y\xfb^\x0c\xc9Pe\x9a\x8e\x88f\xa4J\x85\x05\xe6\x1cc_>\x9d\xeb\xd5\xcd\xb3\xaa\xc8NX\x90F\'4\xbcb\x94\x08\x9d\x99\\\xeaMB\x7f>\xa5_\xe6\x94\x80\xe3:\xe7\x95\xd1"\xa1{\x01\xf4\xe6\xeb\xe7O\xabfY\x18\xed\x80\xe0\xf7\x1a\x966\xa1\xa5s\xf52\x08 +\x85\xe2pej\xa1\xd1+\x8cU\xdc\xe1\xab\xdd\x04\xa6(d&\x1eL\xb6UB\xbb b\xec:\xb0\xa2\xe2\x0e\xf7\x86R\xd6@\xfb\xd5\x9a\xb7\xac\xd6\x18\x9b\xd7\xd6d\x02\x00\x8bUU\xb7\x9e\xe2RS\xac\x8f\x90\xbeB\xd2,5WX\xf9m\xed\x0ct\x967k\xae\r\x88\x10\xfd\x1d\xaf\x12\xca"v\xc7\x18\x8b\xf1y\xb8c\x1a\xbcL\xcfJnA\xb8\xe3t64\x0b\xaed\xb5?x\xd0H\x80\xa1]K\x97\x95\x07w\xc7\xad\xe4\xebJ\x0c\'\x80\xdc\xa0\xbd\x855K(\xfe\x06c\xd1|F;%l\xf7\xf2\xd7\xa4W\xa2\xa3\xc2ze\xf2\xbb\x92\xf9u\xfck\xb8H{%\x1c\xcc\xe9v^\x05\x1d\xa1Wi=I%\x80|\x17\r\xf9a\x14\xd7g\xb9E\xec\x9aM\xd8\x14\xd9Mq<\x19\xcd\xcd\xfa\x9d\xc6r{l\xb1=\xa6\xe9\x0b\xb7{Tf\xf3\xe9\xdd\t\xb7\xc5\xdf\xb9\xa5#\xb9\xf9\x94\x91\x07\tu\xc5\xf7\xff\xd3\xf6Fj\xf7\\\xad\xb1N\xf2\x8d\xbb\xf2,\xb46b]\xd4\xda\xc8\x8d\x87vy\xd4X4\x8cZ\x8c\x1c\xa3\xf8\xa8|\x0c4\xb3\xb5R\xd8\xb6I\xcf2\x9b!\xa9\x85\x8f\xd8\xd4\x13\x1c\xcbL\x99\\\xd8?C+\xe4\xb3\xc8\xcf6\xe7\xedis\xc6\xa71{\xc7\xe6\xecc\xf6o&\xacU>:a\xbc\x92\x08\xec,\xaf\xd4\xa7\xca\x1f`\x17\xf1\xba\xec\x18{=_Q<{\xc7\xc3\xff0\x04\x1c\xff\x02PK\x03\x04\x14\x00\x02\x08\x00\x00\xb1p\xca\\7\x1d\xdc\xbe\xe6\x01\x00\x00\xe6\x01\x00\x00\x14\x00\x00\x00word/media/rId25.png\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00F\x00\x00\x00\x14\x08\x00\x00\x00\x00\x15\x03\x14\xa4\x00\x00\x01\xadIDAT8\xcb\xed\xd3=K\xc3@\x18\x07\xf0\xe7C8f\xbe\xa1C \x93c)tr\x08\x82\x94\x94\x8a\xa0\xb48\xa8\xab\x83\x16\x17\xf1\x05EE\x04i\x05\x11|)(j-\xb8\x08bE\x04\xb5\xe0\xa0\x15[\xaaPEq\x10\x89/$XZ{y\xbcKb\x9bJG\x05\x07\x0fr\x1c\xff<\xf9\xe5\xeer\x01\xfc\x91\x06\x7f\x8d)\xb8T6\x88\xcb\xd4J\n\x92\x9as\xd3J\x81N.\x10\x93p\x84xJ\xde\xab\xcf\x05S\xbc\xaf\x14V\x98U\xcf\x17\xe3R3R\x951\xbc+\x88\x030\x848\x15r\xbc^1\x99\xbc\xe4dt>\x1b\xc6$\x00&\xca\x8c\xc9\xb1\xbb1\x80\xd1"\xaf\x88\x84\x8c\x82\xb4I\x8a\x86w\xcb\x0eGz\xc9\x00cv\x04!$;\x18q2\x1a]\xf0\xc94\t{Yi\xccb\xd6\x1a\xf6\xd2b?\xaf8\'\xc5\xac\xa8\x89\xd7\xafpk\x87]0\xbf\xab\xa4.a#-\xd60\xbe\x80\x12"2\rv\xbfk\xdb\xe4\xd9d\x94(bZxf\x15\x9ap\xbf\x10\xc6\xce\xe53W\xc9\x0e\x83\xe3|QK\xcd\x06\x9e\xb8\xbf/j\xddC{\x805\xe1\xc1b\xd8\xdas\x02\xdf4C\x89\xb7\xecc\xbc#\x12F;\xf4\'Lf\x1a\xf1J\xaa\xb3\xc5\xfe\x19D\xf5\xf0\xcdbb\xac\xc8\x9c\r\xaeJ\xc2#\xde\x01\x1c\xa0\x1dr\x8d1\x01\xc4\xcbz\xcc\xa2\x90\xd1\xdbE\xcddf\xc9\xcdKk\xc00\xbf*\xc8e,5\xb2\xa9\xd9\xa1\xc5\x9c\xc2\xb1\xd6&\x7fg\xd6d\xfa1\x08@\xf2|\x8b\xdd\xb4\xd4\x07\xd0\xf4d\x1f\xa49\xd6\x0f+\x14\xed\xd0\xcf\x18v-\xb2-p0\x8e\xa6k\x8e\xb1^\xe7\xb4\xd6\x84E\xed\xef\xfeS\xff\xcc\xef2\x9f\x83~\xc8\xd3\xebzI\x8f\x00\x00\x00\x00IEND\xaeB`\x82PK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xaf9I\x01\x99\x01\x00\x00\xd2\x07\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00[Content_Types].xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xb7w\xa4\xef\xe7\x00\x00\x00\xd2\x02\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00_rels/.relsPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\XH\xb3\xbe#\x0c\x00\x00\xe8(\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00word/document.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xe7\x86\x0e\xdaC\x01\x00\x00\xeb\x05\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,\x0f\x00\x00word/_rels/document.xml.relsPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\e\x8d\xd1z\xc1\x00\x00\x00=\x01\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x10\x00\x00word/_rels/footnotes.xml.relsPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xc3[\x87x\x1a\x02\x00\x00R\x10\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x11\x00\x00word/numbering.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xc6\xce\xe4\x131\n\x00\x00\x97j\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x13\x00\x00word/styles.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xbc\x00\x13i\x16\x01\x00\x00K\x03\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00M\x1e\x00\x00word/footnotes.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x1fn\x03\x13\xd9\x00\x00\x00q\x02\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x1f\x00\x00word/comments.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x8d\n\x89\xb2\x1c\x01\x00\x00G\x02\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b \x00\x00docProps/core.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\4\xc4.pj\x01\x00\x00\xe5\x02\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6!\x00\x00docProps/app.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x1ay%\x8d\x88\x00\x00\x00\xd4\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00~#\x00\x00docProps/custom.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\xfd1j\xa3"\x07\x00\x00\x8f-\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x007$\x00\x00word/theme/theme1.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x0f\x9f\x17\x02-\x02\x00\x00(\x05\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c+\x00\x00word/settings.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\\x91^_\xfa\x9d\x00\x00\x00\xcb\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8-\x00\x00word/webSettings.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x08\x00\xb1p\xca\\#\xe9\x81\x1b\xdd\x01\x00\x00H\t\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7.\x00\x00word/fontTable.xmlPK\x01\x02\x00\x00\x14\x00\x02\x08\x00\x00\xb1p\xca\\7\x1d\xdc\xbe\xe6\x01\x00\x00\xe6\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc40\x00\x00word/media/rId25.pngPK\x05\x06\x00\x00\x00\x00\x11\x00\x11\x00N\x04\x00\x00\xdc2\x00\x00\x00\x00'
[6]:
# write to file
file_exists = doc.to_docx("../exported_docs_examples/outfile_raw.docx")
file_exists
[6]:
True
Prepare a template and fields (optional)
prepare, a template and some fields in the template.
[7]:
templatepath = os.path.join(pyd.get_registered_template_dirs()[0], 'word_template_with_mergefields.docx')
templatepath, os.path.exists(templatepath)
[7]:
('C:\\Users\\tglaubach\\repos\\pydocmaker\\src\\pydocmaker\\templates\\word_template_with_mergefields.docx',
True)
[8]:
# HOWTO:
# Adding MergeFields In Word to replace them later:
# Go to Insert -> Quick Parts -> Field -> MergeField.
metadata = {
'repno': "1234",
"summary": "This is a nice workflow for automatically creating docx documents",
"date": "2025-12-13",
"comment": f"this is my comment!",
"author": "Me"
}
this is the quick and easy way using the common pydocmaker api:
To docx (no additional dependencies)
[9]:
# three different examples below
file_exists = doc.to_docx("../exported_docs_examples/outfile.docx", template=templatepath, template_params=metadata)
file_exists
[9]:
True
To docx via Word (with additional dependencies)
This will also update all fields and the table of contents, but will need win32com for it.
[10]:
file_exists = doc.to_docx("../exported_docs_examples/outfile_w32.docx", template=templatepath, template_params=metadata, use_w32=True)
file_exists
---------------------------------------------------------------------------
com_error Traceback (most recent call last)
File ~\repos\pydocmaker\src\pydocmaker\backend\ex_docx.py:611, in convert(doc, template, template_params, use_w32, as_pdf, compress_images, filename, allow_pandoc, **kwargs)
610 with DocxFileW32(filepath) as docxw32:
--> 611 docxw32.update_fields()
612 if compress_images:
File ~\repos\pydocmaker\src\pydocmaker\backend\ex_docx.py:252, in DocxFileW32.update_fields(self)
247 """Update all fields in the document, including those in headers and footers.
248
249 Returns:
250 DocxFileW32: The instance itself to allow method chaining.
251 """
--> 252 self.worddoc.Fields.Update()
254 for story_range in self.worddoc.StoryRanges:
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\site-packages\win32com\client\__init__.py:647, in CoClassBaseClass.__getattr__(self, attr)
646 if d is not None:
--> 647 return getattr(d, attr)
648 raise AttributeError(attr)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\site-packages\win32com\client\__init__.py:585, in DispatchBaseClass.__getattr__(self, attr)
582 raise AttributeError(
583 "'%s' object has no attribute '%s'" % (repr(self), attr)
584 )
--> 585 return self._ApplyTypes_(*args)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\site-packages\win32com\client\__init__.py:574, in DispatchBaseClass._ApplyTypes_(self, dispid, wFlags, retType, argTypes, user, resultCLSID, *args)
572 def _ApplyTypes_(self, dispid, wFlags, retType, argTypes, user, resultCLSID, *args):
573 return self._get_good_object_(
--> 574 self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),
575 user,
576 resultCLSID,
577 )
com_error: (-2147418111, 'Call was rejected by callee.', None, None)
During handling of the above exception, another exception occurred:
com_error Traceback (most recent call last)
File ~\repos\pydocmaker\src\pydocmaker\backend\ex_docx.py:618, in convert(doc, template, template_params, use_w32, as_pdf, compress_images, filename, allow_pandoc, **kwargs)
617 with open(out, 'rb') as fp:
--> 618 bts = fp.read()
620 if not as_pdf: # read back in
File ~\repos\pydocmaker\src\pydocmaker\backend\ex_docx.py:320, in DocxFileW32.__exit__(self, exc_type, exc_value, traceback)
313 """Exit the runtime context for the DocxFileW32 instance, saving and closing resources.
314
315 Args:
(...)
318 traceback: Traceback object (if any) that occurred during execution.
319 """
--> 320 self.save()
321 self.close()
File ~\repos\pydocmaker\src\pydocmaker\backend\ex_docx.py:297, in DocxFileW32.save(self)
296 if self.outpath is None:
--> 297 self.worddoc.Save()
298 else:
File C:\Users\TGLAUB~1\AppData\Local\Temp\gen_py\3.8\00020905-0000-0000-C000-000000000046x0x8x7\_Document.py:451, in _Document.Save(self)
450 def Save(self):
--> 451 return self._oleobj_.InvokeTypes(108, LCID, 1, (24, 0), (),)
com_error: (-2147418111, 'Call was rejected by callee.', None, None)
During handling of the above exception, another exception occurred:
PermissionError Traceback (most recent call last)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\shutil.py:616, in _rmtree_unsafe(path, onerror)
615 try:
--> 616 os.unlink(fullname)
617 except OSError:
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\TGLAUB~1\\AppData\\Local\\Temp\\tmp1dux72d3\\outfile_w32.docx'
During handling of the above exception, another exception occurred:
PermissionError Traceback (most recent call last)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\tempfile.py:811, in TemporaryDirectory._rmtree.<locals>.onerror(func, path, exc_info)
810 try:
--> 811 _os.unlink(path)
812 # PermissionError is raised on FreeBSD for directories
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\TGLAUB~1\\AppData\\Local\\Temp\\tmp1dux72d3\\outfile_w32.docx'
During handling of the above exception, another exception occurred:
NotADirectoryError Traceback (most recent call last)
Cell In[10], line 1
----> 1 file_exists = doc.to_docx("../exported_docs_examples/outfile_w32.docx", template=templatepath, template_params=metadata, use_w32=True)
2 file_exists
File ~\repos\pydocmaker\src\pydocmaker\core.py:1567, in Doc.to_docx(self, path_or_stream, template, template_params, use_w32, as_pdf, compress_images, allow_pandoc)
1541 """
1542 Converts the current document to a DOCX file, or a PDF file via DOCX.
1543 WARNING: Some PDF options require win32com and Microsoft Word installed.
(...)
1564
1565 """
1566 filename = os.path.basename(path_or_stream) if isinstance(path_or_stream, (str, Path)) else None
-> 1567 return self._ret(to_docx(self.dump(), filename=filename, template=template, template_params=template_params, use_w32=use_w32, as_pdf=as_pdf, compress_images=compress_images, allow_pandoc=allow_pandoc), path_or_stream)
File ~\repos\pydocmaker\src\pydocmaker\backend\ex_docx.py:622, in convert(doc, template, template_params, use_w32, as_pdf, compress_images, filename, allow_pandoc, **kwargs)
620 if not as_pdf: # read back in
621 with open(filepath, 'rb') as fp:
--> 622 bts = fp.read()
623 elif not use_w32 and as_pdf and libreoffice_api.can_use_libreoffice():
624 with tempfile.TemporaryDirectory() as td:
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\tempfile.py:836, in TemporaryDirectory.__exit__(self, exc, value, tb)
835 def __exit__(self, exc, value, tb):
--> 836 self.cleanup()
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\tempfile.py:840, in TemporaryDirectory.cleanup(self)
838 def cleanup(self):
839 if self._finalizer.detach():
--> 840 self._rmtree(self.name)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\tempfile.py:822, in TemporaryDirectory._rmtree(cls, name)
819 else:
820 raise
--> 822 _shutil.rmtree(name, onerror=onerror)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\shutil.py:740, in rmtree(path, ignore_errors, onerror)
738 # can't continue even if onerror hook returns
739 return
--> 740 return _rmtree_unsafe(path, onerror)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\shutil.py:618, in _rmtree_unsafe(path, onerror)
616 os.unlink(fullname)
617 except OSError:
--> 618 onerror(os.unlink, fullname, sys.exc_info())
619 try:
620 os.rmdir(path)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\tempfile.py:814, in TemporaryDirectory._rmtree.<locals>.onerror(func, path, exc_info)
812 # PermissionError is raised on FreeBSD for directories
813 except (IsADirectoryError, PermissionError):
--> 814 cls._rmtree(path)
815 except FileNotFoundError:
816 pass
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\tempfile.py:822, in TemporaryDirectory._rmtree(cls, name)
819 else:
820 raise
--> 822 _shutil.rmtree(name, onerror=onerror)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\shutil.py:740, in rmtree(path, ignore_errors, onerror)
738 # can't continue even if onerror hook returns
739 return
--> 740 return _rmtree_unsafe(path, onerror)
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\shutil.py:599, in _rmtree_unsafe(path, onerror)
597 entries = list(scandir_it)
598 except OSError:
--> 599 onerror(os.scandir, path, sys.exc_info())
600 entries = []
601 for entry in entries:
File c:\Users\tglaubach\anaconda3\envs\pyd\lib\shutil.py:596, in _rmtree_unsafe(path, onerror)
594 def _rmtree_unsafe(path, onerror):
595 try:
--> 596 with os.scandir(path) as scandir_it:
597 entries = list(scandir_it)
598 except OSError:
NotADirectoryError: [WinError 267] The directory name is invalid: 'C:\\Users\\TGLAUB~1\\AppData\\Local\\Temp\\tmp1dux72d3\\outfile_w32.docx'
To PDF via docx with Word (with additional dependencies)
This will do the same as the last step, but also export the file to PDF after it has created the .docx file.
[ ]:
file_exists = doc.to_docx("../exported_docs_examples/outfile_w32.pdf", template=templatepath, template_params=metadata, use_w32=True, as_pdf=True, compress_images=True)
file_exists
To PDF via docx with Libreoffice (with additional dependencies)
This will instead use the Libreoffice software to convert a docx file to PDF.
[ ]:
file_exists = doc.to_docx("../exported_docs_examples/outfile_libreoffice.pdf", template=templatepath, template_params=metadata, as_pdf=True)
file_exists
The hard way: using the low level classes and functions
you can also work with the exporting classes directly to get more control:
[ ]:
outpath = '../exported_docs_examples/outfile_lowlevel.docx'
outpath_pdf = outpath.replace(".docx", ".pdf")
docxf = pyd.DocxFile(templatepath).replace_fields(metadata).append(doc.to_docx())
docxf.save(outpath)
if pyd.DocxFileW32.is_installed():
with pyd.DocxFileW32(outpath) as docxw32f:
docxw32f.update_fields()
docxw32f.compress_images()
docxw32f.export( outpath_pdf )
os.path.exists(outpath), os.path.exists(outpath_pdf)