0c1f300d-d098-42f4-b730-8790940cd5b2
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAACeESURBVHhe7d33d931nefx/Al7zp4z88vsmT27
M5lJwkwSIGCqQwIkhBIIZYeTwjIQkoUlS0soiWnBNBvb2Ma9gi0XWbLcJEtW79JV771bvVi9+7Wf
z/dKzrW4NrYByfB5Ps95RNLVbVJsvd/fe6/MN4iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiOiy6/nrr78+dM26zaEfrdsSuuajzQAA4Cto3cbtoW+/837o3//d34XO
zPhzd80110RFJWappKlfRQ29KqzvAQAAX0FFDX0qaxnQ6vVbNTPmz91H5si/rGVQifm1AABgRlJB
3SVZqMsmzdzvlOIm5ZY3ffYCsGHjttBysy0kF9YrxUgtajgn+/kU+xYAgK8rM+vSihuUmFerOF+V
4nOqL0icr9pcpkbpJY3eML6Yy8abyybk1pjbbVSyGeYXddkZs7M6raRJ2SX1n70ArNuwxVsA7Bd9
ZtgX1pq3ZtiXdCm5tFeppT1KNXfqzOcBAPiaSjcDNDa7UgdjcnQkIV+H4y/MESMiNkeRqSU6FJt7
5rL27bHkYh1JLDyLd1rA9UecMJdNKTlzXbNvjyUV6ajhvbWXC3j/zGXN7R1LLvLue3pp84UvABUn
B70Bb7eGlNwypeZXKTm7WFlRbyr78JNKifiTkjN95vMt5sqbvSu3W8qF8i5jrvus00pblFFmBFxX
4Hn+dhtN5nwnzzofAABflsyyZm8Qx6SbeVjcYI7I6y+IPZCOy6pQaFSWuWypmZmN3qMJCXk12hMR
p7CjiTock+YJO5qgvYfivUcM7HmSCxuUaI7iDxzPVqRZDOwjEPaRgKT8OoVFpWr3geMKjzHXm1mh
3WEx2ncoTjEZZeayDd55ksz1HIrL82anna2+C1oANm4JrWwd8oa/vWBqXrk54m9WQkae6uOf0FjV
s6o8/GPFxp1QRkWnknIrFO+rPHMjmeV2OPsHucc7rdV7a8+TVdGmlPxK76GUrIpWpZtvrv1colkw
jsVnmG9SsTl/m/mGNynRV640c11Z5joTsu033tynolpFJaQrOs1sNqUn/dc9ezuGXQ7safZ+ZJr3
ve0HAIBLlFXeouNpZYrNqFBakX1Ivl6phfYgtcU7EE4rnuEdFLcoxQ5/ex5z3gRflcJichRrBnW6
mWH2IPZwQqESkzPV0dGh4qIST2dHp+IT083nCsx5ms0gbzRDvFbhJ3LNbZvlwVwupaBBMVmVCj14
XOOjozoQEa0N20I1ODCg5OR0bT9g5rKZmd4CYpYA+6hChlle7Dz0lTZc6AIw7F8AanuUdvCgMu5Y
pKg3l6g66VGp7GpV7P0HRZ1IUHZ1j+LScnQsKU/ZZpgnZhUpOrXQ3Okqb/tINm/js0vMwM5UXHal
0gqqFJXkU3RyliKiEnUis1QZZtin5JXqyIl0s7WYzaegVvGZhYpJLVCcWQBS8qt13HxTwiMTlVrS
qrS8Mh0+kaIU+w3Kq1BkQobic8zt+YrNZQoVm55vbiNb0Sm5ZkkoVLpdCsyCEOz/VAAAPsuZBSDT
HOya2WMHdEJOjTliT9D+Q4kKPZLk2WeO4MOi0s2SYA6ei+ywNwe35ijeLgBxZnBnmoPWDLMgHDVH
9L7cIkVGJ2rt9oP6aEeEomNTlJmV5y0AGeZ83hJghnj4iTxFp5eay7Z4C4Ud8CHmNhOSMjRmloDh
oSGVlVdr1YZd3usE7CPs9nyphQ3eUwL+BaDtwheAmo5R76g7p3lIJ7ZvU9R//y868swzOnbkdR3b
+Qsd2forJaZmKqemV4mZ+ebOlSi/ptN7/2BknDmSTzdH7BXm40Iz2JPNwDcbTHyajsSmKdncsaTM
PEUl+hRlzpda1qak9BxFZ5Qrs7DSG97H4lLN4lBuhniWWR6ylZRbaU5LU3p5uzKLqhURGes9IhAV
n2G2pFpFJ2bpqLkde5mo+FTFmAUj0lzueGKmub0m+cxykm2+HgAALlZuVbs5YK0wB7JV3nDOrmg3
Q92nhIRk9XV3q6OtzdPT1al9YccU66s1g9gefJ5UYm6tDsbmmQWgSpll9hHrk4pMLVVicobCD8co
NNqnAzG5OhwZrzgzv+xykGHO5z2SkF+viLh8xaSb+WgOZr2nI8pbFR6TrV17Dqrb3F5vT7dizAH5
mq2h3iPs9pEC+2i5fe2CfU2Br7JNOVUdyruQ3wJYt3FbaH33uHKq21XQ3K/E43HaeM9d2v/u21oR
N6DHdk4o5ESNcguKlF/fqxRfgY6ZYZtZVKVjsebOmy0mKilLsal26GcoMilTqQU1OpFoFwD/UX5S
Vr75plQqNjlTKeaoPresznuUIDXfDH0ztI+n5JgtqdFcR7ZizEKQkF1irjdV2dVdyi6pVnRqvgrr
uxRtlorEvHLvtqKTs/2XSctVSl6ZEs0yEJ+eZ66/xSwnHco1Xw8AABeroK5L8fZV+DMLgGVf4b/l
k4PavGP/GZu27dXGnWFKsUf/AQvA4fgC77JZ9ilqc1qUWQCOHI1RUWGhoqPjPMVFRTp05Lj34j5v
UZhZAOzTBScyKswi4l8ekgoatGNXuFqbG7QrJEwr12xVS3OjwsOPaH9kuhn47d6jAPapiqgUc3Be
22nuf7cKqloubAFo6pvyvuCC+h4zcGvMtmO2GV+2Pvg4Q08uy9OeiCTl5BeoqLFPeeZKk7KLlGaO
xDPM0XlKXpVZHtqUnl/hDf5ss3XkVrXJV96snIpmJflKzDegceY087a601xPr3xl9UrMKjRfoD1i
b1ZeTbt52+Jdf7Kv2HwxdeY+9Zhh3maus1mFDea2K5vNoC/ynn6w151n/o+yl82tOmk+Pul/v6ZT
hfZrAQDgEhSbGWUHeWKOnYft3uvL7Fv7OrR4c3pCXt2MWu+he+91aGaI2/PY1wLY5+LtZX2VHcoq
t0fpzdoeckTbd4Xpk70R+tiw73+0Za/3/L29nP98TTqaWOQtD3aW2eGebYSEx2j9lhDtOBDj/YbB
ZrN0bNi6V8fTis3s7DaXb/OWjei0MhU19Ki4qU9F1a2fvQDYfwfg5IC8L7i46ZTyq80wNUfdOeYo
vaC8RiWV1covqzXDt8Wcp08l5jxlJwdV2tyv0pZ+lRkl5sZKWwa8j0uaT3kf+9+a89rTA0+zt2PY
9/3X4z/f7HX/7TL9/vtkTzfnKW7s8X/O3FnvurzzBr6deX/m+gEAuBR2rtkX4MVlVirbDPZMc3Ru
ZZkFwH4cyDvKn/m8/TjRV2OOxEsVn1VlDnrbzpyeUXJScdnV3u/7W/bpBXvEb6/Tu25zPSlmqThu
Lmtfe+CzS4V9Ubz9vJGcV28OctuUa5YK+7oEe//s9frvV4vS7AsG0yvMHJ6Zk7XtF7YAtA1JZWbg
egO02Qzlk0PmSgz7dlbLoPm8PQ9wtmIsILMcwz2N+FKZv1uF9fZRgHol5Jgj/hxztH9Bar3LFNT1
miP7RjPo/3bZxFz7q3oNZ0k0Qz3wsvb8+fbF+MUt5v2agM/Zy8+e195G4Mf+0+Ky/Y842APoyrYR
ldV3XtgC0D4s7wi+qWtIbd39au26NPayC2vg660nyGkz2nsGF07vwuroHXJWZ99CG14wXadG3NW/
sLr7RxfOwPzoGRjTqeGJS9IzOKY++/7IZNDPn5M5f+/5LmtPO4d++3Z4XDVtg6psv8gFoKR5QJ2n
hjU0cEoD/ZdmcKB/QQ0NDnypxkZHFsT4mP3Vj8Gg92mW/fxCGRkeWlCjI8POCvbnZT5NjI8umMmJ
cWdNTU4sqOmpyQVzenrKWeZ/zk/TauwcUsXFPgJgF4AOs1XbQX7q1Fz9Ghuf8P7CDw0Neew/RDD3
fP39/ecwoNHRUXPdwT73xRgeHvHu04i5naFBM5jMx/Y2h8yAGjCnBxoZMec1Q3Pu6eczPDysiooK
FRYWqri4WCUlJUbpzNuSgNPO/ti+DXQh5w38nFVQUOB9f+33Pdh9swbN17xQZv9MLBT7/42r7J/l
hWT/ji2UsbExZ42Pjy+oiYmJBTM5Oemsqamp87JLQsMXugDYAdvXI196ktJ9+Wqob1RDY4NOtrWZ
H0Cj5g/DmBnA518ABgf6VF1do74BOyzMUYs5orWDesQexYyaP9BmsRgwnxszf7DsUU2/eX/cLhzm
B0y/GW52+bBHev3nuI3B/j7VNdRrwAyDlqYG9fYPqr2tSVWVVWrv7vO+cd5tDA6Z7XVSbW0t6ukb
0IR53zu6Nj9IvUFibtu+tffN/kELXBLs6fn5+d4PPfsXwP4lPPMD2Jx/7l+Qz8v+gLNNT0+rtLRU
7e3t3u0FDv1AwQbzfJkdxAtldhi6KHAYL4S5Q3k+zR2KLgn2M2M+zR3K82nuUHRJsKEf6AtfAAaG
RtVak6v3l7+jgrIaM4zKdSJynyJiEzXU1ylfbqEZ7OcezkOjE+qoy9PvHntCBfVdGuhuUWF+kRnO
5Sovq1JZcYFKKuvN5btVkJOlsppGjQz1KTM9RUWVdeaHzLCKC3JU19xhftgPBrmNAU1PDGn7urUq
qWvSK0//p2LzyhS2e4uikzLV0NSkMnP50qpGswQMqNiXrPfXrVN95ykV56SpsKJWHZ3t6u7pVlur
/21TY718vlx19dqnFfyPINhBY4/O7UC2nZ6aUHN9jQpLytRvvkeBnT49885ZnVZHR7v33nB/j/oG
R7z3P53/wl2dnYqJiVFRUZH3yEOn+djeh7mDf1awwTxfAofxQgg2GF0RbCjPp2CDeb4EG4yuCDaU
51OwwTxfgg1GVwQb+oG+lAWgvTZfr7/2srLyKhUZeUCHDh/Q4SNh2rhquZ575lmFxWZ7z0t9ejj3
m4E5qeiDe/XRRx/pSFya4g9u0aZtIVr93muKTS1Q7KGP9cwrbyl0/8da9vZSbdy8XaH79mn3x9v1
5spVijgQqr+89CctWbpSHYPjGhr49G1MTE0rJfqgtu3crfeWvqYdO3cqZO9BRcUdU3joTi1/+y2Z
r1Ohe/cr5JMdemPFch0KP6ydu3brE3PeNR9tMh+HaOnSZTp+/KiWLnlda7fsU1e/GS4zTyHYQWMX
APtNnm1koNcsGM3q7u72Pt/a0qy6ulrV1NarzywmXW0tqqis0qnhMXPu06qtqVRXX58a66rV0d2n
jpZGVZvzdnS0mcs1qrenSzWVFTrZbpaQ5mY9+OCDWr9+vcrLy9XV1eX9wJ87+GcFG8zzJXAYL4S5
Q9ElwYbyfAo2mOdLsMHoimBDeT4FG8zzJdhgdMXcgT/Xl7AAjKmlMlsfrF6pru4BM0S3aH/4fn28
eZVe/OMSHYk+rrySKu+H0dzBPDA4rKGeRi154Rlt3bZVL7+21AznzcorLlFoyDaVlZZoy5q1eu2v
S7Vi3WplZGfr8NZ1evb5papuaDFDfLPe+PMSrdy0W/EJieoxA3kgyAIwNDKugZPleuyRXynRV6gl
Tz+u8IRCxR7fp493blRKRoYiP96sZ597S5X1zfrkk4+09I1lyqhsUeaxCLMU7NKrf3lVHy57S28s
W6fivHQtf2+5SurbNTbiH7p20Njn4wMbGzqllrYOc0Tfq/IKM9Tb29XU2mFm/YSqykpUXF6pFrMU
nDLfQ5t/8Jvh3lDvKSuvUGtrqxobGtTbN6CGmgrVNTarvaNbRSVlSktNVWZmpmd2yZg7+GcFG8zz
JXAYL4S5Q9ElwYbyfAo2mOdLsMHoimBDeT4FG8zzJdhgdEWwoR/oC18A+geG1N5YqQQzjCYnp5SZ
nqD0jBTlFhYqJSpc23btU8PJLu+V6J8ezKNqKM/V0ZgkbwCmxh/Tnv0HvOfrM9MS1Vhbo93bt2h7
SJjiEuPMQCxTVlKy4uNOaP3Kd/X8X99TcUmptm/eoITMQu8H3tzbsAYHh1RXVaRXXnhesek+vf+X
lxQWnay87ESlmdspKS1VdnKqkpMStHn9am3cG66q8lJt3fChQg4eV09Xq/btDVV2TrqOHU9QsS9J
m7Z/rMa2Hu+1B3bA2tvOzc31Horv6enxtDTUKr+4TD0dzcrKzPCGfV5msny5ed5wL8j1eU8RtHd0
mfOboV5UZJaYfvN1V3pH9Xk52SoprzJH/WWqrmtSTXmxss1lG5pOKisrSydOnFBCQoISExO9BcDe
h7mDf1awwTxfgg3l+TQ7DF0UbCjPp2CDeb4EG4yuCDaU51OwwTxfgg1GVwQb+oG++BcBnurzXpRn
/7L39fWZHzojZ3742L+E/ufI+/3LwpzBbF8caF94Z1/0Zz9vX/A3bv7w2qExYpYD+8PbXof9A2X/
K0f2Y/vCvJaaQu3avlnRST6NT0/PfC7Y8/9+9nKJZnGIjYvT0SOHFXMiVlGRx8xR9SnvD8yIva/m
difM7dj7MGlO8/9FMj9IzFv7tUxOTXqnTUyMe9c3NjYu+19dsi9CtAPWntbY2OgNbvuc/KyysnLv
9QytzbXmc2VqqMhXQWGRqqqrVV5aoty8fHO6/7yzl7Xnq6yqUllpsfLyC7zTy83pVVWVys/LNUtP
mWpqalRXV6fa2lpzetWZIR849AMFDuT5Zr83C2n2z6OL5g7k+RY4kOdb4EB0zdyBPN/mDuX5FGww
uiLY0A/0uRaAzlMj3ov57KC/UHawB77/KTND2r4/O7Bn3w887dOn218d9N+fwOs4F/uH0r5AL5Ad
TvZywQbmxbLXE+wHnl1O7G8BzP7a4cio/zcEvM97f1Fn3g9m5i9z4Gn267DXGXiaNXsf5t6vWXOH
8nwKNpTnU7DB6Iq5A3m+zf1zOp8CB6JrAofxQgg2mOdLsMHoimBDP5CtsWv44heAUrMANHeYI/yh
8x9pns9ZQ8Ec+U+Pn5bGpdOXQBOf/nhydPKs25gr2HBwRbDh4Ipgg8kVwQajK4INRlcEG8rzKdhg
xpcv2FIwyy4AXZ0dqmjqUVX72EU+AtA0oLaeQU1N+v/PtVcW7EYuhL2svY6ikwXKacxWbpPvc8tu
yFR1Z+Xnul8AAHwd2Ue929palV/ZYmblxMUvAH1DE+pob/OO5j/PoNW0NDgyqLu33KarVnxb163+
nvF9Lfrwe7pqpbHC//ZK8/Zq8/Y6c7r/POd2xfv/U88fetp7iCPYbQIA4Cp70D09PaX6DvsagNGL
XwB6Bse9hxDsw+n2CoM99HMhTk+e1sDwgO7fcaeuX3OlfrhukRZ/tEi3rr9Ov951ox7acYPu336D
HjRv79lyvX6w6lrdvHaRbjHns+cN5uoV39GLR5/zFoBgtwkAgMvsi9jr2gcvbQHoHhhTZ3ub92Iz
u00Ee+7pQkxNTKl/qF8P7LhLN6y5ygz26/TDj67zloCNSbdqeOA+jfTfp8Hee9Xdc69Wxd2qa1Yt
MsvCIv3InNeef64frLxCL80sAMFuEwAAt42aBcD+54AvZQHoH1VnR7u3ANhtIvgNfLbZBeD+gAXA
WmyWgGs/XKQ3In+kQbMAaPIBM83vlyYe0PGiO/STDf5HAwIH/yxvAThiFoDTLAAAAHzaF7AA2NcA
fBkLwKxFqxfpib03q671HmnKLAHDv/De1pqPH99zs76/4lpvWQi8DAsAAADnYxaAtktdAOxTAB3+
pwC+jAXghjWLvOf+a5vvUXX7zxXu+4kOGPYRAI3aRwLu19jgL/RB7I+9pwTs+WefEmABAADgfD7n
AmB/C+CLXgD8z/9fp2vNkf9DO2/U6SFzxK8HdaLoDn3z3R9ouRn4Y/Y0+3SAtwg8oKjCO3T7zFMC
dglgAQAA4Hw+zwLwJT0FYBcAyz70/6BZAEZP3SdNP6D44ju8h/u/98G1enL/zWpq/7k0YhaAmacE
qk/eo0dDbvJeN3ANCwAAAOdxmS0AV674vjYl36ZyM8xL6u/Su9E/Um+XGfRmATic9xPv4/KWe5RV
eaea7WsChs0CYB8NsCYe0KBZFn6z6yb92/LvsAAAAHBOl9lTAP/+wfcVY470pYe8V/3bZaCz078A
hOf8RCFZt5/5nPfw/+zwtwaN0w96l/nmu99mAQAA4JwusxcBftcsAIfzf6rT5mjePve/LvFWdc0s
AAfNArAt7TZv+I/13+d/aiBwAZh5TcAfwhbrO8t4BAAAgHO7zJ4CuG71VfrFthv069036X/tvFGP
hNyk4T7/awDsiwDtvw54r/n8b/fcrJKGu//2KIBZCnp779OLET/0XgPAiwABADify/BFgDeuXWQW
gUW6cuW15rS/vQgw1iwA/7j0B95z/OVNZvjbI/6ZFwAW19/tLQz2MvwaIAAAn+Uyew1A4L8DYP+p
X/trgN4CYIZ8dOEdeu3oLRq3z/WP+x/ut/8WwMHcn3q/NXCNOfLn3wEAAOBCXIaPAARdAMywH7FP
Bdhf+7ODf/wBjZpFwP5WwNXmqP/GOf9dABYAAADO5zJfAOzD+vYFf2d+33/E/3x/U9vP9du9wf8Z
YIsFAACA8/mcTwF82f8U8L1bb/Af+Zsjfu/If+oBJZX/TD/bdL2uXmX/k8CfHv4WCwAAAOdzGb8G
4IfG9asXKSTzdo2N3O+9yn9j8m3eCwStc/2ngC0WAAAAzucyfgrAsg/v37R2kX75yY3eowH2P/pz
c5CH/OdiAQAA4HwukwXg1NAp3b5xsa5Y9k+6asW3z/J944pl39K/Lf+WrpzzuXP55jv/oD+E/54F
AACAoC6DpwAmxic0PDKsYyVHdKBgvw4Vhym8INSv8DzM5w8WhSmi6MCZ80eYy0YUHtC+vBCl1iRr
cmIy6G0CAOC2L/RFgKMaM8PcNj05rtHRYDcY3PjYuHe5L63pSXN/zP0LctsAALjnC3wKYHxiShMD
7Vq/Zo2q2vo1NTU5M31Np097b6anpry3gU1P+ZcGW0nsLv3y96/OfDStUXMnp8177bWFWvKn/6dn
n3lO2RWt/k+bDqxfqrfWhc58JL3+h0e1I8pnbu60elsqzWWe13PPPafU4saZc5i7Eni/gnTa3J+L
WV4AAPjq+QIXADP/NdldqauvuEJxZT1mlE5o37ZVWrr0A1XW1yssZI9q6mt1YH+YkuKi9cGy9/X6
m++quW9UxSlH9eJLr2jdsld11ZU36c2l7ymjpMEsEdMa6qjUj6/5rpas3KGY45GqrKtTyOZVeufD
jVq97C1tDotXe02e3nj1FV11xb9q7cEMb5BXpezXv357kQ7GxKilrUth21brhReXqLGrX7HhO/Tm
O8sUHhGudatXmPv4rvbs2WXuz1uqMcvL5CRPHQAAvs6+wNcAeAtAT7V+fNNNymoa8xaAbctf0j/+
/X/V7//0qh686xdKy07XA/c+pD89/ZgW3/FLPXznLXrqhT/rZz++XSHHonVo83u64ca79ORv7tW9
v33DG+RFxzboWzffp47WGv3m4Ye0c+8BLb7iv+nVzYf07gv/W0+9/LYef+hnWrZ+h35241VadyjL
u1xjbqT+5X98U0/84c/a9MHr+tFdD2vVm8/qkade0K9+eq0efm65wjYs0XcX3aonHv6pFt//iB6+
a7FeXnfIu3zwbxgAAF8Hn/s1AO1nLQBTvdW6+tv/rE2H0uWL2a1FV1+j2394vX75u2f10F136u33
3tLim+7UC0//p55+c6s2vP6U7v/lo7pl8a2Kz8lX2Noluu0/XtCxne/p5vue9AZxb12WvvvP/6Jt
YZF6/J5b9H9f+qvuvHWxSgekDa88okf+8LLuv22xth44qlv+/Z+0fH+ad7nyxD26+rq71TcwpONb
/6qb7n1cIWtf032//q3+4+7b9Ul6s7JD39Hdj76i/etf0W9eXql1f31Kv1+63bt88G8YAABfB6Oq
vaQFoHlAXf2jamttUV9fn3dlo+MTmhzq0rt/eUa/+93vtXXXHr3/zht69bXXdSAqRZH71uuZZ5/V
+6u2KiJ0l0IOJSjmwE5FxPkUs3+THn3sdwrZ/Yk27TyonKRj+nDLfu+hePvqgaKUQ3ri0cf1f576
o3yFxVq7crlqe0aVEL5dIZGpyosP15NPPq0/vviykgpqvcu1lGVp+aotGjHXMDl8Sh8ufUmP/fZJ
ldaf1K4NK5VcelLV2VFatzNM6bFh2h4WrdjDu7UvOsO7/MjICAAAXzv2RfGDg2b4N/eosn3s4heA
jr5hDZkrGB4e9gwNDWloeMQ7evbyv+7P3+mzX/znvSbQnDZl3p6e/tvn/Bc5rYkp+9I/+a/TCLyq
2RcXjo0Me5eXufx0wBmmJsa8y4yO+883bN4fHrVPSfibmvS/6HByfFRjE/Z2zILgvyMz1zfpXX72
6wIA4OvELgF9PT0qqetQVcclLABtPYPeMPV+AwAAAHwlTE1Nqae7S3kVzarunLi4BcA+Z5CcmSdf
dpYKCwtVUFAAAAC+Auzczs4y87u61SwA4xe3ANR2T2nfwWNa+tabWrNmjVavXg0AAL4C3n//fcVE
H1db/5Qq2kYudgGY1P6ISG3dskkREREKDw8HAABfAXv37lVOjk8n+yYufQHYvGmDwsLCFBoaCgAA
vgJ2796t7OwsFgAAAFzCAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAA
ABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAA
cBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADA
QSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAH
sQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzE
AgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBAL
AAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwA
AAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAA
AOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAA
gINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAA
DmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4
iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAg
FgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINY
AAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIB
AADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUA
AAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAA
ABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAA
cBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADA
QSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAH
sQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzE
AgAAgINYAAAAcBALAAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBAL
AAAADmIBAADAQSwAAAA4iAUAAAAHsQAAAOAgFgAAABzEAgAAgINYAAAAcBALAAAADmIBAADAQSwA
AAA4iAUAAAAHsQAAAOAgFgAAABz0uRaAup4phRw4rLVrPtTevXu8KwMAAJe/7du3KyMj/dIWgKqO
McWnZCkpMV4+X7a3SQAAgMtfRnq6amuq1dIzdvELQFlzv+o7R9R6atJsEOPeFgEAAC5/rUazGf6V
JwdU1T56YQvAxi07Q7vH5V2g0rCbAwAA+Oqxs7y2e0qVzb2fvQCsWLEmsrXP/3ABAAD4aqts7lNJ
VfNnLwBERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
REREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ0j33jG/8f
bAQMOaaQxFAAAAAASUVORK5CYII=
Segoe UI, 10.2pt, style=Bold
iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAOzSURBVGhD7ZrrSxRRFMD7t3zkc9d95K6uPaAi
pKRPfYiiPhRIQVEIfQlCzZaUypQsLdMsQ/JVkb3M0izSNF8FoZk9DKrTnK1ZtvXMzL1378wO4374
fXL2XH/MuXPmnDtrcivTYDWREnY6KWGnkxJmwXM6HWr73XD5oYebsoa1ZEyrEL7Dm89lwqvJAMCX
Ei5+LIbgxO18MqYVJJTSeKfbnnpJMSM6h3zgq0kn45qJlD1c0ZkfuXOUmB4TM0HYftHaFJf20NrZ
mAWzc0WkmB7Ln0JQcSuPjGkG0oSRYDgD7o36STEjOp75wKtsESquTKQKI3kK4T43/F6ixfQYnw5C
ab25KS5dWGVfSw4sfCwmxfT4rqT4sZvmpbhpwsimukwYmeAvXQg+/bEKUHETQYrwqTsuqLtbQFJ/
vwBaHnlIKSPeTAVg2wW5KS5F+P0H/aczXnO0Iy/yRKb+rsc35TdHbshLccuEEay5U7NB8hojWp94
oUBCilsqjKw7kw69I2Kl6/W7AGw9n/lfPF4sF0awdFV2u+CXQOn6uhCCw+25K2KykhRhld1XsmFe
oHQhzcqD0F3Nn+JJFUbW12bA0Hgh+TsjRpWSt0Xp2qi4WiRdGHFVpcGlAbHStTRfDOVt7CluC2GV
Q8rexDJExTAChwvuajpuLJrCmGrUi0Qspf/ee1mFsSui4sTS9cJHxmABGxejfa0pjO0eFTSW8ut/
U4lVeHBMbK/ygHdaXY/CccJY6krOZkTXjMdxwohenXakcHWPK7pmPI4UPtmlPRV1pHBZQ1Z0zXgc
J9w97I+uR+EoYYyP3Zi6HoWmMA+swkbg1LJ9UGywf+2xl6mZsI0wjnLGpvjnX8uLITjOMde2hTDW
TZF36Jm5It0HFEVShTEFRQd8/S/9EAhrv1FpkTRh7GOxn6Wu1wMH/DW97sjUhIprRFKED7bmwmel
j6Wu1QMH+3ubs1fE48FSYWz0Gx+IpTAO9HGwH7uuCJYJb1D+2eeCo5wWxpLDgiXC+6+KnTPh4F72
OZMlwiInidNzQVO+B7FEmBcsOYVhOSkcj62EEy05LNhGGPf4ngRLDgu2EB5+WwgbJZQcFqQI49c4
lAgLokcmokgRFjkqwZKDZ8ZUPDORIszbAOAZ8Q6Lv89SkSK8q8l4OqLSN+I3nEqYiRRhBE/oKUGV
n0rJqepxmVpyWJAmnK80Bk0DnhWH3CiKZz68jbpZSBNWwUO4A605kQEfHniLNOlmIl3Y7qSEnU5K
2OmsMuE0+AP+4vHGG0OQCQAAAABJRU5ErkJggg==
TopCenter
None
Magenta
toolstripbutton1
157, 87
Launch Grid Form
ImageAboveText
toolstripbutton1_Click
windowsToolStripMenuItem
82, 24
&Windows
-
-
-
toolstripmenuitem1
44, 24
File
openToolStripMenuItem
152, 24
&Open
exitToolStripMenuItem
152, 24
&Exit
exitToolStripMenuItem_Click
toolstripseparator1
149, 6
-
-
toolstripmenuitem2
74, 24
Arrange
tileToolStripMenuItem
152, 24
Tile
tileToolStripMenuItem_Click
cascadeToolStripMenuItem
152, 24
Cascade
cascadeToolStripMenuItem_Click
#----------------------------------------------
#region Application Functions
#----------------------------------------------
#endregion Application Functions
#----------------------------------------------
# Generated Form Function
#----------------------------------------------
function Show-Demo-DGVExport3_psf {
#----------------------------------------------
#region Import the Assemblies
#----------------------------------------------
[void][reflection.assembly]::Load('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
[void][reflection.assembly]::Load('System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
[void][reflection.assembly]::Load('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
#endregion Import Assemblies
#----------------------------------------------
#region Generated Form Objects
#----------------------------------------------
[System.Windows.Forms.Application]::EnableVisualStyles()
$formMDIChild = New-Object 'System.Windows.Forms.Form'
$buttonLoadData = New-Object 'System.Windows.Forms.Button'
$buttonExportCsv = New-Object 'System.Windows.Forms.Button'
$datagridview1 = New-Object 'System.Windows.Forms.DataGridView'
$buttonOK = New-Object 'System.Windows.Forms.Button'
$savefiledialog1 = New-Object 'System.Windows.Forms.SaveFileDialog'
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
#endregion Generated Form Objects
#----------------------------------------------
# User Generated Script
#----------------------------------------------
$FormEvent_Load = {
}
$buttonExportCsv_Click = {
$savefiledialog1 = New-Object System.Windows.Forms.SaveFileDialog
$savefiledialog1.AddExtension = 'csv'
if ('Ok' -eq $savefiledialog1.ShowDialog()) {
$FilePath = Select-Folder -Description 'Select Billing Invoice ROOT folder' -RootFolder Desktop
$datagridview1.SelectedRows |
Select-Object -ExpandProperty DataBoundItem |
Export-csv "$FilePath\Results.csv" -NoTypeInformation
}
}
$buttonLoadData_Click = {
$data = Get-ChildItem c:\windows -File | Select-Object name, length, fullname
$this.parent.Controls['datagridview1'].DataSource = ConvertTo-DataTable $data
}
# --End User Generated Script--
#----------------------------------------------
#region Generated Events
#----------------------------------------------
$Form_StateCorrection_Load =
{
#Correct the initial state of the form to prevent the .Net maximized form issue
#$form1.WindowState = $InitialFormWindowState
}
$Form_Cleanup_FormClosed =
{
#Remove all event handlers from the controls
try {
$buttonLoadData.remove_Click($buttonLoadData_Click)
$buttonExportCsv.remove_Click($buttonExportCsv_Click)
$datagridview1.remove_RowPostPaint($datagridview1_RowPostPaint)
$formLaunchGridForm.remove_Load($FormEvent_Load)
$formLaunchGridForm.remove_Load($Form_StateCorrection_Load)
$formLaunchGridForm.remove_FormClosed($Form_Cleanup_FormClosed)
} catch { Out-Null <# Prevent PSScriptAnalyzer warning #> }
}
#endregion Generated Events
#----------------------------------------------
#region Generated Form Code
#----------------------------------------------
$formMDIChild.SuspendLayout()
$datagridview1.BeginInit()
#
# form1
#
$formMDIChild.Controls.Add($buttonLoadData)
$formMDIChild.Controls.Add($buttonExportCsv)
$formMDIChild.Controls.Add($datagridview1)
$formMDIChild.Controls.Add($buttonOK)
$formMDIChild.AcceptButton = $buttonOK
$formMDIChild.AutoScaleDimensions = '8, 17'
$formMDIChild.AutoScaleMode = 'Font'
$formMDIChild.ClientSize = '973, 551'
$formMDIChild.Name = 'formMDIChild'
$formMDIChild.MinimizeBox = $true
$formMDIChild.MaximizeBox = $true
$formMDIChild.ControlBox = $true
$formMDIChild.KeyPreview = $True
$formMDIChild.Margin = '5, 5, 5, 5'
$formMDIChild.MaximizeBox = $False
$formMDIChild.MinimizeBox = $False
$formMDIChild.AutoSize = $false
$formMDIChild.Name = 'form1'
$formMDIChild.Text = 'Form'
$formMDIChild.add_Load($FormEvent_Load)
#
# buttonLoadData
#
$buttonLoadData.Location = '857, 54'
$buttonLoadData.Margin = '4, 4, 4, 4'
$buttonLoadData.Name = 'buttonLoadData'
$buttonLoadData.Size = '100, 30'
$buttonLoadData.TabIndex = 3
$buttonLoadData.Text = 'Load Data'
$buttonLoadData.UseCompatibleTextRendering = $True
$buttonLoadData.UseVisualStyleBackColor = $True
$buttonLoadData.add_Click($buttonLoadData_Click)
#
# buttonExportCsv
#
$buttonExportCsv.Location = '857, 16'
$buttonExportCsv.Margin = '4, 4, 4, 4'
$buttonExportCsv.Name = 'buttonExportCsv'
$buttonExportCsv.Size = '100, 30'
$buttonExportCsv.TabIndex = 2
$buttonExportCsv.Text = 'Export Csv'
$buttonExportCsv.UseCompatibleTextRendering = $True
$buttonExportCsv.UseVisualStyleBackColor = $True
$buttonExportCsv.add_Click($buttonExportCsv_Click)
#
# datagridview1
#
$datagridview1.AutoSizeColumnsMode = 'DisplayedCells'
$datagridview1.ColumnHeadersHeightSizeMode = 'AutoSize'
$datagridview1.Location = '28, 16'
$datagridview1.Margin = '4, 4, 4, 4'
$datagridview1.Name = 'datagridview1'
$System_Windows_Forms_DataGridViewCellStyle_1 = New-Object 'System.Windows.Forms.DataGridViewCellStyle'
$System_Windows_Forms_DataGridViewCellStyle_1.Alignment = 'MiddleRight'
$System_Windows_Forms_DataGridViewCellStyle_1.BackColor = 'Control'
$System_Windows_Forms_DataGridViewCellStyle_1.Font = 'Microsoft Sans Serif, 8.25pt'
$System_Windows_Forms_DataGridViewCellStyle_1.ForeColor = 'WindowText'
$System_Windows_Forms_DataGridViewCellStyle_1.Format = 'N0'
$System_Windows_Forms_DataGridViewCellStyle_1.NullValue = '0'
$System_Windows_Forms_DataGridViewCellStyle_1.SelectionBackColor = 'LightSteelBlue'
$System_Windows_Forms_DataGridViewCellStyle_1.SelectionForeColor = 'HighlightText'
$System_Windows_Forms_DataGridViewCellStyle_1.WrapMode = 'False'
$datagridview1.RowHeadersDefaultCellStyle = $System_Windows_Forms_DataGridViewCellStyle_1
$datagridview1.RowHeadersWidthSizeMode = 'AutoSizeToAllHeaders'
$datagridview1.RowTemplate.Height = 24
$datagridview1.SelectionMode = 'FullRowSelect'
$datagridview1.ShowCellToolTips = $False
$datagridview1.Size = '801, 437'
$datagridview1.TabIndex = 1
#
# buttonOK
#
$buttonOK.Anchor = 'Bottom, Right'
$buttonOK.DialogResult = 'OK'
$buttonOK.Location = '857, 505'
$buttonOK.Margin = '4, 4, 4, 4'
$buttonOK.Name = 'buttonOK'
$buttonOK.Size = '100, 30'
$buttonOK.TabIndex = 0
$buttonOK.Text = 'OK'
$buttonOK.UseCompatibleTextRendering = $True
$buttonOK.UseVisualStyleBackColor = $True
$buttonOK.add_click({$this.Parent.Close()})
#
# savefiledialog1
#
$savefiledialog1.DefaultExt = 'xml'
$savefiledialog1.Filter = 'CSV Files|*.csv'
$datagridview1.EndInit()
$formMDIChild.ResumeLayout()
#endregion Generated Form Code
#----------------------------------------------
#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$formMDIChild.add_Load($Form_StateCorrection_Load)
#Clean up the control events
$formMDIChild.add_FormClosed($Form_Cleanup_FormClosed)
#Show the Form
$formMDIChild |Add-Member -MemberType ScriptMethod -Name LoadGrid -Value{
$data = Get-ChildItem c:\windows -File | Select-Object name, length, fullname
#$data = Import-CSv
$ds = D:\scripts\ConvertTo-DataTable.ps1 $data
Write-Host $formLaunchGridForm.Name
$datagridview1.DataSource = $ds
}
return $formMDIChild
} #End Function
$formLaunchGridForm_Load={
$menustrip1.MdiWindowListItem = $null
}
$childClosed = {
# "this" is the child
Write-Host $this.Name
# we can also reference the main form
Write-Host $formLaunchGridForm.Text
}
$toolstripbutton1_Click={
$childForm = Show-Demo-DGVExport3_psf
$childForm.MdiParent = $formLaunchGridForm
$childForm.Text = 'Data Grid Child ' + $formLaunchGridForm.MdiChildren.Count
$childForm.Name = $childForm.Text -replace ' '
$childForm.add_Closed($childClosed)
$childForm.Show()
}
$tileToolStripMenuItem_Click = {
$formLaunchGridForm.LayoutMdi([System.Windows.Forms.MdiLayout]::TileVertical);
}
$cascadeToolStripMenuItem_Click = {
$formLaunchGridForm.LayoutMdi([System.Windows.Forms.MdiLayout]::Cascade);
}
$exitToolStripMenuItem_Click = {
$formLaunchGridForm.Close()
}
$formLaunchGridForm_MdiChildActivate = {
Write-Host Activated $this.ActiveMdiChild.Name
}
#region Control Helper Functions
function ConvertTo-DataTable {
<#
.SYNOPSIS
Converts objects into a DataTable.
.DESCRIPTION
Converts objects into a DataTable, which are used for DataBinding.
.PARAMETER InputObject
The input to convert into a DataTable.
.PARAMETER Table
The DataTable you wish to load the input into.
.PARAMETER RetainColumns
This switch tells the function to keep the DataTable's existing columns.
.PARAMETER FilterWMIProperties
This switch removes WMI properties that start with an underline.
.EXAMPLE
$DataTable = ConvertTo-DataTable -InputObject (Get-Process)
#>
[OutputType([System.Data.DataTable])]
param (
[ValidateNotNull()]
$InputObject,
[ValidateNotNull()]
[System.Data.DataTable]$Table,
[switch]$RetainColumns,
[switch]$FilterWMIProperties)
if ($null -eq $Table) {
$Table = New-Object System.Data.DataTable
}
if ($InputObject -is [System.Data.DataTable]) {
$Table = $InputObject
} elseif ($InputObject -is [System.Data.DataSet] -and $InputObject.Tables.Count -gt 0) {
$Table = $InputObject.Tables[0]
} else {
if (-not $RetainColumns -or $Table.Columns.Count -eq 0) {
#Clear out the Table Contents
$Table.Clear()
if ($null -eq $InputObject) { return } #Empty Data
$object = $null
#find the first non null value
foreach ($item in $InputObject) {
if ($null -ne $item) {
$object = $item
break
}
}
if ($null -eq $object) { return } #All null then empty
#Get all the properties in order to create the columns
foreach ($prop in $object.PSObject.Get_Properties()) {
if (-not $FilterWMIProperties -or -not $prop.Name.StartsWith('__')) #filter out WMI properties
{
#Get the type from the Definition string
$type = $null
if ($null -ne $prop.Value) {
try { $type = $prop.Value.GetType() } catch { Out-Null }
}
if ($null -ne $type) # -and [System.Type]::GetTypeCode($type) -ne 'Object')
{
[void]$table.Columns.Add($prop.Name, $type)
} else #Type info not found
{
[void]$table.Columns.Add($prop.Name)
}
}
}
if ($object -is [System.Data.DataRow]) {
foreach ($item in $InputObject) {
$Table.Rows.Add($item)
}
return @( ,$Table)
}
} else {
$Table.Rows.Clear()
}
foreach ($item in $InputObject) {
$row = $table.NewRow()
if ($item) {
foreach ($prop in $item.PSObject.Get_Properties()) {
if ($table.Columns.Contains($prop.Name)) {
$row.Item($prop.Name) = $prop.Value
}
}
}
[void]$table.Rows.Add($row)
}
}
return @( ,$Table)
}
#endregion
]]>
256
1
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089