Tk Source Code

Check-in [c4cf2ab6]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Merging with TOT as of 06/09/2002.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | macosx-8-4-branch
Files: files | file ages | folders
SHA1: c4cf2ab6c0a53b76b77b767697f2e1af0fb12648
User & Date: wolfsuit 2002-06-10 05:38:22.000
Context
2002-06-12
03:37
Added help & toolbar style windows to the unsupported MacWindowStyle command. check-in: 8cbba4f3 user: wolfsuit tags: macosx-8-4-branch
2002-06-10
05:38
Merging with TOT as of 06/09/2002. check-in: c4cf2ab6 user: wolfsuit tags: macosx-8-4-branch
05:07
Adding missing files from TOT merge. check-in: 3150ac3a user: wolfsuit tags: macosx-8-4-branch
Changes
Unified Diff Ignore Whitespace Patch
Changes to ChangeLog.





























































































































































































































































































































































































































































































































































































1
2
3
4
5
6
7





























































































































































































































































































































































































































































































































































































2002-02-05  Jim Ingham <[email protected]>

	* macosx/tkMacOSXMenu.c: Fix 513222.  We were going to
	invalidate the menu & delete the selection without checking
	whether the menu had already been deleted.
	* mac/tkMacMenu.c: ditto.
	
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
2002-06-06  Donal K. Fellows  <[email protected]>

	* win/tkWinCursor.c (TkGetCursorByName): Fixed so that the reading
	of cursors from a file with a cursor spec was built using [list]
	works when the file has a space in instead of requiring fiddling
	with backslashes.

2002-06-06  Anton Kovalenko <[email protected]>

	* library/msgbox.tcl (MessageBox): Add -default normal
	when creating non-default buttons for message box.
	They already get -default normal when they're 
	unfocused, and dialog window size used to change suddenly
	in such cases.

2002-06-05  Anton Kovalenko <[email protected]>

	* unix/tkUnixFont.c (Tk_DrawChars): Don't assume that
	one char is always one byte, and that required 
	subfont for the last character in any string is 
	the same as for the previous character 
	[Bug #559435] [Patch #559437]

2002-05-27  Mo DeJong  <[email protected]>

	* changes: Document [wm transient .t .t] error.
	* tests/wm.test: Check that setting a window
	as a transient of itself raises an error. Check
	that passing a non-toplevel window to the wm
	transient command uses the enclosing toplevel.
	* unix/tkUnixWm.c (Tk_WmCmd): Raise an error
	if the user tries to make a toplevel a
	transient of itself.
	* win/tkWinWm.c (Tk_WmCmd): Raise an error
	if the user tries to make a toplevel a
	transient of itself. Test for other error
	before checking for the transient self error.

2002-05-27  Mo DeJong  <[email protected]>

	* unix/tkUnixWm.c (WmInfo, TkWmCleanup, TkWmNewWindow,
	TkWmMapWindow, TkWmDeadWindow, Tk_WmCmd): Replace
	WmInfo's master and masterWindowName members with
	a masterPtr member. This implementation is much
	simpler and mirrors the Win32 implementation. This
	change makes it easy to check the flags of the
	master window. No user visible changes.

2002-05-27  Mo DeJong  <[email protected]>

	* generic/tkInt.decls: Add unix decl for TkpWmSetState.
	* generic/tkIntPlatDecls.h: Regen.
	* generic/tkStubInit.c: Regen.
	* tests/wm.test: Test state changes between iconic,
	normal, and withdrawn both before and after initial
	mapping.
	* unix/tkUnixWm.c (Tk_WmCmd, TkpWmSetState): Move
	state change code into TkpWmSetState to more closely
	match the Win32 implementation. No user visible changes.

2002-05-27  Mo DeJong  <[email protected]>

	* tests/embed.test: Added cross platform embed tests.
	Check that window passed to -use has the -container
	option set.
	* tests/wm.test: Remove useless catch call. Deiconify
	. just in case, stackorder tests will not pass unless
	it is in the normal state. Add -container flag to
	embedded stackorder test.
	* unix/tkUnixEmbed.c (TkpUseWindow):
	* win/tkWinEmbed.c (TkpUseWindow): Lookup Tk window
	based on the id passed in as the value for -use.
	Generate an error if the Tk window did not have
	the -container option set.

2002-05-26  Peter Spjuth <[email protected]>

	* generic/tkButton.c (ConfigureButton): When creating
	a radiobutton with -value "" it was not drawn properly
	if the -variable was created by the radiobutton.
	[Bug #548765]

2002-05-26  Peter Spjuth <[email protected]>

	* generic/tkCanvText.c (ComputeTextBbox): Negative
	coordinates were rounded badly causing a 1 pixel
	displacement. [Bug #556526]
	
2002-05-24  Mo DeJong  <[email protected]>

	* mac/tkMacWm.c (Tk_WmCmd):
	* tests/unixWm.test: Move wm transient checks over
	to wm.test so they will be run on all systems.
	* tests/wm.test: Add tests to check for error when
	an iconwindow is passed to the wm transient command.
	* unix/tkUnixWm.c (Tk_WmCmd):
	* win/tkWinWm.c (Tk_WmCmd): Raise an error if one
	of the windows passed to the wm transient command
	is an iconwindow for another toplevel.

2002-05-23  Mo DeJong  <[email protected]>

	* mac/tkMacWm.c (TkWmStackorderToplevelWrapperMap):
	* tests/wm.test: Add embedded Window test case for
	the stackorder command.
	* unix/tkUnixWm.c (TkWmStackorderToplevelWrapperMap):
	* win/tkWinWm.c (TkWmStackorderToplevelWrapperMap):
	Ignore embedded windows during wm stackorder command.

2002-05-21  Mo DeJong  <[email protected]>

	* unix/configure: Regen.
	* unix/configure.in: Invoke SC_ENABLE_SHARED before
	calling SC_CONFIG_CFLAGS so that the SHARED_BUILD
	variable can be checked inside SC_CONFIG_CFLAGS.
	* unix/tcl.m4: Update from Tcl.

2002-05-20  Don Porter  <[email protected]>

	* library/tk.tcl:  A little namespace cleanup on Daniel Steffen's
	latest revisions to avoid defining new global commands.

2002-05-20  Daniel Steffen  <[email protected]>

	* mac/tkMacInit.c:
	* mac/tkMacTclCode.r: include msgcat package in resources
	as bgerror depends on it. Restores ability of mac static
	build to run standalone (except for encoding file issues).

	* mac/tkMacInit.c:
	* library/console.tcl:
	* library/tk.tcl: fix tk.tcl not sourcing library files
	that define bindings at startup on mac. (independent of
	tk library files being in resources or on auto_path)

2002-05-08  Don Porter  <[email protected]>

	* library/bgerror.tcl:
	* library/tclIndex:  Cleaned up namespace usage of the bgerror
	dialog.  Completes soft dependence on msgcat.  [FR 539309]

2002-05-07  David Gravereaux  <[email protected]>
	* win/makefile.vc: Problem with TCLDIR macro not accepting
	forward slash path seperators resolved.  Added the same logic
	to INSTALLDIR, too. [Bug #553208]

2002-04-26  Jeff Hobbs  <[email protected]>

	* unix/configure:
	* unix/tcl.m4: change HP-11 SHLIB_LD_LIBS from "" to ${LIBS} so
	that the .sl knows its dependent libs.

2002-04-24  Daniel Steffen  <[email protected]>

	* mac/tkMacTclCode.r:
	* mac/tkMacResource.r: added check of
	TCLTK_NO_LIBRARY_TEXT_RESOURCES #define to allow disabling the
	inclusion of the tk library code in the resource fork of Tk
	executables and shared libraries.
	Moved tk library code inclusion to separate file like in tcl.
	Added 'panedwindow' resource.

2002-04-22  Jeff Hobbs  <[email protected]>

	* library/button.tcl (ButtonLeave): corrected the 3
	implementations of ButtonLeave to check for Priv(relief) existing
	before trying to use it. [Patch #541849]

	* generic/tkTextDisp.c (DisplayLineBackground): 
	* unix/tkUnix3d.c (Tk_3DHorizontalBevel): 
	* unix/tkUnixFont.c (Tk_DrawChars): applied fixes to not overrun
	the X window 16-bit size limit. [Patch #541999] (bonfield)

2002-04-22  Donal K. Fellows  <[email protected]>

	* generic/tkTextDisp.c (GetXView,GetYView): Comparison with
	previous values of scrollbar range are now done in a way that is
	sensitive to the bizarreness of floating-point on architectures
	where IEEE-FP is not used on the processor.  Also increased the
	size of the temporary buffer to take account of the fact that
	TCL_DOUBLE_SPACE is meant to only imply enough space to take a
	printed double and trailing '\0', and no more.  [Bug #223739]
	(FP_EQUAL_SCALE): New macro to help compare floating-point numbers
	for equality in a sane way, used in GetXView and GetYView.

2002-04-12  Jeff Hobbs  <[email protected]>

	* generic/tkWindow.c (TkCloseDisplay): Added to centralize where a
	display was closed.  This handles freeing memory associated with a
	display and closing it.
	(DeleteWindowsExitProc): actually close displays.  This would also
	ideally be done in Tk_DestroyWindow when the last window on the
	display has been closed, but that still has unresolved order of
	cleanup problems.
	(Tk_DestroyWindow): added TkFocusFree call.

	* generic/tkStubInit.c:
	* generic/tkIntPlatDecls.h:
	* generic/tkIntDecls.h:
	* generic/tkInt.decls: added TkFocusFree, TkClipCleanup and
	TkGCCleanup generic private procs, and TkWmCleanup, TkSendCleanup
	and TkFreeXId unix private procs.

	* generic/tkInt.h:
	* unix/tkUnixXId.c (TkFreeXId): frees XID resources.
	Made idCleanupScheduled a Tcl_TimerToken (was int) in TkDisplay
	structure to allow us to delete the timer scheduled for it.

	* unix/tkUnixWm.c (TkWmStackorderToplevel): ensure children
	structure is freed.
	(ConfigureEvent, ComputeReparentGeometry): Add extra wm tracing info
	(TkWmRestackToplevel): initialize changes to 0 to prevent UMR.
	Use WaitForConfigureNotify on all windows.  This part still
	requires fixing as it is the root of the 2 second raise delay on
	some window managers (those that use extra wrapper windows of
	their own).

	* unix/tkUnixSend.c (TkSendCleanup): free send-related resources

	* unix/tkUnixEvent.c (TkpCloseDisplay): call TkSendCleanup and
	TkWmCleanup.

	* unix/tkUnixSelect.c (SelRcvIncrProc): added missing Tcl_Release
	of interp

	* generic/tkGet.c (FreeUidThreadExitProc): free thread-specific
	resources on thread exit

	* generic/tkFocus.c (TkFocusFree): frees TkMainInfo data
	* generic/tkClipboard.c (TkClipCleanup): frees TkDisplay data
	* generic/tkGC.c (TkGCCleanup): frees TkDisplay data

	* unix/tkUnixFont.c (FontPkgCleanup): cleanup thread specific font
	resources on thread exit.

	* mac/tkMacXStubs.c (TkpOpenDisplay): memset the initial display
	structures to 0.

	* generic/tkOption.c (OptionThreadExitProc): freed tsd option
	stacks on thread exit.
	(Tk_GetOption): free mem used to get Tk_Uid

	* generic/tkMenu.c (ConfigureMenu): freed saved options in all
	error cases.

	* win/tkWinInt.h: declaration for TkWinGetUnicodeEncoding
	* win/tkWinDialog.c (GetFileNameW): use TkWinGetUnicodeEncoding
	* win/tkWinInit.c (TkpDisplayWarning): use TkWinGetUnicodeEncoding
	* win/tkWinFont.c: use TkWinGetUnicodeEncoding instead of static
	unicodeEncoding.

	* win/tkWinX.c (Tk_SetCaretPos): remove WM_IME_STARTCOMPOSITION
	and place the IME position within Tk_SetCaretPos.  Cache results in
	Tk_SetCaretPos to reduce unnecessary repositioning.  Also call
	DestroyCaret if we receive WM_KILLFOCUS.
	(TkpOpenDisplay): ZeroMemory the initial display structures.
	(TkWinGetUnicodeEncoding): Added so that Windows only needs to
	cache this value one, and then free it in TkWinXCleanup.
	(HandleIMEComposition): add support for Win98 and ATOK13
	IME. (yamamoto)

	* generic/tkConsole.c (ConsoleCmd): correct return that should
	have just set result code.

	* generic/tkImgPhoto.c: Added PhotoFormatThreadExitProc to clean
	up on thread exit. (Tk_PhotoPutBlock) slight code updates

	* generic/tkPanedWindow.c (DestroyPanedWindow, ConfigureSlaves):
	fix mem leaks in not freeing slave info

	* win/configure:
	* win/tcl.m4: Enabled COFF as well as CV style debug info with
	--enable-symbols to allow Dr. Watson users to see function info.
	More info on debugging levels can be obtained at:
	http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp

2002-04-10  Mo DeJong  <[email protected]>

	* doc/wm.n:
	* mac/tkMacWm.c:
	* tests/wm.test:
	* unix/tkUnixWm.c:
	* win/tkWinWm.c: Update wm stackorder usage message
	to make it clear that either 1 or 3 arguments are
	required. [Bug 540013]

2002-04-08  Daniel Steffen  <[email protected]>

	* mac/tkMacProjects.sea.hqx: added tkPanedWindow.c to projects
	* mac/tkMacAppInit.c: fixes to MSL stdin/stdout hookup to the
	TkConsole when using shared MSL libraries; fix for crashing
	bug on exit: writing to stdin/sterr when console has already
	been destroyed. (both fixes need support in MSL, see 
	'CW Pro6 changes' in tcl/mac/tcltkMacBuildSupport.sea.hqx)
	* mac/tkMacDialog.c: fixes to Navigation Services Dialog filter.
	* mac/tkMacDraw.c: add panic for overwide TkImages that would
	crash Tk on mac otherwise.

2002-04-05  Jeff Hobbs  <[email protected]>

	* mac/tkMacXStubs.c: added Tk_SetCaretPos stub (does nothing).
	* win/tkWinX.c: added Tk_SetCaretPos code to position IME windows
	correctly when WM_IME_STARTCOMPOSITION is received.
	* unix/tkUnixKey.c: added Tk_SetCaretPos and code for setting
	XIM caret in TkpGetString.

	* generic/tkStubInit.c:
	* generic/tkDecls.h:
	* generic/tk.decls: added Tk_SetCaretPos declaration.  This command
	allows users to indicate the cursor position and is used by XIM
	(Unix) or IME (Windows) to place the caret box correctly.  It is
	also part of correct Accessibility style on Windows to make the
	magnifier jump to the focus point.

	* win/tkWinButton.c (TkpDisplayButton): 
	* generic/tkTextMark.c (TkTextInsertDisplayProc):
	* generic/tkCanvText.c (DisplayCanvText):
	* generic/tkEntry.c (DisplayEntry): added Tk_SetCaretPos calls

	* generic/tkInt.h: added TK_XIM_SPOT #define (default 1).
	Added XFontSet attribute to TkDisplay when TK_XIM_SPOT is true.
	* generic/tkEvent.c (Tk_HandleEvent): made sure inputContexts are
	not getting created on DestroyNotify events (for dead windows).
	Added over-the-spot support if TK_XIM_SPOT is defined (default).
	The is the nicer XIM behavior, but uses a bit more memory.

	* unix/tkUnixEvent.c:
	* generic/tkWindow.c: moved OpenIM over to tkUnixEvent.c.
	Removed setting inputContext to null in Tk_MakeWindowExist as it
	was redundant.

	* unix/tkUnixWm.c (CreateWrapper): Removed redundat setting of
	inputContext to null.

	* win/Makefile.in: changed gdb and shell targets to properly build
	all binaries before running (otherwise an error often occured).

2002-03-28  David Gravereaux <[email protected]>

	* win/.cvsignore (new):
	* win/lamp.bmp (new):
	* win/makefile.vc:
	* win/nmakehlp.c (new):
	* win/rules.vc:  Brought the makefile up-to-date with Tcl's one.
	This now has support for Win9x issues and the winhelp target now
	exists.  Color scheme can be changed.  I'm just imparting a first
	suggestion using orange :)  I'll have to think about the install
	portion of the helpfile as I'll need to do some tricks to insert
	tk's contents file into Tcl's using some special winhlp32.exe
	switches.  [Bug 533862 527941]

	* win/makefile.vc:  Tk helpfile is now installing itself into Tcl's
	contents file as part of the install target and rebuilding the
	contents table as desired.  [Bug 527941]

	* doc/console.n:  Changed topic from "Tcl Built-In Commands" to
	"Tk Built-In Commands"

	* win/buildall.vc.bat:  Update to match Tcl.

2002-03-26  Andreas Kupries  <[email protected]>

	* unix/tkUnixFont.c: Added inclusion of <arpa/inet.h>. This fixes
	  a GCC/HPUX problem with missing a "htons". See also
	  "tclUnixPort.h" for equivalent code.

2002-03-21  David Gravereaux <[email protected]>

	* win/makefile.vc: Changed optimize flag to -0ti instead of -02.
	[Bug 528441]

2002-03-20  Don Porter  <[email protected]>

	* generic/tkButton.c (ButtonTextVarProc,ButtonVarProc): 
	* generic/tkCmds.c (WaitVariableProc):
	* generic/tkEntry.c (EntryTextVarProc):
	* generic/tkListbox.c (ListboxListVarProc):
	* generic/tkMenu.c (MenuVarProc):
	* generic/tkMenubutton.c (MenuButtonTextVarProc): 
	* generic/tkMessage.c (MessageTextVarProc): 
	* generic/tkScale.c (ScaleVarProc): Updates to handle change in
	type of part2 argument of Tcl_VarTraceProc typedef. [TIP 27]
	[Patch 532644].

2002-03-19  Jeff Hobbs  <[email protected]>

	* generic/tkOldConfig.c (Tk_ConfigureValue): prevent leaving
	interp->result as NULL.

2002-03-07  Donal K. Fellows  <[email protected]>

	* library/text.tcl (TextPasteSelection): Renaming of TextPaste to
	prevent confusion with tk_textPaste.  Stopped code from inserting
	selections twice, which seems to have happened with TIP#26, and
	reorganized code to reduce amount of stuff protected by catch
	which is tricky to maintain.
	(tk_textPaste): Reduce amount of code protected by catch.

2002-03-06  Mo DeJong  <[email protected]>

	* win/tkWinX.c: Define _WIN32_IE as 0x0300
	before including commctrl.h so that we can
	access the InitCommonControlsEx API when
	building Tk with mingw.

2002-03-06  Donal K. Fellows  <[email protected]>

	* README, generic/tk.h, unix/configure.in, unix/tk.spec:
	* win/configure.in: Bumped patchlevel; this might need to change
	in the future, but it will help us distinguish between the CVS
	version and the most recent released version.

2002-03-05  Jeff Hobbs  <[email protected]>

	*** 8.4a4 TAGGED FOR RELEASE ***

	* unix/README: updated --* options docs.

	* unix/tk.spec: fixed URL refs to use www.tcl.tk or SF.

2002-03-04  Jeff Hobbs  <[email protected]>

	* README: 
	* mac/README: 
	* unix/README: 
	* win/README: updated to use www.tcl.tk URL.

2002-03-03  Jeff Hobbs  <[email protected]>

	* library/entry.tcl: added catch around Triple-1 binding use of
	sel.last

2002-02-28  Don Porter  <[email protected]>

	* library/console.tcl (ConsoleBind): Corrected console <<Paste>>
	binding on Unix platforms.

2002-02-26  Jeff Hobbs  <[email protected]>

	* unix/configure: Regen.
	* unix/tcl.m4: Update from Tcl.

	* generic/tkWindow.c (Tk_MainWindow, Tk_GetNumMainWindows):
	protect against being called before Tcl stubs are init'ed.
	[Bug #220916] (porter)

2002-02-25  Jeff Hobbs  <[email protected]>

	* generic/tkText.c (ConfigureText): reenable the blinking cursor
	on state change where necessary. [Bug #503772]

	* tests/listbox.test:
	* generic/tkListbox.c: corrected error handling when setting to an
	invalid listvar value. [Bug #503613]

	* library/scale.tcl: mirror B2 bindings to B3 on Windows to better
	accomodate two button mice. [Patch #493145]

	* library/panedwindow.tcl: improved proxy sash handling. (boudaillier)

2002-02-25  Donal K. Fellows  <[email protected]>

	* tests/filebox.test: Reorganised and fixed so that tests are
	executed fewer times (!) and the automatic extension adding
	behaviour of tk_getSaveFile is tested.

2002-02-23  Mo DeJong  <[email protected]>

	* unix/configure: Regen.
	* unix/tcl.m4: Update from Tcl.

2002-02-22  Jeff Hobbs  <[email protected]>

	* generic/tkPanedWindow.c (PanedWindowWidgetObjCmd): fixed returns
	that should have been breaks instead.  Corrected .pw configure
	handling for insufficient args.  [Patch #521436] (boudaillier)

	* mac/tkMacDefault.h:
	* unix/tkUnixDefault.h:
	* win/tkWinDefault.h: changed panedwindow default relief to flat,
	a more natural outer relief.

	* library/panedwindow.tcl (ReleaseSash): changed to not pass x and
	y args at all (they aren't used).
	Added proc comments.  Made configuring sash cursor more efficient.
	Added Cursor timer that restores the default cursor when pointer
	is no longer over the sash.  This is necessary because Leave
	events won't be seen when moving into a paned child.

2002-02-22  Donal K. Fellows  <[email protected]>

	* library/demos/widget: New section "Paned Windows"
	* library/demos/paned2.tcl, library/demos/paned1.tcl: New files.

	* library/panedwindow.tcl (ReleaseSash): Added missing arguments.
	* library/tk.tcl: Bindings for paned window were not being loaded
	by default.

	* unix/tkUnixMenu.c (GetMenuLabelGeometry,DrawMenuEntryLabel):
	Stop meaningless GCC warnings.

2002-02-21  Jeff Hobbs  <[email protected]>

	* doc/panedwindow.n (new):
	* generic/tkPanedWindow.c (new):
	* generic/tkInt.h:
	* generic/tkWindow.c:
	* library/panedwindow.tcl (new):
	* mac/tkMacDefault.h:
	* tests/panedwindow.test (new):
	* unix/Makefile.in:
	* unix/tkUnixDefault.h:
	* win/Makefile.in:
	* win/makefile.vc:
	* win/tkWinDefault.h: added implementation of TIP #41, panedwindow
	widget. [Patch #512503] (melski)

	* generic/tkOption.c (ReadOptionFile): fixed Tcl_Seek casting to
	remove warnings (we expect no option files with be > 2GB).

	* unix/configure: regenerated
	* unix/tcl.m4: updated to sync with Tcl's tcl.m4
	Added --enable-64bit support for AIX-4 using IBM's xlc (-q64 flag).

2002-02-19  Don Porter  <[email protected]>

	* changes: First draft of updated changes for 8.4a4 release.

2002-02-19  Donal K. Fellows  <[email protected]>

	* generic/tkImgPhoto.c (MatchFileFormat):  Tcl_Seek takes
	Tcl_WideInt offset (three places.)
	* generic/tkImgPPM.c (FileReadPPM): Tcl_Seek takes Tcl_WideInt offset.
	* generic/tkFrame.c (ConfigureFrame): Stop GCC warning.

	* generic/tkImgGIF.c: Made file meet the formatting rules from the
	Tcl Engineering Manual better; mostly differences in whitespace.

2002-02-18  Jeff Hobbs  <[email protected]>

	* unix/configure: regen'd
	* unix/tcl.m4:
	* unix/configure.in: added macros and calls to SC_TCL_EARLY_FLAGS
	and SC_TCL_64BIT_FLAGS, part of TIP #72.

2002-02-14  Mo DeJong  <[email protected]>

	* library/entry.tcl:
	* library/text.tcl: Adjust <Double-1> and <Triple-1> bindings
	so that no anchor point is set and the insertion cursor is
	set to the last character in the selection. [Bug 220943]
	* tests/event.test: Add test cases for double click and
	drag as well as triple click and drag in the text and
	entry widgets.

2002-02-14  Mo DeJong  <[email protected]>

	* tests/event.test (_text_ind_to_x_y, _get_selection): Fix
	incorrect use of results from bbox invocation so that
	y center point for a give index is calculated correctly.
	Add new method to return the selection and use it in
	test cases. Always lappend to the result list to avoid
	case where initial result includes a space.

2002-02-07  Don Porter  <[email protected]>

	* generic/tkMain.c:
	* mac/tkMacInit.c:
	* mac/tkMacKeyboard.c:
	* win/tkWinDialog.c:
	* win/tkWinTest.c: modified some callers of Tcl routines that
	were restored to return (char *) pointing into Tcl_DStrings.

2002-02-05  Jim Ingham <[email protected]>

	* macosx/tkMacOSXMenu.c: Fix 513222.  We were going to
	invalidate the menu & delete the selection without checking
	whether the menu had already been deleted.
	* mac/tkMacMenu.c: ditto.
	
Changes to README.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
README:  Tk
    This is the Tk 8.4a4 source distribution.
    Tcl/Tk is also available through NetCVS:
	http://tcl.sourceforge.net/
    You can get any source release of Tcl from the file distributions
    link at the above URL.

RCS: @(#) $Id: README,v 1.31 2001/08/08 18:41:10 dgp Exp $

1. Introduction
---------------

This directory contains the sources and documentation for Tk, an X11
toolkit implemented with the Tcl scripting language.

For details on features, incompatibilities, and potential problems with
this release, see the Tcl/Tk 8.4 Web page at

	http://www.purl.org/tcl/home/software/tcltk/8.4.html

or refer to the "changes" file in this directory, which contains a
historical record of all changes to Tk.

Tk is maintained, enhanced, and distributed freely by members of the
Tcl community.  The home for Tcl/Tk sources and bug database is on
SourceForge at:

	http://tcl.sourceforge.net/

with the Tcl Developer Xchange at:

	http://www.purl.org/tcl/home/

Tk is a freely available open source package.  You can do virtually
anything you like with it, such as modifying it, redistributing it,
and selling it either in whole or in part.  See the file
"license.terms" for complete information.

2. See Tcl README

|





|










|












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
README:  Tk
    This is the Tk 8.4a5 source distribution.
    Tcl/Tk is also available through NetCVS:
	http://tcl.sourceforge.net/
    You can get any source release of Tcl from the file distributions
    link at the above URL.

RCS: @(#) $Id: README,v 1.31.2.1 2002/06/10 05:38:23 wolfsuit Exp $

1. Introduction
---------------

This directory contains the sources and documentation for Tk, an X11
toolkit implemented with the Tcl scripting language.

For details on features, incompatibilities, and potential problems with
this release, see the Tcl/Tk 8.4 Web page at

	http://www.tcl.tk/software/tcltk/8.4.html

or refer to the "changes" file in this directory, which contains a
historical record of all changes to Tk.

Tk is maintained, enhanced, and distributed freely by members of the
Tcl community.  The home for Tcl/Tk sources and bug database is on
SourceForge at:

	http://tcl.sourceforge.net/

with the Tcl Developer Xchange at:

	http://www.tcl.tk/

Tk is a freely available open source package.  You can do virtually
anything you like with it, such as modifying it, redistributing it,
and selling it either in whole or in part.  See the file
"license.terms" for complete information.

2. See Tcl README
Changes to changes.
1
2
3
4
5
6
7
8
9
10
11
12
This file summarizes all changes made to Tk since version 1.0 was
released on March 13, 1991.  Changes that aren't backward compatible
are marked specially.

RCS: @(#) $Id: changes,v 1.47 2001/08/15 19:51:50 dgp Exp $

3/16/91 (bug fix) Modified tkWindow.c to remove Tk's Tcl commands from
the interpreter when the main window is deleted (otherwise there will
be dangling pointers to the non-existent window).

3/16/91 (bug fix) Modified tkColor.c not to free black or white colors:
some X servers get upset at this.




|







1
2
3
4
5
6
7
8
9
10
11
12
This file summarizes all changes made to Tk since version 1.0 was
released on March 13, 1991.  Changes that aren't backward compatible
are marked specially.

RCS: @(#) $Id: changes,v 1.47.2.1 2002/06/10 05:38:23 wolfsuit Exp $

3/16/91 (bug fix) Modified tkWindow.c to remove Tk's Tcl commands from
the interpreter when the main window is deleted (otherwise there will
be dangling pointers to the non-existent window).

3/16/91 (bug fix) Modified tkColor.c not to free black or white colors:
some X servers get upset at this.
4844
4845
4846
4847
4848
4849
4850



4851
4852
4853
4854
4855
4856
4857
--- Released 8.3.0, February 10, 2000 --- See ChangeLog for details ---

2000-03-02 (bug fix) fixed crash in listbox when cursor was configure and
then widget was destroyed (hobbs)

2000-03-02 (feature enhancement) added %V substitution to entry widget
validation to clarify type of validation occuring (hobbs)




2000-03-29 (config enhancement) improved build support for gcc/mingw on
Windows (nijtmans, hobbs) and added RPM target (melski)

2000-03-24 (bug fixes) numerous corrections for more correct Unix dialog
behaviors (melski)








>
>
>







4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
--- Released 8.3.0, February 10, 2000 --- See ChangeLog for details ---

2000-03-02 (bug fix) fixed crash in listbox when cursor was configure and
then widget was destroyed (hobbs)

2000-03-02 (feature enhancement) added %V substitution to entry widget
validation to clarify type of validation occuring (hobbs)

2000-03-07 (feature enhancement) added -disabledforeground/-state to labels
(melski)

2000-03-29 (config enhancement) improved build support for gcc/mingw on
Windows (nijtmans, hobbs) and added RPM target (melski)

2000-03-24 (bug fixes) numerous corrections for more correct Unix dialog
behaviors (melski)

4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982

4983
4984
4985
4986
4987


4988
4989
4990
4991
4992
4993

4994
4995
4996
4997
4998
4999

5000
5001

5002

5003
5004


5005
5006
5007
5008
5009
5010
5011
and corrected search combining -regexp and -nocase. (melski)

2000-08 (bug fix) Corrected code for using 'place', cursors, colors and 3D
borders on multiple screens simultaneously. (hobbs, hipp)

--- Released 8.3.2, August 9, 2000 --- See ChangeLog for details ---

 * Added support for mingw (gcc on Windows), AIX-5 and Win64 builds
   (dejong, hobbs)

 * Added -multiple option to tk_getOpenFile (melski)

 * Introduced some localization support to Tk dialogs (duperval, et al)

 * Improved support for static builds on Windows (gravereaux)

 * New -state option for listbox, better native color defaults (melski)


 * Tcl_Obj'ified clipboard, message, tkwait, bindtags, grab. place,
   selection commands (melski)

 * More correct GNU configure support (no more --enable-gcc) (dejong)



 * Corrected Windows menu indicator drawing (oberhumer)

 * Added tkPlatDecls.h to default install (melski)

 * Added TK_OPTION_CUSTOM type, similar to TK_CONFIG_CUSTOM (melski)


 * Several fixes for multi-display uses of Tk (hipp, hobbs)

 * New Tk_CreateAnonymousWindow C API to create anonymous Tk windows
   controllable from C (melski)


 * Improved error checking in Windows native dialogs (melski, hobbs)


 * Made 'tk useinputmethods 1' the default in tk.tcl, for users of XIM and

   "dead" keys (hobbs)



--- Released 8.4a2, November 3, 2000 --- See ChangeLog for details ---

2001-04-04 (build improvements) redid Mac build structure (steffen)
Corrected IRIX-5* configure (english).  Added support for AIX-5 (hobbs).
Added support for Win64 (hobbs).

2001-04-04 (doc fixes) numerous doc corrections and clarifications.







<
<
|
<

|
|
<

|
>

|
|

|
>
>

|

|

|
>

|

|
|

>
|

>
|
>
|

>
>







4969
4970
4971
4972
4973
4974
4975


4976

4977
4978
4979

4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
and corrected search combining -regexp and -nocase. (melski)

2000-08 (bug fix) Corrected code for using 'place', cursors, colors and 3D
borders on multiple screens simultaneously. (hobbs, hipp)

--- Released 8.3.2, August 9, 2000 --- See ChangeLog for details ---



2000-06-15 (new feature) [tk_getOpenFile ... -multiple] (melski)


2000-06-29 (new feature) localization support in Tk dialogs (duperval,
melski, et al)


200-07-28 (new feature) -state option for listbox, better native color
defaults (melski)

2000-08 (feature rewrites) Tcl_Obj'ified clipboard, message, tkwait,
bindtags, grab. place, selection commands (melski)

2000-08-24 (new feature) More correct GNU configure support (no more
--enable-gcc) (dejong)
	*** POTENTIAL INCOMPATIBILITY ***

2000-08-29 (bug fix) Corrected Windows menu indicator drawing (oberhumer)

2000-09-01 (bug fix) Added tkPlatDecls.h to default install (melski)

2000-09-17 (new feature) Added TK_OPTION_CUSTOM type, similar to
TK_CONFIG_CUSTOM (melski)

2000-09-29 (bug fix) Several fixes for multi-display uses of Tk (hipp, hobbs)

2000-10-05 (new feature) Tk_CreateAnonymousWindow API to create anonymous
Tk windows controllable from C (melski)

2000-10-27 (new default behavior) [tk useinputmethods 1] is the default
in tk.tcl, for users of XIM and "dead" keys (hobbs)

2000-10-30 Improved support for static builds on Windows (gravereaux)

 * Added support for mingw (gcc on Windows), AIX-5 and Win64 builds
   (dejong, hobbs)

 * Improved error checking in Windows native dialogs (melski, hobbs)

--- Released 8.4a2, November 3, 2000 --- See ChangeLog for details ---

2001-04-04 (build improvements) redid Mac build structure (steffen)
Corrected IRIX-5* configure (english).  Added support for AIX-5 (hobbs).
Added support for Win64 (hobbs).

2001-04-04 (doc fixes) numerous doc corrections and clarifications.
5041
5042
5043
5044
5045
5046
5047

5048


5049

5050
5051
5052
5053
5054
5055
5056
5057
5058


5059
5060

5061

5062
5063
5064



5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075





































































































screens (hipp)

2000-08-18 (feature enhancement) Removed redundant call to DitherInstance
(melski)

--- Released 8.3.3, April 6, 2001 --- See ChangeLog for details ---


 * implemented [TIP #5], exporting Tk_ClassProcs/Tk_SetClassProcs and


   adding a size field to Tk_ClassProcs (melski)


 * implemented [TIP #21], asymmetric padding in the pack and grid geometry
   managers (hipp)

 * moved all private tk* commands and variables in the ::tk:: namespace
   [TIP #44] (porter)
	*** POTENTIAL INCOMPATIBILITY ***

 * improved tests to better handle results on variant systems (hobbs)



 * implemented [TIP #11], the addition of -compound for the 'menubutton'

   widget (helfter)


 * corrected support for is10646 fonts on Unix, added a ucs-2be encoding
   (welch)




 * overhaul of configure scripts for cleaner standard support and support
   of mingw gcc on Windows. (mdejong)

 * allowed tkwin to be Tcl_EventuallyFree'd in Tk_DestroyWindow so other
   widgets could register their use of it.  Updated entry and listbox
   widgets to use this, correcting potential crashes.  (hobbs)

 * correct several minor Purify complaints (hobbs)

--- Released 8.4a3, August 6, 2000 --- See ChangeLog for details ---












































































































>
|
>
>
|
>

|
|

<
|
<

<
>
>

<
>
|
>

<
<
>
>
>




<
<
|




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065

5066

5067

5068
5069
5070

5071
5072
5073
5074


5075
5076
5077
5078
5079
5080
5081


5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
screens (hipp)

2000-08-18 (feature enhancement) Removed redundant call to DitherInstance
(melski)

--- Released 8.3.3, April 6, 2001 --- See ChangeLog for details ---

2000-11-21 (new feature)[TIP 5] Tk_ClassProcs, Tk_SetClassProcs API (melski)

2000-12-13 (performance enhancement)[403327] Tcl_Objs of type "double"
are recognized in SetMMFromAny to speed up canvas coord calculations (hobbs)

2001-01-02 (new feature)[TIP 8] [wn iconbitmap -default] on Windows (darley)

2001-02-12 (new feature)[TIP #21] asymmetric padding in the pack and grid
geometry managers (hipp)


2001-05-21 (new feature)[TIP #11], -compound for [menubutton] widget (helfter)



2001-06-03 (bug fix) corrected support for is10646 fonts on Unix, added a
ucs-2be encoding (welch)


2001-07-02 (bug fix) allowed tkwin to be Tcl_EventuallyFree'd in
Tk_DestroyWindow so other widgets could register their use of it.  Updated
entry and listbox widgets to use this, correcting potential crashes. (hobbs)



2001-08-01 (interface rewrite)[TIP 44] moved all private tk[A-Z]* commands and
variables into the ::tk:: namespace (porter)
	*** POTENTIAL INCOMPATIBILITY ***

 * overhaul of configure scripts for cleaner standard support and support
   of mingw gcc on Windows. (mdejong)



 * improved tests to better handle results on variant systems (hobbs)

 * correct several minor Purify complaints (hobbs)

--- Released 8.4a3, August 6, 2000 --- See ChangeLog for details ---

2001-08-06 (new feature) added GNU (HURD) build support. (brinkman)

2001-08-23 (new feature) added QNX-6 build support. (loverso)

2001-08-24 (bug fix) correct several possible free memory reads and array
bounds read errors reported by purify. (hobbs)

2001-08-27 (new feature) added call to Tcl_SetMainLoop which enables Tk to
be loaded interactively into tclsh and have the event loop kick in
correctly. (hobbs)

2001-08-28 (bug fix) fixed tk_chooseDirectory crash on Win95. (baker)

2001-08-28 (bug fix) removed 2 second 'raise' delay seen by some Unix
window managers. (hobbs, baker)

2001-09-14 (bug fix) fixed memory leaks that occured if errors were
thrown while initializing the channel for an image. (darley)

2001-09-20 (new feature) --enable-64bit support was added for HP 11 when
using the native compiler.

2001-10-03 (new feature) finalized Win64 support with latest RC1 release
and SDK. (hobbs, stacy)

2001-10-04 (new feature) added enhanced bgerror dialog from Hipp. (hobbs)

2001-10-09 (new feature) added brace/quote matching and file/path/var
expansion to the Win/Mac console. (hobbs)

2001-10-17 (bug fix) fixed file filtering in the motif file dialog (nelson)

2001-10-17 (bug fix) updated Mac build support. (steffen)

--- Released 8.3.4, October 19, 2001 --- See ChangeLog for details ---

2001-08-14 (bug fix)[450545] Tk's Tcl_ObjTypes now registered (fellows)

2001-08-20 (performance enhancement) internal use of a "window" Tcl_ObjType 
(fellows)

2001-08-20 (performance enhancement) Obj-ified [grid] and [pack] (spjuth)

2001-09-26 (new feature)[TIP 18] add labels to frames, update geometry
managers (spjuth)

2001-09-30 (new feature)[TIP 37] [grid {row|column}configure -uniform] (spjuth)

2001-10-12 (new feature)[TIP 63] [$menu add ... -compound] (helfter)

2001-10-18 (build improvement) no more warnings about building with
thread-enabled Tcl (hobbs)

2001-11-10 (build improvement) new make target 'make gdb' (dejong)

2001-11-12 (new feature)[TIP 26] simple undo/redo in text widget (callewaert)

2001-11-12 (build improvement) revitalized makefile.vc (gravereaux)

2001-11-17 (visual change) default button size on Windows changed to
conform to Windows style (hobbs)
	**** POTENTIAL VISUAL INCOMPATABILITY ****

2001-12-03 (new feature)[TIP 74] [wm stackorder] (dejong, steffen)

2001-12 (new feature) more use of Unicode in native widgets on Windows (hobbs)

2001-12-18 (bug fix)[413735] event-click-drag-1.2 test failure (porter)

2001-12-28 (new feature) On Windows, buttons accept negative widths, meaning
minimum size, enabling native L&F (hobbs)

2002-01 (bug fix) updates for CONST-ification in Tcl API, notably
Tcl_ParseArgv.  Use -DUSE_NON_CONST to suppress source incompatibility
	**** POTENTIAL INCOMPATABILITY ****

2002-01-31 (bug fix)[508988] logic error in menu cloning (helfter)

2002-02-01 (new feature)[TIP 14] [$photo transparency] (fellows)

2002-02-01 (bug fix)[511956] C99 spec: avoid 'bool' as a variable name (hobbs)

2002-02-19 (bug fix) updates to image code calls of Tcl_Seek/Tcl_Tell to
address TIP 72 changes (64-bit) in Tcl (fellows)

2002-02-21 (new widget)[TIP 41] added [panedwindow] (hobbs)

2002-02-22 (new feature)  64-bit support for xlc compiler on AIX-4 (hobbs)

2002-02-25 (bug fix)[503772] blinking cursor fix in [text] (hobbs)

2002-02-25 (bug fix)[503613] [listbox] handling of invalid listvar (hobbs)

2002-02-25 (feature change)[493145] mirror B2 bindings to B3 on Windows (hobbs)

 * (updated demos) many updates to show new features (fellows)

--- Released 8.4a4, March 5, 2002 --- See ChangeLog for details ---

2002-05-27 (feature change) [wm transient .t .t] now raises an error
Changes to doc/console.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'\"
'\" Copyright (c) 2001 Donal K. Fellows
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: console.n,v 1.3 2001/08/07 02:56:11 hobbs Exp $
'\"
.so man.macros
.TH console n 8.4 Tk "Tcl Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
console \- Control the console on systems without a real console
.SH SYNOPSIS
\fBconsole title \fR?\fIstring\fR?
.sp






|


|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'\"
'\" Copyright (c) 2001 Donal K. Fellows
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: console.n,v 1.3.2.1 2002/06/10 05:38:23 wolfsuit Exp $
'\"
.so man.macros
.TH console n 8.4 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
console \- Control the console on systems without a real console
.SH SYNOPSIS
\fBconsole title \fR?\fIstring\fR?
.sp
Changes to doc/getOpenFile.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'\"
'\" Copyright (c) 1996 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: getOpenFile.n,v 1.8.6.1 2002/02/05 02:25:14 wolfsuit Exp $
'\" 
.so man.macros
.TH tk_getOpenFile n 4.2 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
tk_getOpenFile, tk_getSaveFile \- pop up a dialog box for the user to select a file to open or save.






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
'\"
'\" Copyright (c) 1996 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: getOpenFile.n,v 1.8.6.2 2002/06/10 05:38:23 wolfsuit Exp $
'\" 
.so man.macros
.TH tk_getOpenFile n 4.2 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
tk_getOpenFile, tk_getSaveFile \- pop up a dialog box for the user to select a file to open or save.
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
option is ignored on the Macintosh platform.
.TP
\fB\-multiple\fR
Allows the user to choose multiple files from the Open dialog.
On the Macintosh, this is only available when Navigation Services are
installed.
.TP
\fB\-message\fR
Specifies a message to include in the client area of the dialog.
This is only available on the Macintosh, and only when Navigation
Services are installed.
.TP
\fB\-parent\fR \fIwindow\fR
Makes \fIwindow\fR the logical parent of the file dialog. The file
dialog is displayed on top of its parent window.







|







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
option is ignored on the Macintosh platform.
.TP
\fB\-multiple\fR
Allows the user to choose multiple files from the Open dialog.
On the Macintosh, this is only available when Navigation Services are
installed.
.TP
\fB\-message\fR \fIstring\fR
Specifies a message to include in the client area of the dialog.
This is only available on the Macintosh, and only when Navigation
Services are installed.
.TP
\fB\-parent\fR \fIwindow\fR
Makes \fIwindow\fR the logical parent of the file dialog. The file
dialog is displayed on top of its parent window.
Changes to doc/panedwindow.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'\"
'\" Copyright (c) 1992 The Regents of the University of California.
'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: panedwindow.n,v 1.1.4.1 2002/06/10 05:07:59 wolfsuit Exp $
'\" 
.so man.macros
.TH panedwindow n 8.4 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
panedwindow \- Create and manipulate panedwindow widgets







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'\"
'\" Copyright (c) 1992 The Regents of the University of California.
'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: panedwindow.n,v 1.1.4.2 2002/06/10 05:38:23 wolfsuit Exp $
'\" 
.so man.macros
.TH panedwindow n 8.4 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
panedwindow \- Create and manipulate panedwindow widgets
Changes to doc/photo.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'\"
'\" Copyright (c) 1994 The Australian National University
'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" Author: Paul Mackerras ([email protected]),
'\"	    Department of Computer Science,
'\"	    Australian National University.
'\"
'\" RCS: @(#) $Id: photo.n,v 1.7.4.1 2002/02/05 02:25:14 wolfsuit Exp $
'\" 
.so man.macros
.TH photo n 4.0 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
photo \- Full-color images











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'\"
'\" Copyright (c) 1994 The Australian National University
'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" Author: Paul Mackerras ([email protected]),
'\"	    Department of Computer Science,
'\"	    Australian National University.
'\"
'\" RCS: @(#) $Id: photo.n,v 1.7.4.2 2002/06/10 05:38:23 wolfsuit Exp $
'\" 
.so man.macros
.TH photo n 4.0 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
photo \- Full-color images
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
data for a photo image can be obtained from a file or a string, or it
can be supplied from
C code through a procedural interface.  At present, only GIF and PPM/PGM
formats are supported, but an interface exists to allow additional
image file formats to be added easily.  A photo image is transparent
in regions where no image data has been supplied
.VS 8.4
or where it has been set transparent by the \fBtransparency set\fB
subcommand.
.VE 8.4

.SH "CREATING PHOTOS"
.PP
Like all images, photos are created using the \fBimage create\fR
command.







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
data for a photo image can be obtained from a file or a string, or it
can be supplied from
C code through a procedural interface.  At present, only GIF and PPM/PGM
formats are supported, but an interface exists to allow additional
image file formats to be added easily.  A photo image is transparent
in regions where no image data has been supplied
.VS 8.4
or where it has been set transparent by the \fBtransparency set\fR
subcommand.
.VE 8.4

.SH "CREATING PHOTOS"
.PP
Like all images, photos are created using the \fBimage create\fR
command.
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
Allows examination and manipulation of the transparency information in
the photo image.  Several subcommands are available:
.RS
.TP
\fIimageName \fBtransparency get \fIx y\fR
Returns a boolean indicating if the pixel at (\fIx\fR,\fIy\fR) is
transparent.
\fIimageName \fBtransparency get \fIx y boolean\fR
Makes the pixel at (\fIx\fR,\fIy\fR) transparent if \fIboolean\fR is
true, and makes that pixel opaque otherwise.
.RE
.VE 8.4
.TP
\fIimageName \fBwrite \fIfilename\fR ?\fIoption value(s) ...\fR?
Writes image data from \fIimageName\fR to a file named \fIfilename\fR.







|







317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
Allows examination and manipulation of the transparency information in
the photo image.  Several subcommands are available:
.RS
.TP
\fIimageName \fBtransparency get \fIx y\fR
Returns a boolean indicating if the pixel at (\fIx\fR,\fIy\fR) is
transparent.
\fIimageName \fBtransparency set \fIx y boolean\fR
Makes the pixel at (\fIx\fR,\fIy\fR) transparent if \fIboolean\fR is
true, and makes that pixel opaque otherwise.
.RE
.VE 8.4
.TP
\fIimageName \fBwrite \fIfilename\fR ?\fIoption value(s) ...\fR?
Writes image data from \fIimageName\fR to a file named \fIfilename\fR.
Changes to doc/wm.n.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'\"
'\" Copyright (c) 1991-1994 The Regents of the University of California.
'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: wm.n,v 1.6.4.1 2002/02/05 02:25:14 wolfsuit Exp $
'\" 
.so man.macros
.TH wm n 4.3 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
wm \- Communicate with window manager







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'\"
'\" Copyright (c) 1991-1994 The Regents of the University of California.
'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\" 
'\" RCS: @(#) $Id: wm.n,v 1.6.4.2 2002/06/10 05:38:23 wolfsuit Exp $
'\" 
.so man.macros
.TH wm n 4.3 Tk "Tk Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
wm \- Communicate with window manager
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
source is cancelled.
If \fIwho\fR is specified, then the command returns an empty string.
Otherwise it returns \fBuser\fR or \fBwindow\fR to indicate the
source of the window's current size, or an empty string if
no source has been specified yet.  Most window managers interpret
``no source'' as equivalent to \fBprogram\fR.
.TP
\fBwm stackorder \fIwindow\fR ?\fIisabove|isbelow\fR? \fI?window?\fR
The stackorder command returns a list of toplevel windows
in stacking order, from lowest to highest. When a single toplevel
window is passed, the returned list recursively includes all of the
window's children that are toplevels. Only those toplevels
that are currently mapped to the screen are returned.
The stackorder command can also be used to determine if one
toplevel is positioned above or below a second toplevel.







|







396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
source is cancelled.
If \fIwho\fR is specified, then the command returns an empty string.
Otherwise it returns \fBuser\fR or \fBwindow\fR to indicate the
source of the window's current size, or an empty string if
no source has been specified yet.  Most window managers interpret
``no source'' as equivalent to \fBprogram\fR.
.TP
\fBwm stackorder \fIwindow\fR ?\fIisabove|isbelow window\fR?
The stackorder command returns a list of toplevel windows
in stacking order, from lowest to highest. When a single toplevel
window is passed, the returned list recursively includes all of the
window's children that are toplevels. Only those toplevels
that are currently mapped to the screen are returned.
The stackorder command can also be used to determine if one
toplevel is positioned above or below a second toplevel.
Changes to generic/tk.decls.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# tk.decls --
#
#	This file contains the declarations for all supported public
#	functions that are exported by the Tk library via the stubs table.
#	This file is used to generate the tkDecls.h, tkPlatDecls.h,
#	tkStub.c, and tkPlatStub.c files.
#	
#
# Copyright (c) 1998-2000 Ajuba Solutions.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: tk.decls,v 1.15.2.4 2002/02/05 02:25:14 wolfsuit Exp $

library tk

# Define the tk interface with 3 sub interfaces:
#     tkPlat	 - platform specific public
#     tkInt	 - generic private
#     tkPlatInt - platform specific private













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# tk.decls --
#
#	This file contains the declarations for all supported public
#	functions that are exported by the Tk library via the stubs table.
#	This file is used to generate the tkDecls.h, tkPlatDecls.h,
#	tkStub.c, and tkPlatStub.c files.
#	
#
# Copyright (c) 1998-2000 Ajuba Solutions.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: tk.decls,v 1.15.2.5 2002/06/10 05:38:23 wolfsuit Exp $

library tk

# Define the tk interface with 3 sub interfaces:
#     tkPlat	 - platform specific public
#     tkInt	 - generic private
#     tkPlatInt - platform specific private
1153
1154
1155
1156
1157
1158
1159






1160
1161
1162
1163
1164
1165
1166
    void Tk_SetInternalBorderEx (Tk_Window tkwin, int left, int right, \
            int top, int bottom)
}
declare 244 generic {
    void Tk_SetMinimumRequestSize (Tk_Window tkwin, \
            int minWidth, int minHeight)
}







# Define the platform specific public Tk interface.  These functions are
# only available on the designated platform.

interface tkPlat

# Unix specific functions







>
>
>
>
>
>







1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
    void Tk_SetInternalBorderEx (Tk_Window tkwin, int left, int right, \
            int top, int bottom)
}
declare 244 generic {
    void Tk_SetMinimumRequestSize (Tk_Window tkwin, \
            int minWidth, int minHeight)
}

# New in 8.4a5
#
declare 245 generic {
    void Tk_SetCaretPos (Tk_Window tkwin, int x, int y, int height)
}

# Define the platform specific public Tk interface.  These functions are
# only available on the designated platform.

interface tkPlat

# Unix specific functions
Changes to generic/tk.h.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1994 The Australian National University.
 * Copyright (c) 1994-1998 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tk.h,v 1.57.2.2 2001/10/17 07:02:07 wolfsuit Exp $
 */

#ifndef _TK
#define _TK

/*
 * For C++ compilers, use extern "C"







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1994 The Australian National University.
 * Copyright (c) 1994-1998 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tk.h,v 1.57.2.3 2002/06/10 05:38:23 wolfsuit Exp $
 */

#ifndef _TK
#define _TK

/*
 * For C++ compilers, use extern "C"
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 * You may also need to update some of these files when the numbers change
 * for the version of Tcl that this release of Tk is compiled against.
 */

#define TK_MAJOR_VERSION   8
#define TK_MINOR_VERSION   4
#define TK_RELEASE_LEVEL   TCL_ALPHA_RELEASE
#define TK_RELEASE_SERIAL  4

#define TK_VERSION	"8.4"
#define TK_PATCH_LEVEL	"8.4a4"

/*
 * The following definitions set up the proper options for Macintosh
 * compilers.  We use this method because there is no autoconf equivalent.
 */

#if  defined(MAC_TCL) || defined(MAC_OSX_TK)







|


|







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 * You may also need to update some of these files when the numbers change
 * for the version of Tcl that this release of Tk is compiled against.
 */

#define TK_MAJOR_VERSION   8
#define TK_MINOR_VERSION   4
#define TK_RELEASE_LEVEL   TCL_ALPHA_RELEASE
#define TK_RELEASE_SERIAL  5

#define TK_VERSION	"8.4"
#define TK_PATCH_LEVEL	"8.4a5"

/*
 * The following definitions set up the proper options for Macintosh
 * compilers.  We use this method because there is no autoconf equivalent.
 */

#if  defined(MAC_TCL) || defined(MAC_OSX_TK)
Changes to generic/tkButton.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkButton.c --
 *
 *	This module implements a collection of button-like
 *	widgets for the Tk toolkit.  The widgets implemented
 *	include labels, buttons, checkbuttons, and radiobuttons.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1998 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkButton.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $
 */

#include "tkButton.h"
#include "default.h"

typedef struct ThreadSpecificData { 
    int defaultsInitialized;













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkButton.c --
 *
 *	This module implements a collection of button-like
 *	widgets for the Tk toolkit.  The widgets implemented
 *	include labels, buttons, checkbuttons, and radiobuttons.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1998 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkButton.c,v 1.13.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkButton.h"
#include "default.h"

typedef struct ThreadSpecificData { 
    int defaultsInitialized;
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
static void		ButtonImageProc _ANSI_ARGS_((ClientData clientData,
			    int x, int y, int width, int height,
			    int imgWidth, int imgHeight));
static void		ButtonSelectImageProc _ANSI_ARGS_((
			    ClientData clientData, int x, int y, int width,
			    int height, int imgWidth, int imgHeight));
static char *		ButtonTextVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, char *name2,
			    int flags));
static char *		ButtonVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, char *name2,
			    int flags));
static int		ButtonWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
			    Tcl_Obj *CONST objv[]));
static int		ConfigureButton _ANSI_ARGS_((Tcl_Interp *interp,
			    TkButton *butPtr, int objc,
			    Tcl_Obj *CONST objv[]));







|


|







516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
static void		ButtonImageProc _ANSI_ARGS_((ClientData clientData,
			    int x, int y, int width, int height,
			    int imgWidth, int imgHeight));
static void		ButtonSelectImageProc _ANSI_ARGS_((
			    ClientData clientData, int x, int y, int width,
			    int height, int imgWidth, int imgHeight));
static char *		ButtonTextVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, CONST char *name2,
			    int flags));
static char *		ButtonVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, CONST char *name2,
			    int flags));
static int		ButtonWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
			    Tcl_Obj *CONST objv[]));
static int		ConfigureButton _ANSI_ARGS_((Tcl_Interp *interp,
			    TkButton *butPtr, int objc,
			    Tcl_Obj *CONST objv[]));
1125
1126
1127
1128
1129
1130
1131










1132
1133
1134
1135
1136
1137
1138
		if (Tcl_ObjSetVar2(interp, namePtr, NULL,
			(butPtr->type == TYPE_CHECK_BUTTON)
			? butPtr->offValuePtr : Tcl_NewObj(),
			TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG)
			== NULL) {
		    continue;
		}










	    }
	}

	/*
	 * Get the images for the widget, if there are any.  Allocate the
	 * new images before freeing the old ones, so that the reference
	 * counts don't go to zero and cause image data to be discarded.







>
>
>
>
>
>
>
>
>
>







1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
		if (Tcl_ObjSetVar2(interp, namePtr, NULL,
			(butPtr->type == TYPE_CHECK_BUTTON)
			? butPtr->offValuePtr : Tcl_NewObj(),
			TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG)
			== NULL) {
		    continue;
		}

		/*
		 * If a radiobutton has the empty string as value
		 * it should be selected.
		 */

 		if ((butPtr->type == TYPE_RADIO_BUTTON) &&
			(*Tcl_GetString(butPtr->onValuePtr) == 0)) {
		    butPtr->flags |= SELECTED;
		}
	    }
	}

	/*
	 * Get the images for the widget, if there are any.  Allocate the
	 * new images before freeing the old ones, so that the reference
	 * counts don't go to zero and cause image data to be discarded.
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549

	/* ARGSUSED */
static char *
ButtonVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register TkButton *butPtr = (TkButton *) clientData;
    char *name, *value;
    Tcl_Obj *valuePtr;

    name = Tcl_GetString(butPtr->selVarNamePtr);







|







1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559

	/* ARGSUSED */
static char *
ButtonVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    CONST char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register TkButton *butPtr = (TkButton *) clientData;
    char *name, *value;
    Tcl_Obj *valuePtr;

    name = Tcl_GetString(butPtr->selVarNamePtr);
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628

	/* ARGSUSED */
static char *
ButtonTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Not used. */
    char *name2;		/* Not used. */
    int flags;			/* Information about what happened. */
{
    TkButton *butPtr = (TkButton *) clientData;
    char *name;
    Tcl_Obj *valuePtr;

    if (butPtr->flags & BUTTON_DELETED) {







|







1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638

	/* ARGSUSED */
static char *
ButtonTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Not used. */
    CONST char *name2;		/* Not used. */
    int flags;			/* Information about what happened. */
{
    TkButton *butPtr = (TkButton *) clientData;
    char *name;
    Tcl_Obj *valuePtr;

    if (butPtr->flags & BUTTON_DELETED) {
Changes to generic/tkCanvText.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkCanvText.c --
 *
 *	This file implements text items for canvas widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkCanvText.c,v 1.10.2.1 2002/02/05 02:25:14 wolfsuit Exp $
 */

#include <stdio.h>
#include "tkInt.h"
#include "tkCanvas.h"
#include "tkPort.h"
#include "default.h"











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkCanvText.c --
 *
 *	This file implements text items for canvas widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkCanvText.c,v 1.10.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include <stdio.h>
#include "tkInt.h"
#include "tkCanvas.h"
#include "tkPort.h"
#include "default.h"
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
    }

    /*
     * Use overall geometry information to compute the top-left corner
     * of the bounding box for the text item.
     */

    leftX = (int) (textPtr->x + 0.5);
    topY = (int) (textPtr->y + 0.5);
    switch (textPtr->anchor) {
	case TK_ANCHOR_NW:
	case TK_ANCHOR_N:
	case TK_ANCHOR_NE:
	    break;

	case TK_ANCHOR_W:







|
|







631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
    }

    /*
     * Use overall geometry information to compute the top-left corner
     * of the bounding box for the text item.
     */

    leftX = (int) floor(textPtr->x + 0.5);
    topY = (int) floor(textPtr->y + 0.5);
    switch (textPtr->anchor) {
	case TK_ANCHOR_NW:
	case TK_ANCHOR_N:
	case TK_ANCHOR_NE:
	    break;

	case TK_ANCHOR_W:
824
825
826
827
828
829
830


831
832
833
834
835
836
837
	if (Tk_CharBbox(textPtr->textLayout, textPtr->insertPos,
		&x, &y, NULL, &height)) {
	    Tk_CanvasDrawableCoords(canvas,
		    (double) (textPtr->leftEdge + x
			    - (textInfoPtr->insertWidth / 2)),
		    (double) (textPtr->header.y1 + y),
		    &drawableX, &drawableY);


	    if (textInfoPtr->cursorOn) {
		Tk_Fill3DRectangle(Tk_CanvasTkwin(canvas), drawable,
			textInfoPtr->insertBorder,
			drawableX, drawableY,
			textInfoPtr->insertWidth, height,
			textInfoPtr->insertBorderWidth, TK_RELIEF_RAISED);
	    } else if (textPtr->cursorOffGC != None) {







>
>







824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
	if (Tk_CharBbox(textPtr->textLayout, textPtr->insertPos,
		&x, &y, NULL, &height)) {
	    Tk_CanvasDrawableCoords(canvas,
		    (double) (textPtr->leftEdge + x
			    - (textInfoPtr->insertWidth / 2)),
		    (double) (textPtr->header.y1 + y),
		    &drawableX, &drawableY);
	    Tk_SetCaretPos(Tk_CanvasTkwin(canvas), drawableX, drawableY,
		    height);
	    if (textInfoPtr->cursorOn) {
		Tk_Fill3DRectangle(Tk_CanvasTkwin(canvas), drawable,
			textInfoPtr->insertBorder,
			drawableX, drawableY,
			textInfoPtr->insertWidth, height,
			textInfoPtr->insertBorderWidth, TK_RELIEF_RAISED);
	    } else if (textPtr->cursorOffGC != None) {
Changes to generic/tkClipboard.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkClipboard.c --
 *
 * 	This file manages the clipboard for the Tk toolkit,
 * 	maintaining a collection of data buffers that will be
 * 	supplied on demand to requesting applications.
 *
 * Copyright (c) 1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkClipboard.c,v 1.7.6.1 2002/02/05 02:25:14 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"
#include "tkSelect.h"

/*













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkClipboard.c --
 *
 * 	This file manages the clipboard for the Tk toolkit,
 * 	maintaining a collection of data buffers that will be
 * 	supplied on demand to requesting applications.
 *
 * Copyright (c) 1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkClipboard.c,v 1.7.6.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"
#include "tkSelect.h"

/*
615
616
617
618
619
620
621






































622
623
624
625
626
627
628
		Tcl_DStringFree(&selBytes);
	    }
	    return result;
	}
    }
    return TCL_OK;
}







































/*
 *----------------------------------------------------------------------
 *
 * TkClipInit --
 *
 *	This procedure is called to initialize the window for claiming







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
		Tcl_DStringFree(&selBytes);
	    }
	    return result;
	}
    }
    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * TkClipCleanup --
 *
 *	This procedure is called to cleanup resources associated with
 *	claiming clipboard ownership and for receiving selection get
 *	results.  This function is called in tkWindow.c.  This has to be
 *	called by the display cleanup function because we still need the
 *	access display elements.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Resources are freed - the clipboard may no longer be used.
 *
 *----------------------------------------------------------------------
 */

void
TkClipCleanup(dispPtr)
    TkDisplay *dispPtr;	/* display associated with clipboard */
{
    if (dispPtr->clipWindow != NULL) {
	Tk_DeleteSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom,
		dispPtr->applicationAtom);
	Tk_DeleteSelHandler(dispPtr->clipWindow, dispPtr->clipboardAtom,
		dispPtr->windowAtom);
	/*
	 * It may be too late to call Tk_DestroyWindow, so just free the
	 * memory created directly.
	 */
	ckfree((char *) dispPtr->clipWindow);
	dispPtr->clipWindow = NULL;
    }
}

/*
 *----------------------------------------------------------------------
 *
 * TkClipInit --
 *
 *	This procedure is called to initialize the window for claiming
Changes to generic/tkCmds.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkCmds.c --
 *
 *	This file contains a collection of Tk-related Tcl commands
 *	that didn't fit in any particular file of the toolkit.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkCmds.c,v 1.20.2.3 2002/02/05 02:25:14 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include <errno.h>

#if defined(__WIN32__)













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkCmds.c --
 *
 *	This file contains a collection of Tk-related Tcl commands
 *	that didn't fit in any particular file of the toolkit.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkCmds.c,v 1.20.2.4 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include <errno.h>

#if defined(__WIN32__)
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

/*
 * Forward declarations for procedures defined later in this file:
 */

static TkWindow *	GetToplevel _ANSI_ARGS_((Tk_Window tkwin));
static char *		WaitVariableProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, char *name2,
			    int flags));
static void		WaitVisibilityProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static void		WaitWindowProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));

/*







|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

/*
 * Forward declarations for procedures defined later in this file:
 */

static TkWindow *	GetToplevel _ANSI_ARGS_((Tk_Window tkwin));
static char *		WaitVariableProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, CONST char *name2,
			    int flags));
static void		WaitVisibilityProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static void		WaitWindowProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));

/*
303
304
305
306
307
308
309

310
311
312
313
314
315
316
 *	A standard Tcl result.
 *
 * Side effects:
 *	See the user documentation.
 *
 *----------------------------------------------------------------------
 */

int
Tk_BindtagsObjCmd(clientData, interp, objc, objv)
    ClientData clientData;	/* Main window associated with interpreter. */
    Tcl_Interp *interp;		/* Current interpreter. */
    int objc;			/* Number of arguments. */
    Tcl_Obj *CONST objv[];	/* Argument objects. */
{







>







303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
 *	A standard Tcl result.
 *
 * Side effects:
 *	See the user documentation.
 *
 *----------------------------------------------------------------------
 */

int
Tk_BindtagsObjCmd(clientData, interp, objc, objv)
    ClientData clientData;	/* Main window associated with interpreter. */
    Tcl_Interp *interp;		/* Current interpreter. */
    int objc;			/* Number of arguments. */
    Tcl_Obj *CONST objv[];	/* Argument objects. */
{
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
	    winPtr->tagPtr[i] = (ClientData) copy;
	} else {
	    winPtr->tagPtr[i] = (ClientData) Tk_GetUid(p);
	}
    }
    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * TkFreeBindingTags --
 *
 *	This procedure is called to free all of the binding tags
 *	associated with a window;  typically it is only invoked where







|







388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
	    winPtr->tagPtr[i] = (ClientData) copy;
	} else {
	    winPtr->tagPtr[i] = (ClientData) Tk_GetUid(p);
	}
    }
    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * TkFreeBindingTags --
 *
 *	This procedure is called to free all of the binding tags
 *	associated with a window;  typically it is only invoked where
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867

	/* ARGSUSED */
static char *
WaitVariableProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Pointer to integer to set to 1. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    int *donePtr = (int *) clientData;

    *donePtr = 1;
    return (char *) NULL;
}







|







854
855
856
857
858
859
860
861
862
863
864
865
866
867
868

	/* ARGSUSED */
static char *
WaitVariableProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Pointer to integer to set to 1. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    CONST char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    int *donePtr = (int *) clientData;

    *donePtr = 1;
    return (char *) NULL;
}
Changes to generic/tkConsole.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkConsole.c --
 *
 *	This file implements a Tcl console for systems that may not
 *	otherwise have access to a console.  It uses the Text widget
 *	and provides special access via a console command.
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkConsole.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $
 */

#include "tk.h"
#include <string.h>

#include "tkInt.h"













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkConsole.c --
 *
 *	This file implements a Tcl console for systems that may not
 *	otherwise have access to a console.  It uses the Text widget
 *	and provides special access via a console command.
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkConsole.c,v 1.13.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tk.h"
#include <string.h>

#include "tkInt.h"

598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
	if (argc == 3) {
	    result = Tcl_Eval(consoleInterp, argv[2]);
	    Tcl_AppendResult(interp, Tcl_GetStringResult(consoleInterp),
		    (char *) NULL);
	} else {
	    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
		    " eval command\"", (char *) NULL);
	    return TCL_ERROR;
	}
    } else {
	Tcl_AppendResult(interp, "bad option \"", argv[1],
		"\": should be hide, show, or title",
		(char *) NULL);
        result = TCL_ERROR;
    }







|







598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
	if (argc == 3) {
	    result = Tcl_Eval(consoleInterp, argv[2]);
	    Tcl_AppendResult(interp, Tcl_GetStringResult(consoleInterp),
		    (char *) NULL);
	} else {
	    Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
		    " eval command\"", (char *) NULL);
	    result = TCL_ERROR;
	}
    } else {
	Tcl_AppendResult(interp, "bad option \"", argv[1],
		"\": should be hide, show, or title",
		(char *) NULL);
        result = TCL_ERROR;
    }
Changes to generic/tkDecls.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * tkDecls.h --
 *
 *	Declarations of functions in the platform independent public Tcl API.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkDecls.h,v 1.15.2.1 2002/02/05 02:25:14 wolfsuit Exp $
 */

#ifndef _TKDECLS
#define _TKDECLS

#ifdef BUILD_tk
#undef TCL_STORAGE_CLASS










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * tkDecls.h --
 *
 *	Declarations of functions in the platform independent public Tcl API.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkDecls.h,v 1.15.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#ifndef _TKDECLS
#define _TKDECLS

#ifdef BUILD_tk
#undef TCL_STORAGE_CLASS
839
840
841
842
843
844
845



846
847
848
849
850
851
852
				ClientData instanceData));
/* 243 */
EXTERN void		Tk_SetInternalBorderEx _ANSI_ARGS_((Tk_Window tkwin, 
				int left, int right, int top, int bottom));
/* 244 */
EXTERN void		Tk_SetMinimumRequestSize _ANSI_ARGS_((
				Tk_Window tkwin, int minWidth, int minHeight));




typedef struct TkStubHooks {
    struct TkPlatStubs *tkPlatStubs;
    struct TkIntStubs *tkIntStubs;
    struct TkIntPlatStubs *tkIntPlatStubs;
    struct TkIntXlibStubs *tkIntXlibStubs;
} TkStubHooks;







>
>
>







839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
				ClientData instanceData));
/* 243 */
EXTERN void		Tk_SetInternalBorderEx _ANSI_ARGS_((Tk_Window tkwin, 
				int left, int right, int top, int bottom));
/* 244 */
EXTERN void		Tk_SetMinimumRequestSize _ANSI_ARGS_((
				Tk_Window tkwin, int minWidth, int minHeight));
/* 245 */
EXTERN void		Tk_SetCaretPos _ANSI_ARGS_((Tk_Window tkwin, int x, 
				int y, int height));

typedef struct TkStubHooks {
    struct TkPlatStubs *tkPlatStubs;
    struct TkIntStubs *tkIntStubs;
    struct TkIntPlatStubs *tkIntPlatStubs;
    struct TkIntXlibStubs *tkIntXlibStubs;
} TkStubHooks;
1096
1097
1098
1099
1100
1101
1102

1103
1104
1105
1106
1107
1108
1109
    int (*tk_PostscriptPhoto) _ANSI_ARGS_((Tcl_Interp * interp, Tk_PhotoImageBlock * blockPtr, Tk_PostscriptInfo psInfo, int width, int height)); /* 238 */
    void (*tk_CreateClientMessageHandler) _ANSI_ARGS_((Tk_ClientMessageProc * proc)); /* 239 */
    void (*tk_DeleteClientMessageHandler) _ANSI_ARGS_((Tk_ClientMessageProc * proc)); /* 240 */
    Tk_Window (*tk_CreateAnonymousWindow) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window parent, char * screenName)); /* 241 */
    void (*tk_SetClassProcs) _ANSI_ARGS_((Tk_Window tkwin, Tk_ClassProcs * procs, ClientData instanceData)); /* 242 */
    void (*tk_SetInternalBorderEx) _ANSI_ARGS_((Tk_Window tkwin, int left, int right, int top, int bottom)); /* 243 */
    void (*tk_SetMinimumRequestSize) _ANSI_ARGS_((Tk_Window tkwin, int minWidth, int minHeight)); /* 244 */

} TkStubs;

#ifdef __cplusplus
extern "C" {
#endif
extern TkStubs *tkStubsPtr;
#ifdef __cplusplus







>







1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
    int (*tk_PostscriptPhoto) _ANSI_ARGS_((Tcl_Interp * interp, Tk_PhotoImageBlock * blockPtr, Tk_PostscriptInfo psInfo, int width, int height)); /* 238 */
    void (*tk_CreateClientMessageHandler) _ANSI_ARGS_((Tk_ClientMessageProc * proc)); /* 239 */
    void (*tk_DeleteClientMessageHandler) _ANSI_ARGS_((Tk_ClientMessageProc * proc)); /* 240 */
    Tk_Window (*tk_CreateAnonymousWindow) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window parent, char * screenName)); /* 241 */
    void (*tk_SetClassProcs) _ANSI_ARGS_((Tk_Window tkwin, Tk_ClassProcs * procs, ClientData instanceData)); /* 242 */
    void (*tk_SetInternalBorderEx) _ANSI_ARGS_((Tk_Window tkwin, int left, int right, int top, int bottom)); /* 243 */
    void (*tk_SetMinimumRequestSize) _ANSI_ARGS_((Tk_Window tkwin, int minWidth, int minHeight)); /* 244 */
    void (*tk_SetCaretPos) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int height)); /* 245 */
} TkStubs;

#ifdef __cplusplus
extern "C" {
#endif
extern TkStubs *tkStubsPtr;
#ifdef __cplusplus
2086
2087
2088
2089
2090
2091
2092




2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
#define Tk_SetInternalBorderEx \
	(tkStubsPtr->tk_SetInternalBorderEx) /* 243 */
#endif
#ifndef Tk_SetMinimumRequestSize
#define Tk_SetMinimumRequestSize \
	(tkStubsPtr->tk_SetMinimumRequestSize) /* 244 */
#endif





#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */

/* !END!: Do not edit above this line. */

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT

#endif /* _TKDECLS */








>
>
>
>










2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
#define Tk_SetInternalBorderEx \
	(tkStubsPtr->tk_SetInternalBorderEx) /* 243 */
#endif
#ifndef Tk_SetMinimumRequestSize
#define Tk_SetMinimumRequestSize \
	(tkStubsPtr->tk_SetMinimumRequestSize) /* 244 */
#endif
#ifndef Tk_SetCaretPos
#define Tk_SetCaretPos \
	(tkStubsPtr->tk_SetCaretPos) /* 245 */
#endif

#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */

/* !END!: Do not edit above this line. */

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT

#endif /* _TKDECLS */

Changes to generic/tkEntry.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkEntry.c,v 1.23.2.1 2002/02/05 02:25:14 wolfsuit Exp $
 */

#include "tkInt.h"
#include "default.h"

enum EntryType {
    TK_ENTRY, TK_SPINBOX







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkEntry.c,v 1.23.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkInt.h"
#include "default.h"

enum EntryType {
    TK_ENTRY, TK_SPINBOX
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
static void		EventuallyRedraw _ANSI_ARGS_((Entry *entryPtr));
static void		EntryScanTo _ANSI_ARGS_((Entry *entryPtr, int y));
static void		EntrySetValue _ANSI_ARGS_((Entry *entryPtr,
			    CONST char *value));
static void		EntrySelectTo _ANSI_ARGS_((
			    Entry *entryPtr, int index));
static char *		EntryTextVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, char *name2,
			    int flags));
static void		EntryUpdateScrollbar _ANSI_ARGS_((Entry *entryPtr));
static int		EntryValidate _ANSI_ARGS_((Entry *entryPtr,
			    char *cmd));
static int		EntryValidateChange _ANSI_ARGS_((Entry *entryPtr,
			    char *change, CONST char *new, int index,
			    int type));







|







690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
static void		EventuallyRedraw _ANSI_ARGS_((Entry *entryPtr));
static void		EntryScanTo _ANSI_ARGS_((Entry *entryPtr, int y));
static void		EntrySetValue _ANSI_ARGS_((Entry *entryPtr,
			    CONST char *value));
static void		EntrySelectTo _ANSI_ARGS_((
			    Entry *entryPtr, int index));
static char *		EntryTextVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, CONST char *name2,
			    int flags));
static void		EntryUpdateScrollbar _ANSI_ARGS_((Entry *entryPtr));
static int		EntryValidate _ANSI_ARGS_((Entry *entryPtr,
			    char *cmd));
static int		EntryValidateChange _ANSI_ARGS_((Entry *entryPtr,
			    char *change, CONST char *new, int index,
			    int type));
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901



1902
1903
1904
1905
1906
1907
1908

1909
1910
1911
1912
1913

1914
1915
1916
1917
1918
1919
1920
     * even the selection background.  As a special hack to keep the
     * cursor visible when the insertion cursor color is the same as
     * the color for selected text (e.g., on mono displays), write
     * background in the cursor area (instead of nothing) when the
     * cursor isn't on.  Otherwise the selection would hide the cursor.
     */

    if ((entryPtr->insertPos >= entryPtr->leftIndex)
	    && (entryPtr->state == STATE_NORMAL)
	    && (entryPtr->flags & GOT_FOCUS)) {
	Tk_CharBbox(entryPtr->textLayout, entryPtr->insertPos, &cursorX, NULL,
		NULL, NULL);



	cursorX += entryPtr->layoutX;
	cursorX -= (entryPtr->insertWidth)/2;
	if (cursorX < xBound) {
	    if (entryPtr->flags & CURSOR_ON) {
		Tk_Fill3DRectangle(tkwin, pixmap, entryPtr->insertBorder,
			cursorX, baseY - fm.ascent, entryPtr->insertWidth,
			fm.ascent + fm.descent, entryPtr->insertBorderWidth,

			TK_RELIEF_RAISED);
	    } else if (entryPtr->insertBorder == entryPtr->selBorder) {
		Tk_Fill3DRectangle(tkwin, pixmap, border,
			cursorX, baseY - fm.ascent, entryPtr->insertWidth,
			fm.ascent + fm.descent, 0, TK_RELIEF_FLAT);

	    }
	}
    }

    /*
     * Draw the text in two pieces:  first the unselected portion, then the
     * selected portion on top of it.







<
<
|


>
>
>
|
|
|
|
|
|
|
>
|
|
|
|
|
>







1890
1891
1892
1893
1894
1895
1896


1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
     * even the selection background.  As a special hack to keep the
     * cursor visible when the insertion cursor color is the same as
     * the color for selected text (e.g., on mono displays), write
     * background in the cursor area (instead of nothing) when the
     * cursor isn't on.  Otherwise the selection would hide the cursor.
     */



    if ((entryPtr->state == STATE_NORMAL) && (entryPtr->flags & GOT_FOCUS)) {
	Tk_CharBbox(entryPtr->textLayout, entryPtr->insertPos, &cursorX, NULL,
		NULL, NULL);
	Tk_SetCaretPos(entryPtr->tkwin, cursorX, baseY - fm.ascent,
		fm.ascent + fm.descent);
	if (entryPtr->insertPos >= entryPtr->leftIndex) {
	    cursorX += entryPtr->layoutX;
	    cursorX -= (entryPtr->insertWidth)/2;
	    if (cursorX < xBound) {
		if (entryPtr->flags & CURSOR_ON) {
		    Tk_Fill3DRectangle(tkwin, pixmap, entryPtr->insertBorder,
			    cursorX, baseY - fm.ascent, entryPtr->insertWidth,
			    fm.ascent + fm.descent,
			    entryPtr->insertBorderWidth,
			    TK_RELIEF_RAISED);
		} else if (entryPtr->insertBorder == entryPtr->selBorder) {
		    Tk_Fill3DRectangle(tkwin, pixmap, border,
			    cursorX, baseY - fm.ascent, entryPtr->insertWidth,
			    fm.ascent + fm.descent, 0, TK_RELIEF_FLAT);
		}
	    }
	}
    }

    /*
     * Draw the text in two pieces:  first the unselected portion, then the
     * selected portion on top of it.
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287

	/* ARGSUSED */
static char *
EntryTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Not used. */
    char *name2;		/* Not used. */
    int flags;			/* Information about what happened. */
{
    Entry *entryPtr = (Entry *) clientData;
    CONST char *value;

    /*
     * If the variable is unset, then immediately recreate it unless







|







3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290

	/* ARGSUSED */
static char *
EntryTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Not used. */
    CONST char *name2;		/* Not used. */
    int flags;			/* Information about what happened. */
{
    Entry *entryPtr = (Entry *) clientData;
    CONST char *value;

    /*
     * If the variable is unset, then immediately recreate it unless
Changes to generic/tkEvent.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkEvent.c --
 *
 *	This file provides basic low-level facilities for managing
 *	X events in Tk.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1995 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkEvent.c,v 1.8 2000/06/03 08:58:16 hobbs Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include <signal.h>

/*













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkEvent.c --
 *
 *	This file provides basic low-level facilities for managing
 *	X events in Tk.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1995 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkEvent.c,v 1.8.6.1 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include <signal.h>

/*
745
746
747
748
749
750
751
752

753

754
755

756






















757







758
759
760
761


762
763
764
765
766
767
768
769
770
    }

#ifdef TK_USE_INPUT_METHODS
    /*
     * Pass the event to the input method(s), if there are any, and
     * discard the event if the input method(s) insist.  Create the
     * input context for the window if it hasn't already been done
     * (XFilterEvent needs this context).

     */

    if (winPtr->dispPtr->useInputMethods) {
	if (!(winPtr->flags & TK_CHECKED_IC)) {

	    if (winPtr->dispPtr->inputMethod != NULL) {






















		winPtr->inputContext = XCreateIC(







		    winPtr->dispPtr->inputMethod, XNInputStyle,
		    XIMPreeditNothing|XIMStatusNothing,
		    XNClientWindow, winPtr->window,
		    XNFocusWindow, winPtr->window, NULL);


	    }
	    winPtr->flags |= TK_CHECKED_IC;
	}
	if (XFilterEvent(eventPtr, None)) {
	    goto done;
	}
    }
#endif /* TK_USE_INPUT_METHODS */








|
>

>
|
|
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
|
|
|
|
>
>

<







745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796

797
798
799
800
801
802
803
    }

#ifdef TK_USE_INPUT_METHODS
    /*
     * Pass the event to the input method(s), if there are any, and
     * discard the event if the input method(s) insist.  Create the
     * input context for the window if it hasn't already been done
     * (XFilterEvent needs this context).  XIM is only ever enabled on
     * Unix, but this hasn't been factored out of the generic code yet.
     */
    dispPtr = winPtr->dispPtr;
    if ((dispPtr->useInputMethods)) {
	if (!(winPtr->flags & (TK_CHECKED_IC|TK_ALREADY_DEAD))) {
	    winPtr->flags |= TK_CHECKED_IC;
	    if (dispPtr->inputMethod != NULL) {
#if TK_XIM_SPOT
		XVaNestedList preedit_attr;
		XPoint spot = {0, 0};

		if (dispPtr->inputXfs == NULL) {
		    /*
		     * We only need to create one XFontSet
		     */
		    char      **missing_list;
		    int       missing_count;
		    char      *def_string;

		    dispPtr->inputXfs = XCreateFontSet(dispPtr->display,
			    "-*-*-*-R-Normal--14-130-75-75-*-*",
			    &missing_list, &missing_count, &def_string);
		    if (missing_count > 0) {
			XFreeStringList(missing_list);
		    }
		}

		preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &spot,
			XNFontSet, dispPtr->inputXfs, NULL);
		winPtr->inputContext = XCreateIC(dispPtr->inputMethod,
			XNInputStyle, XIMPreeditPosition | XIMStatusNothing,
			XNClientWindow, winPtr->window,
			XNFocusWindow, winPtr->window,
			XNPreeditAttributes, preedit_attr,
			NULL);
		XFree(preedit_attr);
#else
		winPtr->inputContext = XCreateIC(dispPtr->inputMethod,
			XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
			XNClientWindow, winPtr->window,
			XNFocusWindow, winPtr->window,
			NULL);
#endif
	    }

	}
	if (XFilterEvent(eventPtr, None)) {
	    goto done;
	}
    }
#endif /* TK_USE_INPUT_METHODS */

Changes to generic/tkFocus.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkFocus.c --
 *
 *	This file contains procedures that manage the input
 *	focus for Tk.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkFocus.c,v 1.5.16.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"


/*












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkFocus.c --
 *
 *	This file contains procedures that manage the input
 *	focus for Tk.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkFocus.c,v 1.5.16.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"


/*
1008
1009
1010
1011
1012
1013
1014




































    displayFocusPtr->focusOnMapPtr = NULL;
    displayFocusPtr->forceFocus = 0;
    displayFocusPtr->focusSerial = 0;
    displayFocusPtr->nextPtr = mainPtr->displayFocusPtr;
    mainPtr->displayFocusPtr = displayFocusPtr;
    return displayFocusPtr;
}











































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
    displayFocusPtr->focusOnMapPtr = NULL;
    displayFocusPtr->forceFocus = 0;
    displayFocusPtr->focusSerial = 0;
    displayFocusPtr->nextPtr = mainPtr->displayFocusPtr;
    mainPtr->displayFocusPtr = displayFocusPtr;
    return displayFocusPtr;
}

/*
 *----------------------------------------------------------------------
 *
 * TkFocusFree --
 *
 *	Free resources associated with maintaining the focus.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	This mainPtr should no long access focus information.
 *
 *----------------------------------------------------------------------
 */

void
TkFocusFree(mainPtr)
    TkMainInfo *mainPtr;	/* Record that identifies a particular
				 * application. */
{
    DisplayFocusInfo *displayFocusPtr;
    ToplevelFocusInfo *tlFocusPtr;

    while (mainPtr->displayFocusPtr != NULL) {
	displayFocusPtr          = mainPtr->displayFocusPtr;
	mainPtr->displayFocusPtr = mainPtr->displayFocusPtr->nextPtr;
	ckfree((char *) displayFocusPtr);
    }
    while (mainPtr->tlFocusPtr != NULL) {
	tlFocusPtr          = mainPtr->tlFocusPtr;
	mainPtr->tlFocusPtr = mainPtr->tlFocusPtr->nextPtr;
	ckfree((char *) tlFocusPtr);
    }
}
Changes to generic/tkFrame.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkFrame.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "default.h"
#include "tkPort.h"
#include "tkInt.h"

/*







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkFrame.c,v 1.10.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "default.h"
#include "tkPort.h"
#include "tkInt.h"

/*
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
    register Frame *framePtr;	/* Information about widget;  may or may
				 * not already have values for some fields. */
    int objc;			/* Number of valid entries in objv. */
    Tcl_Obj *CONST objv[];	/* Arguments. */
{
    Tk_SavedOptions savedOptions;
    char *oldMenuName;
    Tk_Window oldWindow;
    Labelframe *labelframePtr = (Labelframe *) framePtr;

    /*
     * Need the old menubar name for the menu code to delete it.
     */
    
    if (framePtr->menuName == NULL) {







|







916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
    register Frame *framePtr;	/* Information about widget;  may or may
				 * not already have values for some fields. */
    int objc;			/* Number of valid entries in objv. */
    Tcl_Obj *CONST objv[];	/* Arguments. */
{
    Tk_SavedOptions savedOptions;
    char *oldMenuName;
    Tk_Window oldWindow = NULL;
    Labelframe *labelframePtr = (Labelframe *) framePtr;

    /*
     * Need the old menubar name for the menu code to delete it.
     */
    
    if (framePtr->menuName == NULL) {
Changes to generic/tkGC.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkGC.c --
 *
 *	This file maintains a database of read-only graphics contexts 
 *	for the Tk toolkit, in order to allow GC's to be shared.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkGC.c,v 1.3 1999/04/16 01:51:14 stanton Exp $
 */

#include "tkPort.h"
#include "tkInt.h"

/*
 * One of the following data structures exists for each GC that is












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkGC.c --
 *
 *	This file maintains a database of read-only graphics contexts 
 *	for the Tk toolkit, in order to allow GC's to be shared.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkGC.c,v 1.3.18.1 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"

/*
 * One of the following data structures exists for each GC that is
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
    ValueKey valueKey;
    Tcl_HashEntry *valueHashPtr, *idHashPtr;
    register TkGC *gcPtr;
    int new;
    Drawable d, freeDrawable;
    TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr;

    if (!dispPtr->gcInit) {
	GCInit(dispPtr);
    }

    /*
     * Must zero valueKey at start to clear out pad bytes that may be
     * part of structure on some systems.
     */







|







80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
    ValueKey valueKey;
    Tcl_HashEntry *valueHashPtr, *idHashPtr;
    register TkGC *gcPtr;
    int new;
    Drawable d, freeDrawable;
    TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr;

    if (dispPtr->gcInit <= 0) {
	GCInit(dispPtr);
    }

    /*
     * Must zero valueKey at start to clear out pad bytes that may be
     * part of structure on some systems.
     */
296
297
298
299
300
301
302








303
304
305
306
307
308
309
310
311
312
313
314
315
316
317













































318
319
320
321
322
323
324
    Tcl_HashEntry *idHashPtr;
    register TkGC *gcPtr;
    TkDisplay *dispPtr = TkGetDisplay(display);

    if (!dispPtr->gcInit) {
	panic("Tk_FreeGC called before Tk_GetGC");
    }









    idHashPtr = Tcl_FindHashEntry(&dispPtr->gcIdTable, (char *) gc);
    if (idHashPtr == NULL) {
	panic("Tk_FreeGC received unknown gc argument");
    }
    gcPtr = (TkGC *) Tcl_GetHashValue(idHashPtr);
    gcPtr->refCount--;
    if (gcPtr->refCount == 0) {
	Tk_FreeXId(gcPtr->display, (XID) XGContextFromGC(gcPtr->gc));
	XFreeGC(gcPtr->display, gcPtr->gc);
	Tcl_DeleteHashEntry(gcPtr->valueHashPtr);
	Tcl_DeleteHashEntry(idHashPtr);
	ckfree((char *) gcPtr);
    }
}














































/*
 *----------------------------------------------------------------------
 *
 * GCInit --
 *
 *	Initialize the structures used for GC management.







>
>
>
>
>
>
>
>















>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
    Tcl_HashEntry *idHashPtr;
    register TkGC *gcPtr;
    TkDisplay *dispPtr = TkGetDisplay(display);

    if (!dispPtr->gcInit) {
	panic("Tk_FreeGC called before Tk_GetGC");
    }
    if (dispPtr->gcInit < 0) {
	/*
	 * The GCCleanup has been called, and remaining GCs have been
	 * freed.  This may still get called by other things shutting
	 * down, but the GCs should no longer be in use.
	 */
	return;
    }

    idHashPtr = Tcl_FindHashEntry(&dispPtr->gcIdTable, (char *) gc);
    if (idHashPtr == NULL) {
	panic("Tk_FreeGC received unknown gc argument");
    }
    gcPtr = (TkGC *) Tcl_GetHashValue(idHashPtr);
    gcPtr->refCount--;
    if (gcPtr->refCount == 0) {
	Tk_FreeXId(gcPtr->display, (XID) XGContextFromGC(gcPtr->gc));
	XFreeGC(gcPtr->display, gcPtr->gc);
	Tcl_DeleteHashEntry(gcPtr->valueHashPtr);
	Tcl_DeleteHashEntry(idHashPtr);
	ckfree((char *) gcPtr);
    }
}

/*
 *----------------------------------------------------------------------
 *
 * TkGCCleanup --
 *
 *	Frees the structures used for GC management.
 *	We need to have it called near the end, when other cleanup that
 *	calls Tk_FreeGC is all done.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	GC resources are freed.
 *
 *----------------------------------------------------------------------
 */

void
TkGCCleanup(dispPtr)
    TkDisplay *dispPtr;	/* display to clean up resources in */
{
    Tcl_HashEntry *entryPtr;
    Tcl_HashSearch search;
    TkGC *gcPtr;

    for (entryPtr = Tcl_FirstHashEntry(&dispPtr->gcIdTable, &search);
	 entryPtr != NULL;
	 entryPtr = Tcl_NextHashEntry(&search)) {
	gcPtr = (TkGC *) Tcl_GetHashValue(entryPtr);
	/*
	 * This call is not needed, as it is only used on Unix to restore
	 * the Id to the stack pool, and we don't want to use them anymore.
	 *   Tk_FreeXId(gcPtr->display, (XID) XGContextFromGC(gcPtr->gc));
	 */
	XFreeGC(gcPtr->display, gcPtr->gc);
	Tcl_DeleteHashEntry(gcPtr->valueHashPtr);
	Tcl_DeleteHashEntry(entryPtr);
	ckfree((char *) gcPtr);
    }
    Tcl_DeleteHashTable(&dispPtr->gcValueTable);
    Tcl_DeleteHashTable(&dispPtr->gcIdTable);
    dispPtr->gcInit = -1;
}

/*
 *----------------------------------------------------------------------
 *
 * GCInit --
 *
 *	Initialize the structures used for GC management.
332
333
334
335
336
337
338



339
340
341
342
 *----------------------------------------------------------------------
 */

static void
GCInit(dispPtr)
    TkDisplay *dispPtr;
{



    dispPtr->gcInit = 1;
    Tcl_InitHashTable(&dispPtr->gcValueTable, sizeof(ValueKey)/sizeof(int));
    Tcl_InitHashTable(&dispPtr->gcIdTable, TCL_ONE_WORD_KEYS);
}







>
>
>




385
386
387
388
389
390
391
392
393
394
395
396
397
398
 *----------------------------------------------------------------------
 */

static void
GCInit(dispPtr)
    TkDisplay *dispPtr;
{
    if (dispPtr->gcInit < 0) {
	panic("called GCInit after GCCleanup");
    }
    dispPtr->gcInit = 1;
    Tcl_InitHashTable(&dispPtr->gcValueTable, sizeof(ValueKey)/sizeof(int));
    Tcl_InitHashTable(&dispPtr->gcIdTable, TCL_ONE_WORD_KEYS);
}
Changes to generic/tkGet.c.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33


34
35
36
37
38
39
40
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkGet.c,v 1.6.8.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"

/*
 * One of these structures is created per thread to store 
 * thread-specific data.  In this case, it is used to house the 
 * Tk_Uid structs used by each thread.  The "dataKey" below is 
 * used to locate the ThreadSpecificData for the current thread.
 */

typedef struct ThreadSpecificData {
    int initialized;
    Tcl_HashTable uidTable;
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;



/*
 * The following tables defines the string values for reliefs, which are
 * used by Tk_GetAnchorFromObj and Tk_GetJustifyFromObj.
 */

static CONST char *anchorStrings[] = {







|

















>
>







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkGet.c,v 1.6.8.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"

/*
 * One of these structures is created per thread to store 
 * thread-specific data.  In this case, it is used to house the 
 * Tk_Uid structs used by each thread.  The "dataKey" below is 
 * used to locate the ThreadSpecificData for the current thread.
 */

typedef struct ThreadSpecificData {
    int initialized;
    Tcl_HashTable uidTable;
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

static void	FreeUidThreadExitProc _ANSI_ARGS_((ClientData clientData));

/*
 * The following tables defines the string values for reliefs, which are
 * used by Tk_GetAnchorFromObj and Tk_GetJustifyFromObj.
 */

static CONST char *anchorStrings[] = {
480
481
482
483
484
485
486


























487
488
489
490
491
492
493
    }
    return "unknown justification style";
}

/*
 *----------------------------------------------------------------------
 *


























 * Tk_GetUid --
 *
 *	Given a string, this procedure returns a unique identifier
 *	for the string.
 *
 * Results:
 *	This procedure returns a Tk_Uid corresponding to the "string"







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
    }
    return "unknown justification style";
}

/*
 *----------------------------------------------------------------------
 *
 * FreeUidThreadExitProc --
 *
 *	Cleans up memory used for Tk_Uids in the thread.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	All information in the identifier table is deleted.
 *
 *----------------------------------------------------------------------
 */

static void
FreeUidThreadExitProc(clientData)
    ClientData clientData;		/* Not used. */
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    Tcl_DeleteHashTable(&tsdPtr->uidTable);
    tsdPtr->initialized = 0;
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_GetUid --
 *
 *	Given a string, this procedure returns a unique identifier
 *	for the string.
 *
 * Results:
 *	This procedure returns a Tk_Uid corresponding to the "string"
511
512
513
514
515
516
517

518
519
520
521
522
523
524
    int dummy;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    Tcl_HashTable *tablePtr = &tsdPtr->uidTable;

    if (!tsdPtr->initialized) {
	Tcl_InitHashTable(tablePtr, TCL_STRING_KEYS);

	tsdPtr->initialized = 1;
    }
    return (Tk_Uid) Tcl_GetHashKey(tablePtr,
	    Tcl_CreateHashEntry(tablePtr, string, &dummy));
}

/*







>







539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
    int dummy;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    Tcl_HashTable *tablePtr = &tsdPtr->uidTable;

    if (!tsdPtr->initialized) {
	Tcl_InitHashTable(tablePtr, TCL_STRING_KEYS);
	Tcl_CreateThreadExitHandler(FreeUidThreadExitProc, NULL);
	tsdPtr->initialized = 1;
    }
    return (Tk_Uid) Tcl_GetHashKey(tablePtr,
	    Tcl_CreateHashEntry(tablePtr, string, &dummy));
}

/*
Changes to generic/tkImgGIF.c.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * This file also contains code from the giftoppm program, which is
 * copyrighted as follows:
 *
 * +-------------------------------------------------------------------+
 * | Copyright 1990, David Koblas.                                     |
 * |   Permission to use, copy, modify, and distribute this software   |
 * |   and its documentation for any purpose and without fee is hereby |
 * |   granted, provided that the above copyright notice appear in all |
 * |   copies and that both that copyright notice and this permission  |
 * |   notice appear in supporting documentation.  This software is    |
 * |   provided "as is" without express or implied warranty.           |
 * +-------------------------------------------------------------------+
 *
 * RCS: @(#) $Id: tkImgGIF.c,v 1.18.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

/*
 * GIF's are represented as data in base64 format.
 * base64 strings consist of 4 6-bit characters -> 3 8 bit bytes.
 * A-Z, a-z, 0-9, + and / represent the 64 values (in order).
 * '=' is a trailing padding char when the un-encoded data is not a
 * multiple of 3 bytes.  We'll ignore white space when encountered.
 * Any other invalid character is treated as an EOF
 */

#define GIF_SPECIAL	 (256)
#define GIF_PAD		(GIF_SPECIAL+1)
#define GIF_SPACE	(GIF_SPECIAL+2)
#define GIF_BAD		(GIF_SPECIAL+3)
#define GIF_DONE	(GIF_SPECIAL+4)

/*
 * structure to "mimic" FILE for Mread, so we can look like fread.







|
|
|
|
|
|
|
|


|











|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * This file also contains code from the giftoppm program, which is
 * copyrighted as follows:
 *
 * +--------------------------------------------------------------------+
 * | Copyright 1990, David Koblas.					|
 * |   Permission to use, copy, modify, and distribute this software	|
 * |   and its documentation for any purpose and without fee is hereby	|
 * |   granted, provided that the above copyright notice appear in all	|
 * |   copies and that both that copyright notice and this permission	|
 * |   notice appear in supporting documentation.  This software is	|
 * |   provided "as is" without express or implied warranty.		|
 * +-------------------------------------------------------------------+
 *
 * RCS: @(#) $Id: tkImgGIF.c,v 1.18.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

/*
 * GIF's are represented as data in base64 format.
 * base64 strings consist of 4 6-bit characters -> 3 8 bit bytes.
 * A-Z, a-z, 0-9, + and / represent the 64 values (in order).
 * '=' is a trailing padding char when the un-encoded data is not a
 * multiple of 3 bytes.  We'll ignore white space when encountered.
 * Any other invalid character is treated as an EOF
 */

#define GIF_SPECIAL	(256)
#define GIF_PAD		(GIF_SPECIAL+1)
#define GIF_SPACE	(GIF_SPECIAL+2)
#define GIF_BAD		(GIF_SPECIAL+3)
#define GIF_DONE	(GIF_SPECIAL+4)

/*
 * structure to "mimic" FILE for Mread, so we can look like fread.
68
69
70
71
72
73
74
75
76

77
78

79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 * a few key bits are stashed in ASCII.  If we try to compare those pieces
 * to the char they represent, it will fail on any non-ASCII (eg, EBCDIC)
 * system.  To accomodate these systems, we test against the numeric value
 * of the ASCII characters instead of the characters themselves.  This is
 * encoding independant.
 */

static CONST char GIF87a[] =
	{ 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x00 }; /* ASCII GIF87a */

static CONST char GIF89a[] =
	{ 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x00 }; /* ASCII GIF89a */

#  define GIF_TERMINATOR 0x3b                         /* ASCII ; */
#  define GIF_EXTENSION  0x21                         /* ASCII ! */
#  define GIF_START      0x2c                         /* ASCII , */

/*
 * 			 HACK ALERT!!  HACK ALERT!!  HACK ALERT!!
 * This code is hard-wired for reading from files.  In order to read
 * from a data stream, we'll trick fread so we can reuse the same code.
 * 0==from file; 1==from base64 encoded data; 2==from binary data
 */

typedef struct ThreadSpecificData {
    int fromData;
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * The format record for the GIF file format:
 */

static int      FileMatchGIF _ANSI_ARGS_((Tcl_Channel chan, CONST char *fileName,
		    Tcl_Obj *format, int *widthPtr, int *heightPtr,
		    Tcl_Interp *interp));
static int      FileReadGIF  _ANSI_ARGS_((Tcl_Interp *interp,
		    Tcl_Channel chan, CONST char *fileName, Tcl_Obj *format,
		    Tk_PhotoHandle imageHandle, int destX, int destY,
		    int width, int height, int srcX, int srcY));
static int	StringMatchGIF _ANSI_ARGS_(( Tcl_Obj *dataObj,
		    Tcl_Obj *format, int *widthPtr, int *heightPtr,
		    Tcl_Interp *interp));
static int	StringReadGIF _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *dataObj,
		    Tcl_Obj *format, Tk_PhotoHandle imageHandle,
		    int destX, int destY, int width, int height,
		    int srcX, int srcY));
static int 	FileWriteGIF _ANSI_ARGS_((Tcl_Interp *interp,  
		    CONST char *filename, Tcl_Obj *format,
		    Tk_PhotoImageBlock *blockPtr));
static int	CommonWriteGIF _ANSI_ARGS_((Tcl_Interp *interp,
		    Tcl_Channel handle, Tcl_Obj *format,
		    Tk_PhotoImageBlock *blockPtr));

Tk_PhotoImageFormat tkImgFmtGIF = {
	"gif",			/* name */
	FileMatchGIF,   /* fileMatchProc */
	StringMatchGIF, /* stringMatchProc */
	FileReadGIF,    /* fileReadProc */
	StringReadGIF,  /* stringReadProc */
	FileWriteGIF,   /* fileWriteProc */
	NULL,           /* stringWriteProc */
};

#define INTERLACE		0x40
#define LOCALCOLORMAP		0x80
#define BitSet(byte, bit)	(((byte) & (bit)) == (bit))
#define MAXCOLORMAPSIZE		256
#define CM_RED			0
#define CM_GREEN		1
#define CM_BLUE			2
#define CM_ALPHA		3
#define MAX_LWZ_BITS		12
#define LM_to_uint(a,b)         (((b)<<8)|(a))
#define ReadOK(file,buffer,len)	(Fread(buffer, len, 1, file) != 0)

/*
 * Prototypes for local procedures defined in this file:
 */

static int		DoExtension _ANSI_ARGS_((Tcl_Channel chan, int label,







|
|
>
|
|
>
|
|
|

















|


|


















|
|
|
|
|
|
|











|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 * a few key bits are stashed in ASCII.  If we try to compare those pieces
 * to the char they represent, it will fail on any non-ASCII (eg, EBCDIC)
 * system.  To accomodate these systems, we test against the numeric value
 * of the ASCII characters instead of the characters themselves.  This is
 * encoding independant.
 */

static CONST char GIF87a[] = {			/* ASCII GIF87a */
    0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x00
};
static CONST char GIF89a[] = {			/* ASCII GIF89a */
    0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x00
};
#  define GIF_TERMINATOR 0x3b			/* ASCII ; */
#  define GIF_EXTENSION  0x21			/* ASCII ! */
#  define GIF_START	 0x2c			/* ASCII , */

/*
 * 			 HACK ALERT!!  HACK ALERT!!  HACK ALERT!!
 * This code is hard-wired for reading from files.  In order to read
 * from a data stream, we'll trick fread so we can reuse the same code.
 * 0==from file; 1==from base64 encoded data; 2==from binary data
 */

typedef struct ThreadSpecificData {
    int fromData;
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * The format record for the GIF file format:
 */

static int	FileMatchGIF _ANSI_ARGS_((Tcl_Channel chan, CONST char *fileName,
		    Tcl_Obj *format, int *widthPtr, int *heightPtr,
		    Tcl_Interp *interp));
static int	FileReadGIF  _ANSI_ARGS_((Tcl_Interp *interp,
		    Tcl_Channel chan, CONST char *fileName, Tcl_Obj *format,
		    Tk_PhotoHandle imageHandle, int destX, int destY,
		    int width, int height, int srcX, int srcY));
static int	StringMatchGIF _ANSI_ARGS_(( Tcl_Obj *dataObj,
		    Tcl_Obj *format, int *widthPtr, int *heightPtr,
		    Tcl_Interp *interp));
static int	StringReadGIF _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *dataObj,
		    Tcl_Obj *format, Tk_PhotoHandle imageHandle,
		    int destX, int destY, int width, int height,
		    int srcX, int srcY));
static int 	FileWriteGIF _ANSI_ARGS_((Tcl_Interp *interp,  
		    CONST char *filename, Tcl_Obj *format,
		    Tk_PhotoImageBlock *blockPtr));
static int	CommonWriteGIF _ANSI_ARGS_((Tcl_Interp *interp,
		    Tcl_Channel handle, Tcl_Obj *format,
		    Tk_PhotoImageBlock *blockPtr));

Tk_PhotoImageFormat tkImgFmtGIF = {
    "gif",		/* name */
    FileMatchGIF,	/* fileMatchProc */
    StringMatchGIF,	/* stringMatchProc */
    FileReadGIF,	/* fileReadProc */
    StringReadGIF,	/* stringReadProc */
    FileWriteGIF,	/* fileWriteProc */
    NULL,		/* stringWriteProc */
};

#define INTERLACE		0x40
#define LOCALCOLORMAP		0x80
#define BitSet(byte, bit)	(((byte) & (bit)) == (bit))
#define MAXCOLORMAPSIZE		256
#define CM_RED			0
#define CM_GREEN		1
#define CM_BLUE			2
#define CM_ALPHA		3
#define MAX_LWZ_BITS		12
#define LM_to_uint(a,b)		(((b)<<8)|(a))
#define ReadOK(file,buffer,len)	(Fread(buffer, len, 1, file) != 0)

/*
 * Prototypes for local procedures defined in this file:
 */

static int		DoExtension _ANSI_ARGS_((Tcl_Channel chan, int label,
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
    }

    if (Fread(buf, 1, 3, chan) != 3) {
	return TCL_OK;
    }
    bitPixel = 2<<(buf[0]&0x07);

    if (BitSet(buf[0], LOCALCOLORMAP)) {    /* Global Colormap */
	if (!ReadColorMap(chan, bitPixel, colorMap)) {
	    Tcl_AppendResult(interp, "error reading color map",
		    (char *) NULL);
	    return TCL_ERROR;
	}
    }








|







286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
    }

    if (Fread(buf, 1, 3, chan) != 3) {
	return TCL_OK;
    }
    bitPixel = 2<<(buf[0]&0x07);

    if (BitSet(buf[0], LOCALCOLORMAP)) {	/* Global Colormap */
	if (!ReadColorMap(chan, bitPixel, colorMap)) {
	    Tcl_AppendResult(interp, "error reading color map",
		    (char *) NULL);
	    return TCL_ERROR;
	}
    }

374
375
376
377
378
379
380

381

382
383
384
385
386
387
388
389

390

391
392
393
394
395
396
397
398
399
400
401
402
403

404
405
406
407

408
409
410
411
412
413
414
415
416
417
418

419

420
421
422
423
424
425
426

	fileWidth = LM_to_uint(buf[4],buf[5]);
	fileHeight = LM_to_uint(buf[6],buf[7]);

	bitPixel = 1<<((buf[8]&0x07)+1);

	if (index--) {

	    /* this is not the image we want to read: skip it. */

	    if (BitSet(buf[8], LOCALCOLORMAP)) {
		if (!ReadColorMap(chan, bitPixel, colorMap)) {
		    Tcl_AppendResult(interp,
			    "error reading color map", (char *) NULL);
		    goto error;
		}
	    }


	    /* If we've not yet allocated a trash buffer, do so now */

	    if (trashBuffer == NULL) {
		nBytes = fileWidth * fileHeight * 3;
		trashBuffer =
		    (unsigned char *) ckalloc((unsigned int) nBytes);
	    }

	    /*
	     * Slurp!  Process the data for this image and stuff it in a
	     * trash buffer.
	     *
	     * Yes, it might be more efficient here to *not* store the data
	     * (we're just going to throw it away later).  However, I elected
	     * to implement it this way for good reasons.  First, I wanted to

	     * avoid duplicating the (fairly complex) LWZ decoder in ReadImage.
	     * Fine, you say, why didn't you just modify it to allow the use of
	     * a NULL specifier for the output buffer?  I tried that, but it
	     * negatively impacted the performance of what I think will be the

	     * common case:  reading the first image in the file.  Rather than
	     * marginally improve the speed of the less frequent case, I chose
	     * to maintain high performance for the common case.
	     */
	    if (ReadImage(interp, (char *) trashBuffer, chan, fileWidth,
			  fileHeight, colorMap, 0, 0, 0, 0, 0, -1) != TCL_OK) {
	      goto error;
	    }
	    continue;
	}


	/* If a trash buffer has been allocated, free it now */

	if (trashBuffer != NULL) {
	    ckfree((char *)trashBuffer);
	    trashBuffer = NULL;
	}
	if (BitSet(buf[8], LOCALCOLORMAP)) {
	    if (!ReadColorMap(chan, bitPixel, colorMap)) {
		    Tcl_AppendResult(interp, "error reading color map", 







>
|
>








>
|
>







|
|

|
|
|
>
|
|
|
|
>
|
|
|


|
|




>
|
>







376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436

	fileWidth = LM_to_uint(buf[4],buf[5]);
	fileHeight = LM_to_uint(buf[6],buf[7]);

	bitPixel = 1<<((buf[8]&0x07)+1);

	if (index--) {
	    /*
	     * This is not the image we want to read: skip it.
	     */
	    if (BitSet(buf[8], LOCALCOLORMAP)) {
		if (!ReadColorMap(chan, bitPixel, colorMap)) {
		    Tcl_AppendResult(interp,
			    "error reading color map", (char *) NULL);
		    goto error;
		}
	    }

	    /*
	     * If we've not yet allocated a trash buffer, do so now.
	     */
	    if (trashBuffer == NULL) {
		nBytes = fileWidth * fileHeight * 3;
		trashBuffer =
		    (unsigned char *) ckalloc((unsigned int) nBytes);
	    }

	    /*
	     * Slurp!  Process the data for this image and stuff it in
	     * a trash buffer.
	     *
	     * Yes, it might be more efficient here to *not* store the
	     * data (we're just going to throw it away later).
	     * However, I elected to implement it this way for good
	     * reasons.  First, I wanted to avoid duplicating the
	     * (fairly complex) LWZ decoder in ReadImage.  Fine, you
	     * say, why didn't you just modify it to allow the use of
	     * a NULL specifier for the output buffer?  I tried that,
	     * but it negatively impacted the performance of what I
	     * think will be the common case: reading the first image
	     * in the file.  Rather than marginally improve the speed
	     * of the less frequent case, I chose to maintain high
	     * performance for the common case.
	     */
	    if (ReadImage(interp, (char *) trashBuffer, chan, fileWidth,
		    fileHeight, colorMap, 0, 0, 0, 0, 0, -1) != TCL_OK) {
		goto error;
	    }
	    continue;
	}

	/*
	 * If a trash buffer has been allocated, free it now.
	 */
	if (trashBuffer != NULL) {
	    ckfree((char *)trashBuffer);
	    trashBuffer = NULL;
	}
	if (BitSet(buf[8], LOCALCOLORMAP)) {
	    if (!ReadColorMap(chan, bitPixel, colorMap)) {
		    Tcl_AppendResult(interp, "error reading color map", 
516
517
518
519
520
521
522

523

524
525
526
527

528

529
530
531

532

533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
{
    unsigned char *data, header[10];
    int got, length;
    MFile handle;

    data = Tcl_GetByteArrayFromObj(dataObj, &length);


    /* Header is a minimum of 10 bytes */

    if (length < 10) {
      return 0;
    }


    /* Check whether the data is Base64 encoded */


    if ((strncmp(GIF87a, (char *) data, 6) != 0) && 
	(strncmp(GIF89a, (char *) data, 6) != 0)) {

      /* Try interpreting the data as Base64 encoded */

      mInit((unsigned char *) data, &handle);
      got = Mread(header, 10, 1, &handle);
      if (got != 10
	      || ((strncmp(GIF87a, (char *) header, 6) != 0)
	      && (strncmp(GIF89a, (char *) header, 6) != 0))) {
	  return 0;
      }
    } else {
      memcpy((VOID *) header, (VOID *) data, 10);
    }
    *widthPtr = LM_to_uint(header[6],header[7]);
    *heightPtr = LM_to_uint(header[8],header[9]);
    return 1;
}

/*







>
|
>

|


>
|
>


|
>
|
>
|
|
|
|
|
|
|

|







526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
{
    unsigned char *data, header[10];
    int got, length;
    MFile handle;

    data = Tcl_GetByteArrayFromObj(dataObj, &length);

    /*
     * Header is a minimum of 10 bytes.
     */
    if (length < 10) {
	return 0;
    }

    /*
     * Check whether the data is Base64 encoded.
     */

    if ((strncmp(GIF87a, (char *) data, 6) != 0) && 
	    (strncmp(GIF89a, (char *) data, 6) != 0)) {
	/*
	 * Try interpreting the data as Base64 encoded
	 */
	mInit((unsigned char *) data, &handle);
	got = Mread(header, 10, 1, &handle);
	if (got != 10
		|| ((strncmp(GIF87a, (char *) header, 6) != 0)
		&& (strncmp(GIF89a, (char *) header, 6) != 0))) {
	    return 0;
	}
    } else {
	memcpy((VOID *) header, (VOID *) data, 10);
    }
    *widthPtr = LM_to_uint(header[6],header[7]);
    *heightPtr = LM_to_uint(header[8],header[9]);
    return 1;
}

/*
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
StringReadGIF(interp, dataObj, format, imageHandle,
	destX, destY, width, height, srcX, srcY)
    Tcl_Interp *interp;		/* interpreter for reporting errors in */
    Tcl_Obj *dataObj;		/* object containing the image */
    Tcl_Obj *format;		/* format object, or NULL */
    Tk_PhotoHandle imageHandle;	/* the image to write this data into */
    int destX, destY;		/* The rectangular region of the  */
    int  width, height;		/*   image to copy */
    int srcX, srcY;
{
    int result;
    MFile handle;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    Tcl_Channel dataSrc;
    char *data;

    /*
     * Check whether the data is Base64 encoded
     */
    data = (char *) Tcl_GetByteArrayFromObj(dataObj, NULL);
    if ((strncmp(GIF87a, data, 6) != 0) && 
	    (strncmp(GIF89a, data, 6) != 0)) {
	mInit((unsigned char *)data, &handle);
	tsdPtr->fromData = 1;
	dataSrc = (Tcl_Channel) &handle;
    } else {
	tsdPtr->fromData = 2;
	mInit((unsigned char *)data, &handle);
	dataSrc = (Tcl_Channel) &handle;
    }
    result = FileReadGIF(interp, dataSrc, "inline data",
	    format, imageHandle, destX, destY, width, height, srcX, srcY);
    tsdPtr->fromData = 0;
    return(result);
}

/*
 *----------------------------------------------------------------------
 *
 * ReadGIFHeader --
 *







|





|







|
<











|







586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607

608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
StringReadGIF(interp, dataObj, format, imageHandle,
	destX, destY, width, height, srcX, srcY)
    Tcl_Interp *interp;		/* interpreter for reporting errors in */
    Tcl_Obj *dataObj;		/* object containing the image */
    Tcl_Obj *format;		/* format object, or NULL */
    Tk_PhotoHandle imageHandle;	/* the image to write this data into */
    int destX, destY;		/* The rectangular region of the  */
    int width, height;		/*   image to copy */
    int srcX, srcY;
{
    int result;
    MFile handle;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    Tcl_Channel dataSrc;
    char *data;

    /*
     * Check whether the data is Base64 encoded
     */
    data = (char *) Tcl_GetByteArrayFromObj(dataObj, NULL);
    if ((strncmp(GIF87a, data, 6) != 0) && (strncmp(GIF89a, data, 6) != 0)) {

	mInit((unsigned char *)data, &handle);
	tsdPtr->fromData = 1;
	dataSrc = (Tcl_Channel) &handle;
    } else {
	tsdPtr->fromData = 2;
	mInit((unsigned char *)data, &handle);
	dataSrc = (Tcl_Channel) &handle;
    }
    result = FileReadGIF(interp, dataSrc, "inline data",
	    format, imageHandle, destX, destY, width, height, srcX, srcY);
    tsdPtr->fromData = 0;
    return result;
}

/*
 *----------------------------------------------------------------------
 *
 * ReadGIFHeader --
 *
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
 * The code below is copied from the giftoppm program and modified
 * just slightly.
 *-----------------------------------------------------------------
 */

static int
ReadColorMap(chan, number, buffer)
     Tcl_Channel chan;
     int number;
     unsigned char buffer[MAXCOLORMAPSIZE][4];
{
	int i;
	unsigned char rgb[3];

	for (i = 0; i < number; ++i) {
	    if (! ReadOK(chan, rgb, sizeof(rgb))) {
		return 0;
	    }
	    
	    if (buffer) {
		buffer[i][CM_RED] = rgb[0] ;
		buffer[i][CM_GREEN] = rgb[1] ;
		buffer[i][CM_BLUE] = rgb[2] ;
		buffer[i][CM_ALPHA] = 255 ;
	    }
	}
	return 1;
}



static int
DoExtension(chan, label, transparent)
     Tcl_Channel chan;
     int label;
     int *transparent;
{
    static unsigned char buf[256];
    int count;

    switch (label) {
	case 0x01:      /* Plain Text Extension */
	    break;
	    
	case 0xff:      /* Application Extension */
	    break;

	case 0xfe:      /* Comment Extension */
	    do {
		count = GetDataBlock(chan, (unsigned char*) buf);
	    } while (count > 0);
	    return count;

	case 0xf9:      /* Graphic Control Extension */
	    count = GetDataBlock(chan, (unsigned char*) buf);
	    if (count < 0) {
		return 1;
	    }
	    if ((buf[0] & 0x1) != 0) {
		*transparent = buf[3];
	    }

	    do {
		count = GetDataBlock(chan, (unsigned char*) buf);
	    } while (count > 0);
	    return count;
    }

    do {
	count = GetDataBlock(chan, (unsigned char*) buf);
    } while (count > 0);
    return count;
}

static int ZeroDataBlock = 0;

static int
GetDataBlock(chan, buf)
     Tcl_Channel chan;
     unsigned char *buf;
{
    unsigned char count;

    if (! ReadOK(chan, &count,1)) {
	return -1;
    }








|
|
|

|
|

|
|
|
|
|
|
|
|
|
|
|
|
|






|
|
|





|
|
|
|
|

|
|
|
|
|

|
|
|
|
|
|
|
|

|
|
|
|












|
|







667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
 * The code below is copied from the giftoppm program and modified
 * just slightly.
 *-----------------------------------------------------------------
 */

static int
ReadColorMap(chan, number, buffer)
    Tcl_Channel chan;
    int number;
    unsigned char buffer[MAXCOLORMAPSIZE][4];
{
    int i;
    unsigned char rgb[3];

    for (i = 0; i < number; ++i) {
	if (! ReadOK(chan, rgb, sizeof(rgb))) {
	    return 0;
	}

	if (buffer) {
	    buffer[i][CM_RED] = rgb[0] ;
	    buffer[i][CM_GREEN] = rgb[1] ;
	    buffer[i][CM_BLUE] = rgb[2] ;
	    buffer[i][CM_ALPHA] = 255 ;
	}
    }
    return 1;
}



static int
DoExtension(chan, label, transparent)
    Tcl_Channel chan;
    int label;
    int *transparent;
{
    static unsigned char buf[256];
    int count;

    switch (label) {
    case 0x01:		/* Plain Text Extension */
	break;

    case 0xff:		/* Application Extension */
	break;

    case 0xfe:		/* Comment Extension */
	do {
	    count = GetDataBlock(chan, (unsigned char*) buf);
	} while (count > 0);
	return count;

    case 0xf9:		/* Graphic Control Extension */
	count = GetDataBlock(chan, (unsigned char*) buf);
	if (count < 0) {
	    return 1;
	}
	if ((buf[0] & 0x1) != 0) {
	    *transparent = buf[3];
	}

	do {
	    count = GetDataBlock(chan, (unsigned char*) buf);
	} while (count > 0);
	return count;
    }

    do {
	count = GetDataBlock(chan, (unsigned char*) buf);
    } while (count > 0);
    return count;
}

static int ZeroDataBlock = 0;

static int
GetDataBlock(chan, buf)
    Tcl_Channel chan;
    unsigned char *buf;
{
    unsigned char count;

    if (! ReadOK(chan, &count,1)) {
	return -1;
    }

749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819

820

821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842

843

844
845
846
847

848

849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866

867

868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890

/*
 *----------------------------------------------------------------------
 *
 * ReadImage --
 *
 *	Process a GIF image from a given source, with a given height,
 *      width, transparency, etc.
 *
 *      This code is based on the code found in the ImageMagick GIF decoder,
 *      which is (c) 2000 ImageMagick Studio.
 *
 *      Some thoughts on our implementation:
 *      It sure would be nice if ReadImage didn't take 11 parameters!  I think
 *      that if we were smarter, we could avoid doing that.
 *
 *      Possible further optimizations:  we could pull the GetCode function
 *      directly into ReadImage, which would improve our speed.
 *
 * Results:
 *	Processes a GIF image and loads the pixel data into a memory array.
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

static int
ReadImage(interp, imagePtr, chan, len, rows, cmap,
	width, height, srcX, srcY, interlace, transparent)
     Tcl_Interp *interp;
     char *imagePtr;
     Tcl_Channel chan;
     int len, rows;
     unsigned char cmap[MAXCOLORMAPSIZE][4];
     int width, height;
     int srcX, srcY;
     int interlace;
     int transparent;
{
    unsigned char initialCodeSize;
    int v;
    int xpos = 0, ypos = 0, pass = 0, i;
    register char *pixelPtr;
    CONST static int interlaceStep[] = { 8, 8, 4, 2 };
    CONST static int interlaceStart[] = { 0, 4, 2, 1 };
    unsigned short prefix[(1 << MAX_LWZ_BITS)];
    unsigned char  append[(1 << MAX_LWZ_BITS)];
    unsigned char  stack[(1 << MAX_LWZ_BITS)*2];
    register unsigned char *top;
    int codeSize, clearCode, inCode, endCode, oldCode, maxCode,
	code, firstCode;
    
    /*
     *  Initialize the decoder
     */
    if (! ReadOK(chan, &initialCodeSize, 1))  {
	Tcl_AppendResult(interp, "error reading GIF image: ",
		Tcl_PosixError(interp), (char *) NULL);
	return TCL_ERROR;
    }
    if (transparent!=-1) {
	cmap[transparent][CM_RED] = 0;
	cmap[transparent][CM_GREEN] = 0;
	cmap[transparent][CM_BLUE] = 0;
	cmap[transparent][CM_ALPHA] = 0;
    }

    pixelPtr = imagePtr;


    /* Initialize the decoder */

    /* Set values for "special" numbers:
     * clear code	reset the decoder
     * end code		stop decoding
     * code size	size of the next code to retrieve
     * max code		next available table position
     */
    clearCode   = 1 << (int) initialCodeSize;
    endCode     = clearCode + 1;
    codeSize    = (int) initialCodeSize + 1;
    maxCode     = clearCode + 2;
    oldCode     = -1;
    firstCode   = -1;
    
    memset((void *)prefix, 0, (1 << MAX_LWZ_BITS) * sizeof(short));
    memset((void *)append, 0, (1 << MAX_LWZ_BITS) * sizeof(char));
    for (i = 0; i < clearCode; i++) {
	append[i] = i;
    }
    top = stack;

    GetCode(chan, 0, 1);


    /* Read until we finish the image */

    for (i = 0, ypos = 0; i < rows; i++) {
	for (xpos = 0; xpos < len; ) {

	    if (top == stack) {

		/* Bummer -- our stack is empty.  Now we have to work! */

		code = GetCode(chan, codeSize, 0);
		if (code < 0) {
		    return TCL_OK;
		}

		if (code > maxCode || code == endCode) {
		    /*
		     * If we're doing things right, we should never
		     * receive a code that is greater than our current
		     * maximum code.  If we do, bail, because our decoder
		     * does not yet have that code set up.
		     *
		     * If the code is the magic endCode value, quit.
		     */
		    return TCL_OK;
		}

		if (code == clearCode) {

		    /* Reset the decoder */

		    codeSize    = initialCodeSize + 1;
		    maxCode     = clearCode + 2;
		    oldCode     = -1;
		    continue;
		}
		
		if (oldCode == -1) {
		    /*
		     * Last pass reset the decoder, so the first code we
		     * see must be a singleton.  Seed the stack with it,
		     * and set up the old/first code pointers for
		     * insertion into the string table.  We can't just
		     * roll this into the clearCode test above, because
		     * at that point we have not yet read the next code.
		     */
		    *top++=append[code];
		    oldCode = code;
		    firstCode = code;
		    continue;
		}
		
		inCode = code;








|

|
|

|
|
|

|
|













|
|
|
|
|
|
|
|
|











|
|
|








|








>
|
>
|





|
|
|
|
|
|










>
|
>




>
|
>


















>
|
>
|
|
|












|







764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913

/*
 *----------------------------------------------------------------------
 *
 * ReadImage --
 *
 *	Process a GIF image from a given source, with a given height,
 *	width, transparency, etc.
 *
 *	This code is based on the code found in the ImageMagick GIF decoder,
 *	which is (c) 2000 ImageMagick Studio.
 *
 *	Some thoughts on our implementation:
 *	It sure would be nice if ReadImage didn't take 11 parameters!  I think
 *	that if we were smarter, we could avoid doing that.
 *
 *	Possible further optimizations:  we could pull the GetCode function
 *	directly into ReadImage, which would improve our speed.
 *
 * Results:
 *	Processes a GIF image and loads the pixel data into a memory array.
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

static int
ReadImage(interp, imagePtr, chan, len, rows, cmap,
	width, height, srcX, srcY, interlace, transparent)
    Tcl_Interp *interp;
    char *imagePtr;
    Tcl_Channel chan;
    int len, rows;
    unsigned char cmap[MAXCOLORMAPSIZE][4];
    int width, height;
    int srcX, srcY;
    int interlace;
    int transparent;
{
    unsigned char initialCodeSize;
    int v;
    int xpos = 0, ypos = 0, pass = 0, i;
    register char *pixelPtr;
    CONST static int interlaceStep[] = { 8, 8, 4, 2 };
    CONST static int interlaceStart[] = { 0, 4, 2, 1 };
    unsigned short prefix[(1 << MAX_LWZ_BITS)];
    unsigned char  append[(1 << MAX_LWZ_BITS)];
    unsigned char  stack[(1 << MAX_LWZ_BITS)*2];
    register unsigned char *top;
    int codeSize, clearCode, inCode, endCode, oldCode, maxCode;
    int code, firstCode;

    /*
     *  Initialize the decoder
     */
    if (! ReadOK(chan, &initialCodeSize, 1))  {
	Tcl_AppendResult(interp, "error reading GIF image: ",
		Tcl_PosixError(interp), (char *) NULL);
	return TCL_ERROR;
    }
    if (transparent != -1) {
	cmap[transparent][CM_RED] = 0;
	cmap[transparent][CM_GREEN] = 0;
	cmap[transparent][CM_BLUE] = 0;
	cmap[transparent][CM_ALPHA] = 0;
    }

    pixelPtr = imagePtr;

    /*
     * Initialize the decoder.
     *
     * Set values for "special" numbers:
     * clear code	reset the decoder
     * end code		stop decoding
     * code size	size of the next code to retrieve
     * max code		next available table position
     */
    clearCode = 1 << (int) initialCodeSize;
    endCode = clearCode + 1;
    codeSize = (int) initialCodeSize + 1;
    maxCode = clearCode + 2;
    oldCode = -1;
    firstCode = -1;
    
    memset((void *)prefix, 0, (1 << MAX_LWZ_BITS) * sizeof(short));
    memset((void *)append, 0, (1 << MAX_LWZ_BITS) * sizeof(char));
    for (i = 0; i < clearCode; i++) {
	append[i] = i;
    }
    top = stack;

    GetCode(chan, 0, 1);

    /*
     * Read until we finish the image
     */
    for (i = 0, ypos = 0; i < rows; i++) {
	for (xpos = 0; xpos < len; ) {

	    if (top == stack) {
		/*
		 * Bummer -- our stack is empty.  Now we have to work!
		 */
		code = GetCode(chan, codeSize, 0);
		if (code < 0) {
		    return TCL_OK;
		}

		if (code > maxCode || code == endCode) {
		    /*
		     * If we're doing things right, we should never
		     * receive a code that is greater than our current
		     * maximum code.  If we do, bail, because our decoder
		     * does not yet have that code set up.
		     *
		     * If the code is the magic endCode value, quit.
		     */
		    return TCL_OK;
		}

		if (code == clearCode) {
		    /*
		     * Reset the decoder.
		     */
		    codeSize = initialCodeSize + 1;
		    maxCode = clearCode + 2;
		    oldCode = -1;
		    continue;
		}
		
		if (oldCode == -1) {
		    /*
		     * Last pass reset the decoder, so the first code we
		     * see must be a singleton.  Seed the stack with it,
		     * and set up the old/first code pointers for
		     * insertion into the string table.  We can't just
		     * roll this into the clearCode test above, because
		     * at that point we have not yet read the next code.
		     */
		    *top++ = append[code];
		    oldCode = code;
		    firstCode = code;
		    continue;
		}
		
		inCode = code;

912
913
914
915
916
917
918

919

920
921

922

923
924
925
926

927
928
929
930
931
932
933
934
935
936
937
938

939

940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959

960

961
962
963
964
965
966
967
		 * If there's no more room in our string table, quit.
		 * Otherwise, add a new string to the table
		 */
		if (maxCode >= (1 << MAX_LWZ_BITS)) {
		    return TCL_OK;
		}


		/* Push the head of the string onto the stack */

		*top++ = firstCode;


		/* Add a new string to the string table */

		prefix[maxCode] = oldCode;
		append[maxCode] = firstCode;
		maxCode++;


		/* maxCode tells us the maximum code value we can accept.
		 * If we see that we need more bits to represent it than
		 * we are requesting from the unpacker, we need to increase
		 * the number we ask for.
		 */
		if ((maxCode >= (1 << codeSize))
			&& (maxCode < (1<<MAX_LWZ_BITS))) {
		    codeSize++;
		}
		oldCode = inCode;
	    }


	    /* Pop the next color index off the stack */

	    v = *(--top);
	    if (v < 0) {
		return TCL_OK;
	    }

	    /* 
	     * If pixelPtr is null, we're skipping this image (presumably
	     * there are more in the file and we will be called to read 
	     * one of them later)
	     */
	    *pixelPtr++ = cmap[v][CM_RED];
	    *pixelPtr++ = cmap[v][CM_GREEN];
	    *pixelPtr++ = cmap[v][CM_BLUE];
	    if (transparent >= 0) {
		*pixelPtr++ = cmap[v][CM_ALPHA];
	    }
	    xpos++;

	}


	/* If interlacing, the next ypos is not just +1 */

	if (interlace) {
	    ypos += interlaceStep[pass];
	    while (ypos >= height) {
		pass++;
		if (pass > 3) {
		    return TCL_OK;
		}







>
|
>


>
|
>




>
|











>
|
>




















>
|
>







935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
		 * If there's no more room in our string table, quit.
		 * Otherwise, add a new string to the table
		 */
		if (maxCode >= (1 << MAX_LWZ_BITS)) {
		    return TCL_OK;
		}

		/*
		 * Push the head of the string onto the stack.
		 */
		*top++ = firstCode;

		/*
		 * Add a new string to the string table
		 */
		prefix[maxCode] = oldCode;
		append[maxCode] = firstCode;
		maxCode++;

		/*
		 * maxCode tells us the maximum code value we can accept.
		 * If we see that we need more bits to represent it than
		 * we are requesting from the unpacker, we need to increase
		 * the number we ask for.
		 */
		if ((maxCode >= (1 << codeSize))
			&& (maxCode < (1<<MAX_LWZ_BITS))) {
		    codeSize++;
		}
		oldCode = inCode;
	    }

	    /*
	     * Pop the next color index off the stack.
	     */
	    v = *(--top);
	    if (v < 0) {
		return TCL_OK;
	    }

	    /* 
	     * If pixelPtr is null, we're skipping this image (presumably
	     * there are more in the file and we will be called to read 
	     * one of them later)
	     */
	    *pixelPtr++ = cmap[v][CM_RED];
	    *pixelPtr++ = cmap[v][CM_GREEN];
	    *pixelPtr++ = cmap[v][CM_BLUE];
	    if (transparent >= 0) {
		*pixelPtr++ = cmap[v][CM_ALPHA];
	    }
	    xpos++;

	}

	/*
	 * If interlacing, the next ypos is not just +1
	 */
	if (interlace) {
	    ypos += interlaceStep[pass];
	    while (ypos >= height) {
		pass++;
		if (pass > 3) {
		    return TCL_OK;
		}
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022

1023

1024
1025
1026
1027
1028
1029
1030
1031
1032

1033

1034
1035
1036
1037

1038

1039
1040
1041
1042
1043
1044
1045

1046

1047
1048
1049
1050
1051
1052
1053

1054

1055
1056

1057

1058
1059
1060
1061
1062
1063
1064


/*
 *----------------------------------------------------------------------
 *
 * GetCode --
 *
 *      Extract the next compression code from the file.  In GIF's, the
 *      compression codes are between 3 and 12 bits long and are then
 *      packed into 8 bit bytes, left to right, for example:
 *                 bbbaaaaa
 *                 dcccccbb
 *                 eeeedddd
 *                 ...
 *      We use a byte buffer read from the file and a sliding window
 *      to unpack the bytes.  Thanks to ImageMagick for the sliding window
 *      idea.
 *      args:  chan         the channel to read from
 *             code_size    size of the code to extract
 *             flag         boolean indicating whether the extractor
 *                          should be reset or not
 *
 * Results:
 *	code                the next compression code
 *
 * Side effects:
 *	May consume more input from chan.
 *
 *----------------------------------------------------------------------
 */

static int
GetCode(chan, code_size, flag)
     Tcl_Channel chan;
     int code_size;
     int flag;
{
    static unsigned char buf[280];
    static int bytes = 0, done;
    static unsigned char *c;

    static unsigned int window;
    static int bitsInWindow = 0;
    int ret;
    
    if (flag) {

	/* Initialize the decoder */

	bitsInWindow = 0;
	bytes = 0;
	window = 0;
	done = 0;
	c = NULL;
	return 0;
    }

    while (bitsInWindow < code_size) {

	/* Not enough bits in our window to cover the request */

	if (done) {
	    return -1;
	}
	if (bytes == 0) {

	    /* Not enough bytes in our buffer to add to the window */

	    bytes = GetDataBlock(chan, buf);
	    c = buf;
	    if (bytes <= 0) {
		done = 1;
		break;
	    }
	}

	/* Tack another byte onto the window, see if that's enough */

	window += (*c) << bitsInWindow;
	c++;
	bitsInWindow += 8;
	bytes--;
    }



    /* The next code will always be the last code_size bits of the window */

    ret = window & ((1 << code_size) - 1);
    

    /* Shift data in the window to put the next code at the end */

    window >>= code_size;
    bitsInWindow -= code_size;
    return ret;
}

/*
 *----------------------------------------------------------------------







|
|
|
|
|
|
|
|
|
|
|
|
|
|


|









|
|
|










>
|
>









>
|
>




>
|
>







>
|
>







>
|
>


>
|
>







1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108


/*
 *----------------------------------------------------------------------
 *
 * GetCode --
 *
 *	Extract the next compression code from the file.  In GIF's, the
 *	compression codes are between 3 and 12 bits long and are then
 *	packed into 8 bit bytes, left to right, for example:
 *		bbbaaaaa
 *		dcccccbb
 *		eeeedddd
 *		...
 *	We use a byte buffer read from the file and a sliding window
 *	to unpack the bytes.  Thanks to ImageMagick for the sliding window
 *	idea.
 *	args:  chan	    the channel to read from
 *	       code_size    size of the code to extract
 *	       flag	    boolean indicating whether the extractor
 *			    should be reset or not
 *
 * Results:
 *	code		    the next compression code
 *
 * Side effects:
 *	May consume more input from chan.
 *
 *----------------------------------------------------------------------
 */

static int
GetCode(chan, code_size, flag)
    Tcl_Channel chan;
    int code_size;
    int flag;
{
    static unsigned char buf[280];
    static int bytes = 0, done;
    static unsigned char *c;

    static unsigned int window;
    static int bitsInWindow = 0;
    int ret;
    
    if (flag) {
	/*
	 * Initialize the decoder.
	 */
	bitsInWindow = 0;
	bytes = 0;
	window = 0;
	done = 0;
	c = NULL;
	return 0;
    }

    while (bitsInWindow < code_size) {
	/*
	 * Not enough bits in our window to cover the request.
	 */
	if (done) {
	    return -1;
	}
	if (bytes == 0) {
	    /*
	     * Not enough bytes in our buffer to add to the window.
	     */
	    bytes = GetDataBlock(chan, buf);
	    c = buf;
	    if (bytes <= 0) {
		done = 1;
		break;
	    }
	}
	/*
	 * Tack another byte onto the window, see if that's enough.
	 */
	window += (*c) << bitsInWindow;
	c++;
	bitsInWindow += 8;
	bytes--;
    }


    /*
     * The next code will always be the last code_size bits of the window.
     */
    ret = window & ((1 << code_size) - 1);
    
    /*
     * Shift data in the window to put the next code at the end.
     */
    window >>= code_size;
    bitsInWindow -= code_size;
    return ret;
}

/*
 *----------------------------------------------------------------------
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
 *  The base64 handle will change state.
 *
 *----------------------------------------------------------------------
 */

static int
Mgetc(handle)
   MFile *handle;		/* Handle containing decoder data and state. */
{
    int c;
    int result = 0;		/* Initialization needed only to prevent
				 * gcc compiler warning. */
     
    if (handle->state == GIF_DONE) {
	return(GIF_DONE);
    }

    do {
	c = char64(*handle->data);
	handle->data++;
    } while (c==GIF_SPACE);

    if (c>GIF_SPECIAL) {
	handle->state = GIF_DONE;
	return handle->c;
    }

    switch (handle->state++) {
	case 0:
	   handle->c = c<<2;
	   result = Mgetc(handle);
	   break;
	case 1:
	   result = handle->c | (c>>4);
	   handle->c = (c&0xF)<<4;
	   break;
	case 2:
	   result = handle->c | (c>>2);
	   handle->c = (c&0x3) << 6;
	   break;
	case 3:
	   result = handle->c | c;
	   handle->state = 0;
	   break;
    }
    return(result);
}

/*
 *----------------------------------------------------------------------
 *
 * char64 --
 *







|




|

|





|







|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|







1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
 *  The base64 handle will change state.
 *
 *----------------------------------------------------------------------
 */

static int
Mgetc(handle)
   MFile *handle;		/* Handle containing decoder data and state */
{
    int c;
    int result = 0;		/* Initialization needed only to prevent
				 * gcc compiler warning. */

    if (handle->state == GIF_DONE) {
	return GIF_DONE;
    }

    do {
	c = char64(*handle->data);
	handle->data++;
    } while (c == GIF_SPACE);

    if (c>GIF_SPECIAL) {
	handle->state = GIF_DONE;
	return handle->c;
    }

    switch (handle->state++) {
    case 0:
	handle->c = c<<2;
	result = Mgetc(handle);
	break;
    case 1:
	result = handle->c | (c>>4);
	handle->c = (c&0xF)<<4;
	break;
    case 2:
	result = handle->c | (c>>2);
	handle->c = (c&0x3) << 6;
	break;
    case 3:
	result = handle->c | c;
	handle->state = 0;
	break;
    }
    return result;
}

/*
 *----------------------------------------------------------------------
 *
 * char64 --
 *
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233

1234

1235

1236

1237
1238
1239
1240
1241
1242
1243
 */

static int
char64(c)
int c;
{
    switch(c) {
        case 'A': return(0);  case 'B': return(1);  case 'C': return(2);
        case 'D': return(3);  case 'E': return(4);  case 'F': return(5);
        case 'G': return(6);  case 'H': return(7);  case 'I': return(8);
        case 'J': return(9);  case 'K': return(10); case 'L': return(11);
        case 'M': return(12); case 'N': return(13); case 'O': return(14);
        case 'P': return(15); case 'Q': return(16); case 'R': return(17);
        case 'S': return(18); case 'T': return(19); case 'U': return(20);
        case 'V': return(21); case 'W': return(22); case 'X': return(23);
        case 'Y': return(24); case 'Z': return(25); case 'a': return(26);
        case 'b': return(27); case 'c': return(28); case 'd': return(29);
        case 'e': return(30); case 'f': return(31); case 'g': return(32);
        case 'h': return(33); case 'i': return(34); case 'j': return(35);
        case 'k': return(36); case 'l': return(37); case 'm': return(38);
        case 'n': return(39); case 'o': return(40); case 'p': return(41);
        case 'q': return(42); case 'r': return(43); case 's': return(44);
        case 't': return(45); case 'u': return(46); case 'v': return(47);
        case 'w': return(48); case 'x': return(49); case 'y': return(50);
        case 'z': return(51); case '0': return(52); case '1': return(53);
        case '2': return(54); case '3': return(55); case '4': return(56);
        case '5': return(57); case '6': return(58); case '7': return(59);
        case '8': return(60); case '9': return(61); case '+': return(62);
        case '/': return(63);

	case ' ': case '\t': case '\n': case '\r': case '\f': return(GIF_SPACE);

	case '=':  return(GIF_PAD);

	case '\0': return(GIF_DONE);

	default: return(GIF_BAD);

    }
}

/*
 *----------------------------------------------------------------------
 *
 * Fread --







|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
>
|
>
|
>
|
>







1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
 */

static int
char64(c)
int c;
{
    switch(c) {
    case 'A': return 0;  case 'B': return 1;  case 'C': return 2;
    case 'D': return 3;  case 'E': return 4;  case 'F': return 5;
    case 'G': return 6;  case 'H': return 7;  case 'I': return 8;
    case 'J': return 9;  case 'K': return 10; case 'L': return 11;
    case 'M': return 12; case 'N': return 13; case 'O': return 14;
    case 'P': return 15; case 'Q': return 16; case 'R': return 17;
    case 'S': return 18; case 'T': return 19; case 'U': return 20;
    case 'V': return 21; case 'W': return 22; case 'X': return 23;
    case 'Y': return 24; case 'Z': return 25; case 'a': return 26;
    case 'b': return 27; case 'c': return 28; case 'd': return 29;
    case 'e': return 30; case 'f': return 31; case 'g': return 32;
    case 'h': return 33; case 'i': return 34; case 'j': return 35;
    case 'k': return 36; case 'l': return 37; case 'm': return 38;
    case 'n': return 39; case 'o': return 40; case 'p': return 41;
    case 'q': return 42; case 'r': return 43; case 's': return 44;
    case 't': return 45; case 'u': return 46; case 'v': return 47;
    case 'w': return 48; case 'x': return 49; case 'y': return 50;
    case 'z': return 51; case '0': return 52; case '1': return 53;
    case '2': return 54; case '3': return 55; case '4': return 56;
    case '5': return 57; case '6': return 58; case '7': return 59;
    case '8': return 60; case '9': return 61; case '+': return 62;
    case '/': return 63;

    case ' ': case '\t': case '\n': case '\r': case '\f':
	return GIF_SPACE;
    case '=':
	return GIF_PAD;
    case '\0':
	return GIF_DONE;
    default:
	return GIF_BAD;
    }
}

/*
 *----------------------------------------------------------------------
 *
 * Fread --
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
static int
Fread(dst, hunk, count, chan)
    unsigned char *dst;		/* where to put the result */
    size_t hunk,count;		/* how many */
    Tcl_Channel chan;
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    MFile *handle;

    switch (tsdPtr->fromData) {
      case 1:
	return(Mread(dst, hunk, count, (MFile *) chan));
      case 2:
	handle = (MFile *) chan;
	memcpy((VOID *)dst, (VOID *) handle->data, (size_t) (hunk * count));
	handle->data += hunk * count;
	return((int) (hunk * count));
      default:
	return Tcl_Read(chan, (char *) dst, (int) (hunk * count));
    }
}


/*
 * ChanWriteGIF - writes a image in GIF format.
 *-------------------------------------------------------------------------
 * Author:          		Lolo
 *                              Engeneering Projects Area 
 *	            		Department of Mining 
 *                  		University of Oviedo
 * e-mail			[email protected]
 *                  		[email protected]
 * Date:            		Fri September 20 1996
 *
 * Modified for transparency handling (gif89a) and miGIF compression
 * by Jan Nijtmans <[email protected]>
 *
 *----------------------------------------------------------------------
 * FileWriteGIF-
 *







|



|
|
|



|
|








|
|
|
|

|
|







1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
static int
Fread(dst, hunk, count, chan)
    unsigned char *dst;		/* where to put the result */
    size_t hunk,count;		/* how many */
    Tcl_Channel chan;
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    MFile *handle;

    switch (tsdPtr->fromData) {
    case 1:
	return Mread(dst, hunk, count, (MFile *) chan);
    case 2:
	handle = (MFile *) chan;
	memcpy((VOID *)dst, (VOID *) handle->data, (size_t) (hunk * count));
	handle->data += hunk * count;
	return (int)(hunk * count);
    default:
	return Tcl_Read(chan, (char *) dst, (int) (hunk * count));
    }
}


/*
 * ChanWriteGIF - writes a image in GIF format.
 *-------------------------------------------------------------------------
 * Author:			Lolo
 *				Engeneering Projects Area 
 *				Department of Mining 
 *				University of Oviedo
 * e-mail			[email protected]
 *				[email protected]
 * Date:			Fri September 20 1996
 *
 * Modified for transparency handling (gif89a) and miGIF compression
 * by Jan Nijtmans <[email protected]>
 *
 *----------------------------------------------------------------------
 * FileWriteGIF-
 *
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321

 /*
  *  Types, defines and variables needed to write and compress a GIF.
  */

typedef int (* ifunptr) _ANSI_ARGS_((void));	

#define LSB(a)                  ((unsigned char) (((short)(a)) & 0x00FF))
#define MSB(a)                  ((unsigned char) (((short)(a)) >> 8))

#define GIFBITS 12
#define HSIZE  5003            /* 80% occupancy */

static int ssize;
static int csize;
static int rsize;
static unsigned char *pixelo;
static int pixelSize;
static int pixelPitch;







|
|


|







1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369

 /*
  *  Types, defines and variables needed to write and compress a GIF.
  */

typedef int (* ifunptr) _ANSI_ARGS_((void));	

#define LSB(a)			((unsigned char) (((short)(a)) & 0x00FF))
#define MSB(a)			((unsigned char) (((short)(a)) >> 8))

#define GIFBITS 12
#define HSIZE  5003		/* 80% occupancy */

static int ssize;
static int csize;
static int rsize;
static unsigned char *pixelo;
static int pixelSize;
static int pixelPitch;
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
static int nuevo _ANSI_ARGS_((int red, int green ,int blue,
		unsigned char mapa[MAXCOLORMAPSIZE][3]));
static void savemap _ANSI_ARGS_((Tk_PhotoImageBlock *blockPtr,
		unsigned char mapa[MAXCOLORMAPSIZE][3]));
static int ReadValue _ANSI_ARGS_((void));

static int
FileWriteGIF (interp, filename, format, blockPtr)
    Tcl_Interp *interp;		/* Interpreter to use for reporting errors. */
    CONST char	*filename;
    Tcl_Obj	*format;
    Tk_PhotoImageBlock *blockPtr;
{
    Tcl_Channel chan = NULL;
    int result;







|







1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
static int nuevo _ANSI_ARGS_((int red, int green ,int blue,
		unsigned char mapa[MAXCOLORMAPSIZE][3]));
static void savemap _ANSI_ARGS_((Tk_PhotoImageBlock *blockPtr,
		unsigned char mapa[MAXCOLORMAPSIZE][3]));
static int ReadValue _ANSI_ARGS_((void));

static int
FileWriteGIF(interp, filename, format, blockPtr)
    Tcl_Interp *interp;		/* Interpreter to use for reporting errors. */
    CONST char	*filename;
    Tcl_Obj	*format;
    Tk_PhotoImageBlock *blockPtr;
{
    Tcl_Channel chan = NULL;
    int result;
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417


1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435

1436

1437
1438
1439
1440

1441

1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
    long  width,height,x;
    unsigned char c;
    unsigned int top,left;

    top = 0;
    left = 0;

    pixelSize=blockPtr->pixelSize;
    greenOffset=blockPtr->offset[1]-blockPtr->offset[0];
    blueOffset=blockPtr->offset[2]-blockPtr->offset[0];
    alphaOffset = blockPtr->offset[0];
    if (alphaOffset < blockPtr->offset[2]) {
	alphaOffset = blockPtr->offset[2];
    }
    if (++alphaOffset < pixelSize) {
	alphaOffset -= blockPtr->offset[0];
    } else {
	alphaOffset = 0;
    }

    Tcl_Write(handle, (char *) (alphaOffset ? GIF89a : GIF87a), 6);

    for (x=0;x<MAXCOLORMAPSIZE;x++) {
	mapa[x][CM_RED] = 255;
	mapa[x][CM_GREEN] = 255;
	mapa[x][CM_BLUE] = 255;
    }


    width=blockPtr->width;
    height=blockPtr->height;
    pixelo=blockPtr->pixelPtr + blockPtr->offset[0];
    pixelPitch=blockPtr->pitch;
    savemap(blockPtr,mapa);
    if (num>=MAXCOLORMAPSIZE) {
	Tcl_AppendResult(interp, "too many colors", (char *) NULL);
	return TCL_ERROR;
    }
    if (num<2) num=2;


    c=LSB(width);
    Mputc(c,handle);
    c=MSB(width);
    Mputc(c,handle);
    c=LSB(height);
    Mputc(c,handle);
    c=MSB(height);
    Mputc(c,handle);

    resolution = 0;
    while (num >> resolution) {
	resolution++;
    }
    c = 111 + resolution * 17;
    Mputc(c,handle);

    num = 1 << resolution;


    /*  background color */


    c = 0;
    Mputc(c,handle);


    /*  zero for future expansion  */


    Mputc(c,handle);

    for (x=0; x<num ;x++) {
	c = mapa[x][CM_RED];
	Mputc(c,handle);
	c = mapa[x][CM_GREEN];
	Mputc(c,handle);
	c = mapa[x][CM_BLUE];
	Mputc(c,handle);
    }

    /*
     * Write out extension for transparent colour index, if necessary.
     */

    if (alphaOffset) {
	c = GIF_EXTENSION;
	Mputc(c, handle);
	Tcl_Write(handle, "\371\4\1\0\0\0", 7);
    }

    c = GIF_START;
    Mputc(c,handle);
    c=LSB(top);
    Mputc(c,handle);
    c=MSB(top);
    Mputc(c,handle);
    c=LSB(left);
    Mputc(c,handle);
    c=MSB(left);
    Mputc(c,handle);

    c=LSB(width);
    Mputc(c,handle);
    c=MSB(width);
    Mputc(c,handle);

    c=LSB(height);
    Mputc(c,handle);
    c=MSB(height);
    Mputc(c,handle);

    c=0;
    Mputc(c,handle);
    c=resolution;
    Mputc(c,handle);

    ssize = rsize = blockPtr->width;
    csize = blockPtr->height;
    compress(resolution+1, handle, ReadValue);

    c = 0; 







|
|
|












|






|
|
|
|

|



|
>
>
|

|

|

|











>
|
>




>
|
>



|




















|

|

|

|


|

|


|

|


|

|







1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
    long  width,height,x;
    unsigned char c;
    unsigned int top,left;

    top = 0;
    left = 0;

    pixelSize = blockPtr->pixelSize;
    greenOffset = blockPtr->offset[1]-blockPtr->offset[0];
    blueOffset = blockPtr->offset[2]-blockPtr->offset[0];
    alphaOffset = blockPtr->offset[0];
    if (alphaOffset < blockPtr->offset[2]) {
	alphaOffset = blockPtr->offset[2];
    }
    if (++alphaOffset < pixelSize) {
	alphaOffset -= blockPtr->offset[0];
    } else {
	alphaOffset = 0;
    }

    Tcl_Write(handle, (char *) (alphaOffset ? GIF89a : GIF87a), 6);

    for (x=0 ; x<MAXCOLORMAPSIZE ; x++) {
	mapa[x][CM_RED] = 255;
	mapa[x][CM_GREEN] = 255;
	mapa[x][CM_BLUE] = 255;
    }


    width = blockPtr->width;
    height = blockPtr->height;
    pixelo = blockPtr->pixelPtr + blockPtr->offset[0];
    pixelPitch = blockPtr->pitch;
    savemap(blockPtr,mapa);
    if (num >= MAXCOLORMAPSIZE) {
	Tcl_AppendResult(interp, "too many colors", (char *) NULL);
	return TCL_ERROR;
    }
    if (num<2) {
	num = 2;
    }
    c = LSB(width);
    Mputc(c,handle);
    c = MSB(width);
    Mputc(c,handle);
    c = LSB(height);
    Mputc(c,handle);
    c = MSB(height);
    Mputc(c,handle);

    resolution = 0;
    while (num >> resolution) {
	resolution++;
    }
    c = 111 + resolution * 17;
    Mputc(c,handle);

    num = 1 << resolution;

    /*
     * background color
     */

    c = 0;
    Mputc(c,handle);

    /*
     * zero for future expansion.
     */

    Mputc(c,handle);

    for (x=0 ; x<num ; x++) {
	c = mapa[x][CM_RED];
	Mputc(c,handle);
	c = mapa[x][CM_GREEN];
	Mputc(c,handle);
	c = mapa[x][CM_BLUE];
	Mputc(c,handle);
    }

    /*
     * Write out extension for transparent colour index, if necessary.
     */

    if (alphaOffset) {
	c = GIF_EXTENSION;
	Mputc(c, handle);
	Tcl_Write(handle, "\371\4\1\0\0\0", 7);
    }

    c = GIF_START;
    Mputc(c,handle);
    c = LSB(top);
    Mputc(c,handle);
    c = MSB(top);
    Mputc(c,handle);
    c = LSB(left);
    Mputc(c,handle);
    c = MSB(left);
    Mputc(c,handle);

    c = LSB(width);
    Mputc(c,handle);
    c = MSB(width);
    Mputc(c,handle);

    c = LSB(height);
    Mputc(c,handle);
    c = MSB(height);
    Mputc(c,handle);

    c = 0;
    Mputc(c,handle);
    c = resolution;
    Mputc(c,handle);

    ssize = rsize = blockPtr->width;
    csize = blockPtr->height;
    compress(resolution+1, handle, ReadValue);

    c = 0; 
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526

1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601

1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615

1616
1617
1618
1619
1620
1621
1622
1623
1624
1625

1626
1627
1628
1629

1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643

1644
1645
1646
1647
1648
1649
1650
color(red, green, blue, mapa)
    int red;
    int green;
    int blue;
    unsigned char mapa[MAXCOLORMAPSIZE][3];
{
    int x;
    for (x=(alphaOffset != 0);x<=MAXCOLORMAPSIZE;x++) {
	if ((mapa[x][CM_RED]==red) && (mapa[x][CM_GREEN]==green) &&
		(mapa[x][CM_BLUE]==blue)) {
	    return x;
	}
    }
    return -1;
}


static int
nuevo(red, green, blue, mapa)
    int red,green,blue;
    unsigned char mapa[MAXCOLORMAPSIZE][3];
{
    int x;
    for (x=(alphaOffset != 0);x<=num;x++) {

	if ((mapa[x][CM_RED]==red) && (mapa[x][CM_GREEN]==green) &&
		(mapa[x][CM_BLUE]==blue)) {
	    return 0;
	}
    }
    return 1;
}

static void
savemap(blockPtr,mapa)
    Tk_PhotoImageBlock *blockPtr;
    unsigned char mapa[MAXCOLORMAPSIZE][3];
{
    unsigned char  *colores;
    int x,y;
    unsigned char  red,green,blue;

    if (alphaOffset) {
	num = 0;
	mapa[0][CM_RED] = 0xd9;
	mapa[0][CM_GREEN] = 0xd9;
	mapa[0][CM_BLUE] = 0xd9;
    } else {
	num = -1;
    }

    for(y=0;y<blockPtr->height;y++) {
	colores=blockPtr->pixelPtr + blockPtr->offset[0]
		+ y * blockPtr->pitch;
	for(x=0;x<blockPtr->width;x++) {
	    if (!alphaOffset || (colores[alphaOffset] != 0)) {
		red = colores[0];
		green = colores[greenOffset];
		blue = colores[blueOffset];
		if (nuevo(red,green,blue,mapa)) {
		    num++;
		    if (num>=MAXCOLORMAPSIZE) {
			return;
		    }
		    mapa[num][CM_RED]=red;
		    mapa[num][CM_GREEN]=green;
		    mapa[num][CM_BLUE]=blue;
		}
	    }
	    colores += pixelSize;
	}
    }
    return;
}

static int
ReadValue()
{
    unsigned int col;

    if (csize == 0) {
	return EOF;
    }
    if (alphaOffset && (pixelo[alphaOffset]==0)) {
	col = 0;
    } else {
	col = color(pixelo[0],pixelo[greenOffset],pixelo[blueOffset], mapa);
    }
    pixelo += pixelSize;
    if (--ssize <= 0) {
	ssize = rsize;
	csize--;
	pixelo += pixelPitch - (rsize * pixelSize);
    }

    return col;
}




/*-----------------------------------------------------------------------
 *
 * miGIF Compression - mouse and ivo's GIF-compatible compression
 *
 *          -run length encoding compression routines-
 *
 * Copyright (C) 1998 Hutchison Avenue Software Corporation
 *               http://www.hasc.com
 *               [email protected]
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting

 * documentation.  This software is provided "AS IS." The Hutchison Avenue 
 * Software Corporation disclaims all warranties, either express or implied, 
 * including but not limited to implied warranties of merchantability and 
 * fitness for a particular purpose, with respect to this code and accompanying
 * documentation. 
 * 
 * The miGIF compression routines do not, strictly speaking, generate files 
 * conforming to the GIF spec, since the image data is not LZW-compressed 
 * (this is the point: in order to avoid transgression of the Unisys patent 
 * on the LZW algorithm.)  However, miGIF generates data streams that any 

 * reasonably sane LZW decompresser will decompress to what we want.
 *
 * miGIF compression uses run length encoding. It compresses horizontal runs 
 * of pixels of the same color. This type of compression gives good results

 * on images with many runs, for example images with lines, text and solid 
 * shapes on a solid-colored background. It gives little or no compression 
 * on images with few runs, for example digital or scanned photos.
 *
 *                               der Mouse
 *                      [email protected]
 *            7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B
 *
 *                             [email protected]
 *
 * The Graphics Interchange Format(c) is the Copyright property of
 * CompuServe Incorporated.  GIF(sm) is a Service Mark property of
 * CompuServe Incorporated.
 *

 */

static int rl_pixel;
static int rl_basecode;
static int rl_count;
static int rl_table_pixel;
static int rl_table_max;







|
|
|












<
|
>
|
|











|

|










|
|

|






|


|
|
|
















|


|













>
|



|


|
|

|
|
|
|
>
|
|
|
|
|

|
|
|
|
>
|

|
|
>
|
|
|

|
|
|

|





>







1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578

1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
color(red, green, blue, mapa)
    int red;
    int green;
    int blue;
    unsigned char mapa[MAXCOLORMAPSIZE][3];
{
    int x;
    for (x=(alphaOffset != 0) ; x<=MAXCOLORMAPSIZE ; x++) {
	if ((mapa[x][CM_RED] == red) && (mapa[x][CM_GREEN] == green) &&
		(mapa[x][CM_BLUE] == blue)) {
	    return x;
	}
    }
    return -1;
}


static int
nuevo(red, green, blue, mapa)
    int red,green,blue;
    unsigned char mapa[MAXCOLORMAPSIZE][3];
{

    int x = (alphaOffset != 0);
    for (; x<=num ; x++) {
	if ((mapa[x][CM_RED] == red) && (mapa[x][CM_GREEN] == green) &&
		(mapa[x][CM_BLUE] == blue)) {
	    return 0;
	}
    }
    return 1;
}

static void
savemap(blockPtr,mapa)
    Tk_PhotoImageBlock *blockPtr;
    unsigned char mapa[MAXCOLORMAPSIZE][3];
{
    unsigned char *colores;
    int x,y;
    unsigned char red,green,blue;

    if (alphaOffset) {
	num = 0;
	mapa[0][CM_RED] = 0xd9;
	mapa[0][CM_GREEN] = 0xd9;
	mapa[0][CM_BLUE] = 0xd9;
    } else {
	num = -1;
    }

    for(y=0 ; y<blockPtr->height ; y++) {
	colores = blockPtr->pixelPtr + blockPtr->offset[0]
		+ y * blockPtr->pitch;
	for(x=0 ; x<blockPtr->width ; x++) {
	    if (!alphaOffset || (colores[alphaOffset] != 0)) {
		red = colores[0];
		green = colores[greenOffset];
		blue = colores[blueOffset];
		if (nuevo(red,green,blue,mapa)) {
		    num++;
		    if (num >= MAXCOLORMAPSIZE) {
			return;
		    }
		    mapa[num][CM_RED] = red;
		    mapa[num][CM_GREEN] = green;
		    mapa[num][CM_BLUE] = blue;
		}
	    }
	    colores += pixelSize;
	}
    }
    return;
}

static int
ReadValue()
{
    unsigned int col;

    if (csize == 0) {
	return EOF;
    }
    if (alphaOffset && (pixelo[alphaOffset] == 0)) {
	col = 0;
    } else {
	col = color(pixelo[0], pixelo[greenOffset], pixelo[blueOffset], mapa);
    }
    pixelo += pixelSize;
    if (--ssize <= 0) {
	ssize = rsize;
	csize--;
	pixelo += pixelPitch - (rsize * pixelSize);
    }

    return col;
}



/*
 *-----------------------------------------------------------------------
 *
 * miGIF Compression - mouse and ivo's GIF-compatible compression
 *
 *		-run length encoding compression routines-
 *
 * Copyright (C) 1998 Hutchison Avenue Software Corporation
 *		 http://www.hasc.com
 *		 [email protected]
 *
 * Permission to use, copy, modify, and distribute this software and
 * its documentation for any purpose and without fee is hereby
 * granted, provided that the above copyright notice appear in all
 * copies and that both that copyright notice and this permission
 * notice appear in supporting documentation.  This software is
 * provided "AS IS." The Hutchison Avenue Software Corporation
 * disclaims all warranties, either express or implied, including but
 * not limited to implied warranties of merchantability and fitness
 * for a particular purpose, with respect to this code and
 * accompanying documentation.
 * 
 * The miGIF compression routines do not, strictly speaking, generate
 * files conforming to the GIF spec, since the image data is not
 * LZW-compressed (this is the point: in order to avoid transgression
 * of the Unisys patent on the LZW algorithm.)  However, miGIF
 * generates data streams that any reasonably sane LZW decompresser
 * will decompress to what we want.
 *
 * miGIF compression uses run length encoding. It compresses
 * horizontal runs of pixels of the same color. This type of
 * compression gives good results on images with many runs, for
 * example images with lines, text and solid shapes on a solid-colored
 * background. It gives little or no compression on images with few
 * runs, for example digital or scanned photos.
 *
 *				 der Mouse
 *			[email protected]
 *	      7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B
 *
 *			       [email protected]
 *
 * The Graphics Interchange Format(c) is the Copyright property of
 * CompuServe Incorporated.  GIF(sm) is a Service Mark property of
 * CompuServe Incorporated.
 *
 *-----------------------------------------------------------------------
 */

static int rl_pixel;
static int rl_basecode;
static int rl_count;
static int rl_table_pixel;
static int rl_table_max;
1661
1662
1663
1664
1665
1666
1667

1668

1669
1670
1671
1672
1673
1674
1675

1676
1677

1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703


1704
1705
1706
1707

1708

1709
1710
1711
1712







1713

1714
1715
1716
1717
1718
1719

1720

1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735

1736
1737

1738

1739
1740
1741

1742
1743

1744

1745
1746
1747

1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758

1759
1760
1761


1762
1763
1764
1765

1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794

1795
1796
1797
1798
1799
1800


1801
1802
1803

1804

1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826


1827


1828
1829
1830
1831
1832
1833

1834
1835
1836
1837
1838

1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871




1872


1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883

1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896

1897
1898
1899
1900


1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917

1918
1919
1920
1921
1922
1923
1924

1925

1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940

1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962

1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977

1978
1979

1980
1981

1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997


1998


1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010

2011
2012
2013
2014
2015

static int code_eof;
static unsigned int obuf;
static int obits;
static Tcl_Channel ofile;
static unsigned char oblock[256];
static int oblen;


/* Used only when debugging GIF compression code */

/* #define DEBUGGING_ENVARS */

#ifdef DEBUGGING_ENVARS

static int verbose_set = 0;
static int verbose;
#define VERBOSE (verbose_set?verbose:set_verbose())


static int set_verbose(void)

{
 verbose = !!getenv("GIF_VERBOSE");
 verbose_set = 1;
 return(verbose);
}

#else

#define VERBOSE 0

#endif


static CONST char *
binformat(v, nbits)
    unsigned int v;
    int nbits;
{
 static char bufs[8][64];
 static int bhand = 0;
 unsigned int bit;
 int bno;
 char *bp;

 bhand --;
 if (bhand < 0) bhand = (sizeof(bufs)/sizeof(bufs[0]))-1;


 bp = &bufs[bhand][0];
 for (bno=nbits-1,bit=((unsigned int)1)<<bno;bno>=0;bno--,bit>>=1)
  { *bp++ = (v & bit) ? '1' : '0';
    if (((bno&3) == 0) && (bno != 0)) *bp++ = '.';

  }

 *bp = '\0';
 return(&bufs[bhand][0]);
}








static void write_block()

{
 int i;
 unsigned char c;

 if (VERBOSE)
  { printf("write_block %d:",oblen);

    for (i=0;i<oblen;i++) printf(" %02x",oblock[i]);

    printf("\n");
  }
 c = oblen;
 Tcl_Write(ofile, (char *) &c, 1);
 Tcl_Write(ofile, (char *) &oblock[0], oblen);
 oblen = 0;
}

static void
block_out(c)
    unsigned char c;
{
 if (VERBOSE) printf("block_out %s\n",binformat(c,8));
 oblock[oblen++] = c;
 if (oblen >= 255) write_block();

}


static void block_flush()

{
 if (VERBOSE) printf("block_flush\n");
 if (oblen > 0) write_block();

}


static void output(val)

    int val;
{
 if (VERBOSE) printf("output %s [%s %d %d]\n",binformat(val,out_bits),binformat(obuf,obits),obits,out_bits);

 obuf |= val << obits;
 obits += out_bits;
 while (obits >= 8)
  { block_out(obuf&0xff);
    obuf >>= 8;
    obits -= 8;
  }
 if (VERBOSE) printf("output leaving [%s %d]\n",binformat(obuf,obits),obits);
}

static void output_flush()

{
 if (VERBOSE) printf("output_flush\n");
 if (obits > 0) block_out(obuf);


 block_flush();
}

static void did_clear()

{
 if (VERBOSE) printf("did_clear\n");
 out_bits = out_bits_init;
 out_bump = out_bump_init;
 out_clear = out_clear_init;
 out_count = 0;
 rl_table_max = 0;
 just_cleared = 1;
}

static void
output_plain(c)
    int c;
{
 if (VERBOSE) printf("output_plain %s\n",binformat(c,out_bits));
 just_cleared = 0;
 output(c);
 out_count ++;
 if (out_count >= out_bump)
  { out_bits ++;
    out_bump += 1 << (out_bits - 1);
  }
 if (out_count >= out_clear)
  { output(code_clear);
    did_clear();
  }
}

static unsigned int isqrt(x)

    unsigned int x;
{
 unsigned int r;
 unsigned int v;

 if (x < 2) return(x);


 for (v=x,r=1;v;v>>=2,r<<=1) ;
 while (1)
  { v = ((x / r) + r) / 2;

    if ((v == r) || (v == r+1)) return(r);

    r = v;
  }
}

static unsigned int
compute_triangle_count(count, nrepcodes)
    unsigned int count;
    unsigned int nrepcodes;
{
 unsigned int perrep;
 unsigned int cost;

 cost = 0;
 perrep = (nrepcodes * (nrepcodes+1)) / 2;
 while (count >= perrep)
  { cost += nrepcodes;
    count -= perrep;
  }
 if (count > 0)
  { unsigned int n;
    n = isqrt(count);
    while ((n*(n+1)) >= 2*count) n --;


    while ((n*(n+1)) < 2*count) n ++;


    cost += n;
  }
 return(cost);
}

static void max_out_clear()

{
 out_clear = max_ocodes;
}

static void reset_out_clear()

{
 out_clear = out_clear_init;
 if (out_count >= out_clear)
  { output(code_clear);
    did_clear();
  }
}

static void
rl_flush_fromclear(count)
    int count;
{
 int n;

 if (VERBOSE) printf("rl_flush_fromclear %d\n",count);
 max_out_clear();
 rl_table_pixel = rl_pixel;
 n = 1;
 while (count > 0)
  { if (n == 1)
     { rl_table_max = 1;
       output_plain(rl_pixel);
       count --;
     }
    else if (count >= n)
     { rl_table_max = n;
       output_plain(rl_basecode+n-2);
       count -= n;
     }
    else if (count == 1)
     { rl_table_max ++;
       output_plain(rl_pixel);
       count = 0;




     }


    else
     { rl_table_max ++;
       output_plain(rl_basecode+count-2);
       count = 0;
     }
    if (out_count == 0) n = 1; else n ++;
  }
 reset_out_clear();
 if (VERBOSE) printf("rl_flush_fromclear leaving table_max=%d\n",rl_table_max);
}


static void rl_flush_clearorrep(count)
    int count;
{
 int withclr;

 if (VERBOSE) printf("rl_flush_clearorrep %d\n",count);
 withclr = 1 + compute_triangle_count(count,max_ocodes);
 if (withclr < count)
  { output(code_clear);
    did_clear();
    rl_flush_fromclear(count);
  }
 else

  { for (;count>0;count--) output_plain(rl_pixel);
  }
}



static void rl_flush_withtable(count)
    int count;
{
 int repmax;
 int repleft;
 int leftover;

 if (VERBOSE) printf("rl_flush_withtable %d\n",count);
 repmax = count / rl_table_max;
 leftover = count % rl_table_max;
 repleft = (leftover ? 1 : 0);
 if (out_count+repmax+repleft > max_ocodes)
  { repmax = max_ocodes - out_count;
    leftover = count - (repmax * rl_table_max);
    repleft = 1 + compute_triangle_count(leftover,max_ocodes);
  }
 if (VERBOSE) printf("rl_flush_withtable repmax=%d leftover=%d repleft=%d\n",repmax,leftover,repleft);

 if (1+(int)compute_triangle_count(count,max_ocodes) < repmax+repleft)
  { output(code_clear);
    did_clear();
    rl_flush_fromclear(count);
    return;
  }
 max_out_clear();

 for (;repmax>0;repmax--) output_plain(rl_basecode+rl_table_max-2);

 if (leftover)
  { if (just_cleared)
     { rl_flush_fromclear(leftover);
     }
    else if (leftover == 1)
     { output_plain(rl_pixel);
     }
    else
     { output_plain(rl_basecode+leftover-2);
     }
  }
 reset_out_clear();
}

static void rl_flush()

{
 if (VERBOSE) printf("rl_flush [ %d %d\n",rl_count,rl_pixel);
 if (rl_count == 1)
  { output_plain(rl_pixel);
    rl_count = 0;
    if (VERBOSE) printf("rl_flush ]\n");
    return;
  }
 if (just_cleared)
  { rl_flush_fromclear(rl_count);
  }
 else if ((rl_table_max < 2) || (rl_table_pixel != rl_pixel))
  { rl_flush_clearorrep(rl_count);
  }
 else
  { rl_flush_withtable(rl_count);
  }
 if (VERBOSE) printf("rl_flush ]\n");
 rl_count = 0;
}



static void compress( init_bits, handle, readValue )
    int init_bits;
    Tcl_Channel handle;
    ifunptr readValue;
{
 int c;

 ofile = handle;
 obuf = 0;
 obits = 0;
 oblen = 0;
 code_clear = 1 << (init_bits - 1);
 code_eof = code_clear + 1;
 rl_basecode = code_eof + 1;
 out_bump_init = (1 << (init_bits - 1)) - 1;

 /* for images with a lot of runs, making out_clear_init larger will
    give better compression. */ 

 out_clear_init = (init_bits <= 3) ? 9 : (out_bump_init-1);
#ifdef DEBUGGING_ENVARS

  { const char *ocienv;
    ocienv = getenv("GIF_OUT_CLEAR_INIT");
    if (ocienv)
     { out_clear_init = atoi(ocienv);
       if (VERBOSE) printf("[overriding out_clear_init to %d]\n",out_clear_init);
     }
  }
#endif
 out_bits_init = init_bits;
 max_ocodes = (1 << GIFBITS) - ((1 << (out_bits_init - 1)) + 3);
 did_clear();
 output(code_clear);
 rl_count = 0;
 while (1)
  { c = readValue();
    if ((rl_count > 0) && (c != rl_pixel)) rl_flush();


    if (c == EOF) break;


    if (rl_pixel == c)
     { rl_count ++;
     }
    else
     { rl_pixel = c;
       rl_count = 1;
     }
  }
 output(code_eof);
 output_flush();
}


/*-----------------------------------------------------------------------
 *
 * End of miGIF section  - See copyright notice at start of section.
 *
 *-----------------------------------------------------------------------*/








>
|
>
|

|



|
>

|
>

|
|
|

<
<
<
<
<
<
<






|
|
|
|
|

|
|
>
>
|
|
|
|
>
|
>
|
|


>
>
>
>
>
>
>
|
>

|
|

|
|
>
|
>
|
|
|
|
|
|






|
|
|
>
|
|
>
|
>

|
|
>
|
|
>
|
>


|
>
|
|
|
|
|
|
|
|


|
>

|
|
>
>
|


|
>

|
|
|
|
|
|
|






|
|
|
|
|
|
|
|
|
|
|
|


|
>


|
|

|
>
>
|
|
|
>
|
>
|
|







|
|

|
|
|
|
|
|
|
|
|
|
>
>
|
>
>
|
|
|


|
>

|


|
>

|
|
|
|
|






|

|
|
|
|
|
|
|
|
|
<
|
|
|
|
<
|
|
|
|
>
>
>
>
|
>
>
|
|
<
<
|
<
|
|
|


>
|


|

|
|
|
|
|
|
<
|
>
|
|
|
|
>
>
|


|
|
|

|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
>
|
>
|
|
|
<
|
|
<
|
|
|
|
|


|
>

|
|
|
|
|
|
|
|
|
<
|
|
<
|
|
|
|
|



>
|




|

|
|
|
|
|
|
|
|
>
|
|
>
|
|
>
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
>
>
|
>
>
|
|
<
|
|
|
|
|
|
|


>
|



|
>
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745







1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953

1954
1955
1956
1957

1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970


1971

1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988

1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027

2028
2029

2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048

2049
2050

2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104

2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
static int code_eof;
static unsigned int obuf;
static int obits;
static Tcl_Channel ofile;
static unsigned char oblock[256];
static int oblen;

/*
 * Used only when debugging GIF compression code
 */
/* #define MIGIF_DEBUGGING_ENVARS */

#ifdef MIGIF_DEBUGGING_ENVARS

static int verbose_set = 0;
static int verbose;
#define MIGIF_VERBOSE (verbose_set?verbose:set_verbose())
#define DEBUGMSG(printf_args) if (MIGIF_VERBOSE) { printf printf_args; }

static int
set_verbose(void)
{
    verbose = !!getenv("MIGIF_VERBOSE");
    verbose_set = 1;
    return verbose;
}








static CONST char *
binformat(v, nbits)
    unsigned int v;
    int nbits;
{
    static char bufs[8][64];
    static int bhand = 0;
    unsigned int bit;
    int bno;
    char *bp;

    bhand--;
    if (bhand < 0) {
	bhand = (sizeof(bufs) / sizeof(bufs[0])) - 1;
    }
    bp = &bufs[bhand][0];
    for (bno=nbits-1,bit=((unsigned int)1)<<bno ; bno>=0 ; bno--,bit>>=1) {
	*bp++ = (v & bit) ? '1' : '0';
	if (((bno&3) == 0) && (bno != 0)) {
	    *bp++ = '.';
	}
    }
    *bp = '\0';
    return &bufs[bhand][0];
}

#else

#define MIGIF_VERBOSE 0
#define DEBUGMSG(printf_args) /* do nothing */

#endif

static void
write_block()
{
    int i;
    unsigned char c;

    if (MIGIF_VERBOSE) {
	printf("write_block %d:", oblen);
	for (i=0 ; i<oblen ; i++) {
	    printf(" %02x", oblock[i]);
	}
	printf("\n");
    }
    c = oblen;
    Tcl_Write(ofile, (char *) &c, 1);
    Tcl_Write(ofile, (char *) &oblock[0], oblen);
    oblen = 0;
}

static void
block_out(c)
    unsigned char c;
{
    DEBUGMSG(("block_out %s\n", binformat(c, 8)));
    oblock[oblen++] = c;
    if (oblen >= 255) {
	write_block();
    }
}

static void
block_flush()
{
    DEBUGMSG(("block_flush\n"));
    if (oblen > 0) {
	write_block();
    }
}

static void
output(val)
    int val;
{
    DEBUGMSG(("output %s [%s %d %d]\n", binformat(val, out_bits),
	    binformat(obuf, obits), obits, out_bits));
    obuf |= val << obits;
    obits += out_bits;
    while (obits >= 8) {
	block_out(obuf&0xff);
	obuf >>= 8;
	obits -= 8;
    }
    DEBUGMSG(("output leaving [%s %d]\n", binformat(obuf, obits), obits));
}

static void
output_flush()
{
    DEBUGMSG(("output_flush\n"));
    if (obits > 0) {
	block_out(obuf);
    }
    block_flush();
}

static void
did_clear()
{
    DEBUGMSG(("did_clear\n"));
    out_bits = out_bits_init;
    out_bump = out_bump_init;
    out_clear = out_clear_init;
    out_count = 0;
    rl_table_max = 0;
    just_cleared = 1;
}

static void
output_plain(c)
    int c;
{
    DEBUGMSG(("output_plain %s\n", binformat(c, out_bits)));
    just_cleared = 0;
    output(c);
    out_count++;
    if (out_count >= out_bump) {
	out_bits++;
	out_bump += 1 << (out_bits - 1);
    }
    if (out_count >= out_clear) {
	output(code_clear);
	did_clear();
    }
}

static unsigned int
isqrt(x)
    unsigned int x;
{
    unsigned int r;
    unsigned int v;

    if (x < 2) {
	return x;
    }
    for (v=x,r=1 ; v ; v>>=2,r<<=1);
    while (1) {
	v = ((x / r) + r) / 2;
	if (v==r || v==r+1) {
	    return r;
	}
	r = v;
    }
}

static unsigned int
compute_triangle_count(count, nrepcodes)
    unsigned int count;
    unsigned int nrepcodes;
{
    unsigned int perrep;
    unsigned int cost;

    cost = 0;
    perrep = (nrepcodes * (nrepcodes+1)) / 2;
    while (count >= perrep) {
	cost += nrepcodes;
	count -= perrep;
    }
    if (count > 0) {
	unsigned int n;
	n = isqrt(count);
	while (n*(n+1) >= 2*count) {
	    n--;
	}
	while (n*(n+1) < 2*count) {
	    n++;
	}
	cost += n;
    }
    return cost;
}

static void
max_out_clear()
{
    out_clear = max_ocodes;
}

static void
reset_out_clear()
{
    out_clear = out_clear_init;
    if (out_count >= out_clear) {
	output(code_clear);
	did_clear();
    }
}

static void
rl_flush_fromclear(count)
    int count;
{
    int n;

    DEBUGMSG(("rl_flush_fromclear %d\n", count));
    max_out_clear();
    rl_table_pixel = rl_pixel;
    n = 1;
    while (count > 0) {
	if (n == 1) {
	    rl_table_max = 1;
	    output_plain(rl_pixel);
	    count--;

	} else if (count >= n) {
	    rl_table_max = n;
	    output_plain(rl_basecode+n-2);
	    count -= n;

	} else if (count == 1) {
	    rl_table_max++;
	    output_plain(rl_pixel);
	    count = 0;
	} else {
	    rl_table_max++;
	    output_plain(rl_basecode+count-2);
	    count = 0;
	}
	if (out_count == 0) {
	    n = 1;
	} else {
	    n++;


	}

    }
    reset_out_clear();
    DEBUGMSG(("rl_flush_fromclear leaving table_max=%d\n", rl_table_max));
}

static void
rl_flush_clearorrep(count)
    int count;
{
    int withclr;

    DEBUGMSG(("rl_flush_clearorrep %d\n", count));
    withclr = 1 + compute_triangle_count(count, max_ocodes);
    if (withclr < count) {
	output(code_clear);
	did_clear();
	rl_flush_fromclear(count);

    } else {
	for (; count>0 ; count--) {
	    output_plain(rl_pixel);
	}
    }
}

static void
rl_flush_withtable(count)
    int count;
{
    int repmax;
    int repleft;
    int leftover;

    DEBUGMSG(("rl_flush_withtable %d\n", count));
    repmax = count / rl_table_max;
    leftover = count % rl_table_max;
    repleft = (leftover ? 1 : 0);
    if (out_count+repmax+repleft > max_ocodes) {
	repmax = max_ocodes - out_count;
	leftover = count - (repmax * rl_table_max);
	repleft = 1 + compute_triangle_count(leftover, max_ocodes);
    }
    DEBUGMSG(("rl_flush_withtable repmax=%d leftover=%d repleft=%d\n",
	    repmax, leftover, repleft));
    if (1+(int)compute_triangle_count(count, max_ocodes) < repmax+repleft) {
	output(code_clear);
	did_clear();
	rl_flush_fromclear(count);
	return;
    }
    max_out_clear();
    for (; repmax>0 ; repmax--) {
	output_plain(rl_basecode + rl_table_max - 2);
    }
    if (leftover) {
	if (just_cleared) {
	    rl_flush_fromclear(leftover);

	} else if (leftover == 1) {
	    output_plain(rl_pixel);

	} else {
	    output_plain(rl_basecode + leftover - 2);
	}
    }
    reset_out_clear();
}

static void
rl_flush()
{
    DEBUGMSG(("rl_flush [ %d %d\n", rl_count, rl_pixel));
    if (rl_count == 1) {
	output_plain(rl_pixel);
	rl_count = 0;
	DEBUGMSG(("rl_flush ]\n"));
	return;
    }
    if (just_cleared) {
	rl_flush_fromclear(rl_count);

    } else if ((rl_table_max < 2) || (rl_table_pixel != rl_pixel)) {
	rl_flush_clearorrep(rl_count);

    } else {
	rl_flush_withtable(rl_count);
    }
    DEBUGMSG(("rl_flush ]\n"));
    rl_count = 0;
}


static void
compress(init_bits, handle, readValue)
    int init_bits;
    Tcl_Channel handle;
    ifunptr readValue;
{
    int c;

    ofile = handle;
    obuf = 0;
    obits = 0;
    oblen = 0;
    code_clear = 1 << (init_bits - 1);
    code_eof = code_clear + 1;
    rl_basecode = code_eof + 1;
    out_bump_init = (1 << (init_bits - 1)) - 1;
    /*
     * For images with a lot of runs, making out_clear_init larger
     * will give better compression.
     */
    out_clear_init = (init_bits <= 3) ? 9 : (out_bump_init-1);
#ifdef MIGIF_DEBUGGING_ENVARS
    {
	const char *ocienv;
	ocienv = getenv("MIGIF_OUT_CLEAR_INIT");
	if (ocienv) {
	    out_clear_init = atoi(ocienv);
	    DEBUGMSG(("[overriding out_clear_init to %d]\n", out_clear_init));
	}
    }
#endif
    out_bits_init = init_bits;
    max_ocodes = (1 << GIFBITS) - ((1 << (out_bits_init - 1)) + 3);
    did_clear();
    output(code_clear);
    rl_count = 0;
    while (1) {
	c = readValue();
	if ((rl_count > 0) && (c != rl_pixel)) {
	    rl_flush();
	}
	if (c == EOF) {
	    break;
	}
	if (rl_pixel == c) {
	    rl_count++;

	} else {
	    rl_pixel = c;
	    rl_count = 1;
	}
    }
    output(code_eof);
    output_flush();
}

/*
 *-----------------------------------------------------------------------
 *
 * End of miGIF section  - See copyright notice at start of section.
 *
 *-----------------------------------------------------------------------
 */
Changes to generic/tkImgPPM.c.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * Author: Paul Mackerras ([email protected]),
 *	   Department of Computer Science,
 *	   Australian National University.
 *
 * RCS: @(#) $Id: tkImgPPM.c,v 1.8 2001/09/14 20:35:58 andreas_kupries Exp $
 */

#define USE_OLD_IMAGE

#include "tkInt.h"
#include "tkPort.h"








|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * Author: Paul Mackerras ([email protected]),
 *	   Department of Computer Science,
 *	   Australian National University.
 *
 * RCS: @(#) $Id: tkImgPPM.c,v 1.8.2.1 2002/06/10 05:38:23 wolfsuit Exp $
 */

#define USE_OLD_IMAGE

#include "tkInt.h"
#include "tkPort.h"

188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
    block.offset[3] = 0;
    block.width = width;
    block.pitch = block.pixelSize * fileWidth;

    Tk_PhotoExpand(imageHandle, destX + width, destY + height);

    if (srcY > 0) {
	Tcl_Seek(chan, (srcY * block.pitch), SEEK_CUR);
    }

    nLines = (MAX_MEMORY + block.pitch - 1) / block.pitch;
    if (nLines > height) {
	nLines = height;
    }
    if (nLines <= 0) {







|







188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
    block.offset[3] = 0;
    block.width = width;
    block.pitch = block.pixelSize * fileWidth;

    Tk_PhotoExpand(imageHandle, destX + width, destY + height);

    if (srcY > 0) {
	Tcl_Seek(chan, (Tcl_WideInt)(srcY * block.pitch), SEEK_CUR);
    }

    nLines = (MAX_MEMORY + block.pitch - 1) / block.pitch;
    if (nLines > height) {
	nLines = height;
    }
    if (nLines <= 0) {
Changes to generic/tkImgPhoto.c.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * Author: Paul Mackerras ([email protected]),
 *	   Department of Computer Science,
 *	   Australian National University.
 *
 * RCS: @(#) $Id: tkImgPhoto.c,v 1.24.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"
#include "tclMath.h"
#include <ctype.h>








|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * Author: Paul Mackerras ([email protected]),
 *	   Department of Computer Science,
 *	   Australian National University.
 *
 * RCS: @(#) $Id: tkImgPhoto.c,v 1.24.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"
#include "tclMath.h"
#include <ctype.h>

311
312
313
314
315
316
317

318
319
320
321
322
323
324
};

typedef struct ThreadSpecificData {
    Tk_PhotoImageFormat *formatList;  /* Pointer to the first in the 
				       * list of known photo image formats.*/
    Tk_PhotoImageFormat *oldFormatList;  /* Pointer to the first in the 
				       * list of known photo image formats.*/

} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Default configuration
 */








>







311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
};

typedef struct ThreadSpecificData {
    Tk_PhotoImageFormat *formatList;  /* Pointer to the first in the 
				       * list of known photo image formats.*/
    Tk_PhotoImageFormat *oldFormatList;  /* Pointer to the first in the 
				       * list of known photo image formats.*/
    int initialized;	/* set to 1 if we've initialized the strucuture */
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Default configuration
 */

354
355
356
357
358
359
360


361
362
363
364
365
366
367
static int imgPhotoColorHashInitialized;
#define N_COLOR_HASH	(sizeof(ColorTableId) / sizeof(int))

/*
 * Forward declarations
 */



static int		ImgPhotoCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
static int		ParseSubcommandOptions _ANSI_ARGS_((
			    struct SubcommandOptions *optPtr,
			    Tcl_Interp *interp, int allowedOptions,
			    int *indexPtr, int objc, Tcl_Obj *CONST objv[]));
static void		ImgPhotoCmdDeletedProc _ANSI_ARGS_((







>
>







355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
static int imgPhotoColorHashInitialized;
#define N_COLOR_HASH	(sizeof(ColorTableId) / sizeof(int))

/*
 * Forward declarations
 */

static void		PhotoFormatThreadExitProc _ANSI_ARGS_((
			    ClientData clientData));
static int		ImgPhotoCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
static int		ParseSubcommandOptions _ANSI_ARGS_((
			    struct SubcommandOptions *optPtr,
			    Tcl_Interp *interp, int allowedOptions,
			    int *indexPtr, int objc, Tcl_Obj *CONST objv[]));
static void		ImgPhotoCmdDeletedProc _ANSI_ARGS_((
427
428
429
430
431
432
433










































434
435
436
437
438
439
440
441
442
443
444
445




446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465




466
467
468
469
470
471
472
 *
 * Side effects:
 *	The new image file format is entered into a table used in the
 *	photo image "read" and "write" subcommands.
 *
 *----------------------------------------------------------------------
 */










































void
Tk_CreateOldPhotoImageFormat(formatPtr)
    Tk_PhotoImageFormat *formatPtr;
				/* Structure describing the format.  All of
				 * the fields except "nextPtr" must be filled
				 * in by caller.  Must not have been passed
				 * to Tk_CreatePhotoImageFormat previously. */
{
    Tk_PhotoImageFormat *copyPtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));





    copyPtr = (Tk_PhotoImageFormat *) ckalloc(sizeof(Tk_PhotoImageFormat));
    *copyPtr = *formatPtr;
    copyPtr->name = (char *) ckalloc((unsigned) (strlen(formatPtr->name) + 1));
    strcpy(copyPtr->name, formatPtr->name);
    copyPtr->nextPtr = tsdPtr->oldFormatList;
    tsdPtr->oldFormatList = copyPtr;
}

void
Tk_CreatePhotoImageFormat(formatPtr)
    Tk_PhotoImageFormat *formatPtr;
				/* Structure describing the format.  All of
				 * the fields except "nextPtr" must be filled
				 * in by caller.  Must not have been passed
				 * to Tk_CreatePhotoImageFormat previously. */
{
    Tk_PhotoImageFormat *copyPtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));





    copyPtr = (Tk_PhotoImageFormat *) ckalloc(sizeof(Tk_PhotoImageFormat));
    *copyPtr = *formatPtr;
    copyPtr->name = (char *) ckalloc((unsigned) (strlen(formatPtr->name) + 1));
    strcpy(copyPtr->name, formatPtr->name);
    if (isupper((unsigned char) *formatPtr->name)) {
	copyPtr->nextPtr = tsdPtr->oldFormatList;
	tsdPtr->oldFormatList = copyPtr;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>












>
>
>
>




















>
>
>
>







430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
 *
 * Side effects:
 *	The new image file format is entered into a table used in the
 *	photo image "read" and "write" subcommands.
 *
 *----------------------------------------------------------------------
 */

static void
PhotoFormatThreadExitProc(clientData)
    ClientData clientData;	/* not used */
{
    Tk_PhotoImageFormat *freePtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    while (tsdPtr->oldFormatList != NULL) {
	freePtr = tsdPtr->oldFormatList;
	tsdPtr->oldFormatList = tsdPtr->oldFormatList->nextPtr;
	ckfree((char *) freePtr->name);
	ckfree((char *) freePtr);
    }
    while (tsdPtr->formatList != NULL) {
	freePtr = tsdPtr->formatList;
	tsdPtr->formatList = tsdPtr->formatList->nextPtr;
	ckfree((char *) freePtr->name);
	ckfree((char *) freePtr);
    }
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_CreateOldPhotoImageFormat, Tk_CreatePhotoImageFormat --
 *
 *	This procedure is invoked by an image file handler to register
 *	a new photo image format and the procedures that handle the
 *	new format.  The procedure is typically invoked during
 *	Tcl_AppInit.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	The new image file format is entered into a table used in the
 *	photo image "read" and "write" subcommands.
 *
 *----------------------------------------------------------------------
 */
void
Tk_CreateOldPhotoImageFormat(formatPtr)
    Tk_PhotoImageFormat *formatPtr;
				/* Structure describing the format.  All of
				 * the fields except "nextPtr" must be filled
				 * in by caller.  Must not have been passed
				 * to Tk_CreatePhotoImageFormat previously. */
{
    Tk_PhotoImageFormat *copyPtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (!tsdPtr->initialized) {
	tsdPtr->initialized = 1;
	Tcl_CreateThreadExitHandler(PhotoFormatThreadExitProc, NULL);
    }
    copyPtr = (Tk_PhotoImageFormat *) ckalloc(sizeof(Tk_PhotoImageFormat));
    *copyPtr = *formatPtr;
    copyPtr->name = (char *) ckalloc((unsigned) (strlen(formatPtr->name) + 1));
    strcpy(copyPtr->name, formatPtr->name);
    copyPtr->nextPtr = tsdPtr->oldFormatList;
    tsdPtr->oldFormatList = copyPtr;
}

void
Tk_CreatePhotoImageFormat(formatPtr)
    Tk_PhotoImageFormat *formatPtr;
				/* Structure describing the format.  All of
				 * the fields except "nextPtr" must be filled
				 * in by caller.  Must not have been passed
				 * to Tk_CreatePhotoImageFormat previously. */
{
    Tk_PhotoImageFormat *copyPtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (!tsdPtr->initialized) {
	tsdPtr->initialized = 1;
	Tcl_CreateThreadExitHandler(PhotoFormatThreadExitProc, NULL);
    }
    copyPtr = (Tk_PhotoImageFormat *) ckalloc(sizeof(Tk_PhotoImageFormat));
    *copyPtr = *formatPtr;
    copyPtr->name = (char *) ckalloc((unsigned) (strlen(formatPtr->name) + 1));
    strcpy(copyPtr->name, formatPtr->name);
    if (isupper((unsigned char) *formatPtr->name)) {
	copyPtr->nextPtr = tsdPtr->oldFormatList;
	tsdPtr->oldFormatList = copyPtr;
1845
1846
1847
1848
1849
1850
1851

1852
1853
1854
1855
1856

1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
            return TCL_ERROR;
        }
        
	chan = Tcl_OpenFileChannel(interp, masterPtr->fileString, "r", 0);
	if (chan == NULL) {
	    return TCL_ERROR;
	}

        if (Tcl_SetChannelOption(interp, chan, "-translation", "binary")
		!= TCL_OK) {
	    Tcl_Close(NULL, chan);
            return TCL_ERROR;
        }

        if (Tcl_SetChannelOption(interp, chan, "-encoding", "binary")
		!= TCL_OK) {
	    Tcl_Close(NULL, chan);
            return TCL_ERROR;
        }
	if (MatchFileFormat(interp, chan, masterPtr->fileString,
		masterPtr->format, &imageFormat, &imageWidth,
		&imageHeight, &oldformat) != TCL_OK) {
	    Tcl_Close(NULL, chan);
	    return TCL_ERROR;
	}
	ImgPhotoSetSize(masterPtr, imageWidth, imageHeight);
	tempformat = masterPtr->format;
	if (oldformat && tempformat) {
	    tempformat = (Tcl_Obj *) Tcl_GetString(tempformat);







>
|
<
<
<
<
>
|
|
<
<
<
|
|
|







1898
1899
1900
1901
1902
1903
1904
1905
1906




1907
1908
1909



1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
            return TCL_ERROR;
        }
        
	chan = Tcl_OpenFileChannel(interp, masterPtr->fileString, "r", 0);
	if (chan == NULL) {
	    return TCL_ERROR;
	}
	/*
	 * -translation binary also sets -encoding binary




	 */
        if ((Tcl_SetChannelOption(interp, chan,
		"-translation", "binary") != TCL_OK) ||



		(MatchFileFormat(interp, chan, masterPtr->fileString,
			masterPtr->format, &imageFormat, &imageWidth,
			&imageHeight, &oldformat) != TCL_OK)) {
	    Tcl_Close(NULL, chan);
	    return TCL_ERROR;
	}
	ImgPhotoSetSize(masterPtr, imageWidth, imageHeight);
	tempformat = masterPtr->format;
	if (oldformat && tempformat) {
	    tempformat = (Tcl_Obj *) Tcl_GetString(tempformat);
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895

	Tcl_ResetResult(interp);
	masterPtr->flags |= IMAGE_CHANGED;
    }

    if ((masterPtr->fileString == NULL) && (masterPtr->dataString != NULL)
	    && ((masterPtr->dataString != oldData)
	    || (masterPtr->format != oldFormat))) {

	if (MatchStringFormat(interp, masterPtr->dataString, 
		masterPtr->format, &imageFormat, &imageWidth,
		&imageHeight, &oldformat) != TCL_OK) {
	    return TCL_ERROR;
	}
	ImgPhotoSetSize(masterPtr, imageWidth, imageHeight);







|







1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943

	Tcl_ResetResult(interp);
	masterPtr->flags |= IMAGE_CHANGED;
    }

    if ((masterPtr->fileString == NULL) && (masterPtr->dataString != NULL)
	    && ((masterPtr->dataString != oldData)
		    || (masterPtr->format != oldFormat))) {

	if (MatchStringFormat(interp, masterPtr->dataString, 
		masterPtr->format, &imageFormat, &imageWidth,
		&imageHeight, &oldformat) != TCL_OK) {
	    return TCL_ERROR;
	}
	ImgPhotoSetSize(masterPtr, imageWidth, imageHeight);
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
	    if (formatPtr->fileMatchProc == NULL) {
		Tcl_AppendResult(interp, "-file option isn't supported for ",
			formatString, " images", (char *) NULL);
		return TCL_ERROR;
	    }
	}
	if (formatPtr->fileMatchProc != NULL) {
	    (void) Tcl_Seek(chan, 0L, SEEK_SET);
	    
	    if ((*formatPtr->fileMatchProc)(chan, fileName, formatObj,
		    widthPtr, heightPtr, interp)) {
		if (*widthPtr < 1) {
		    *widthPtr = 1;
		}
		if (*heightPtr < 1) {







|







3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
	    if (formatPtr->fileMatchProc == NULL) {
		Tcl_AppendResult(interp, "-file option isn't supported for ",
			formatString, " images", (char *) NULL);
		return TCL_ERROR;
	    }
	}
	if (formatPtr->fileMatchProc != NULL) {
	    (void) Tcl_Seek(chan, Tcl_LongAsWide(0L), SEEK_SET);
	    
	    if ((*formatPtr->fileMatchProc)(chan, fileName, formatObj,
		    widthPtr, heightPtr, interp)) {
		if (*widthPtr < 1) {
		    *widthPtr = 1;
		}
		if (*heightPtr < 1) {
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
	    if (formatPtr->fileMatchProc == NULL) {
		Tcl_AppendResult(interp, "-file option isn't supported for ",
			formatString, " images", (char *) NULL);
		return TCL_ERROR;
	    }
	}
	if (formatPtr->fileMatchProc != NULL) {
	    (void) Tcl_Seek(chan, 0L, SEEK_SET);
	    if ((*formatPtr->fileMatchProc)(chan, fileName, (Tcl_Obj *) formatString,
		    widthPtr, heightPtr, interp)) {
		if (*widthPtr < 1) {
		    *widthPtr = 1;
		}
		if (*heightPtr < 1) {
		    *heightPtr = 1;







|







3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
	    if (formatPtr->fileMatchProc == NULL) {
		Tcl_AppendResult(interp, "-file option isn't supported for ",
			formatString, " images", (char *) NULL);
		return TCL_ERROR;
	    }
	}
	if (formatPtr->fileMatchProc != NULL) {
	    (void) Tcl_Seek(chan, Tcl_LongAsWide(0L), SEEK_SET);
	    if ((*formatPtr->fileMatchProc)(chan, fileName, (Tcl_Obj *) formatString,
		    widthPtr, heightPtr, interp)) {
		if (*widthPtr < 1) {
		    *widthPtr = 1;
		}
		if (*heightPtr < 1) {
		    *heightPtr = 1;
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
		    fileName, "\"", (char *) NULL);
	}
	return TCL_ERROR;
    }

    *imageFormatPtr = formatPtr;
    *oldformat = useoldformat;
    (void) Tcl_Seek(chan, 0L, SEEK_SET);
    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * MatchStringFormat --







|







3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
		    fileName, "\"", (char *) NULL);
	}
	return TCL_ERROR;
    }

    *imageFormatPtr = formatPtr;
    *oldformat = useoldformat;
    (void) Tcl_Seek(chan, Tcl_LongAsWide(0L), SEEK_SET);
    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * MatchStringFormat --
3890
3891
3892
3893
3894
3895
3896

3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907

3908
3909
3910
3911

3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922



3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956

3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
	    && (width <= blockPtr->width) && (height <= blockPtr->height)
	    && ((height == 1) || ((x == 0) && (width == masterPtr->width)
		&& (blockPtr->pitch == pitch)))) {
	memcpy((VOID *) destLinePtr,
		(VOID *) (blockPtr->pixelPtr + blockPtr->offset[0]),
		(size_t) (height * width * 4));
    } else {

	for (hLeft = height; hLeft > 0;) {
	    srcLinePtr = blockPtr->pixelPtr + blockPtr->offset[0];
	    hCopy = MIN(hLeft, blockPtr->height);
	    hLeft -= hCopy;
	    for (; hCopy > 0; --hCopy) {
		destPtr = destLinePtr;
		for (wLeft = width; wLeft > 0;) {
		    wCopy = MIN(wLeft, blockPtr->width);
		    wLeft -= wCopy;
		    srcPtr = srcLinePtr;
		    for (; wCopy > 0; --wCopy) {

		      if (!destPtr[3]) {
			destPtr[0] = destPtr[1] = destPtr[2] = 0xd9;
		      }
		      if (!alphaOffset || (srcPtr[alphaOffset] == 255)) {

			*destPtr++ = srcPtr[0];
			*destPtr++ = srcPtr[greenOffset];
			*destPtr++ = srcPtr[blueOffset];
			*destPtr++ = 255;
		      } else {
			if (srcPtr[alphaOffset]) {
			    destPtr[0] += (srcPtr[0] - destPtr[0]) * srcPtr[alphaOffset] / 255;
			    destPtr[1] += (srcPtr[greenOffset] - destPtr[1]) * srcPtr[alphaOffset] / 255;
			    destPtr[2] += (srcPtr[blueOffset] - destPtr[2]) * srcPtr[alphaOffset] / 255;
			    destPtr[3] += (255 - destPtr[3]) * srcPtr[alphaOffset] / 255;
		  	}



			destPtr+=4;
		      }
		      srcPtr += blockPtr->pixelSize;
		    }
		}
		srcLinePtr += blockPtr->pitch;
		destLinePtr += pitch;
	    }
	}
    }

    /*
     * Add this new block to the region which specifies which data is valid.
     */

  if (alphaOffset) {
    int x1, y1, end;
    
    /*
     * This block is grossly inefficient.  For each row in the image, it
     * finds each continguous string of nontransparent pixels, then marks
     * those areas as valid in the validRegion mask.  This makes drawing very
     * efficient, because of the way we use X:  we just say, here's your
     * mask, and here's your data.  We need not worry about the current
     * background color, etc.  But this costs us a lot on the image setup.
     * Still, image setup only happens once, whereas the drawing happens
     * many times, so this might be the best way to go.
     *
     * An alternative might be to not set up this mask, and instead, at
     * drawing time, for each transparent pixel, set its color to the
     * color of the background behind that pixel.  This is what I suspect
     * most of programs do.  However, they don't have to deal with the canvas,
     * which could have many different background colors.  Determining the
     * correct bg color for a given pixel might be expensive.

     */
     
    destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3;
    for (y1 = 0; y1 < height; y1++) {
	x1 = 0;
	destPtr = destLinePtr;
	while (x1 < width) {
	    /* search for first non-transparent pixel */
	    while ((x1 < width) && !*destPtr) {
		    x1++; destPtr += 4;
	    }
	    end = x1;
	    /* search for first transparent pixel */
	    while ((end < width) && *destPtr) {
	        end++; destPtr += 4;
	    }
	    if (end > x1) {
		rect.x = x + x1;
		rect.y = y + y1;
		rect.width = end - x1;
		rect.height = 1;
		TkUnionRectWithRegion(&rect, masterPtr->validRegion,
			masterPtr->validRegion);
	    }
	    x1 = end;
	}
	destLinePtr += masterPtr->width * 4;
    }
  } else {
    rect.x = x;
    rect.y = y;
    rect.width = width;
    rect.height = height;
    TkUnionRectWithRegion(&rect, masterPtr->validRegion,
	    masterPtr->validRegion);
  }

    /*
     * Update each instance.
     */

    Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, x, y, width, height);








>











>
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
|












|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
	    && (width <= blockPtr->width) && (height <= blockPtr->height)
	    && ((height == 1) || ((x == 0) && (width == masterPtr->width)
		&& (blockPtr->pitch == pitch)))) {
	memcpy((VOID *) destLinePtr,
		(VOID *) (blockPtr->pixelPtr + blockPtr->offset[0]),
		(size_t) (height * width * 4));
    } else {
	int alpha;
	for (hLeft = height; hLeft > 0;) {
	    srcLinePtr = blockPtr->pixelPtr + blockPtr->offset[0];
	    hCopy = MIN(hLeft, blockPtr->height);
	    hLeft -= hCopy;
	    for (; hCopy > 0; --hCopy) {
		destPtr = destLinePtr;
		for (wLeft = width; wLeft > 0;) {
		    wCopy = MIN(wLeft, blockPtr->width);
		    wLeft -= wCopy;
		    srcPtr = srcLinePtr;
		    for (; wCopy > 0; --wCopy) {
			alpha = srcPtr[alphaOffset];
			if (!destPtr[3]) {
			    destPtr[0] = destPtr[1] = destPtr[2] = 0xd9;
			}
			if (!alphaOffset || (alpha == 255)) {
			    /* new solid part of the image */
			    *destPtr++ = srcPtr[0];
			    *destPtr++ = srcPtr[greenOffset];
			    *destPtr++ = srcPtr[blueOffset];
			    *destPtr++ = 255;
			} else {
			    if (alpha) {
				destPtr[0] += (srcPtr[0] - destPtr[0]) * alpha / 255;
				destPtr[1] += (srcPtr[greenOffset] - destPtr[1]) * alpha / 255;
				destPtr[2] += (srcPtr[blueOffset] - destPtr[2]) * alpha / 255;
				destPtr[3] += (255 - destPtr[3]) * alpha / 255;
			    }
			    /*
			     * else should be empty space
			     */
			    destPtr += 4;
			}
			srcPtr += blockPtr->pixelSize;
		    }
		}
		srcLinePtr += blockPtr->pitch;
		destLinePtr += pitch;
	    }
	}
    }

    /*
     * Add this new block to the region which specifies which data is valid.
     */

    if (alphaOffset) {
	int x1, y1, end;

	/*
	 * This block is grossly inefficient.  For each row in the image, it
	 * finds each continguous string of nontransparent pixels, then marks
	 * those areas as valid in the validRegion mask.  This makes drawing
	 * very efficient, because of the way we use X: we just say, here's
	 * your mask, and here's your data.  We need not worry about the
	 * current background color, etc.  But this costs us a lot on the
	 * image setup.  Still, image setup only happens once, whereas the
	 * drawing happens many times, so this might be the best way to go.
	 *
	 * An alternative might be to not set up this mask, and instead, at
	 * drawing time, for each transparent pixel, set its color to the
	 * color of the background behind that pixel.  This is what I suspect
	 * most of programs do.  However, they don't have to deal with the
	 * canvas, which could have many different background colors.
	 * Determining the correct bg color for a given pixel might be
	 * expensive.
	 */

	destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3;
	for (y1 = 0; y1 < height; y1++) {
	    x1 = 0;
	    destPtr = destLinePtr;
	    while (x1 < width) {
		/* search for first non-transparent pixel */
		while ((x1 < width) && !*destPtr) {
		    x1++; destPtr += 4;
		}
		end = x1;
		/* search for first transparent pixel */
		while ((end < width) && *destPtr) {
		    end++; destPtr += 4;
		}
		if (end > x1) {
		    rect.x = x + x1;
		    rect.y = y + y1;
		    rect.width = end - x1;
		    rect.height = 1;
		    TkUnionRectWithRegion(&rect, masterPtr->validRegion,
			    masterPtr->validRegion);
		}
		x1 = end;
	    }
	    destLinePtr += masterPtr->width * 4;
	}
    } else {
	rect.x = x;
	rect.y = y;
	rect.width = width;
	rect.height = height;
	TkUnionRectWithRegion(&rect, masterPtr->validRegion,
		masterPtr->validRegion);
    }

    /*
     * Update each instance.
     */

    Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, x, y, width, height);

4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
	}
    }

    /*
     * Add this new block to the region that specifies which data is valid.
     */

  if (alphaOffset) {
    int x1, y1, end;

    destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3;
    for (y1 = 0; y1 < height; y1++) {
	x1 = 0;
	destPtr = destLinePtr;
	while (x1 < width) {
	    /* search for first non-transparent pixel */
	    while ((x1 < width) && !*destPtr) {
		    x1++; destPtr += 4;
	    }
	    end = x1;
	    /* search for first transparent pixel */
	    while ((end < width) && *destPtr) {
	        end++; destPtr += 4;
	    }
	    if (end > x1) {
		rect.x = x + x1;
		rect.y = y + y1;
		rect.width = end - x1;
		rect.height = 1;
		TkUnionRectWithRegion(&rect, masterPtr->validRegion,
			masterPtr->validRegion);
	    }
	    x1 = end;
	}
	destLinePtr += masterPtr->width * 4;
    }
  } else {
    rect.x = x;
    rect.y = y;
    rect.width = width;
    rect.height = height;
    TkUnionRectWithRegion(&rect, masterPtr->validRegion,
	    masterPtr->validRegion);
  }

    /*
     * Update each instance.
     */

    Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, x, y, width, height);








|
|

|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
	}
    }

    /*
     * Add this new block to the region that specifies which data is valid.
     */

    if (alphaOffset) {
	int x1, y1, end;

	destLinePtr = masterPtr->pix24 + (y * masterPtr->width + x) * 4 + 3;
	for (y1 = 0; y1 < height; y1++) {
	    x1 = 0;
	    destPtr = destLinePtr;
	    while (x1 < width) {
		/* search for first non-transparent pixel */
		while ((x1 < width) && !*destPtr) {
		    x1++; destPtr += 4;
		}
		end = x1;
		/* search for first transparent pixel */
		while ((end < width) && *destPtr) {
		    end++; destPtr += 4;
		}
		if (end > x1) {
		    rect.x = x + x1;
		    rect.y = y + y1;
		    rect.width = end - x1;
		    rect.height = 1;
		    TkUnionRectWithRegion(&rect, masterPtr->validRegion,
			    masterPtr->validRegion);
		}
		x1 = end;
	    }
	    destLinePtr += masterPtr->width * 4;
	}
    } else {
	rect.x = x;
	rect.y = y;
	rect.width = width;
	rect.height = height;
	TkUnionRectWithRegion(&rect, masterPtr->validRegion,
		masterPtr->validRegion);
    }

    /*
     * Update each instance.
     */

    Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, x, y, width, height);

Changes to generic/tkInt.decls.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	# tkInt.decls --
#
#	This file contains the declarations for all unsupported
#	functions that are exported by the Tk library.  This file
#	is used to generate the tkIntDecls.h, tkIntPlatDecls.h,
#	tkIntStub.c, and tkPlatStub.c files.
#
# Copyright (c) 1998-1999 by Scriptics Corporation.
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: tkInt.decls,v 1.21.2.3 2002/02/05 02:25:15 wolfsuit Exp $

library tk

# Define the unsupported generic interfaces.

interface tkInt












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	# tkInt.decls --
#
#	This file contains the declarations for all unsupported
#	functions that are exported by the Tk library.  This file
#	is used to generate the tkIntDecls.h, tkIntPlatDecls.h,
#	tkIntStub.c, and tkPlatStub.c files.
#
# Copyright (c) 1998-1999 by Scriptics Corporation.
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: tkInt.decls,v 1.21.2.4 2002/06/10 05:38:23 wolfsuit Exp $

library tk

# Define the unsupported generic interfaces.

interface tkInt

640
641
642
643
644
645
646












647
648
649
650
651
652
653
declare 140 generic {
    TkRegion TkPhotoGetValidRegion (Tk_PhotoHandle handle)
}

declare 141 generic {
    TkWindow ** TkWmStackorderToplevel(TkWindow *parentPtr)
}













##############################################################################

# Define the platform specific internal Tcl interface. These functions are
# only available on the designated platform.

interface tkIntPlat







>
>
>
>
>
>
>
>
>
>
>
>







640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
declare 140 generic {
    TkRegion TkPhotoGetValidRegion (Tk_PhotoHandle handle)
}

declare 141 generic {
    TkWindow ** TkWmStackorderToplevel(TkWindow *parentPtr)
}

declare 142 generic {
    void TkFocusFree(TkMainInfo *mainPtr)
}

declare 143 generic {
    void TkClipCleanup(TkDisplay *dispPtr)
}

declare 144 generic {
    void TkGCCleanup(TkDisplay *dispPtr)
}

##############################################################################

# Define the platform specific internal Tcl interface. These functions are
# only available on the designated platform.

interface tkIntPlat
686
687
688
689
690
691
692
















693
694
695
696
697
698
699
declare 7 unix {
    void TkUnixSetMenubar (Tk_Window tkwin, Tk_Window menubar)
}

declare 8 unix {
    int TkpScanWindowId (Tcl_Interp *interp, CONST char *string, Window *idPtr)
}

















############################
# Windows specific functions

declare 0 win {
    char * TkAlignImageData (XImage *image, int alignment, int bitOrder)
}







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
declare 7 unix {
    void TkUnixSetMenubar (Tk_Window tkwin, Tk_Window menubar)
}

declare 8 unix {
    int TkpScanWindowId (Tcl_Interp *interp, CONST char *string, Window *idPtr)
}

declare 9 unix {
    void TkWmCleanup (TkDisplay *dispPtr)
}

declare 10 unix {
    void TkSendCleanup (TkDisplay *dispPtr)
}

declare 11 unix {
    void TkFreeXId (TkDisplay *dispPtr)
}

declare 12 unix {
    int TkpWmSetState (TkWindow *winPtr, int state)
}

############################
# Windows specific functions

declare 0 win {
    char * TkAlignImageData (XImage *image, int alignment, int bitOrder)
}
Changes to generic/tkInt.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkInt.h --
 *
 *	Declarations for things used internally by the Tk
 *	procedures but not exported outside the module.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: $Id: tkInt.h,v 1.40.2.1 2002/02/05 02:25:15 wolfsuit Exp $ 
 */

#ifndef _TKINT
#define _TKINT

#ifndef _TK
#include "tk.h"













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkInt.h --
 *
 *	Declarations for things used internally by the Tk
 *	procedures but not exported outside the module.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: $Id: tkInt.h,v 1.40.2.2 2002/06/10 05:38:23 wolfsuit Exp $ 
 */

#ifndef _TKINT
#define _TKINT

#ifndef _TK
#include "tk.h"
77
78
79
80
81
82
83










84
85
86
87
88
89
90
				 * (needed when deleting). */
    struct TkCursor *nextPtr;	/* Points to the next TkCursor structure with
				 * the same name.  Cursors with the same
				 * name but different displays are chained
				 * together off a single hash table entry. */
} TkCursor;











/*
 * One of the following structures is maintained for each display
 * containing a window managed by Tk.  In part, the structure is 
 * used to store thread-specific data, since each thread will have 
 * its own TkDisplay structure.
 */








>
>
>
>
>
>
>
>
>
>







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
				 * (needed when deleting). */
    struct TkCursor *nextPtr;	/* Points to the next TkCursor structure with
				 * the same name.  Cursors with the same
				 * name but different displays are chained
				 * together off a single hash table entry. */
} TkCursor;

/*
 * This defines whether we should try to use XIM over-the-spot style
 * input.  Allow users to override it.  It is a much more elegant use
 * of XIM, but uses a bit more memory.
 */

#ifndef TK_XIM_SPOT
#   define TK_XIM_SPOT	1
#endif

/*
 * One of the following structures is maintained for each display
 * containing a window managed by Tk.  In part, the structure is 
 * used to store thread-specific data, since each thread will have 
 * its own TkDisplay structure.
 */

409
410
411
412
413
414
415

416
417
418
419
420
421
422
423
424
				 * resources. */
    XID (*defaultAllocProc) _ANSI_ARGS_((Display *display));
				/* Default resource allocator for display. */
    struct TkIdStack *windowStackPtr;
				/* First in list of chunks of window
				 * identifers that can't be reused right
				 * now. */

    int idCleanupScheduled;	/* 1 means a call to WindowIdCleanup has
				 * already been scheduled, 0 means it
				 * hasn't. */

    /*
     * Information used by tkUnixWm.c and tkWinWm.c only:
     */

    int wmTracing;              /* Used to enable or disable tracing in 







>
|
|







419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
				 * resources. */
    XID (*defaultAllocProc) _ANSI_ARGS_((Display *display));
				/* Default resource allocator for display. */
    struct TkIdStack *windowStackPtr;
				/* First in list of chunks of window
				 * identifers that can't be reused right
				 * now. */
    Tcl_TimerToken idCleanupScheduled;
				/* If set, it means a call to WindowIdCleanup
				 * has already been scheduled, 0 means it
				 * hasn't. */

    /*
     * Information used by tkUnixWm.c and tkWinWm.c only:
     */

    int wmTracing;              /* Used to enable or disable tracing in 
452
453
454
455
456
457
458



459
460
461
462
463
464
465

    /*
     * Miscellaneous information:
     */

#ifdef TK_USE_INPUT_METHODS
    XIM inputMethod;		/* Input method for this display */



#endif /* TK_USE_INPUT_METHODS */
    Tcl_HashTable winTable;	/* Maps from X window ids to TkWindow ptrs. */

    int refCount;		/* Reference count of how many Tk applications
                                 * are using this display. Used to clean up
                                 * the display when we no longer have any
                                 * Tk applications using it.







>
>
>







463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479

    /*
     * Miscellaneous information:
     */

#ifdef TK_USE_INPUT_METHODS
    XIM inputMethod;		/* Input method for this display */
#if TK_XIM_SPOT
    XFontSet inputXfs;		/* XFontSet cached for over-the-spot XIM. */
#endif
#endif /* TK_USE_INPUT_METHODS */
    Tcl_HashTable winTable;	/* Maps from X window ids to TkWindow ptrs. */

    int refCount;		/* Reference count of how many Tk applications
                                 * are using this display. Used to clean up
                                 * the display when we no longer have any
                                 * Tk applications using it.
476
477
478
479
480
481
482

483
484
485
486
487
488
489
    int useInputMethods;	/* Whether to use input methods */

    /*
     * The following field(s) were all added for Tk8.4
     */
    long deletionEpoch;		/* Incremented by window deletions */
} TkDisplay;


/*
 * One of the following structures exists for each error handler
 * created by a call to Tk_CreateErrorHandler.  The structure
 * is managed by tkError.c.
 */








>







490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
    int useInputMethods;	/* Whether to use input methods */

    /*
     * The following field(s) were all added for Tk8.4
     */
    long deletionEpoch;		/* Incremented by window deletions */
} TkDisplay;


/*
 * One of the following structures exists for each error handler
 * created by a call to Tk_CreateErrorHandler.  The structure
 * is managed by tkError.c.
 */

511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
    ClientData clientData;	/* Arbitrary value to pass to
				 * errorProc. */
    struct TkErrorHandler *nextPtr;
				/* Pointer to next older handler for
				 * this display, or NULL for end of
				 * list. */
} TkErrorHandler;




/*
 * One of the following structures exists for each event handler
 * created by calling Tk_CreateEventHandler.  This information
 * is used by tkEvent.c only.
 */







<
<







526
527
528
529
530
531
532


533
534
535
536
537
538
539
    ClientData clientData;	/* Arbitrary value to pass to
				 * errorProc. */
    struct TkErrorHandler *nextPtr;
				/* Pointer to next older handler for
				 * this display, or NULL for end of
				 * list. */
} TkErrorHandler;




/*
 * One of the following structures exists for each event handler
 * created by calling Tk_CreateEventHandler.  This information
 * is used by tkEvent.c only.
 */
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
     * Information kept by the event manager (tkEvent.c):
     */

    TkEventHandler *handlerList;/* First in list of event handlers
				 * declared for this window, or
				 * NULL if none. */
#ifdef TK_USE_INPUT_METHODS
    XIC inputContext;		/* Input context (for input methods). */
#endif /* TK_USE_INPUT_METHODS */

    /*
     * Information used for event bindings (see "bind" and "bindtags"
     * commands in tkCmds.c):
     */








|







709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
     * Information kept by the event manager (tkEvent.c):
     */

    TkEventHandler *handlerList;/* First in list of event handlers
				 * declared for this window, or
				 * NULL if none. */
#ifdef TK_USE_INPUT_METHODS
    XIC inputContext;		/* XIM input context. */
#endif /* TK_USE_INPUT_METHODS */

    /*
     * Information used for event bindings (see "bind" and "bindtags"
     * commands in tkCmds.c):
     */

977
978
979
980
981
982
983




984
985
986
987
988
989
990
EXTERN int		Tk_MenubuttonObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
EXTERN int              Tk_MessageBoxObjCmd _ANSI_ARGS_((ClientData clientData,
                            Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
EXTERN int		Tk_MessageObjCmd _ANSI_ARGS_((ClientData clientData,




			    Tcl_Interp *interp, int objc,
			    Tcl_Obj *CONST objv[]));
EXTERN int		Tk_OptionObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
	                    Tcl_Obj *CONST objv[]));
EXTERN int		Tk_PackObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,







>
>
>
>







990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
EXTERN int		Tk_MenubuttonObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
EXTERN int              Tk_MessageBoxObjCmd _ANSI_ARGS_((ClientData clientData,
                            Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
EXTERN int		Tk_MessageObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
			    Tcl_Obj *CONST objv[]));
EXTERN int		Tk_PanedWindowObjCmd _ANSI_ARGS_((
			    ClientData clientData,
			    Tcl_Interp *interp, int objc,
			    Tcl_Obj *CONST objv[]));
EXTERN int		Tk_OptionObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
	                    Tcl_Obj *CONST objv[]));
EXTERN int		Tk_PackObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
Changes to generic/tkIntDecls.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkIntDecls.h --
 *
 *	This file contains the declarations for all unsupported
 *	functions that are exported by the Tk library.  These
 *	interfaces are not guaranteed to remain the same between
 *	versions.  Use at your own risk.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.4 2002/02/05 02:25:15 wolfsuit Exp $
 */

#ifndef _TKINTDECLS
#define _TKINTDECLS

#ifdef BUILD_tk
#undef TCL_STORAGE_CLASS













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkIntDecls.h --
 *
 *	This file contains the declarations for all unsupported
 *	functions that are exported by the Tk library.  These
 *	interfaces are not guaranteed to remain the same between
 *	versions.  Use at your own risk.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.5 2002/06/10 05:38:23 wolfsuit Exp $
 */

#ifndef _TKINTDECLS
#define _TKINTDECLS

#ifdef BUILD_tk
#undef TCL_STORAGE_CLASS
527
528
529
530
531
532
533






534
535
536
537
538
539
540
EXTERN void		TkpInitKeymapInfo _ANSI_ARGS_((TkDisplay * dispPtr));
/* 140 */
EXTERN TkRegion		TkPhotoGetValidRegion _ANSI_ARGS_((
				Tk_PhotoHandle handle));
/* 141 */
EXTERN TkWindow **	TkWmStackorderToplevel _ANSI_ARGS_((
				TkWindow * parentPtr));







typedef struct TkIntStubs {
    int magic;
    struct TkIntStubHooks *hooks;

    TkWindow * (*tkAllocWindow) _ANSI_ARGS_((TkDisplay * dispPtr, int screenNum, TkWindow * parentPtr)); /* 0 */
    void (*tkBezierPoints) _ANSI_ARGS_((double control[], int numSteps, double * coordPtr)); /* 1 */







>
>
>
>
>
>







527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
EXTERN void		TkpInitKeymapInfo _ANSI_ARGS_((TkDisplay * dispPtr));
/* 140 */
EXTERN TkRegion		TkPhotoGetValidRegion _ANSI_ARGS_((
				Tk_PhotoHandle handle));
/* 141 */
EXTERN TkWindow **	TkWmStackorderToplevel _ANSI_ARGS_((
				TkWindow * parentPtr));
/* 142 */
EXTERN void		TkFocusFree _ANSI_ARGS_((TkMainInfo * mainPtr));
/* 143 */
EXTERN void		TkClipCleanup _ANSI_ARGS_((TkDisplay * dispPtr));
/* 144 */
EXTERN void		TkGCCleanup _ANSI_ARGS_((TkDisplay * dispPtr));

typedef struct TkIntStubs {
    int magic;
    struct TkIntStubHooks *hooks;

    TkWindow * (*tkAllocWindow) _ANSI_ARGS_((TkDisplay * dispPtr, int screenNum, TkWindow * parentPtr)); /* 0 */
    void (*tkBezierPoints) _ANSI_ARGS_((double control[], int numSteps, double * coordPtr)); /* 1 */
784
785
786
787
788
789
790



791
792
793
794
795
796
797
    void (*tkpDrawHighlightBorder) _ANSI_ARGS_((Tk_Window tkwin, GC fgGC, GC bgGC, int highlightWidth, Drawable drawable)); /* 135 */
    void (*tkSetFocusWin) _ANSI_ARGS_((TkWindow * winPtr, int force)); /* 136 */
    void (*tkpSetKeycodeAndState) _ANSI_ARGS_((Tk_Window tkwin, KeySym keySym, XEvent * eventPtr)); /* 137 */
    KeySym (*tkpGetKeySym) _ANSI_ARGS_((TkDisplay * dispPtr, XEvent * eventPtr)); /* 138 */
    void (*tkpInitKeymapInfo) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 139 */
    TkRegion (*tkPhotoGetValidRegion) _ANSI_ARGS_((Tk_PhotoHandle handle)); /* 140 */
    TkWindow ** (*tkWmStackorderToplevel) _ANSI_ARGS_((TkWindow * parentPtr)); /* 141 */



} TkIntStubs;

#ifdef __cplusplus
extern "C" {
#endif
extern TkIntStubs *tkIntStubsPtr;
#ifdef __cplusplus







>
>
>







790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
    void (*tkpDrawHighlightBorder) _ANSI_ARGS_((Tk_Window tkwin, GC fgGC, GC bgGC, int highlightWidth, Drawable drawable)); /* 135 */
    void (*tkSetFocusWin) _ANSI_ARGS_((TkWindow * winPtr, int force)); /* 136 */
    void (*tkpSetKeycodeAndState) _ANSI_ARGS_((Tk_Window tkwin, KeySym keySym, XEvent * eventPtr)); /* 137 */
    KeySym (*tkpGetKeySym) _ANSI_ARGS_((TkDisplay * dispPtr, XEvent * eventPtr)); /* 138 */
    void (*tkpInitKeymapInfo) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 139 */
    TkRegion (*tkPhotoGetValidRegion) _ANSI_ARGS_((Tk_PhotoHandle handle)); /* 140 */
    TkWindow ** (*tkWmStackorderToplevel) _ANSI_ARGS_((TkWindow * parentPtr)); /* 141 */
    void (*tkFocusFree) _ANSI_ARGS_((TkMainInfo * mainPtr)); /* 142 */
    void (*tkClipCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 143 */
    void (*tkGCCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 144 */
} TkIntStubs;

#ifdef __cplusplus
extern "C" {
#endif
extern TkIntStubs *tkIntStubsPtr;
#ifdef __cplusplus
1451
1452
1453
1454
1455
1456
1457












1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
#define TkPhotoGetValidRegion \
	(tkIntStubsPtr->tkPhotoGetValidRegion) /* 140 */
#endif
#ifndef TkWmStackorderToplevel
#define TkWmStackorderToplevel \
	(tkIntStubsPtr->tkWmStackorderToplevel) /* 141 */
#endif













#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */

/* !END!: Do not edit above this line. */

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT

#endif /* _TKINTDECLS */








>
>
>
>
>
>
>
>
>
>
>
>










1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
#define TkPhotoGetValidRegion \
	(tkIntStubsPtr->tkPhotoGetValidRegion) /* 140 */
#endif
#ifndef TkWmStackorderToplevel
#define TkWmStackorderToplevel \
	(tkIntStubsPtr->tkWmStackorderToplevel) /* 141 */
#endif
#ifndef TkFocusFree
#define TkFocusFree \
	(tkIntStubsPtr->tkFocusFree) /* 142 */
#endif
#ifndef TkClipCleanup
#define TkClipCleanup \
	(tkIntStubsPtr->tkClipCleanup) /* 143 */
#endif
#ifndef TkGCCleanup
#define TkGCCleanup \
	(tkIntStubsPtr->tkGCCleanup) /* 144 */
#endif

#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */

/* !END!: Do not edit above this line. */

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT

#endif /* _TKINTDECLS */

Changes to generic/tkIntPlatDecls.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 * tkIntPlatDecls.h --
 *
 *	This file contains the declarations for all platform dependent
 *	unsupported functions that are exported by the Tk library.  These
 *	interfaces are not guaranteed to remain the same between
 *	versions.  Use at your own risk.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 * All rights reserved.
 *
 * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.3 2002/02/05 02:25:15 wolfsuit Exp $
 */

#ifndef _TKINTPLATDECLS
#define _TKINTPLATDECLS

#ifdef BUILD_tk
#undef TCL_STORAGE_CLASS











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 * tkIntPlatDecls.h --
 *
 *	This file contains the declarations for all platform dependent
 *	unsupported functions that are exported by the Tk library.  These
 *	interfaces are not guaranteed to remain the same between
 *	versions.  Use at your own risk.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 * All rights reserved.
 *
 * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.4 2002/06/10 05:38:23 wolfsuit Exp $
 */

#ifndef _TKINTPLATDECLS
#define _TKINTPLATDECLS

#ifdef BUILD_tk
#undef TCL_STORAGE_CLASS
51
52
53
54
55
56
57









58
59
60
61
62
63
64
EXTERN int		TkUnixDoOneXEvent _ANSI_ARGS_((Tcl_Time * timePtr));
/* 7 */
EXTERN void		TkUnixSetMenubar _ANSI_ARGS_((Tk_Window tkwin, 
				Tk_Window menubar));
/* 8 */
EXTERN int		TkpScanWindowId _ANSI_ARGS_((Tcl_Interp * interp, 
				CONST char * string, Window * idPtr));









#endif /* UNIX */
#ifdef __WIN32__
/* 0 */
EXTERN char *		TkAlignImageData _ANSI_ARGS_((XImage * image, 
				int alignment, int bitOrder));
/* Slot 1 is reserved */
/* 2 */







>
>
>
>
>
>
>
>
>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
EXTERN int		TkUnixDoOneXEvent _ANSI_ARGS_((Tcl_Time * timePtr));
/* 7 */
EXTERN void		TkUnixSetMenubar _ANSI_ARGS_((Tk_Window tkwin, 
				Tk_Window menubar));
/* 8 */
EXTERN int		TkpScanWindowId _ANSI_ARGS_((Tcl_Interp * interp, 
				CONST char * string, Window * idPtr));
/* 9 */
EXTERN void		TkWmCleanup _ANSI_ARGS_((TkDisplay * dispPtr));
/* 10 */
EXTERN void		TkSendCleanup _ANSI_ARGS_((TkDisplay * dispPtr));
/* 11 */
EXTERN void		TkFreeXId _ANSI_ARGS_((TkDisplay * dispPtr));
/* 12 */
EXTERN int		TkpWmSetState _ANSI_ARGS_((TkWindow * winPtr, 
				int state));
#endif /* UNIX */
#ifdef __WIN32__
/* 0 */
EXTERN char *		TkAlignImageData _ANSI_ARGS_((XImage * image, 
				int alignment, int bitOrder));
/* Slot 1 is reserved */
/* 2 */
433
434
435
436
437
438
439




440
441
442
443
444
445
446
    void (*tkInitXId) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 2 */
    int (*tkpCmapStressed) _ANSI_ARGS_((Tk_Window tkwin, Colormap colormap)); /* 3 */
    void (*tkpSync) _ANSI_ARGS_((Display * display)); /* 4 */
    Window (*tkUnixContainerId) _ANSI_ARGS_((TkWindow * winPtr)); /* 5 */
    int (*tkUnixDoOneXEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 6 */
    void (*tkUnixSetMenubar) _ANSI_ARGS_((Tk_Window tkwin, Tk_Window menubar)); /* 7 */
    int (*tkpScanWindowId) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, Window * idPtr)); /* 8 */




#endif /* UNIX */
#ifdef __WIN32__
    char * (*tkAlignImageData) _ANSI_ARGS_((XImage * image, int alignment, int bitOrder)); /* 0 */
    void *reserved1;
    void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 2 */
    unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 3 */
    void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 4 */







>
>
>
>







442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
    void (*tkInitXId) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 2 */
    int (*tkpCmapStressed) _ANSI_ARGS_((Tk_Window tkwin, Colormap colormap)); /* 3 */
    void (*tkpSync) _ANSI_ARGS_((Display * display)); /* 4 */
    Window (*tkUnixContainerId) _ANSI_ARGS_((TkWindow * winPtr)); /* 5 */
    int (*tkUnixDoOneXEvent) _ANSI_ARGS_((Tcl_Time * timePtr)); /* 6 */
    void (*tkUnixSetMenubar) _ANSI_ARGS_((Tk_Window tkwin, Tk_Window menubar)); /* 7 */
    int (*tkpScanWindowId) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * string, Window * idPtr)); /* 8 */
    void (*tkWmCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 9 */
    void (*tkSendCleanup) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 10 */
    void (*tkFreeXId) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 11 */
    int (*tkpWmSetState) _ANSI_ARGS_((TkWindow * winPtr, int state)); /* 12 */
#endif /* UNIX */
#ifdef __WIN32__
    char * (*tkAlignImageData) _ANSI_ARGS_((XImage * image, int alignment, int bitOrder)); /* 0 */
    void *reserved1;
    void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 2 */
    unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 3 */
    void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 4 */
648
649
650
651
652
653
654
















655
656
657
658
659
660
661
#define TkUnixSetMenubar \
	(tkIntPlatStubsPtr->tkUnixSetMenubar) /* 7 */
#endif
#ifndef TkpScanWindowId
#define TkpScanWindowId \
	(tkIntPlatStubsPtr->tkpScanWindowId) /* 8 */
#endif
















#endif /* UNIX */
#ifdef __WIN32__
#ifndef TkAlignImageData
#define TkAlignImageData \
	(tkIntPlatStubsPtr->tkAlignImageData) /* 0 */
#endif
/* Slot 1 is reserved */







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
#define TkUnixSetMenubar \
	(tkIntPlatStubsPtr->tkUnixSetMenubar) /* 7 */
#endif
#ifndef TkpScanWindowId
#define TkpScanWindowId \
	(tkIntPlatStubsPtr->tkpScanWindowId) /* 8 */
#endif
#ifndef TkWmCleanup
#define TkWmCleanup \
	(tkIntPlatStubsPtr->tkWmCleanup) /* 9 */
#endif
#ifndef TkSendCleanup
#define TkSendCleanup \
	(tkIntPlatStubsPtr->tkSendCleanup) /* 10 */
#endif
#ifndef TkFreeXId
#define TkFreeXId \
	(tkIntPlatStubsPtr->tkFreeXId) /* 11 */
#endif
#ifndef TkpWmSetState
#define TkpWmSetState \
	(tkIntPlatStubsPtr->tkpWmSetState) /* 12 */
#endif
#endif /* UNIX */
#ifdef __WIN32__
#ifndef TkAlignImageData
#define TkAlignImageData \
	(tkIntPlatStubsPtr->tkAlignImageData) /* 0 */
#endif
/* Slot 1 is reserved */
Changes to generic/tkListbox.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkListbox.c --
 *
 *	This module implements listbox widgets for the Tk
 *	toolkit.  A listbox displays a collection of strings,
 *	one per line, and provides scrolling and selection.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkListbox.c,v 1.22.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"

typedef struct {













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkListbox.c --
 *
 *	This module implements listbox widgets for the Tk
 *	toolkit.  A listbox displays a collection of strings,
 *	one per line, and provides scrolling and selection.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkListbox.c,v 1.22.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"

typedef struct {
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
static ItemAttr *	ListboxGetItemAttributes _ANSI_ARGS_ (
    			    (Tcl_Interp *interp, Listbox *listPtr, int index));
static void		ListboxWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static int		NearestListboxElement _ANSI_ARGS_((Listbox *listPtr,
			    int y));
static char *		ListboxListVarProc _ANSI_ARGS_ ((ClientData clientData,
	                    Tcl_Interp *interp, char *name1, char *name2,
 	                    int flags));
static void		MigrateHashEntries _ANSI_ARGS_ ((Tcl_HashTable *table,
			    int first, int last, int offset));
/*
 * The structure below defines button class behavior by means of procedures
 * that can be invoked from generic window code.
 */







|







421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
static ItemAttr *	ListboxGetItemAttributes _ANSI_ARGS_ (
    			    (Tcl_Interp *interp, Listbox *listPtr, int index));
static void		ListboxWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static int		NearestListboxElement _ANSI_ARGS_((Listbox *listPtr,
			    int y));
static char *		ListboxListVarProc _ANSI_ARGS_ ((ClientData clientData,
	                    Tcl_Interp *interp, char *name1, CONST char *name2,
 	                    int flags));
static void		MigrateHashEntries _ANSI_ARGS_ ((Tcl_HashTable *table,
			    int first, int last, int offset));
/*
 * The structure below defines button class behavior by means of procedures
 * that can be invoked from generic window code.
 */
1525
1526
1527
1528
1529
1530
1531

1532
1533
1534
1535
1536
1537
1538
1539
1540






1541
1542
1543









1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599


1600
1601
1602
1603

1604

1605
1606
1607

1608
1609
1610

1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624





1625
1626
1627
1628
1629
1630




1631
1632

1633
1634
1635
1636
1637
1638
1639
				 * not already have values for some fields. */
    int objc;			/* Number of valid entries in argv. */
    Tcl_Obj *CONST objv[];	/* Arguments. */
    int flags;			/* Flags to pass to Tk_ConfigureWidget. */
{
    Tk_SavedOptions savedOptions;
    Tcl_Obj *oldListObj = NULL;

    int oldExport;

    oldExport = listPtr->exportSelection;
    if (listPtr->listVarName != NULL) {
	Tcl_UntraceVar(interp, listPtr->listVarName,
		TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
		ListboxListVarProc, (ClientData) listPtr);
    }
    






    if (Tk_SetOptions(interp, (char *)listPtr,
	    listPtr->optionTable, objc, objv, listPtr->tkwin,
	    &savedOptions, (int *)NULL) != TCL_OK) {









	Tk_RestoreSavedOptions(&savedOptions);
	return TCL_ERROR;
    }
    
    /*
     * A few options need special processing, such as setting the
     * background from a 3-D border.
     */

    Tk_SetBackgroundFromBorder(listPtr->tkwin, listPtr->normalBorder);

    if (listPtr->highlightWidth < 0) {
	listPtr->highlightWidth = 0;
    }
    listPtr->inset = listPtr->highlightWidth + listPtr->borderWidth;

    /*
     * Claim the selection if we've suddenly started exporting it and
     * there is a selection to export.
     */

    if (listPtr->exportSelection && !oldExport
	    && (listPtr->numSelected != 0)) {
	Tk_OwnSelection(listPtr->tkwin, XA_PRIMARY, ListboxLostSelection,
		(ClientData) listPtr);
    }

    
    /* Verify the current status of the list var.
     * PREVIOUS STATE    | NEW STATE     | ACTION
     * ------------------+---------------+----------------------------------
     * no listvar        | listvar       | If listvar does not exist, create
     *                                     it and copy the internal list obj's
     *                                     content to the new var.  If it does
     *                                     exist, toss the internal list obj.
     *
     * listvar           | no listvar    | Copy old listvar content to the
     *                                     internal list obj
     *
     * listvar           | listvar       | no special action
     *
     * no listvar        | no listvar    | no special action
     */
    oldListObj = listPtr->listObj;
    if (listPtr->listVarName != NULL) {
	Tcl_Obj *listVarObj = Tcl_GetVar2Ex(interp, listPtr->listVarName,
		(char *)NULL, TCL_GLOBAL_ONLY);
	int dummy;
	if (listVarObj == NULL) {
	    if (listPtr->listObj != NULL) {
		listVarObj = listPtr->listObj;
	    } else {
		listVarObj = Tcl_NewObj();
	    }
	    if (Tcl_SetVar2Ex(interp, listPtr->listVarName, (char *)NULL,
		    listVarObj, TCL_GLOBAL_ONLY) == NULL) {


		Tcl_DecrRefCount(listVarObj);
		Tk_RestoreSavedOptions(&savedOptions);
		return TCL_ERROR;
	    }

	}

	/* Make sure the object is a good list object */
	if (Tcl_ListObjLength(listPtr->interp, listVarObj, &dummy) != TCL_OK) {
	    Tk_RestoreSavedOptions(&savedOptions);

	    Tcl_AppendResult(listPtr->interp, ": invalid listvar value",
		    (char *)NULL);
	    return TCL_ERROR;

	}
    
	listPtr->listObj = listVarObj;
	Tcl_TraceVar(listPtr->interp, listPtr->listVarName,
                TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
                ListboxListVarProc, (ClientData) listPtr);
    } else {
	if (listPtr->listObj == NULL) {
	    listPtr->listObj = Tcl_NewObj();
	}
    }
    Tcl_IncrRefCount(listPtr->listObj);
    if (oldListObj != NULL) {
	Tcl_DecrRefCount(oldListObj);





    }

    /* Make sure that the list length is correct */
    Tcl_ListObjLength(listPtr->interp, listPtr->listObj, &listPtr->nElements);
    
    Tk_FreeSavedOptions(&savedOptions);




    ListboxWorldChanged((ClientData) listPtr);
    return TCL_OK;

}

/*
 *----------------------------------------------------------------------
 *
 * ConfigureListboxItem --
 *







>
|







|
>
>
>
>
>
>
|
|
|
>
>
>
>
>
>
>
>
>
|
<
|
|
|
|
|
|

|

|
|
|
|

|
|
|
|

|
|
|
|
|

<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
<
|
|
>
>
|
<
<
|
>
|
>
|
|
<
>
|
|
<
>
|
|
|
|
|
|
<
|


<
|
|
|
>
>
>
>
>





|
>
>
>
>
|
|
>







1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560

1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585

1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606



1607

1608
1609
1610
1611
1612


1613
1614
1615
1616
1617
1618

1619
1620
1621

1622
1623
1624
1625
1626
1627
1628

1629
1630
1631

1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
				 * not already have values for some fields. */
    int objc;			/* Number of valid entries in argv. */
    Tcl_Obj *CONST objv[];	/* Arguments. */
    int flags;			/* Flags to pass to Tk_ConfigureWidget. */
{
    Tk_SavedOptions savedOptions;
    Tcl_Obj *oldListObj = NULL;
    Tcl_Obj *errorResult = NULL;
    int oldExport, error;

    oldExport = listPtr->exportSelection;
    if (listPtr->listVarName != NULL) {
	Tcl_UntraceVar(interp, listPtr->listVarName,
		TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
		ListboxListVarProc, (ClientData) listPtr);
    }

    for (error = 0; error <= 1; error++) {
	if (!error) {
	    /*
	     * First pass: set options to new values.
	     */

	    if (Tk_SetOptions(interp, (char *) listPtr,
		    listPtr->optionTable, objc, objv,
		    listPtr->tkwin, &savedOptions, (int *) NULL) != TCL_OK) {
		continue;
	    }
	} else {
	    /*
	     * Second pass: restore options to old values.
	     */

	    errorResult = Tcl_GetObjResult(interp);
	    Tcl_IncrRefCount(errorResult);
	    Tk_RestoreSavedOptions(&savedOptions);

	}

	/*
	 * A few options need special processing, such as setting the
	 * background from a 3-D border.
	 */

	Tk_SetBackgroundFromBorder(listPtr->tkwin, listPtr->normalBorder);

	if (listPtr->highlightWidth < 0) {
	    listPtr->highlightWidth = 0;
	}
	listPtr->inset = listPtr->highlightWidth + listPtr->borderWidth;

	/*
	 * Claim the selection if we've suddenly started exporting it and
	 * there is a selection to export.
	 */

	if (listPtr->exportSelection && !oldExport
		&& (listPtr->numSelected != 0)) {
	    Tk_OwnSelection(listPtr->tkwin, XA_PRIMARY, ListboxLostSelection,
		    (ClientData) listPtr);
	}


	/* Verify the current status of the list var.
	 * PREVIOUS STATE | NEW STATE  | ACTION
	 * ---------------+------------+----------------------------------
	 * no listvar     | listvar    | If listvar does not exist, create
	 *                               it and copy the internal list obj's
	 *                               content to the new var.  If it does
	 *                               exist, toss the internal list obj.
	 *
	 * listvar        | no listvar | Copy old listvar content to the
	 *                               internal list obj
	 *
	 * listvar        | listvar    | no special action
	 *
	 * no listvar     | no listvar | no special action
	 */
	oldListObj = listPtr->listObj;
	if (listPtr->listVarName != NULL) {
	    Tcl_Obj *listVarObj = Tcl_GetVar2Ex(interp, listPtr->listVarName,
		    (char *) NULL, TCL_GLOBAL_ONLY);
	    int dummy;
	    if (listVarObj == NULL) {



		listVarObj = (oldListObj ? oldListObj : Tcl_NewObj());

		if (Tcl_SetVar2Ex(interp, listPtr->listVarName, (char *) NULL,
			listVarObj, TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG)
			== NULL) {
		    if (oldListObj == NULL) {
			Tcl_DecrRefCount(listVarObj);


		    }
		    continue;
		}
	    }
	    /* Make sure the object is a good list object */
	    if (Tcl_ListObjLength(listPtr->interp, listVarObj, &dummy)

		    != TCL_OK) {
		Tcl_AppendResult(listPtr->interp,
			": invalid -listvariable value", (char *) NULL);

		continue;
	    }

	    listPtr->listObj = listVarObj;
	    Tcl_TraceVar(listPtr->interp, listPtr->listVarName,
		    TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
		    ListboxListVarProc, (ClientData) listPtr);

	} else if (listPtr->listObj == NULL) {
	    listPtr->listObj = Tcl_NewObj();
	}

	Tcl_IncrRefCount(listPtr->listObj);
	if (oldListObj != NULL) {
	    Tcl_DecrRefCount(oldListObj);
	}
	break;
    }
    if (!error) {
	Tk_FreeSavedOptions(&savedOptions);
    }

    /* Make sure that the list length is correct */
    Tcl_ListObjLength(listPtr->interp, listPtr->listObj, &listPtr->nElements);
    
    if (error) {
        Tcl_SetObjResult(interp, errorResult);
	Tcl_DecrRefCount(errorResult);
	return TCL_ERROR;
    } else {
	ListboxWorldChanged((ClientData) listPtr);
	return TCL_OK;
    }
}

/*
 *----------------------------------------------------------------------
 *
 * ConfigureListboxItem --
 *
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
 */

static char *
ListboxListVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;      /* Information about button. */
    Tcl_Interp *interp;         /* Interpreter containing variable. */
    char *name1;                /* Not used. */
    char *name2;                /* Not used. */
    int flags;                  /* Information about what happened. */
{
    Listbox *listPtr = (Listbox *)clientData;
    Tcl_Obj *oldListObj, *varListObj;
    int oldLength;
    int i;
    Tcl_HashEntry *entry;







|







3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
 */

static char *
ListboxListVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;      /* Information about button. */
    Tcl_Interp *interp;         /* Interpreter containing variable. */
    char *name1;                /* Not used. */
    CONST char *name2;          /* Not used. */
    int flags;                  /* Information about what happened. */
{
    Listbox *listPtr = (Listbox *)clientData;
    Tcl_Obj *oldListObj, *varListObj;
    int oldLength;
    int i;
    Tcl_HashEntry *entry;
Changes to generic/tkMain.c.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMain.c,v 1.9.2.2 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <tcl.h>
#include <tclInt.h>







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMain.c,v 1.9.2.3 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <tcl.h>
#include <tclInt.h>
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
	    }
	    return;
	} 
    }

    (void) Tcl_DStringAppend(&tsdPtr->command, Tcl_DStringValue(
            &tsdPtr->line), -1);
    Tcl_DStringAppend(&tsdPtr->command, "\n", -1);
    cmd = Tcl_DStringValue(&tsdPtr->command);
    Tcl_DStringFree(&tsdPtr->line);
    if (!Tcl_CommandComplete(cmd)) {
        gotPartial = 1;
        goto prompt;
    }
    gotPartial = 0;








|
<







331
332
333
334
335
336
337
338

339
340
341
342
343
344
345
	    }
	    return;
	} 
    }

    (void) Tcl_DStringAppend(&tsdPtr->command, Tcl_DStringValue(
            &tsdPtr->line), -1);
    cmd = Tcl_DStringAppend(&tsdPtr->command, "\n", -1);

    Tcl_DStringFree(&tsdPtr->line);
    if (!Tcl_CommandComplete(cmd)) {
        gotPartial = 1;
        goto prompt;
    }
    gotPartial = 0;

Changes to generic/tkMenu.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1998 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMenu.c,v 1.13.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

/*
 * Notes on implementation of menus:
 *
 * Menus can be used in three ways:
 * - as a popup menu, either as part of a menubutton or standalone.







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1998 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMenu.c,v 1.13.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

/*
 * Notes on implementation of menus:
 *
 * Menus can be used in three ways:
 * - as a popup menu, either as part of a menubutton or standalone.
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
static void		MenuCmdDeletedProc _ANSI_ARGS_((
			    ClientData clientData));
static TkMenuEntry *	MenuNewEntry _ANSI_ARGS_((TkMenu *menuPtr, int index,
			    int type));
static char *		MenuVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, char *name2,
			    int flags));
static int		MenuWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
static void		MenuWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static int		PostProcessEntry _ANSI_ARGS_((TkMenuEntry *mePtr));







|







356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
static void		MenuCmdDeletedProc _ANSI_ARGS_((
			    ClientData clientData));
static TkMenuEntry *	MenuNewEntry _ANSI_ARGS_((TkMenu *menuPtr, int index,
			    int type));
static char *		MenuVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, CONST char *name2,
			    int flags));
static int		MenuWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
static void		MenuWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static int		PostProcessEntry _ANSI_ARGS_((TkMenuEntry *mePtr));
1532
1533
1534
1535
1536
1537
1538





1539
1540
1541
1542
1543
1544
1545
	    for (cleanupPtr = menuPtr->masterMenuPtr;
		    cleanupPtr != menuListPtr;
		    cleanupPtr = cleanupPtr->nextInstancePtr) {
		Tk_RestoreSavedOptions(cleanupPtr->errorStructPtr);
		ckfree((char *) cleanupPtr->errorStructPtr);
		cleanupPtr->errorStructPtr = NULL;
	    }





	    return TCL_ERROR;
	}

	/*
	 * When a menu is created, the type is in all of the arguments
	 * to the menu command. Let Tk_ConfigureWidget take care of
	 * parsing them, and then set the type after we can look at







>
>
>
>
>







1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
	    for (cleanupPtr = menuPtr->masterMenuPtr;
		    cleanupPtr != menuListPtr;
		    cleanupPtr = cleanupPtr->nextInstancePtr) {
		Tk_RestoreSavedOptions(cleanupPtr->errorStructPtr);
		ckfree((char *) cleanupPtr->errorStructPtr);
		cleanupPtr->errorStructPtr = NULL;
	    }
	    if (menuListPtr->errorStructPtr != NULL) {
		Tk_RestoreSavedOptions(menuListPtr->errorStructPtr);
		ckfree((char *) menuListPtr->errorStructPtr);
		menuListPtr->errorStructPtr = NULL;
	    }
	    return TCL_ERROR;
	}

	/*
	 * When a menu is created, the type is in all of the arguments
	 * to the menu command. Let Tk_ConfigureWidget take care of
	 * parsing them, and then set the type after we can look at
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589





1590
1591
1592
1593
1594
1595
1596
	 * isn't an initial tear-off entry at the beginning of the menu.
	 */
	
	if (menuListPtr->tearoff) {
	    if ((menuListPtr->numEntries == 0)
		    || (menuListPtr->entries[0]->type != TEAROFF_ENTRY)) {
		if (MenuNewEntry(menuListPtr, 0, TEAROFF_ENTRY) == NULL) {
		    if (menuListPtr->errorStructPtr != NULL) {
			for (cleanupPtr = menuPtr->masterMenuPtr;
				cleanupPtr != menuListPtr;
				cleanupPtr = cleanupPtr->nextInstancePtr) {
			    Tk_RestoreSavedOptions(cleanupPtr->errorStructPtr);
			    ckfree((char *) cleanupPtr->errorStructPtr);
			    cleanupPtr->errorStructPtr = NULL;
			}
			Tk_RestoreSavedOptions(cleanupPtr->errorStructPtr);
			ckfree((char *) cleanupPtr->errorStructPtr);
			cleanupPtr->errorStructPtr = NULL;





		    }
		    return TCL_ERROR;
		}
	    }
	} else if ((menuListPtr->numEntries > 0)
		&& (menuListPtr->entries[0]->type == TEAROFF_ENTRY)) {
	    int i;







<
|
|
|
<
<
<
<



>
>
>
>
>







1577
1578
1579
1580
1581
1582
1583

1584
1585
1586




1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
	 * isn't an initial tear-off entry at the beginning of the menu.
	 */
	
	if (menuListPtr->tearoff) {
	    if ((menuListPtr->numEntries == 0)
		    || (menuListPtr->entries[0]->type != TEAROFF_ENTRY)) {
		if (MenuNewEntry(menuListPtr, 0, TEAROFF_ENTRY) == NULL) {

		    for (cleanupPtr = menuPtr->masterMenuPtr;
			 cleanupPtr != menuListPtr;
			 cleanupPtr = cleanupPtr->nextInstancePtr) {




			Tk_RestoreSavedOptions(cleanupPtr->errorStructPtr);
			ckfree((char *) cleanupPtr->errorStructPtr);
			cleanupPtr->errorStructPtr = NULL;
		    }
		    if (menuListPtr->errorStructPtr != NULL) {
			Tk_RestoreSavedOptions(menuListPtr->errorStructPtr);
			ckfree((char *) menuListPtr->errorStructPtr);
			menuListPtr->errorStructPtr = NULL;
		    }
		    return TCL_ERROR;
		}
	    }
	} else if ((menuListPtr->numEntries > 0)
		&& (menuListPtr->entries[0]->type == TEAROFF_ENTRY)) {
	    int i;
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
 */

static char *
MenuVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about menu entry. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* First part of variable's name. */
    char *name2;		/* Second part of variable's name. */
    int flags;			/* Describes what just happened. */
{
    TkMenuEntry *mePtr = (TkMenuEntry *) clientData;
    TkMenu *menuPtr;
    CONST char *value;
    char *name = Tcl_GetStringFromObj(mePtr->namePtr, NULL);
    char *onValue;







|







2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
 */

static char *
MenuVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about menu entry. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* First part of variable's name. */
    CONST char *name2;		/* Second part of variable's name. */
    int flags;			/* Describes what just happened. */
{
    TkMenuEntry *mePtr = (TkMenuEntry *) clientData;
    TkMenu *menuPtr;
    CONST char *value;
    char *name = Tcl_GetStringFromObj(mePtr->namePtr, NULL);
    char *onValue;
Changes to generic/tkMenubutton.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkMenubutton.c --
 *
 *	This module implements button-like widgets that are used
 *	to invoke pull-down menus.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMenubutton.c,v 1.8.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkMenubutton.h"
#include "tkPort.h"
#include "default.h"

/*












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkMenubutton.c --
 *
 *	This module implements button-like widgets that are used
 *	to invoke pull-down menus.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMenubutton.c,v 1.8.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkMenubutton.h"
#include "tkPort.h"
#include "default.h"

/*
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
static void		MenuButtonEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static void		MenuButtonImageProc _ANSI_ARGS_((ClientData clientData,
			    int x, int y, int width, int height, int imgWidth,
			    int imgHeight));
static char *		MenuButtonTextVarProc _ANSI_ARGS_((
			    ClientData clientData, Tcl_Interp *interp,
			    char *name1, char *name2, int flags));
static int		MenuButtonWidgetObjCmd _ANSI_ARGS_((
                            ClientData clientData, Tcl_Interp *interp, 
			    int objc, Tcl_Obj *CONST objv[]));
static int		ConfigureMenuButton _ANSI_ARGS_((Tcl_Interp *interp,
			    TkMenuButton *mbPtr, int objc, 
                            Tcl_Obj *CONST objv[]));
static void		DestroyMenuButton _ANSI_ARGS_((char *memPtr));







|







172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
static void		MenuButtonEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static void		MenuButtonImageProc _ANSI_ARGS_((ClientData clientData,
			    int x, int y, int width, int height, int imgWidth,
			    int imgHeight));
static char *		MenuButtonTextVarProc _ANSI_ARGS_((
			    ClientData clientData, Tcl_Interp *interp,
			    char *name1, CONST char *name2, int flags));
static int		MenuButtonWidgetObjCmd _ANSI_ARGS_((
                            ClientData clientData, Tcl_Interp *interp, 
			    int objc, Tcl_Obj *CONST objv[]));
static int		ConfigureMenuButton _ANSI_ARGS_((Tcl_Interp *interp,
			    TkMenuButton *mbPtr, int objc, 
                            Tcl_Obj *CONST objv[]));
static void		DestroyMenuButton _ANSI_ARGS_((char *memPtr));
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878

	/* ARGSUSED */
static char *
MenuButtonTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register TkMenuButton *mbPtr = (TkMenuButton *) clientData;
    CONST char *value;

    /*
     * If the variable is unset, then immediately recreate it unless







|







864
865
866
867
868
869
870
871
872
873
874
875
876
877
878

	/* ARGSUSED */
static char *
MenuButtonTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    CONST char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register TkMenuButton *mbPtr = (TkMenuButton *) clientData;
    CONST char *value;

    /*
     * If the variable is unset, then immediately recreate it unless
Changes to generic/tkMessage.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMessage.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"

/*







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMessage.c,v 1.10.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"

/*
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
 */

static void		MessageCmdDeletedProc _ANSI_ARGS_((
			    ClientData clientData));
static void		MessageEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static char *		MessageTextVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, char *name2,
			    int flags));
static int		MessageWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
	                    Tcl_Obj *CONST objv[]));
static void		MessageWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static void		ComputeMessageGeometry _ANSI_ARGS_((Message *msgPtr));







|







172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
 */

static void		MessageCmdDeletedProc _ANSI_ARGS_((
			    ClientData clientData));
static void		MessageEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static char *		MessageTextVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, CONST char *name2,
			    int flags));
static int		MessageWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc,
	                    Tcl_Obj *CONST objv[]));
static void		MessageWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static void		ComputeMessageGeometry _ANSI_ARGS_((Message *msgPtr));
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858

	/* ARGSUSED */
static char *
MessageTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about message. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register Message *msgPtr = (Message *) clientData;
    CONST char *value;

    /*
     * If the variable is unset, then immediately recreate it unless







|







844
845
846
847
848
849
850
851
852
853
854
855
856
857
858

	/* ARGSUSED */
static char *
MessageTextVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about message. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    CONST char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register Message *msgPtr = (Message *) clientData;
    CONST char *value;

    /*
     * If the variable is unset, then immediately recreate it unless
Changes to generic/tkOldConfig.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkOldConfig.c --
 *
 *	This file contains the Tk_ConfigureWidget procedure. THIS FILE
 *	IS HERE FOR BACKWARD COMPATIBILITY; THE NEW CONFIGURATION
 *	PACKAGE SHOULD BE USED FOR NEW PROJECTS.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkOldConfig.c,v 1.9.6.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tk.h"

/*
 * Values for "flags" field of Tk_ConfigSpec structures.  Be sure













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkOldConfig.c --
 *
 *	This file contains the Tk_ConfigureWidget procedure. THIS FILE
 *	IS HERE FOR BACKWARD COMPATIBILITY; THE NEW CONFIGURATION
 *	PACKAGE SHOULD BE USED FOR NEW PROJECTS.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkOldConfig.c,v 1.9.6.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tk.h"

/*
 * Values for "flags" field of Tk_ConfigSpec structures.  Be sure
937
938
939
940
941
942
943






944
945
946
947
948
949
950
    }
    specPtr = FindConfigSpec(interp, specs, argvName, needFlags, hateFlags);
    if (specPtr == NULL) {
	return TCL_ERROR;
    }
    interp->result = FormatConfigValue(interp, tkwin, specPtr, widgRec,
	    interp->result, &interp->freeProc);






    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_FreeOptions --







>
>
>
>
>
>







937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
    }
    specPtr = FindConfigSpec(interp, specs, argvName, needFlags, hateFlags);
    if (specPtr == NULL) {
	return TCL_ERROR;
    }
    interp->result = FormatConfigValue(interp, tkwin, specPtr, widgRec,
	    interp->result, &interp->freeProc);
    /*
     * Don't let the interp->result be NULL.
     */
    if (interp->result == NULL) {
	interp->result = "";
    }
    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_FreeOptions --
Changes to generic/tkOption.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkOption.c --
 *
 *	This module contains procedures to manage the option
 *	database, which allows various strings to be associated
 *	with windows either by name or by class or both.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkOption.c,v 1.8.6.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"

/*
 * The option database is stored as one tree for each main window.













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkOption.c --
 *
 *	This module contains procedures to manage the option
 *	database, which allows various strings to be associated
 *	with windows either by name or by class or both.
 *
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkOption.c,v 1.8.6.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"

/*
 * The option database is stored as one tree for each main window.
231
232
233
234
235
236
237


238
239
240
241
242
243
244
static ElArray *	ExtendArray _ANSI_ARGS_((ElArray *arrayPtr,
			    Element *elPtr));
static void		ExtendStacks _ANSI_ARGS_((ElArray *arrayPtr,
			    int leaf));
static int		GetDefaultOptions _ANSI_ARGS_((Tcl_Interp *interp,
			    TkWindow *winPtr));	
static ElArray *	NewArray _ANSI_ARGS_((int numEls));	


static void		OptionInit _ANSI_ARGS_((TkMainInfo *mainPtr));
static int		ParsePriority _ANSI_ARGS_((Tcl_Interp *interp,
			    char *string));
static int		ReadOptionFile _ANSI_ARGS_((Tcl_Interp *interp,
			    Tk_Window tkwin, char *fileName, int priority));
static void		SetupStacks _ANSI_ARGS_((TkWindow *winPtr, int leaf));








>
>







231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
static ElArray *	ExtendArray _ANSI_ARGS_((ElArray *arrayPtr,
			    Element *elPtr));
static void		ExtendStacks _ANSI_ARGS_((ElArray *arrayPtr,
			    int leaf));
static int		GetDefaultOptions _ANSI_ARGS_((Tcl_Interp *interp,
			    TkWindow *winPtr));	
static ElArray *	NewArray _ANSI_ARGS_((int numEls));	
static void		OptionThreadExitProc _ANSI_ARGS_((
			    ClientData clientData));
static void		OptionInit _ANSI_ARGS_((TkMainInfo *mainPtr));
static int		ParsePriority _ANSI_ARGS_((Tcl_Interp *interp,
			    char *string));
static int		ReadOptionFile _ANSI_ARGS_((Tcl_Interp *interp,
			    Tk_Window tkwin, char *fileName, int priority));
static void		SetupStacks _ANSI_ARGS_((TkWindow *winPtr, int leaf));

554
555
556
557
558
559
560

561
562
563
564
565
566
567
	
	classNameLength	= (unsigned int)(masqName - name);
	masqClass	= (char *)malloc(classNameLength + 1);
	strncpy(masqClass, name, classNameLength);
	masqClass[classNameLength] = '\0';
	
	winClassId	= Tk_GetUid(masqClass);

	winNameId	= ((TkWindow *)tkwin)->nameUid;

	levelPtr = &tsdPtr->levels[tsdPtr->curLevel];

	for (currentPtr = searchOrder; *currentPtr != -1; currentPtr++) {
	    currentStack = *currentPtr;
	    nodePtr	= tsdPtr->stacks[currentStack]->els;







>







556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
	
	classNameLength	= (unsigned int)(masqName - name);
	masqClass	= (char *)malloc(classNameLength + 1);
	strncpy(masqClass, name, classNameLength);
	masqClass[classNameLength] = '\0';
	
	winClassId	= Tk_GetUid(masqClass);
	ckfree(masqClass);
	winNameId	= ((TkWindow *)tkwin)->nameUid;

	levelPtr = &tsdPtr->levels[tsdPtr->curLevel];

	for (currentPtr = searchOrder; *currentPtr != -1; currentPtr++) {
	    currentStack = *currentPtr;
	    nodePtr	= tsdPtr->stacks[currentStack]->els;
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
    }

    /*
     * Compute size of file by seeking to the end of the file.  This will
     * overallocate if we are performing CRLF translation.
     */
    
    bufferSize = Tcl_Seek(chan, 0L, SEEK_END);
    (void) Tcl_Seek(chan, 0L, SEEK_SET);

    if (bufferSize < 0) {
	Tcl_AppendResult(interp, "error seeking to end of file \"",
		fileName, "\":", Tcl_PosixError(interp), (char *) NULL);
	Tcl_Close(NULL, chan);
	return TCL_ERROR;








|
|







1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
    }

    /*
     * Compute size of file by seeking to the end of the file.  This will
     * overallocate if we are performing CRLF translation.
     */
    
    bufferSize = (int) Tcl_Seek(chan, (Tcl_WideInt) 0, SEEK_END);
    (void) Tcl_Seek(chan, (Tcl_WideInt) 0, SEEK_SET);

    if (bufferSize < 0) {
	Tcl_AppendResult(interp, "error seeking to end of file \"",
		fileName, "\":", Tcl_PosixError(interp), (char *) NULL);
	Tcl_Close(NULL, chan);
	return TCL_ERROR;

1433
1434
1435
1436
1437
1438
1439

































1440
1441
1442
1443
1444
1445
1446
                tsdPtr->stacks[elPtr->flags], elPtr);
    }
}

/*
 *--------------------------------------------------------------
 *

































 * OptionInit --
 *
 *	Initialize data structures for option handling.
 *
 * Results:
 *	None.
 *







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
                tsdPtr->stacks[elPtr->flags], elPtr);
    }
}

/*
 *--------------------------------------------------------------
 *
 * OptionThreadExitProc --
 *
 *	Free data structures for option handling.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Option-related data structures get freed.
 *
 *--------------------------------------------------------------
 */

static void
OptionThreadExitProc(clientData)
    ClientData clientData;	/* not used */
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (tsdPtr->initialized) {
	int i;
	for (i = 0; i < NUM_STACKS; i++) {
	    ckfree((char *) tsdPtr->stacks[i]);
	}
	ckfree((char *) tsdPtr->levels);
	tsdPtr->initialized = 0;
    }
}

/*
 *--------------------------------------------------------------
 *
 * OptionInit --
 *
 *	Initialize data structures for option handling.
 *
 * Results:
 *	None.
 *
1480
1481
1482
1483
1484
1485
1486

1487
1488
1489
1490
1491
1492
1493
	    tsdPtr->levels[0].bases[i] = 0;
	}
    
	defaultMatchPtr->nameUid = NULL;
	defaultMatchPtr->child.valueUid = NULL;
	defaultMatchPtr->priority = -1;
	defaultMatchPtr->flags = 0;

    }

    /*
     * Then, per-main-window initialization.  Create and delete dummy
     * interpreter for message logging.
     */








>







1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
	    tsdPtr->levels[0].bases[i] = 0;
	}
    
	defaultMatchPtr->nameUid = NULL;
	defaultMatchPtr->child.valueUid = NULL;
	defaultMatchPtr->priority = -1;
	defaultMatchPtr->flags = 0;
	Tcl_CreateThreadExitHandler(OptionThreadExitProc, NULL);
    }

    /*
     * Then, per-main-window initialization.  Create and delete dummy
     * interpreter for message logging.
     */

Changes to generic/tkPanedWindow.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkPanedWindow.c,v 1.3.2.1 2002/06/10 05:07:59 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"

#if ((TCL_MAJOR_VERSION > 8) || (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 4))







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 Ajuba Solutions.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkPanedWindow.c,v 1.3.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"

#if ((TCL_MAJOR_VERSION > 8) || (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 4))
Changes to generic/tkScale.c.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkScale.c,v 1.14.2.1 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"
#include "tclMath.h"
#include "tkScale.h"







|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 * Copyright (c) 1990-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkScale.c,v 1.14.2.2 2002/06/10 05:38:23 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"
#include "tclMath.h"
#include "tkScale.h"
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
			    Tcl_Obj *CONST objv[]));
static void		DestroyScale _ANSI_ARGS_((char *memPtr));
static void		ScaleCmdDeletedProc _ANSI_ARGS_((
			    ClientData clientData));
static void		ScaleEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static char *		ScaleVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, char *name2,
			    int flags));
static int		ScaleWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
static void		ScaleWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static void		ScaleSetVariable _ANSI_ARGS_((TkScale *scalePtr));







|







167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
			    Tcl_Obj *CONST objv[]));
static void		DestroyScale _ANSI_ARGS_((char *memPtr));
static void		ScaleCmdDeletedProc _ANSI_ARGS_((
			    ClientData clientData));
static void		ScaleEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));
static char *		ScaleVarProc _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, char *name1, CONST char *name2,
			    int flags));
static int		ScaleWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
			    Tcl_Interp *interp, int objc, 
			    Tcl_Obj *CONST objv[]));
static void		ScaleWorldChanged _ANSI_ARGS_((
			    ClientData instanceData));
static void		ScaleSetVariable _ANSI_ARGS_((TkScale *scalePtr));
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196

    /* ARGSUSED */
static char *
ScaleVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register TkScale *scalePtr = (TkScale *) clientData;
    char *resultStr;
    double value;
    Tcl_Obj *valuePtr;
    int result;







|







1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196

    /* ARGSUSED */
static char *
ScaleVarProc(clientData, interp, name1, name2, flags)
    ClientData clientData;	/* Information about button. */
    Tcl_Interp *interp;		/* Interpreter containing variable. */
    char *name1;		/* Name of variable. */
    CONST char *name2;		/* Second part of variable name. */
    int flags;			/* Information about what happened. */
{
    register TkScale *scalePtr = (TkScale *) clientData;
    char *resultStr;
    double value;
    Tcl_Obj *valuePtr;
    int result;
Changes to generic/tkStubInit.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkStubInit.c --
 *
 *	This file contains the initializers for the Tk stub vectors.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.4 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"

#if !(defined(__WIN32__) && defined(MAC_TCL) || defined(MAC_OSX_TK))
/* UNIX */










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkStubInit.c --
 *
 *	This file contains the initializers for the Tk stub vectors.
 *
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.5 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkPort.h"

#if !(defined(__WIN32__) && defined(MAC_TCL) || defined(MAC_OSX_TK))
/* UNIX */
307
308
309
310
311
312
313



314
315
316
317
318
319
320
321
322
323
324
325
326
327
328




329
330
331
332
333
334
335
    TkpDrawHighlightBorder, /* 135 */
    TkSetFocusWin, /* 136 */
    TkpSetKeycodeAndState, /* 137 */
    TkpGetKeySym, /* 138 */
    TkpInitKeymapInfo, /* 139 */
    TkPhotoGetValidRegion, /* 140 */
    TkWmStackorderToplevel, /* 141 */



};

TkIntPlatStubs tkIntPlatStubs = {
    TCL_STUB_MAGIC,
    NULL,
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
    TkCreateXEventSource, /* 0 */
    TkFreeWindowId, /* 1 */
    TkInitXId, /* 2 */
    TkpCmapStressed, /* 3 */
    TkpSync, /* 4 */
    TkUnixContainerId, /* 5 */
    TkUnixDoOneXEvent, /* 6 */
    TkUnixSetMenubar, /* 7 */
    TkpScanWindowId, /* 8 */




#endif /* UNIX */
#ifdef __WIN32__
    TkAlignImageData, /* 0 */
    NULL, /* 1 */
    TkGenerateActivateEvents, /* 2 */
    TkpGetMS, /* 3 */
    TkPointerDeadWindow, /* 4 */







>
>
>















>
>
>
>







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
    TkpDrawHighlightBorder, /* 135 */
    TkSetFocusWin, /* 136 */
    TkpSetKeycodeAndState, /* 137 */
    TkpGetKeySym, /* 138 */
    TkpInitKeymapInfo, /* 139 */
    TkPhotoGetValidRegion, /* 140 */
    TkWmStackorderToplevel, /* 141 */
    TkFocusFree, /* 142 */
    TkClipCleanup, /* 143 */
    TkGCCleanup, /* 144 */
};

TkIntPlatStubs tkIntPlatStubs = {
    TCL_STUB_MAGIC,
    NULL,
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
    TkCreateXEventSource, /* 0 */
    TkFreeWindowId, /* 1 */
    TkInitXId, /* 2 */
    TkpCmapStressed, /* 3 */
    TkpSync, /* 4 */
    TkUnixContainerId, /* 5 */
    TkUnixDoOneXEvent, /* 6 */
    TkUnixSetMenubar, /* 7 */
    TkpScanWindowId, /* 8 */
    TkWmCleanup, /* 9 */
    TkSendCleanup, /* 10 */
    TkFreeXId, /* 11 */
    TkpWmSetState, /* 12 */
#endif /* UNIX */
#ifdef __WIN32__
    TkAlignImageData, /* 0 */
    NULL, /* 1 */
    TkGenerateActivateEvents, /* 2 */
    TkpGetMS, /* 3 */
    TkPointerDeadWindow, /* 4 */
1078
1079
1080
1081
1082
1083
1084

1085
1086
1087
1088
1089
1090
1091
    Tk_PostscriptPhoto, /* 238 */
    Tk_CreateClientMessageHandler, /* 239 */
    Tk_DeleteClientMessageHandler, /* 240 */
    Tk_CreateAnonymousWindow, /* 241 */
    Tk_SetClassProcs, /* 242 */
    Tk_SetInternalBorderEx, /* 243 */
    Tk_SetMinimumRequestSize, /* 244 */

};

/* !END!: Do not edit above this line. */

#undef UNIX_TK
#undef MAC_TK
#undef MAC_OSX_TK







>







1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
    Tk_PostscriptPhoto, /* 238 */
    Tk_CreateClientMessageHandler, /* 239 */
    Tk_DeleteClientMessageHandler, /* 240 */
    Tk_CreateAnonymousWindow, /* 241 */
    Tk_SetClassProcs, /* 242 */
    Tk_SetInternalBorderEx, /* 243 */
    Tk_SetMinimumRequestSize, /* 244 */
    Tk_SetCaretPos, /* 245 */
};

/* !END!: Do not edit above this line. */

#undef UNIX_TK
#undef MAC_TK
#undef MAC_OSX_TK
Changes to generic/tkText.c.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 * Copyright (c) 1992-1994 The Regents of the University of California.
 * Copyright (c) 1994-1996 Sun Microsystems, Inc.
 * Copyright (c) 1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkText.c,v 1.18.4.3 2002/02/05 02:25:15 wolfsuit Exp $
 */

#include "default.h"
#include "tkPort.h"
#include "tkInt.h"

#if defined(MAC_TCL) || defined(MAC_OSX_TK)







|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 * Copyright (c) 1992-1994 The Regents of the University of California.
 * Copyright (c) 1994-1996 Sun Microsystems, Inc.
 * Copyright (c) 1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkText.c,v 1.18.4.4 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "default.h"
#include "tkPort.h"
#include "tkInt.h"

#if defined(MAC_TCL) || defined(MAC_OSX_TK)
966
967
968
969
970
971
972










973
974
975
976
977
978
979
	if (TkBTreeCharTagged(&first, textPtr->selTagPtr)
		|| TkBTreeNextTag(&search)) {
	    Tk_OwnSelection(textPtr->tkwin, XA_PRIMARY, TkTextLostSelection,
		    (ClientData) textPtr);
	    textPtr->flags |= GOT_SELECTION;
	}
    }











    /*
     * Register the desired geometry for the window, and arrange for
     * the window to be redisplayed.
     */

    if (textPtr->width <= 0) {







>
>
>
>
>
>
>
>
>
>







966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
	if (TkBTreeCharTagged(&first, textPtr->selTagPtr)
		|| TkBTreeNextTag(&search)) {
	    Tk_OwnSelection(textPtr->tkwin, XA_PRIMARY, TkTextLostSelection,
		    (ClientData) textPtr);
	    textPtr->flags |= GOT_SELECTION;
	}
    }

    /*
     * Account for state changes that would reenable blinking cursor state.
     */

    if (textPtr->flags & GOT_FOCUS) {
	Tcl_DeleteTimerHandler(textPtr->insertBlinkHandler);
	textPtr->insertBlinkHandler = (Tcl_TimerToken) NULL;
	TextBlinkProc((ClientData) textPtr);
    }

    /*
     * Register the desired geometry for the window, and arrange for
     * the window to be redisplayed.
     */

    if (textPtr->width <= 0) {
Changes to generic/tkTextDisp.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkTextDisp.c --
 *
 *	This module provides facilities to display text widgets.  It is
 *	the only place where information is kept about the screen layout
 *	of text widgets.
 *
 * Copyright (c) 1992-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkTextDisp.c,v 1.9 2000/01/06 02:18:59 hobbs Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include "tkText.h"

#ifdef __WIN32__













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkTextDisp.c --
 *
 *	This module provides facilities to display text widgets.  It is
 *	the only place where information is kept about the screen layout
 *	of text widgets.
 *
 * Copyright (c) 1992-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkTextDisp.c,v 1.9.8.1 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include "tkText.h"

#ifdef __WIN32__
91
92
93
94
95
96
97










98
99
100
101
102
103
104

#define SAME_BACKGROUND(s1, s2) \
    (((s1)->sValuePtr->border == (s2)->sValuePtr->border) \
        && ((s1)->sValuePtr->borderWidth == (s2)->sValuePtr->borderWidth) \
        && ((s1)->sValuePtr->relief == (s2)->sValuePtr->relief) \
        && ((s1)->sValuePtr->bgStipple == (s2)->sValuePtr->bgStipple))











/*
 * The following structure describes one line of the display, which may
 * be either part or all of one line of the text.
 */

typedef struct DLine {
    TkTextIndex index;		/* Identifies first character in text







>
>
>
>
>
>
>
>
>
>







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

#define SAME_BACKGROUND(s1, s2) \
    (((s1)->sValuePtr->border == (s2)->sValuePtr->border) \
        && ((s1)->sValuePtr->borderWidth == (s2)->sValuePtr->borderWidth) \
        && ((s1)->sValuePtr->relief == (s2)->sValuePtr->relief) \
        && ((s1)->sValuePtr->bgStipple == (s2)->sValuePtr->bgStipple))

/*
 * The following macro is used to compare two floating-point numbers
 * to within a certain degree of scale.  Direct comparison fails on
 * processors where the processor and memory representations of FP
 * numbers of a particular precision is different (e.g. Intel)
 */

#define FP_EQUAL_SCALE(double1, double2, scaleFactor) \
    (fabs((double1)-(double2))*((scaleFactor)+1.0) < 0.3)

/*
 * The following structure describes one line of the display, which may
 * be either part or all of one line of the text.
 */

typedef struct DLine {
    TkTextIndex index;		/* Identifies first character in text
1876
1877
1878
1879
1880
1881
1882



















1883
1884
1885
1886
1887
1888
1889
	}
	sValuePtr = chunkPtr->stylePtr->sValuePtr;
	rightX = chunkPtr->x + chunkPtr->width;
	if ((chunkPtr->nextPtr == NULL) && (rightX < maxX)) {
	    rightX = maxX;
	}
	if (chunkPtr->stylePtr->bgGC != None) {



















	    XFillRectangle(display, pixmap, chunkPtr->stylePtr->bgGC,
		    leftX + xOffset, 0, (unsigned int) (rightX - leftX),
		    (unsigned int) dlPtr->height);
	    if (sValuePtr->relief != TK_RELIEF_FLAT) {
		Tk_3DVerticalBevel(textPtr->tkwin, pixmap, sValuePtr->border,
			leftX + xOffset, 0, sValuePtr->borderWidth,
			dlPtr->height, 1, sValuePtr->relief);







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
	}
	sValuePtr = chunkPtr->stylePtr->sValuePtr;
	rightX = chunkPtr->x + chunkPtr->width;
	if ((chunkPtr->nextPtr == NULL) && (rightX < maxX)) {
	    rightX = maxX;
	}
	if (chunkPtr->stylePtr->bgGC != None) {
	    /* Not visible - bail out now */
	    if (rightX + xOffset <= 0) {
	        leftX = rightX;
		continue;
	    }

	    /*
	     * Trim the start position for drawing to be no further away than
	     * -borderWidth. The reason is that on many X servers drawing from
	     * -32768 (or less) to +something simply does not display
	     * correctly. [Patch #541999]
	     */
	    if ((leftX + xOffset) < -(sValuePtr->borderWidth)) {
	        leftX = -sValuePtr->borderWidth - xOffset;
	    }
	    if ((rightX - leftX) > 32767) {
	        rightX = leftX + 32767;
	    }

	    XFillRectangle(display, pixmap, chunkPtr->stylePtr->bgGC,
		    leftX + xOffset, 0, (unsigned int) (rightX - leftX),
		    (unsigned int) dlPtr->height);
	    if (sValuePtr->relief != TK_RELIEF_FLAT) {
		Tk_3DVerticalBevel(textPtr->tkwin, pixmap, sValuePtr->border,
			leftX + xOffset, 0, sValuePtr->borderWidth,
			dlPtr->height, 1, sValuePtr->relief);
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889

3890
3891
3892
3893
3894
3895
3896
					 * describing visible range gets
					 * stored in the interp's result. */
    TkText *textPtr;			/* Information about text widget. */
    int report;				/* Non-zero means report info to
					 * scrollbar if it has changed. */
{
    TextDInfo *dInfoPtr = textPtr->dInfoPtr;
    char buffer[TCL_DOUBLE_SPACE * 2];
    double first, last;
    int code;

    if (dInfoPtr->maxLength > 0) {
	first = ((double) dInfoPtr->curPixelOffset)
		/ dInfoPtr->maxLength;
	last = first + ((double) (dInfoPtr->maxX - dInfoPtr->x))
		/ dInfoPtr->maxLength;
	if (last > 1.0) {
	    last = 1.0;
	}
    } else {
	first = 0;
	last = 1.0;
    }
    if (!report) {
	sprintf(buffer, "%g %g", first, last);
	Tcl_SetResult(interp, buffer, TCL_VOLATILE);
	return;
    }
    if ((first == dInfoPtr->xScrollFirst) && (last == dInfoPtr->xScrollLast)) {

	return;
    }
    dInfoPtr->xScrollFirst = first;
    dInfoPtr->xScrollLast = last;
    sprintf(buffer, " %g %g", first, last);
    code = Tcl_VarEval(interp, textPtr->xScrollCmd,
	    buffer, (char *) NULL);







|




















|
>







3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
					 * describing visible range gets
					 * stored in the interp's result. */
    TkText *textPtr;			/* Information about text widget. */
    int report;				/* Non-zero means report info to
					 * scrollbar if it has changed. */
{
    TextDInfo *dInfoPtr = textPtr->dInfoPtr;
    char buffer[TCL_DOUBLE_SPACE * 2 + 1];
    double first, last;
    int code;

    if (dInfoPtr->maxLength > 0) {
	first = ((double) dInfoPtr->curPixelOffset)
		/ dInfoPtr->maxLength;
	last = first + ((double) (dInfoPtr->maxX - dInfoPtr->x))
		/ dInfoPtr->maxLength;
	if (last > 1.0) {
	    last = 1.0;
	}
    } else {
	first = 0;
	last = 1.0;
    }
    if (!report) {
	sprintf(buffer, "%g %g", first, last);
	Tcl_SetResult(interp, buffer, TCL_VOLATILE);
	return;
    }
    if (FP_EQUAL_SCALE(first, dInfoPtr->xScrollFirst, dInfoPtr->maxLength) &&
	FP_EQUAL_SCALE(last,  dInfoPtr->xScrollLast,  dInfoPtr->maxLength)) {
	return;
    }
    dInfoPtr->xScrollFirst = first;
    dInfoPtr->xScrollLast = last;
    sprintf(buffer, " %g %g", first, last);
    code = Tcl_VarEval(interp, textPtr->xScrollCmd,
	    buffer, (char *) NULL);
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
					 * describing visible range gets
					 * stored in the interp's result. */
    TkText *textPtr;			/* Information about text widget. */
    int report;				/* Non-zero means report info to
					 * scrollbar if it has changed. */
{
    TextDInfo *dInfoPtr = textPtr->dInfoPtr;
    char buffer[TCL_DOUBLE_SPACE * 2];
    double first, last;
    DLine *dlPtr;
    int totalLines, code, count;

    dlPtr = dInfoPtr->dLinePtr;
    totalLines = TkBTreeNumLines(textPtr->tree);
    first = (double) TkBTreeLineIndex(dlPtr->index.linePtr)







|







3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
					 * describing visible range gets
					 * stored in the interp's result. */
    TkText *textPtr;			/* Information about text widget. */
    int report;				/* Non-zero means report info to
					 * scrollbar if it has changed. */
{
    TextDInfo *dInfoPtr = textPtr->dInfoPtr;
    char buffer[TCL_DOUBLE_SPACE * 2 + 1];
    double first, last;
    DLine *dlPtr;
    int totalLines, code, count;

    dlPtr = dInfoPtr->dLinePtr;
    totalLines = TkBTreeNumLines(textPtr->tree);
    first = (double) TkBTreeLineIndex(dlPtr->index.linePtr)
3967
3968
3969
3970
3971
3972
3973
3974

3975
3976
3977
3978
3979
3980
3981
		    / (TkBTreeBytesInLine(dlPtr->index.linePtr));
    last /= totalLines;
    if (!report) {
	sprintf(buffer, "%g %g", first, last);
	Tcl_SetResult(interp, buffer, TCL_VOLATILE);
	return;
    }
    if ((first == dInfoPtr->yScrollFirst) && (last == dInfoPtr->yScrollLast)) {

	return;
    }
    dInfoPtr->yScrollFirst = first;
    dInfoPtr->yScrollLast = last;
    sprintf(buffer, " %g %g", first, last);
    code = Tcl_VarEval(interp, textPtr->yScrollCmd, buffer, (char *) NULL);
    if (code != TCL_OK) {







|
>







3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
		    / (TkBTreeBytesInLine(dlPtr->index.linePtr));
    last /= totalLines;
    if (!report) {
	sprintf(buffer, "%g %g", first, last);
	Tcl_SetResult(interp, buffer, TCL_VOLATILE);
	return;
    }
    if (FP_EQUAL_SCALE(first, dInfoPtr->yScrollFirst, totalLines) &&
	FP_EQUAL_SCALE(last,  dInfoPtr->yScrollLast,  totalLines)) {
	return;
    }
    dInfoPtr->yScrollFirst = first;
    dInfoPtr->yScrollLast = last;
    sprintf(buffer, " %g %g", first, last);
    code = Tcl_VarEval(interp, textPtr->yScrollCmd, buffer, (char *) NULL);
    if (code != TCL_OK) {
Changes to generic/tkTextMark.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkTextMark.c --
 *
 *	This file contains the procedure that implement marks for
 *	text widgets.
 *
 * Copyright (c) 1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkTextMark.c,v 1.4 1999/12/14 06:52:33 hobbs Exp $
 */

#include "tkInt.h"
#include "tkText.h"
#include "tkPort.h"

/*












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkTextMark.c --
 *
 *	This file contains the procedure that implement marks for
 *	text widgets.
 *
 * Copyright (c) 1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkTextMark.c,v 1.4.8.1 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkText.h"
#include "tkPort.h"

/*
522
523
524
525
526
527
528
529

530
531

532
533


534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
					 * corresponds to y. */
{
    TkText *textPtr = (TkText *) chunkPtr->clientData;
    int halfWidth = textPtr->insertWidth/2;

    if ((x + halfWidth) < 0) {
	/*
	 * The insertion cursor is off-screen.  Just return.

	 */


	return;
    }



    /*
     * As a special hack to keep the cursor visible on mono displays
     * (or anywhere else that the selection and insertion cursors
     * have the same color) write the default background in the cursor
     * area (instead of nothing) when the cursor isn't on.  Otherwise
     * the selection might hide the cursor.
     */

    if (textPtr->flags & INSERT_ON) {
	Tk_Fill3DRectangle(textPtr->tkwin, dst, textPtr->insertBorder,
		x - textPtr->insertWidth/2, y, textPtr->insertWidth,
		height, textPtr->insertBorderWidth, TK_RELIEF_RAISED);
    } else if (textPtr->selBorder == textPtr->insertBorder) {
	Tk_Fill3DRectangle(textPtr->tkwin, dst, textPtr->border,
		x - textPtr->insertWidth/2, y, textPtr->insertWidth,
		height, 0, TK_RELIEF_FLAT);
    }
}

/*
 *--------------------------------------------------------------
 *
 * InsertUndisplayProc --







|
>


>


>
>











|
|


|
|







522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
					 * corresponds to y. */
{
    TkText *textPtr = (TkText *) chunkPtr->clientData;
    int halfWidth = textPtr->insertWidth/2;

    if ((x + halfWidth) < 0) {
	/*
	 * The insertion cursor is off-screen.
	 * Indicate caret at 0,0 and return.
	 */

	Tk_SetCaretPos(textPtr->tkwin, 0, 0, height);
	return;
    }

    Tk_SetCaretPos(textPtr->tkwin, x - halfWidth, screenY, height);

    /*
     * As a special hack to keep the cursor visible on mono displays
     * (or anywhere else that the selection and insertion cursors
     * have the same color) write the default background in the cursor
     * area (instead of nothing) when the cursor isn't on.  Otherwise
     * the selection might hide the cursor.
     */

    if (textPtr->flags & INSERT_ON) {
	Tk_Fill3DRectangle(textPtr->tkwin, dst, textPtr->insertBorder,
		x - halfWidth, y, textPtr->insertWidth, height,
		textPtr->insertBorderWidth, TK_RELIEF_RAISED);
    } else if (textPtr->selBorder == textPtr->insertBorder) {
	Tk_Fill3DRectangle(textPtr->tkwin, dst, textPtr->border,
		x - halfWidth, y, textPtr->insertWidth, height,
		0, TK_RELIEF_FLAT);
    }
}

/*
 *--------------------------------------------------------------
 *
 * InsertUndisplayProc --
Changes to generic/tkWindow.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1989-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWindow.c,v 1.39.2.3 2002/02/05 02:25:16 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"

#if !( defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))
#include "tkUnixInt.h"







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1989-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWindow.c,v 1.39.2.4 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"

#if !( defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))
#include "tkUnixInt.h"
139
140
141
142
143
144
145

146
147
148
149
150
151
152
    {"entry",		NULL,                   Tk_EntryObjCmd,		1, 0},
    {"frame",		NULL,			Tk_FrameObjCmd,		1, 0},
    {"label",		NULL,			Tk_LabelObjCmd,		1, 0},
    {"labelframe",	NULL,			Tk_LabelframeObjCmd,	1, 0},
    {"listbox",		NULL,			Tk_ListboxObjCmd,	1, 0},
    {"menubutton",	NULL,                   Tk_MenubuttonObjCmd,	1, 0},
    {"message",		NULL,			Tk_MessageObjCmd,	1, 0},

    {"radiobutton",	NULL,			Tk_RadiobuttonObjCmd,	1, 0},
    {"scale",		NULL,	                Tk_ScaleObjCmd,		1, 0},
    {"scrollbar",	Tk_ScrollbarCmd,	NULL,			1, 1},
    {"spinbox",		NULL,                   Tk_SpinboxObjCmd,	1, 0},
    {"text",		Tk_TextCmd,		NULL,			1, 1},
    {"toplevel",	NULL,			Tk_ToplevelObjCmd,	0, 0},








>







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
    {"entry",		NULL,                   Tk_EntryObjCmd,		1, 0},
    {"frame",		NULL,			Tk_FrameObjCmd,		1, 0},
    {"label",		NULL,			Tk_LabelObjCmd,		1, 0},
    {"labelframe",	NULL,			Tk_LabelframeObjCmd,	1, 0},
    {"listbox",		NULL,			Tk_ListboxObjCmd,	1, 0},
    {"menubutton",	NULL,                   Tk_MenubuttonObjCmd,	1, 0},
    {"message",		NULL,			Tk_MessageObjCmd,	1, 0},
    {"panedwindow",	NULL,			Tk_PanedWindowObjCmd,	1, 0},
    {"radiobutton",	NULL,			Tk_RadiobuttonObjCmd,	1, 0},
    {"scale",		NULL,	                Tk_ScaleObjCmd,		1, 0},
    {"scrollbar",	Tk_ScrollbarCmd,	NULL,			1, 1},
    {"spinbox",		NULL,                   Tk_SpinboxObjCmd,	1, 0},
    {"text",		Tk_TextCmd,		NULL,			1, 1},
    {"toplevel",	NULL,			Tk_ToplevelObjCmd,	0, 0},

207
208
209
210
211
212
213
214
215





















































216
217
218
219
220
221
222
			    ClientData clientData));
static TkDisplay *	GetScreen _ANSI_ARGS_((Tcl_Interp *interp,
			    CONST char *screenName, int *screenPtr));
static int		Initialize _ANSI_ARGS_((Tcl_Interp *interp));
static int		NameWindow _ANSI_ARGS_((Tcl_Interp *interp,
			    TkWindow *winPtr, TkWindow *parentPtr,
			    char *name));
static void		OpenIM _ANSI_ARGS_((TkDisplay *dispPtr));
static void		UnlinkWindow _ANSI_ARGS_((TkWindow *winPtr));






















































/*
 *----------------------------------------------------------------------
 *
 * CreateTopLevelWindow --
 *
 *	Make a new window that will be at top-level (its parent will







<

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







208
209
210
211
212
213
214

215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
			    ClientData clientData));
static TkDisplay *	GetScreen _ANSI_ARGS_((Tcl_Interp *interp,
			    CONST char *screenName, int *screenPtr));
static int		Initialize _ANSI_ARGS_((Tcl_Interp *interp));
static int		NameWindow _ANSI_ARGS_((Tcl_Interp *interp,
			    TkWindow *winPtr, TkWindow *parentPtr,
			    char *name));

static void		UnlinkWindow _ANSI_ARGS_((TkWindow *winPtr));

/*
 *----------------------------------------------------------------------
 *
 * TkCloseDisplay --
 *	Closing the display can lead to order of deletion problems.
 *	We defer it until exit handling for Mac/Win, but since Unix can
 *	use many displays, try and clean it up as best as possible.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Resources associated with the display will be free.
 *	The display may not be referenced at all after this.
 *----------------------------------------------------------------------
 */

static void
TkCloseDisplay(TkDisplay *dispPtr)
{
    TkClipCleanup(dispPtr);

    if (dispPtr->name != NULL) {
	ckfree(dispPtr->name);
    }

    Tcl_DeleteHashTable(&dispPtr->winTable);

    if (dispPtr->atomInit) {
	Tcl_DeleteHashTable(&dispPtr->nameTable);
	Tcl_DeleteHashTable(&dispPtr->atomTable);
	dispPtr->atomInit = 0;
    }

    if (dispPtr->errorPtr != NULL) {
	TkErrorHandler *errorPtr;
	for (errorPtr = dispPtr->errorPtr;
	     errorPtr != NULL;
	     errorPtr = dispPtr->errorPtr) {
	    dispPtr->errorPtr = errorPtr->nextPtr;
	    ckfree((char *) errorPtr);
	}
    }

    TkGCCleanup(dispPtr);

    TkpCloseDisplay(dispPtr);

    /*
     * There is more to clean up, we leave it at this for the time being.
     */
}

/*
 *----------------------------------------------------------------------
 *
 * CreateTopLevelWindow --
 *
 *	Make a new window that will be at top-level (its parent will
393
394
395
396
397
398
399
400
401




402
403
404
405
406
407
408

409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
    }

    /*
     * See if we already have a connection to this display.  If not,
     * then open a new connection.
     */

    for (dispPtr = TkGetDisplayList(); ; dispPtr = dispPtr->nextPtr) {
	if (dispPtr == NULL) {




	    dispPtr = TkpOpenDisplay(screenName);
	    if (dispPtr == NULL) {
		Tcl_AppendResult(interp, "couldn't connect to display \"",
			screenName, "\"", (char *) NULL);
		return (TkDisplay *) NULL;
	    }
	    dispPtr->nextPtr = TkGetDisplayList();

	    dispPtr->name = (char *) ckalloc((unsigned) (length+1));
	    dispPtr->lastEventTime = CurrentTime;
	    dispPtr->borderInit = 0;
	    dispPtr->atomInit = 0;
	    dispPtr->bindInfoStale = 1;
	    dispPtr->modeModMask = 0;
	    dispPtr->metaModMask = 0;
	    dispPtr->altModMask = 0;
	    dispPtr->numModKeyCodes = 0;
	    dispPtr->modKeyCodes = NULL;
	    dispPtr->bitmapInit = 0;
	    dispPtr->bitmapAutoNumber = 0;
	    dispPtr->numIdSearches = 0;
	    dispPtr->numSlowSearches = 0;
	    dispPtr->colorInit = 0;
	    dispPtr->stressPtr = NULL;
	    dispPtr->cursorInit = 0;
	    dispPtr->cursorString[0] = '\0';
	    dispPtr->cursorFont = None;
	    dispPtr->errorPtr = NULL;
	    dispPtr->deleteCount = 0;
	    dispPtr->delayedMotionPtr = NULL;
	    dispPtr->focusDebug = 0;
	    dispPtr->implicitWinPtr = NULL;
	    dispPtr->focusPtr = NULL;
	    dispPtr->gcInit = 0;
	    dispPtr->geomInit = 0;
	    dispPtr->uidInit = 0;
	    dispPtr->grabWinPtr = NULL;
	    dispPtr->eventualGrabWinPtr = NULL;
	    dispPtr->buttonWinPtr = NULL;
	    dispPtr->serverWinPtr = NULL;
	    dispPtr->firstGrabEventPtr = NULL;
	    dispPtr->lastGrabEventPtr = NULL;
	    dispPtr->grabFlags = 0;
	    dispPtr->mouseButtonState = 0;
	    dispPtr->warpInProgress = 0;
	    dispPtr->warpWindow = None;
	    dispPtr->warpX = 0;
	    dispPtr->warpY = 0;
	    dispPtr->gridInit = 0;
	    dispPtr->imageId = 0;
	    dispPtr->packInit = 0;
	    dispPtr->placeInit = 0;
	    dispPtr->selectionInfoPtr = NULL;
	    dispPtr->multipleAtom = None;
	    dispPtr->clipWindow = NULL;
	    dispPtr->clipboardActive = 0;
	    dispPtr->clipboardAppPtr = NULL;
	    dispPtr->clipTargetPtr = NULL;
	    dispPtr->commTkwin = NULL;
	    dispPtr->wmTracing = 0;
	    dispPtr->firstWmPtr = NULL;
	    dispPtr->foregroundWmPtr = NULL;
	    dispPtr->destroyCount = 0;
	    dispPtr->lastDestroyRequest = 0;
	    dispPtr->cmapPtr = NULL;
	    Tcl_InitHashTable(&dispPtr->winTable, TCL_ONE_WORD_KEYS);

            dispPtr->refCount = 0;
	    strncpy(dispPtr->name, screenName, length);
	    dispPtr->name[length] = '\0';
	    dispPtr->useInputMethods = 0;
	    OpenIM(dispPtr);
	    TkInitXId(dispPtr);
	    dispPtr->deletionEpoch = 0L;

	    tsdPtr->displayList = dispPtr;
	    break;
	}
	if ((strncmp(dispPtr->name, screenName, length) == 0)
		&& (dispPtr->name[length] == '\0')) {
	    break;
	}
    }







|

>
>
>
>






|
>
|

<
<

<
<
<
<
<
<
<
<
<
<
<
<
<

<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

<
<
<
<
<
<
<

|
<
<
<
<
<
<
<
<
<
<


|


|
<

<
<
<







446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468


469













470


















471







472
473










474
475
476
477
478
479

480



481
482
483
484
485
486
487
    }

    /*
     * See if we already have a connection to this display.  If not,
     * then open a new connection.
     */

    for (dispPtr = tsdPtr->displayList; ; dispPtr = dispPtr->nextPtr) {
	if (dispPtr == NULL) {
	    /*
	     * The private function zeros out dispPtr when it is created,
	     * so we only need to initialize the non-zero items.
	     */
	    dispPtr = TkpOpenDisplay(screenName);
	    if (dispPtr == NULL) {
		Tcl_AppendResult(interp, "couldn't connect to display \"",
			screenName, "\"", (char *) NULL);
		return (TkDisplay *) NULL;
	    }
	    dispPtr->nextPtr = tsdPtr->displayList; /* TkGetDisplayList(); */
	    tsdPtr->displayList = dispPtr;

	    dispPtr->lastEventTime = CurrentTime;


	    dispPtr->bindInfoStale = 1;













	    dispPtr->cursorFont = None;


















	    dispPtr->warpWindow = None;







	    dispPtr->multipleAtom = None;











	    Tcl_InitHashTable(&dispPtr->winTable, TCL_ONE_WORD_KEYS);

	    dispPtr->name = (char *) ckalloc((unsigned) (length+1));
	    strncpy(dispPtr->name, screenName, length);
	    dispPtr->name[length] = '\0';


	    TkInitXId(dispPtr);



	    break;
	}
	if ((strncmp(dispPtr->name, screenName, length) == 0)
		&& (dispPtr->name[length] == '\0')) {
	    break;
	}
    }
1425
1426
1427
1428
1429
1430
1431

1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449

1450
1451
1452
1453
1454
1455
1456
1457







1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494

1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
                Tcl_UnlinkVar(winPtr->mainPtr->interp, "tk_strictMotif");
            }
                
	    Tcl_DeleteHashTable(&winPtr->mainPtr->nameTable);
	    TkBindFree(winPtr->mainPtr);
	    TkDeleteAllImages(winPtr->mainPtr);
	    TkFontPkgFree(winPtr->mainPtr);


            /*
             * When embedding Tk into other applications, make sure 
             * that all destroy events reach the server. Otherwise
             * the embedding application may also attempt to destroy
             * the windows, resulting in an X error
             */

            if (winPtr->flags & TK_EMBEDDED) {
                XSync(winPtr->display,False) ; 
            }
	    ckfree((char *) winPtr->mainPtr);

            /*
             * If no other applications are using the display, close the
             * display now and relinquish its data structures.
             */
            

            if (dispPtr->refCount <= 0) {
#ifdef	NOT_YET
                /*
                 * I have disabled this code because on Windows there are
                 * still order dependencies in close-down. All displays
                 * and resources will get closed down properly anyway at
                 * exit, through the exit handler.
                 */







                
                TkDisplay *theDispPtr, *backDispPtr;
                
                /*
                 * Splice this display out of the list of displays.
                 */
                
                for (theDispPtr = displayList, backDispPtr = NULL;
                         (theDispPtr != winPtr->dispPtr) &&
                             (theDispPtr != NULL);
                         theDispPtr = theDispPtr->nextPtr) {
                    backDispPtr = theDispPtr;
                }
                if (theDispPtr == NULL) {
                    panic("could not find display to close!");
                }
                if (backDispPtr == NULL) {
                    displayList = theDispPtr->nextPtr;
                } else {
                    backDispPtr->nextPtr = theDispPtr->nextPtr;
                }
                
                /*
                 * Found and spliced it out, now actually do the cleanup.
                 */
                
                if (dispPtr->name != NULL) {
                    ckfree(dispPtr->name);
                }
                
                Tcl_DeleteHashTable(&(dispPtr->winTable));

		/*
                 * Cannot yet close the display because we still have
                 * order of deletion problems. Defer until exit handling
                 * instead. At that time, the display will cleanly shut
                 * down (hopefully..). (JYL)

                 */

                TkpCloseDisplay(dispPtr);

                /*
                 * There is lots more to clean up, we leave it at this for
                 * the time being.
                 */
#endif
            }
	}
    }
    Tcl_EventuallyFree((ClientData) winPtr, TCL_DYNAMIC);
}

/*
 *--------------------------------------------------------------







>









|







|
>

<




|

>
>
>
>
>
>
>







|









|



|

|
<
|
<
|
<
|
<

|
<
<
<
<
>


|
|
<
<
<
<

<







1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456

1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493

1494

1495

1496

1497
1498




1499
1500
1501
1502
1503




1504

1505
1506
1507
1508
1509
1510
1511
                Tcl_UnlinkVar(winPtr->mainPtr->interp, "tk_strictMotif");
            }
                
	    Tcl_DeleteHashTable(&winPtr->mainPtr->nameTable);
	    TkBindFree(winPtr->mainPtr);
	    TkDeleteAllImages(winPtr->mainPtr);
	    TkFontPkgFree(winPtr->mainPtr);
	    TkFocusFree(winPtr->mainPtr);

            /*
             * When embedding Tk into other applications, make sure 
             * that all destroy events reach the server. Otherwise
             * the embedding application may also attempt to destroy
             * the windows, resulting in an X error
             */

            if (winPtr->flags & TK_EMBEDDED) {
                XSync(winPtr->display, False); 
            }
	    ckfree((char *) winPtr->mainPtr);

            /*
             * If no other applications are using the display, close the
             * display now and relinquish its data structures.
             */

#if !defined(WIN32) && !defined(MAC_TCL) && defined(NOT_YET)
            if (dispPtr->refCount <= 0) {

                /*
                 * I have disabled this code because on Windows there are
                 * still order dependencies in close-down. All displays
                 * and resources will get closed down properly anyway at
                 * exit, through the exit handler. -- jyl
                 */
		/*
		 * Ideally this should be enabled, as unix Tk can use multiple
		 * displays.  However, there are order issues still, as well
		 * as the handling of queued events and such that must be
		 * addressed before this can be enabled.  The current cleanup
		 * works except for send event issues. -- hobbs 04/2002
		 */
                
                TkDisplay *theDispPtr, *backDispPtr;
                
                /*
                 * Splice this display out of the list of displays.
                 */
                
                for (theDispPtr = tsdPtr->displayList, backDispPtr = NULL;
                         (theDispPtr != winPtr->dispPtr) &&
                             (theDispPtr != NULL);
                         theDispPtr = theDispPtr->nextPtr) {
                    backDispPtr = theDispPtr;
                }
                if (theDispPtr == NULL) {
                    panic("could not find display to close!");
                }
                if (backDispPtr == NULL) {
                    tsdPtr->displayList = theDispPtr->nextPtr;
                } else {
                    backDispPtr->nextPtr = theDispPtr->nextPtr;
                }

                /*
		 * Calling XSync creates X server traffic, but addresses a

		 * focus issue on close (but not the send issue). -- hobbs

		 XSync(dispPtr->display, True);

		 */


                /*




                 * Found and spliced it out, now actually do the cleanup.
                 */

		TkCloseDisplay(dispPtr);
            }




#endif

	}
    }
    Tcl_EventuallyFree((ClientData) winPtr, TCL_DYNAMIC);
}

/*
 *--------------------------------------------------------------
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
    }

    hPtr = Tcl_CreateHashEntry(&winPtr->dispPtr->winTable,
	    (char *) winPtr->window, &new);
    Tcl_SetHashValue(hPtr, winPtr);
    winPtr->dirtyAtts = 0;
    winPtr->dirtyChanges = 0;
#ifdef TK_USE_INPUT_METHODS
    winPtr->inputContext = NULL;
#endif /* TK_USE_INPUT_METHODS */

    if (!(winPtr->flags & TK_TOP_LEVEL)) {
	/*
	 * If any siblings higher up in the stacking order have already
	 * been created then move this window to its rightful position
	 * in the stacking order.
	 *







<
<
<







1612
1613
1614
1615
1616
1617
1618



1619
1620
1621
1622
1623
1624
1625
    }

    hPtr = Tcl_CreateHashEntry(&winPtr->dispPtr->winTable,
	    (char *) winPtr->window, &new);
    Tcl_SetHashValue(hPtr, winPtr);
    winPtr->dirtyAtts = 0;
    winPtr->dirtyChanges = 0;




    if (!(winPtr->flags & TK_TOP_LEVEL)) {
	/*
	 * If any siblings higher up in the stacking order have already
	 * been created then move this window to its rightful position
	 * in the stacking order.
	 *
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
     * Issue a ConfigureNotify event if there were deferred configuration
     * changes (but skip it if the window is being deleted;  the
     * ConfigureNotify event could cause problems if we're being called
     * from Tk_DestroyWindow under some conditions).
     */

    if ((winPtr->flags & TK_NEED_CONFIG_NOTIFY)
	    && !(winPtr->flags & TK_ALREADY_DEAD)){
	winPtr->flags &= ~TK_NEED_CONFIG_NOTIFY;
	TkDoConfigureNotify(winPtr);
    }
}

/*
 *--------------------------------------------------------------







|







1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
     * Issue a ConfigureNotify event if there were deferred configuration
     * changes (but skip it if the window is being deleted;  the
     * ConfigureNotify event could cause problems if we're being called
     * from Tk_DestroyWindow under some conditions).
     */

    if ((winPtr->flags & TK_NEED_CONFIG_NOTIFY)
	    && !(winPtr->flags & TK_ALREADY_DEAD)) {
	winPtr->flags &= ~TK_NEED_CONFIG_NOTIFY;
	TkDoConfigureNotify(winPtr);
    }
}

/*
 *--------------------------------------------------------------
2498
2499
2500
2501
2502
2503
2504
2505










2506
2507
2508
2509
2510
2511
2512
2513
Tk_Window
Tk_MainWindow(interp)
    Tcl_Interp *interp;			/* Interpreter that embodies the
					 * application.  Used for error
					 * reporting also. */
{
    TkMainInfo *mainPtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 










            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    for (mainPtr = tsdPtr->mainWindowList; mainPtr != NULL;
	    mainPtr = mainPtr->nextPtr) {
	if (mainPtr->interp == interp) {
	    return (Tk_Window) mainPtr->winPtr;
	}
    }







|
>
>
>
>
>
>
>
>
>
>
|







2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
Tk_Window
Tk_MainWindow(interp)
    Tcl_Interp *interp;			/* Interpreter that embodies the
					 * application.  Used for error
					 * reporting also. */
{
    TkMainInfo *mainPtr;
    ThreadSpecificData *tsdPtr;

    if (interp == NULL) {
	return NULL;
    }
#ifdef USE_TCL_STUBS
    if (tclStubsPtr == NULL) {
	return NULL;
    }
#endif
    tsdPtr = (ThreadSpecificData *) 
	Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    for (mainPtr = tsdPtr->mainWindowList; mainPtr != NULL;
	    mainPtr = mainPtr->nextPtr) {
	if (mainPtr->interp == interp) {
	    return (Tk_Window) mainPtr->winPtr;
	}
    }
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
int
Tk_StrictMotif(tkwin)
    Tk_Window tkwin;			/* Window whose application is
					 * to be checked. */
{
    return ((TkWindow *) tkwin)->mainPtr->strictMotif;
}

/* 
 *--------------------------------------------------------------
 *
 * OpenIM --
 *
 *	Tries to open an X input method, associated with the
 *	given display.  Right now we can only deal with a bare-bones
 *	input style:  no preedit, and no status.
 *
 * Results:
 *	Stores the input method in dispPtr->inputMethod;  if there isn't
 *	a suitable input method, then NULL is stored in dispPtr->inputMethod.
 *
 * Side effects:
 *	An input method gets opened.
 *
 *--------------------------------------------------------------
 */

static void
OpenIM(dispPtr)
    TkDisplay *dispPtr;		/* Tk's structure for the display. */
{
#ifndef TK_USE_INPUT_METHODS
    return;
#else
    unsigned short i;
    XIMStyles *stylePtr;
    char *modifier_list;

    if ((modifier_list = XSetLocaleModifiers("")) == NULL) {
	goto error;
    }

    dispPtr->inputMethod = XOpenIM(dispPtr->display, NULL, NULL, NULL);
    if (dispPtr->inputMethod == NULL) {
	return;
    }

    if ((XGetIMValues(dispPtr->inputMethod, XNQueryInputStyle, &stylePtr,
	    NULL) != NULL) || (stylePtr == NULL)) {
	goto error;
    }
    for (i = 0; i < stylePtr->count_styles; i++) {
	if (stylePtr->supported_styles[i]
		== (XIMPreeditNothing|XIMStatusNothing)) {
	    XFree(stylePtr);
	    return;
	}
    }
    XFree(stylePtr);

    error:

    /*
     * Should close the input method, but this causes core dumps on some
     * systems (e.g. Solaris 2.3 as of 1/6/95).
     * XCloseIM(dispPtr->inputMethod);
     */
    dispPtr->inputMethod = NULL;
    return;
#endif /* TK_USE_INPUT_METHODS */
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_GetNumMainWindows --
 *
 *	This procedure returns the number of main windows currently







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







2545
2546
2547
2548
2549
2550
2551
































































2552
2553
2554
2555
2556
2557
2558
int
Tk_StrictMotif(tkwin)
    Tk_Window tkwin;			/* Window whose application is
					 * to be checked. */
{
    return ((TkWindow *) tkwin)->mainPtr->strictMotif;
}

































































/*
 *----------------------------------------------------------------------
 *
 * Tk_GetNumMainWindows --
 *
 *	This procedure returns the number of main windows currently
2623
2624
2625
2626
2627
2628
2629
2630








2631
2632
2633
2634
2635
2636
2637
2638
 *
 *----------------------------------------------------------------------
 */

int
Tk_GetNumMainWindows()
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 








            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    return tsdPtr->numMainWindows;
}

/*
 *----------------------------------------------------------------------
 *







|
>
>
>
>
>
>
>
>
|







2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
 *
 *----------------------------------------------------------------------
 */

int
Tk_GetNumMainWindows()
{
    ThreadSpecificData *tsdPtr;

#ifdef USE_TCL_STUBS
    if (tclStubsPtr == NULL) {
	return 0;
    }
#endif

    tsdPtr = (ThreadSpecificData *) 
	Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    return tsdPtr->numMainWindows;
}

/*
 *----------------------------------------------------------------------
 *
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
 *----------------------------------------------------------------------
 */

static void
DeleteWindowsExitProc(clientData)
    ClientData clientData;		/* Not used. */
{
    TkDisplay *displayPtr, *nextPtr;
    Tcl_Interp *interp;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    
    while (tsdPtr->mainWindowList != NULL) {
        /*
         * We must protect the interpreter while deleting the window,
         * because of <Destroy> bindings which could destroy the interpreter
         * while the window is being deleted. This would leave frames on
         * the call stack pointing at deleted memory, causing core dumps.
         */
        
        interp = tsdPtr->mainWindowList->winPtr->mainPtr->interp;
        Tcl_Preserve((ClientData) interp);
	Tk_DestroyWindow((Tk_Window) tsdPtr->mainWindowList->winPtr);
        Tcl_Release((ClientData) interp);
    }
    
    displayPtr = tsdPtr->displayList;
    tsdPtr->displayList = NULL;
    
    /*
     * Iterate destroying the displays until no more displays remain.
     * It is possible for displays to get recreated during exit by any
     * code that calls GetScreen, so we must destroy these new displays
     * as well as the old ones.
     */
    
    for (displayPtr = tsdPtr->displayList;
         displayPtr != NULL;
         displayPtr = tsdPtr->displayList) {

        /*
         * Now iterate over the current list of open displays, and first
         * set the global pointer to NULL so we will be able to notice if
         * any new displays got created during deletion of the current set.
         * We must also do this to ensure that Tk_IdToWindow does not find
         * the old display as it is being destroyed, when it wants to see
         * if it needs to dispatch a message.
         */
        
        for (tsdPtr->displayList = NULL; displayPtr != NULL; 
                displayPtr = nextPtr) {
            nextPtr = displayPtr->nextPtr;
            if (displayPtr->name != (char *) NULL) {
                ckfree(displayPtr->name);
            }
            Tcl_DeleteHashTable(&(displayPtr->winTable));
            TkpCloseDisplay(displayPtr);
        }
    }
    
    tsdPtr->numMainWindows = 0;
    tsdPtr->mainWindowList = NULL;
    tsdPtr->initialized = 0;
}

/*
 *----------------------------------------------------------------------







|



|













|
<
<
<






|
|
|
|
<








|
|
|
|
<
<
<
<
|


|







2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626



2627
2628
2629
2630
2631
2632
2633
2634
2635
2636

2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648




2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
 *----------------------------------------------------------------------
 */

static void
DeleteWindowsExitProc(clientData)
    ClientData clientData;		/* Not used. */
{
    TkDisplay *dispPtr, *nextPtr;
    Tcl_Interp *interp;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    while (tsdPtr->mainWindowList != NULL) {
        /*
         * We must protect the interpreter while deleting the window,
         * because of <Destroy> bindings which could destroy the interpreter
         * while the window is being deleted. This would leave frames on
         * the call stack pointing at deleted memory, causing core dumps.
         */
        
        interp = tsdPtr->mainWindowList->winPtr->mainPtr->interp;
        Tcl_Preserve((ClientData) interp);
	Tk_DestroyWindow((Tk_Window) tsdPtr->mainWindowList->winPtr);
        Tcl_Release((ClientData) interp);
    }




    /*
     * Iterate destroying the displays until no more displays remain.
     * It is possible for displays to get recreated during exit by any
     * code that calls GetScreen, so we must destroy these new displays
     * as well as the old ones.
     */

    for (dispPtr = tsdPtr->displayList;
         dispPtr != NULL;
         dispPtr = tsdPtr->displayList) {

        /*
         * Now iterate over the current list of open displays, and first
         * set the global pointer to NULL so we will be able to notice if
         * any new displays got created during deletion of the current set.
         * We must also do this to ensure that Tk_IdToWindow does not find
         * the old display as it is being destroyed, when it wants to see
         * if it needs to dispatch a message.
         */

        for (tsdPtr->displayList = NULL; dispPtr != NULL; 
                dispPtr = nextPtr) {
            nextPtr = dispPtr->nextPtr;




            TkCloseDisplay(dispPtr);
        }
    }

    tsdPtr->numMainWindows = 0;
    tsdPtr->mainWindowList = NULL;
    tsdPtr->initialized = 0;
}

/*
 *----------------------------------------------------------------------
Changes to library/bgerror.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14





15
16
17
18
19
20
21


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# bgerror.tcl --
#
#	Implementation of the bgerror procedure.  It posts a dialog box with
#	the error message and gives the user a chance to see a more detailed
#	stack trace, and possible do something more interesting with that
#	trace (like save it to a log).  This is adapted from work done by
#	Donal K. Fellows.
#
# Copyright (c) 1998-2000 by Ajuba Solutions.
# All rights reserved.
# 
# RCS: @(#) $Id: bgerror.tcl,v 1.17.2.2 2001/10/17 06:51:28 wolfsuit Exp $
# $Id: bgerror.tcl,v 1.17.2.2 2001/10/17 06:51:28 wolfsuit Exp $






option add *ErrorDialog.function.text [::msgcat::mc "Save To Log"] \
	widgetDefault
option add *ErrorDialog.function.command "::tk::dialog::error::saveToLog"

namespace eval ::tk {}
namespace eval ::tk::dialog {}
namespace eval ::tk::dialog::error {}



proc ::tk::dialog::error::Return {} {
    variable button
    
    .bgerrorDialog.ok configure -state active -relief sunken
    update idletasks
    after 100
    set button 0
}

proc ::tk::dialog::error::details {} {
    set w .bgerrorDialog
    set caption [option get $w.function text {}]
    set command [option get $w.function command {}]
    if { [string equal $caption ""] || [string equal $command ""] } {
	grid forget $w.function
    }
    $w.function configure -text $caption \
	    -command [list ::tk::dialog::error::evalFunction $command]
    grid $w.top.info - -sticky nsew -padx 3m -pady 3m
}

proc ::tk::dialog::error::evalFunction {cmd} {
    uplevel \#0 [list $cmd [.bgerrorDialog.top.info.text get 1.0 end]]
}

proc ::tk::dialog::error::saveToLog {text} {
    if { [string equal $::tcl_platform(platform) "windows"] } {
	set allFiles "*.*"
    } else {
	set allFiles "*"
    }
    set types [list	\
	    [list [::msgcat::mc "Log Files"]	.log]		\
	    [list [::msgcat::mc "Text Files"]	.txt]		\
	    [list [::msgcat::mc "All Files"]	$allFiles]	\
	    ]
    set filename [tk_getSaveFile -title [::msgcat::mc "Select Log File"] \
	    -filetypes $types -defaultextension .log -parent .bgerrorDialog]
    if {![string length $filename]} {
	return
    }
    set f [open $filename w]
    puts -nonewline $f $text
    close $f
}

proc ::tk::dialog::error::Destroy {w} {
    if {".bgerrorDialog" == "$w"} {
	variable button
	set button -1
    }
}

# ::bgerror --
# This is the default version of bgerror. 
# It tries to execute tkerror, if that fails it posts a dialog box containing
# the error message and gives the user a chance to ask to see a stack
# trace.
# Arguments:
# err -			The error message.

proc ::bgerror err {
    global errorInfo tcl_platform
    set butvar ::tk::dialog::error::button

    set info $errorInfo

    set ret [catch {tkerror $err} msg];
    if {$ret != 1} {return -code $ret $msg}

    # Ok the application's tkerror either failed or was not found
    # we use the default dialog then :
    if {[string equal $tcl_platform(platform) "macintosh"]
             || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	set ok		[::msgcat::mc "Ok"]
	set messageFont	system
	set textRelief	"flat"
	set textHilight	0
    } else {
	set ok		[::msgcat::mc "OK"]
	set messageFont	{Times -18}
	set textRelief	"sunken"
	set textHilight	1
    }


    # Truncate the message if it is too wide (longer than 30 characacters) or
    # too tall (more than 4 newlines).  Truncation occurs at the first point at
    # which one of those conditions is met.
    set displayedErr ""
    set lines 0
    foreach line [split $err "\n"] {
	if { [string length $line] > 30 } {
	    append displayedErr "[string range $line 0 29]..."
	    break
	}
	if { $lines > 4 } {
	    append displayedErr "..."
	    break
	} else {
	    append displayedErr "${line}\n"
	}
	incr lines
    }

    set w .bgerrorDialog
    set title [::msgcat::mc "Application Error"]
    set text [::msgcat::mc "Error: %1\$s" $err]
    set buttons [list ok $ok dismiss [::msgcat::mc "Skip Messages"] \
	    function [::msgcat::mc "Details >>"]]

    # 1. Create the top-level window and divide it into top
    # and bottom parts.

    catch {destroy .bgerrorDialog}
    toplevel .bgerrorDialog -class ErrorDialog
    wm title .bgerrorDialog $title
    wm iconname .bgerrorDialog ErrorDialog
    wm protocol .bgerrorDialog WM_DELETE_WINDOW { }

    # The following, though surprising, works.
    wm transient .bgerrorDialog .bgerrorDialog

    if {[string equal $tcl_platform(platform) "macintosh"] 
            || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	::tk::unsupported::MacWindowStyle style .bgerrorDialog dBoxProc
    }

    frame .bgerrorDialog.bot
    frame .bgerrorDialog.top
    if {[string equal $tcl_platform(windowingsystem) "x11"]} {
	.bgerrorDialog.bot configure -relief raised -bd 1
	.bgerrorDialog.top configure -relief raised -bd 1
    }
    pack .bgerrorDialog.bot -side bottom -fill both
    pack .bgerrorDialog.top -side top -fill both -expand 1

    set W [frame $w.top.info]
    text $W.text				\
	    -bd 2				\
	    -yscrollcommand "$W.scroll set"	\
	    -setgrid true			\
	    -width 40				\
	    -height 10				\
	    -state normal			\
	    -relief $textRelief			\
	    -highlightthickness $textHilight	\
	    -wrap char

    scrollbar $W.scroll -relief sunken -command "$W.text yview"
    pack $W.scroll -side right -fill y
    pack $W.text -side left -expand yes -fill both
    $W.text insert 0.0 "$err\n$info"
    $W.text mark set insert 0.0
    bind $W.text <ButtonPress-1> { focus %W }
    $W.text configure -state disabled

    # 2. Fill the top part with bitmap and message

    label .bgerrorDialog.msg -justify left -text $text -font $messageFont
    if {[string equal $tcl_platform(platform) "macintosh"]
            || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	# On the Macintosh, use the stop bitmap
	label .bgerrorDialog.bitmap -bitmap stop
    } else {
	# On other platforms, make the error icon
	canvas .bgerrorDialog.bitmap -width 32 -height 32 -highlightthickness 0
	.bgerrorDialog.bitmap create oval 0 0 31 31 -fill red -outline black
	.bgerrorDialog.bitmap create line 9 9 23 23 -fill white -width 4











|
|

>
>
>
>
>
|
|
|
|
<
<
<
>
>










|



|


|
|



<
<
<
<
|
|
|

|


|
|
|

|










|





|







|

|



|




|
|
|

|


|

|









|














|
|
|
|













|
|





|









|








|










|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47




48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# bgerror.tcl --
#
#	Implementation of the bgerror procedure.  It posts a dialog box with
#	the error message and gives the user a chance to see a more detailed
#	stack trace, and possible do something more interesting with that
#	trace (like save it to a log).  This is adapted from work done by
#	Donal K. Fellows.
#
# Copyright (c) 1998-2000 by Ajuba Solutions.
# All rights reserved.
# 
# RCS: @(#) $Id: bgerror.tcl,v 1.17.2.3 2002/06/10 05:38:24 wolfsuit Exp $
# $Id: bgerror.tcl,v 1.17.2.3 2002/06/10 05:38:24 wolfsuit Exp $

namespace eval ::tk {
    namespace eval dialog {
	namespace eval error {
	    namespace import ::tk::msgcat::*
	    namespace export bgerror
	    option add *ErrorDialog.function.text [mc "Save To Log"] \
		    widgetDefault
	    option add *ErrorDialog.function.command [namespace code SaveToLog]
	}



    }
}

proc ::tk::dialog::error::Return {} {
    variable button
    
    .bgerrorDialog.ok configure -state active -relief sunken
    update idletasks
    after 100
    set button 0
}

proc ::tk::dialog::error::Details {} {
    set w .bgerrorDialog
    set caption [option get $w.function text {}]
    set command [option get $w.function command {}]
    if { ($caption eq "") || ($command eq "") } {
	grid forget $w.function
    }
    $w.function configure -text $caption -command \
	"$command [list [.bgerrorDialog.top.info.text get 1.0 end]]"
    grid $w.top.info - -sticky nsew -padx 3m -pady 3m
}





proc ::tk::dialog::error::SaveToLog {text} {
    if { $::tcl_platform(platform) eq "windows" } {
	set allFiles *.*
    } else {
	set allFiles *
    }
    set types [list	\
	    [list [mc "Log Files"] .log]	\
	    [list [mc "Text Files"] .txt]	\
	    [list [mc "All Files"] $allFiles] \
	    ]
    set filename [tk_getSaveFile -title [mc "Select Log File"] \
	    -filetypes $types -defaultextension .log -parent .bgerrorDialog]
    if {![string length $filename]} {
	return
    }
    set f [open $filename w]
    puts -nonewline $f $text
    close $f
}

proc ::tk::dialog::error::Destroy {w} {
    if {$w eq ".bgerrorDialog"} {
	variable button
	set button -1
    }
}

# ::tk::dialog::error::bgerror --
# This is the default version of bgerror. 
# It tries to execute tkerror, if that fails it posts a dialog box containing
# the error message and gives the user a chance to ask to see a stack
# trace.
# Arguments:
# err -			The error message.

proc ::tk::dialog::error::bgerror err {
    global errorInfo tcl_platform
    variable button

    set info $errorInfo

    set ret [catch {::tkerror $err} msg];
    if {$ret != 1} {return -code $ret $msg}

    # Ok the application's tkerror either failed or was not found
    # we use the default dialog then :
    if {($tcl_platform(platform) eq "macintosh")
             || ($tcl_platform(windowingsystem) eq "aqua")} {
	set ok		[mc Ok]
	set messageFont	system
	set textRelief	flat
	set textHilight	0
    } else {
	set ok		[mc OK]
	set messageFont	{Times -18}
	set textRelief	sunken
	set textHilight	1
    }


    # Truncate the message if it is too wide (longer than 30 characacters) or
    # too tall (more than 4 newlines).  Truncation occurs at the first point at
    # which one of those conditions is met.
    set displayedErr ""
    set lines 0
    foreach line [split $err \n] {
	if { [string length $line] > 30 } {
	    append displayedErr "[string range $line 0 29]..."
	    break
	}
	if { $lines > 4 } {
	    append displayedErr "..."
	    break
	} else {
	    append displayedErr "${line}\n"
	}
	incr lines
    }

    set w .bgerrorDialog
    set title [mc "Application Error"]
    set text [mc {Error: %1$s} $err]
    set buttons [list ok $ok dismiss [mc "Skip Messages"] \
	    function [mc "Details >>"]]

    # 1. Create the top-level window and divide it into top
    # and bottom parts.

    catch {destroy .bgerrorDialog}
    toplevel .bgerrorDialog -class ErrorDialog
    wm title .bgerrorDialog $title
    wm iconname .bgerrorDialog ErrorDialog
    wm protocol .bgerrorDialog WM_DELETE_WINDOW { }

    # The following, though surprising, works.
    wm transient .bgerrorDialog .bgerrorDialog

    if {($tcl_platform(platform) eq "macintosh") 
            || ($tcl_platform(windowingsystem) eq "aqua")} {
	::tk::unsupported::MacWindowStyle style .bgerrorDialog dBoxProc
    }

    frame .bgerrorDialog.bot
    frame .bgerrorDialog.top
    if {$tcl_platform(windowingsystem) eq "x11"} {
	.bgerrorDialog.bot configure -relief raised -bd 1
	.bgerrorDialog.top configure -relief raised -bd 1
    }
    pack .bgerrorDialog.bot -side bottom -fill both
    pack .bgerrorDialog.top -side top -fill both -expand 1

    set W [frame $w.top.info]
    text $W.text				\
	    -bd 2				\
	    -yscrollcommand [list $W.scroll set]\
	    -setgrid true			\
	    -width 40				\
	    -height 10				\
	    -state normal			\
	    -relief $textRelief			\
	    -highlightthickness $textHilight	\
	    -wrap char

    scrollbar $W.scroll -relief sunken -command [list $W.text yview]
    pack $W.scroll -side right -fill y
    pack $W.text -side left -expand yes -fill both
    $W.text insert 0.0 "$err\n$info"
    $W.text mark set insert 0.0
    bind $W.text <ButtonPress-1> { focus %W }
    $W.text configure -state disabled

    # 2. Fill the top part with bitmap and message

    label .bgerrorDialog.msg -justify left -text $text -font $messageFont
    if {($tcl_platform(platform) eq "macintosh")
            || ($tcl_platform(windowingsystem) eq "aqua")} {
	# On the Macintosh, use the stop bitmap
	label .bgerrorDialog.bitmap -bitmap stop
    } else {
	# On other platforms, make the error icon
	canvas .bgerrorDialog.bitmap -width 32 -height 32 -highlightthickness 0
	.bgerrorDialog.bitmap create oval 0 0 31 31 -fill red -outline black
	.bgerrorDialog.bitmap create line 9 9 23 23 -fill white -width 4
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
    # 3. Create a row of buttons at the bottom of the dialog.

    set i 0
    foreach {name caption} $buttons {
	button .bgerrorDialog.$name	\
		-text $caption		\
		-default normal		\
		-command "set $butvar $i"
	grid .bgerrorDialog.$name	\
		-in .bgerrorDialog.bot	\
		-column $i		\
		-row 0			\
		-sticky ew		\
		-padx 10
	grid columnconfigure .bgerrorDialog.bot $i -weight 1
	# We boost the size of some Mac buttons for l&f
        if {[string equal $tcl_platform(platform) "macintosh"]
             || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	    if {($name == "ok") || ($name == "dismiss")} {
		grid columnconfigure .bgerrorDialog.bot $i -minsize 79
	    }
	}
	incr i
    }
    # The "OK" button is the default for this dialog.
    .bgerrorDialog.ok configure -default active

    set ::tk::dialog::error::curh 0
    bind .bgerrorDialog <Return>	{::tk::dialog::error::Return}
    bind .bgerrorDialog <Destroy>	{::tk::dialog::error::Destroy %W}
    .bgerrorDialog.function configure	\
	    -command {::tk::dialog::error::details   }

    # 6. Withdraw the window, then update all the geometry information
    # so we know how big it wants to be, then center the window in the
    # display and de-iconify it.

    wm withdraw .bgerrorDialog
    update idletasks







|








|
|
|








<
|
|
|
<







203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229

230
231
232

233
234
235
236
237
238
239
    # 3. Create a row of buttons at the bottom of the dialog.

    set i 0
    foreach {name caption} $buttons {
	button .bgerrorDialog.$name	\
		-text $caption		\
		-default normal		\
		-command [namespace code "set button $i"]
	grid .bgerrorDialog.$name	\
		-in .bgerrorDialog.bot	\
		-column $i		\
		-row 0			\
		-sticky ew		\
		-padx 10
	grid columnconfigure .bgerrorDialog.bot $i -weight 1
	# We boost the size of some Mac buttons for l&f
        if {($tcl_platform(platform) eq "macintosh")
             || ($tcl_platform(windowingsystem) eq "aqua")} {
	    if {($name eq "ok") || ($name eq "dismiss")} {
		grid columnconfigure .bgerrorDialog.bot $i -minsize 79
	    }
	}
	incr i
    }
    # The "OK" button is the default for this dialog.
    .bgerrorDialog.ok configure -default active


    bind .bgerrorDialog <Return>	[namespace code Return]
    bind .bgerrorDialog <Destroy>	[namespace code [list Destroy %W]]
    .bgerrorDialog.function configure -command [namespace code Details]


    # 6. Withdraw the window, then update all the geometry information
    # so we know how big it wants to be, then center the window in the
    # display and de-iconify it.

    wm withdraw .bgerrorDialog
    update idletasks
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284








    # 8. Wait for the user to respond, then restore the focus and
    # return the index of the selected button.  Restore the focus
    # before deleting the window, since otherwise the window manager
    # may take the focus away so we can't redirect it.  Finally,
    # restore any grab that was in effect.

    vwait $butvar
    set button $::tk::dialog::error::button; # Save a copy...
    catch {focus $oldFocus}
    catch {destroy .bgerrorDialog}
    if {$oldGrab != ""} {
	if {$grabStatus == "global"} {
	    grab -global $oldGrab
	} else {
	    grab $oldGrab
	}
    }

    if {$button == 1} {
	return -code break
    }
}














|
|


|
|






|



>
>
>
>
>
>
>
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289

    # 8. Wait for the user to respond, then restore the focus and
    # return the index of the selected button.  Restore the focus
    # before deleting the window, since otherwise the window manager
    # may take the focus away so we can't redirect it.  Finally,
    # restore any grab that was in effect.

    vwait [namespace which -variable button]
    set copy $button; # Save a copy...
    catch {focus $oldFocus}
    catch {destroy .bgerrorDialog}
    if {$oldGrab ne ""} {
	if {$grabStatus eq "global"} {
	    grab -global $oldGrab
	} else {
	    grab $oldGrab
	}
    }

    if {$copy == 1} {
	return -code break
    }
}

namespace eval :: {
    # Fool the indexer
    proc bgerror err {}
    rename bgerror {}
    namespace import ::tk::dialog::error::bgerror
}
Changes to library/button.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# button.tcl --
#
# This file defines the default bindings for Tk label, button,
# checkbutton, and radiobutton widgets and provides procedures
# that help in implementing those bindings.
#
# RCS: @(#) $Id: button.tcl,v 1.11.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
# button.tcl --
#
# This file defines the default bindings for Tk label, button,
# checkbutton, and radiobutton widgets and provides procedures
# that help in implementing those bindings.
#
# RCS: @(#) $Id: button.tcl,v 1.11.2.3 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
    if {[string compare [$w cget -state] "disabled"] } {

	# If the mouse button is down, set the relief to sunken on entry.
	# Overwise, if there's an -overrelief value, set the relief to that.

	if {[string equal $Priv(buttonWindow) $w]} {
	    $w configure -state active -relief sunken
	} elseif { [string compare [$w cget -overrelief] ""] } {
	    set Priv(relief) [$w cget -relief]
	    $w configure -relief [$w cget -overrelief]
	}
    }
    set Priv(window) $w
}








|







146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
    if {[string compare [$w cget -state] "disabled"] } {

	# If the mouse button is down, set the relief to sunken on entry.
	# Overwise, if there's an -overrelief value, set the relief to that.

	if {[string equal $Priv(buttonWindow) $w]} {
	    $w configure -state active -relief sunken
	} elseif {[$w cget -overrelief] ne ""} {
	    set Priv(relief) [$w cget -relief]
	    $w configure -relief [$w cget -overrelief]
	}
    }
    set Priv(window) $w
}

173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
    if {[string compare [$w cget -state] "disabled"]} {
	$w configure -state normal
    }

    # Restore the original button relief if the mouse button is down
    # or there is an -overrelief value.

    if {[string equal $Priv(buttonWindow) $w] || \
	    [string compare [$w cget -overrelief] ""] } {
	$w configure -relief $Priv(relief)
    }

    set Priv(window) ""
}

# ::tk::CheckRadioEnter --







|
|







173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
    if {[string compare [$w cget -state] "disabled"]} {
	$w configure -state normal
    }

    # Restore the original button relief if the mouse button is down
    # or there is an -overrelief value.

    if {[info exists Priv(relief)] && (($Priv(buttonWindow) eq $w) || \
	    ([$w cget -overrelief] ne ""))} {
	$w configure -relief $Priv(relief)
    }

    set Priv(window) ""
}

# ::tk::CheckRadioEnter --
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
	$w configure -state active

	# If the mouse button is down, set the relief to sunken on entry.
	# Overwise, if there's an -overrelief value, set the relief to that.

	if {[string equal $Priv(buttonWindow) $w]} {
	    $w configure -state active -relief sunken
	} elseif { [string compare [$w cget -overrelief] ""] } {
	    set Priv(relief) [$w cget -relief]
	    $w configure -relief [$w cget -overrelief]
	}
    }

    set Priv(window) $w
}







|







324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
	$w configure -state active

	# If the mouse button is down, set the relief to sunken on entry.
	# Overwise, if there's an -overrelief value, set the relief to that.

	if {[string equal $Priv(buttonWindow) $w]} {
	    $w configure -state active -relief sunken
	} elseif {[$w cget -overrelief] ne ""} {
	    set Priv(relief) [$w cget -relief]
	    $w configure -relief [$w cget -overrelief]
	}
    }

    set Priv(window) $w
}
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
# w -		The name of the widget.

proc ::tk::ButtonLeave w {
    variable ::tk::Priv
    if {[string compare [$w cget -state] "disabled"]} {
	$w configure -state normal
    }
    
    # Restore the original button relief if the mouse button is down
    # or there is an -overrelief value.

    if {[string equal $Priv(buttonWindow) $w] || \
	    [string compare [$w cget -overrelief] ""] } {
	$w configure -relief $Priv(relief)
    }

    set Priv(window) ""
}

# ::tk::ButtonDown --







|



|
|







348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
# w -		The name of the widget.

proc ::tk::ButtonLeave w {
    variable ::tk::Priv
    if {[string compare [$w cget -state] "disabled"]} {
	$w configure -state normal
    }

    # Restore the original button relief if the mouse button is down
    # or there is an -overrelief value.

    if {[info exists Priv(relief)] && (($Priv(buttonWindow) eq $w) || \
	    ([$w cget -overrelief] ne ""))} {
	$w configure -relief $Priv(relief)
    }

    set Priv(window) ""
}

# ::tk::ButtonDown --
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
# w -		The name of the widget.

proc ::tk::ButtonEnter {w} {
    variable ::tk::Priv
    if {[string compare [$w cget -state] "disabled"]} {
	if {[string equal $w $Priv(buttonWindow)]} {
	    $w configure -state active
	} elseif { [string compare [$w cget -overrelief] ""] } {
	    set Priv(relief) [$w cget -relief]
	    $w configure -relief [$w cget -overrelief]
	}
    }
    set Priv(window) $w
}








|







455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
# w -		The name of the widget.

proc ::tk::ButtonEnter {w} {
    variable ::tk::Priv
    if {[string compare [$w cget -state] "disabled"]} {
	if {[string equal $w $Priv(buttonWindow)]} {
	    $w configure -state active
	} elseif {[$w cget -overrelief] ne ""} {
	    set Priv(relief) [$w cget -relief]
	    $w configure -relief [$w cget -overrelief]
	}
    }
    set Priv(window) $w
}

478
479
480
481
482
483
484

485
486
487
488
489
490
491
492
# w -		The name of the widget.

proc ::tk::ButtonLeave w {
    variable ::tk::Priv
    if {[string equal $w $Priv(buttonWindow)]} {
	$w configure -state normal
    }

    if { [string compare [$w cget -overrelief] ""] } {
	$w configure -relief $Priv(relief)
    }
    set Priv(window) ""
}

# ::tk::ButtonDown --
# The procedure below is invoked when the mouse button is pressed in







>
|







478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
# w -		The name of the widget.

proc ::tk::ButtonLeave w {
    variable ::tk::Priv
    if {[string equal $w $Priv(buttonWindow)]} {
	$w configure -state normal
    }
    if {[info exists Priv(relief)] && (($Priv(buttonWindow) eq $w) || \
	    ([$w cget -overrelief] ne ""))} {
	$w configure -relief $Priv(relief)
    }
    set Priv(window) ""
}

# ::tk::ButtonDown --
# The procedure below is invoked when the mouse button is pressed in
Changes to library/choosedir.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
# choosedir.tcl --
#
#	Choose directory dialog implementation for Unix/Mac.
#
# Copyright (c) 1998-2000 by Scriptics Corporation.
# All rights reserved.
# 
# RCS: @(#) $Id: choosedir.tcl,v 1.11 2001/09/17 14:12:18 dkf Exp $

# Make sure the tk::dialog namespace, in which all dialogs should live, exists
namespace eval ::tk::dialog {}
namespace eval ::tk::dialog::file {}

# Make the chooseDir namespace inside the dialog namespace
namespace eval ::tk::dialog::file::chooseDir {

}

# ::tk::dialog::file::chooseDir:: --
#
#	Implements the TK directory selection dialog.
#
# Arguments:







|







>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# choosedir.tcl --
#
#	Choose directory dialog implementation for Unix/Mac.
#
# Copyright (c) 1998-2000 by Scriptics Corporation.
# All rights reserved.
# 
# RCS: @(#) $Id: choosedir.tcl,v 1.11.2.1 2002/06/10 05:38:24 wolfsuit Exp $

# Make sure the tk::dialog namespace, in which all dialogs should live, exists
namespace eval ::tk::dialog {}
namespace eval ::tk::dialog::file {}

# Make the chooseDir namespace inside the dialog namespace
namespace eval ::tk::dialog::file::chooseDir {
    namespace import ::tk::msgcat::*
}

# ::tk::dialog::file::chooseDir:: --
#
#	Implements the TK directory selection dialog.
#
# Arguments:
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
    }

    # 3: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::file::$dataName $specs "" $argList

    if {$data(-title) == ""} {
	set data(-title) "[::msgcat::mc "Choose Directory"]"
    }

    # Stub out the -multiple value for the dialog; it doesn't make sense for
    # choose directory dialogs, but we have to have something there because we
    # share so much code with the file dialogs.
    set data(-multiple) 0

    # 4: set the default directory and selection according to the -initial
    #    settings







|

|







132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
    }

    # 3: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::file::$dataName $specs "" $argList

    if {$data(-title) == ""} {
	set data(-title) "[mc "Choose Directory"]"
    }
    
    # Stub out the -multiple value for the dialog; it doesn't make sense for
    # choose directory dialogs, but we have to have something there because we
    # share so much code with the file dialogs.
    set data(-multiple) 0

    # 4: set the default directory and selection according to the -initial
    #    settings
Changes to library/clrpick.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23


24
25
26
27
28
29
30
# clrpick.tcl --
#
#	Color selection dialog for platforms that do not support a
#	standard color selection dialog.
#
# RCS: @(#) $Id: clrpick.tcl,v 1.13.2.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1996 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# ToDo:
#
#	(1): Find out how many free colors are left in the colormap and
#	     don't allocate too many colors.
#	(2): Implement HSV color selection. 
#

# Make sure namespaces exist
namespace eval ::tk {}
namespace eval ::tk::dialog {}
namespace eval ::tk::dialog::color {}



# ::tk::dialog::color:: --
#
#	Create a color dialog and let the user choose a color. This function
#	should not be called directly. It is called by the tk_chooseColor
#	function when a native color selector widget does not exist
#





|
















|
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# clrpick.tcl --
#
#	Color selection dialog for platforms that do not support a
#	standard color selection dialog.
#
# RCS: @(#) $Id: clrpick.tcl,v 1.13.2.2 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1996 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# ToDo:
#
#	(1): Find out how many free colors are left in the colormap and
#	     don't allocate too many colors.
#	(2): Implement HSV color selection. 
#

# Make sure namespaces exist
namespace eval ::tk {}
namespace eval ::tk::dialog {}
namespace eval ::tk::dialog::color {
    namespace import ::tk::msgcat::*
}

# ::tk::dialog::color:: --
#
#	Create a color dialog and let the user choose a color. This function
#	should not be called directly. It is called by the tk_chooseColor
#	function when a native color selector widget does not exist
#
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
    } else {
	set defaultColor [. cget -background]
    }

    set specs [list \
	    [list -initialcolor "" "" $defaultColor] \
	    [list -parent "" "" "."] \
	    [list -title "" "" [::msgcat::mc "Color"]] \
	    ]

    # 2: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::color::$dataName $specs "" $argList

    if {[string equal $data(-title) ""]} {







|







168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
    } else {
	set defaultColor [. cget -background]
    }

    set specs [list \
	    [list -initialcolor "" "" $defaultColor] \
	    [list -parent "" "" "."] \
	    [list -title "" "" [mc "Color"]] \
	    ]

    # 2: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::color::$dataName $specs "" $argList

    if {[string equal $data(-title) ""]} {
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
    # TopFrame contains the color strips and the color selection
    #
    set topFrame [frame $w.top -relief raised -bd 1]

    # StripsFrame contains the colorstrips and the individual RGB entries
    set stripsFrame [frame $topFrame.colorStrip]

    set maxWidth [::msgcat::mcmax Red Green Blue]
    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
    set colorList [list \
	    red		[::msgcat::mc "Red"]	\
	    green	[::msgcat::mc "Green"]	\
	    blue	[::msgcat::mc "Blue"]	\
	    ]
    foreach {color l} $colorList {
	# each f frame contains an [R|G|B] entry and the equiv. color strip.
	set f [frame $stripsFrame.$color]

	# The box frame contains the label and entry widget for an [R|G|B]
	set box [frame $f.box]







|


|
|
|







201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
    # TopFrame contains the color strips and the color selection
    #
    set topFrame [frame $w.top -relief raised -bd 1]

    # StripsFrame contains the colorstrips and the individual RGB entries
    set stripsFrame [frame $topFrame.colorStrip]

    set maxWidth [mcmax Red Green Blue]
    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
    set colorList [list \
	    red		[mc "Red"]	\
	    green	[mc "Green"]	\
	    blue	[mc "Blue"]	\
	    ]
    foreach {color l} $colorList {
	# each f frame contains an [R|G|B] entry and the equiv. color strip.
	set f [frame $stripsFrame.$color]

	# The box frame contains the label and entry widget for an [R|G|B]
	set box [frame $f.box]
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298

    pack $stripsFrame -side left -fill both -padx 4 -pady 10

    # The selFrame contains a frame that demonstrates the currently
    # selected color
    #
    set selFrame [frame $topFrame.sel]
    set lab [label $selFrame.lab -text [::msgcat::mc "Selection:"] \
	    -under 0 -anchor sw]
    set ent [entry $selFrame.ent \
	-textvariable ::tk::dialog::color::[winfo name $w](selection) \
	-width 16]
    set f1  [frame $selFrame.f1 -relief sunken -bd 2]
    set data(finalCanvas) [frame $f1.demo -bd 0 -width 100 -height 70]

    pack $lab $ent -side top -fill x -padx 4 -pady 2
    pack $f1 -expand yes -anchor nw -fill both -padx 6 -pady 10
    pack $data(finalCanvas) -expand yes -fill both

    bind $ent <Return> [list tk::dialog::color::HandleSelEntry $w]

    pack $selFrame -side left -fill none -anchor nw
    pack $topFrame -side top -expand yes -fill both -anchor nw

    # the botFrame frame contains the buttons
    #
    set botFrame [frame $w.bot -relief raised -bd 1]
    set maxWidth [::msgcat::mcmax OK Cancel]
    set maxWidth [expr {$maxWidth<8?8:$maxWidth}]
    button $botFrame.ok     -text [::msgcat::mc "OK"]		\
	    -width $maxWidth -under 0				\
	    -command [list tk::dialog::color::OkCmd $w]
    button $botFrame.cancel -text [::msgcat::mc "Cancel"]	\
	    -width $maxWidth -under 0				\
	    -command [list tk::dialog::color::CancelCmd $w]

    set data(okBtn)      $botFrame.ok
    set data(cancelBtn)  $botFrame.cancel
 
    pack $botFrame.ok $botFrame.cancel \







|



















|

|


|







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300

    pack $stripsFrame -side left -fill both -padx 4 -pady 10

    # The selFrame contains a frame that demonstrates the currently
    # selected color
    #
    set selFrame [frame $topFrame.sel]
    set lab [label $selFrame.lab -text [mc "Selection:"] \
	    -under 0 -anchor sw]
    set ent [entry $selFrame.ent \
	-textvariable ::tk::dialog::color::[winfo name $w](selection) \
	-width 16]
    set f1  [frame $selFrame.f1 -relief sunken -bd 2]
    set data(finalCanvas) [frame $f1.demo -bd 0 -width 100 -height 70]

    pack $lab $ent -side top -fill x -padx 4 -pady 2
    pack $f1 -expand yes -anchor nw -fill both -padx 6 -pady 10
    pack $data(finalCanvas) -expand yes -fill both

    bind $ent <Return> [list tk::dialog::color::HandleSelEntry $w]

    pack $selFrame -side left -fill none -anchor nw
    pack $topFrame -side top -expand yes -fill both -anchor nw

    # the botFrame frame contains the buttons
    #
    set botFrame [frame $w.bot -relief raised -bd 1]
    set maxWidth [mcmax OK Cancel]
    set maxWidth [expr {$maxWidth<8?8:$maxWidth}]
    button $botFrame.ok     -text [mc "OK"]		\
	    -width $maxWidth -under 0				\
	    -command [list tk::dialog::color::OkCmd $w]
    button $botFrame.cancel -text [mc "Cancel"]	\
	    -width $maxWidth -under 0				\
	    -command [list tk::dialog::color::CancelCmd $w]

    set data(okBtn)      $botFrame.ok
    set data(cancelBtn)  $botFrame.cancel
 
    pack $botFrame.ok $botFrame.cancel \
Changes to library/console.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# console.tcl --
#
# This code constructs the console window for an application.  It
# can be used by non-unix systems that do not have built-in support
# for shells.
#
# RCS: @(#) $Id: console.tcl,v 1.13.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
# console.tcl --
#
# This code constructs the console window for an application.  It
# can be used by non-unix systems that do not have built-in support
# for shells.
#
# RCS: @(#) $Id: console.tcl,v 1.13.2.3 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

# ::tk::ConsoleInit --
# This procedure constructs and configures the console windows.
#
# Arguments:
# 	None.

package require msgcat

proc ::tk::ConsoleInit {} {
    global tcl_platform

    if {![consoleinterp eval {set tcl_interactive}]} {
	wm withdraw .
    }

    if {[string equal $tcl_platform(platform) "macintosh"]
            || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	set mod "Cmd"
    } else {
	set mod "Ctrl"
    }

    if {[catch {menu .menubar} err]} { bgerror "INIT: $err" }
    .menubar add cascade -label File -menu .menubar.file -underline 0
    .menubar add cascade -label Edit -menu .menubar.edit -underline 0

    menu .menubar.file -tearoff 0
    .menubar.file add command -label [::msgcat::mc "Source..."] \
	    -underline 0 -command tk::ConsoleSource
    .menubar.file add command -label [::msgcat::mc "Hide Console"] \
	    -underline 0  -command {wm withdraw .}
    .menubar.file add command -label [::msgcat::mc "Clear Console"] \
	    -underline 0 -command {.console delete 1.0 "promptEnd linestart"}
   if {[string equal $tcl_platform(platform) "macintosh"]
           || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	.menubar.file add command -label [::msgcat::mc "Quit"] \
		-command exit -accel Cmd-Q
    } else {
	.menubar.file add command -label [::msgcat::mc "Exit"] \
		-underline 1 -command exit
    }

    menu .menubar.edit -tearoff 0
    .menubar.edit add command -label [::msgcat::mc "Cut"] -underline 2 \
	    -command { event generate .console <<Cut>> } -accel "$mod+X"
    .menubar.edit add command -label [::msgcat::mc "Copy"] -underline 0 \
	    -command { event generate .console <<Copy>> } -accel "$mod+C"
    .menubar.edit add command -label [::msgcat::mc "Paste"] -underline 1 \
	    -command { event generate .console <<Paste>> } -accel "$mod+V"

    if {[string compare $tcl_platform(platform) "windows"]} {
	.menubar.edit add command -label [::msgcat::mc "Clear"] -underline 2 \
		-command { event generate .console <<Clear>> }
    } else {
	.menubar.edit add command -label [::msgcat::mc "Delete"] -underline 0 \
		-command { event generate .console <<Clear>> } -accel "Del"
	
	.menubar add cascade -label Help -menu .menubar.help -underline 0
	menu .menubar.help -tearoff 0
	.menubar.help add command -label [::msgcat::mc "About..."] \
		-underline 0 -command tk::ConsoleAbout
    }

    . configure -menu .menubar

    set con [text .console  -yscrollcommand [list .sb set] -setgrid true]
    scrollbar .sb -command [list $con yview]
    pack .sb -side right -fill both
    pack $con -fill both -expand 1 -side left
    switch -exact $tcl_platform(platform) {
	"macintosh" {
	    $con configure -font {Monaco 9 normal} -highlightthickness 0
	}
	"windows" {
	    $con configure -font systemfixed
	}
        "unix" {
            if {[string equal $tcl_platform(windowingsystem) "aqua"]} {
	        $con configure -font {Monaco 9 normal} -highlightthickness 0
            }
        }
    }

    ConsoleBind $con

    $con tag configure stderr	-foreground red
    $con tag configure stdin	-foreground blue
    $con tag configure prompt	-foreground \#8F4433
    $con tag configure proc	-foreground \#008800
    $con tag configure var	-background \#FFC0D0
    $con tag raise sel
    $con tag configure blink	-background \#FFFF00
    $con tag configure find	-background \#FFFF00

    focus $con

    wm protocol . WM_DELETE_WINDOW { wm withdraw . }
    wm title . [::msgcat::mc "Console"]
    flush stdout
    $con mark set output [$con index "end - 1 char"]
    tk::TextSetCursor $con end
    $con mark set promptEnd insert
    $con mark gravity promptEnd left
}

# ::tk::ConsoleSource --
#
# Prompts the user for a file to source in the main interpreter.
#
# Arguments:
# None.

proc ::tk::ConsoleSource {} {
    set filename [tk_getOpenFile -defaultextension .tcl -parent . \
	    -title [::msgcat::mc "Select a file to source"] \
	    -filetypes [list \
	    [list [::msgcat::mc "Tcl Scripts"] .tcl] \
	    [list [::msgcat::mc "All Files"] *]]]
    if {[string compare $filename ""]} {
    	set cmd [list source $filename]
	if {[catch {consoleinterp eval $cmd} result]} {
	    ConsoleOutput stderr "$result\n"
	}
    }
}







<
<



















|

|

|



|


|




|

|

|



|


|




|
















|
|

|
|
















|
















|

|
|







38
39
40
41
42
43
44


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161

# ::tk::ConsoleInit --
# This procedure constructs and configures the console windows.
#
# Arguments:
# 	None.



proc ::tk::ConsoleInit {} {
    global tcl_platform

    if {![consoleinterp eval {set tcl_interactive}]} {
	wm withdraw .
    }

    if {[string equal $tcl_platform(platform) "macintosh"]
            || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	set mod "Cmd"
    } else {
	set mod "Ctrl"
    }

    if {[catch {menu .menubar} err]} { bgerror "INIT: $err" }
    .menubar add cascade -label File -menu .menubar.file -underline 0
    .menubar add cascade -label Edit -menu .menubar.edit -underline 0

    menu .menubar.file -tearoff 0
    .menubar.file add command -label [mc "Source..."] \
	    -underline 0 -command tk::ConsoleSource
    .menubar.file add command -label [mc "Hide Console"] \
	    -underline 0  -command {wm withdraw .}
    .menubar.file add command -label [mc "Clear Console"] \
	    -underline 0 -command {.console delete 1.0 "promptEnd linestart"}
   if {[string equal $tcl_platform(platform) "macintosh"]
           || [string equal $tcl_platform(windowingsystem) "aqua"]} {
	.menubar.file add command -label [mc "Quit"] \
		-command exit -accel Cmd-Q
    } else {
	.menubar.file add command -label [mc "Exit"] \
		-underline 1 -command exit
    }

    menu .menubar.edit -tearoff 0
    .menubar.edit add command -label [mc "Cut"] -underline 2 \
	    -command { event generate .console <<Cut>> } -accel "$mod+X"
    .menubar.edit add command -label [mc "Copy"] -underline 0 \
	    -command { event generate .console <<Copy>> } -accel "$mod+C"
    .menubar.edit add command -label [mc "Paste"] -underline 1 \
	    -command { event generate .console <<Paste>> } -accel "$mod+V"

    if {[string compare $tcl_platform(platform) "windows"]} {
	.menubar.edit add command -label [mc "Clear"] -underline 2 \
		-command { event generate .console <<Clear>> }
    } else {
	.menubar.edit add command -label [mc "Delete"] -underline 0 \
		-command { event generate .console <<Clear>> } -accel "Del"
	
	.menubar add cascade -label Help -menu .menubar.help -underline 0
	menu .menubar.help -tearoff 0
	.menubar.help add command -label [mc "About..."] \
		-underline 0 -command tk::ConsoleAbout
    }

    . configure -menu .menubar

    set con [text .console  -yscrollcommand [list .sb set] -setgrid true]
    scrollbar .sb -command [list $con yview]
    pack .sb -side right -fill both
    pack $con -fill both -expand 1 -side left
    switch -exact $tcl_platform(platform) {
	"macintosh" {
	    $con configure -font {Monaco 9 normal} -highlightthickness 0
	}
	"windows" {
	    $con configure -font systemfixed
	}
	"unix" {
	    if {[string equal $tcl_platform(windowingsystem) "aqua"]} {
	        $con configure -font {Monaco 9 normal} -highlightthickness 0
	    }
	}
    }

    ConsoleBind $con

    $con tag configure stderr	-foreground red
    $con tag configure stdin	-foreground blue
    $con tag configure prompt	-foreground \#8F4433
    $con tag configure proc	-foreground \#008800
    $con tag configure var	-background \#FFC0D0
    $con tag raise sel
    $con tag configure blink	-background \#FFFF00
    $con tag configure find	-background \#FFFF00

    focus $con

    wm protocol . WM_DELETE_WINDOW { wm withdraw . }
    wm title . [mc "Console"]
    flush stdout
    $con mark set output [$con index "end - 1 char"]
    tk::TextSetCursor $con end
    $con mark set promptEnd insert
    $con mark gravity promptEnd left
}

# ::tk::ConsoleSource --
#
# Prompts the user for a file to source in the main interpreter.
#
# Arguments:
# None.

proc ::tk::ConsoleSource {} {
    set filename [tk_getOpenFile -defaultextension .tcl -parent . \
	    -title [mc "Select a file to source"] \
	    -filetypes [list \
	    [list [mc "Tcl Scripts"] .tcl] \
	    [list [mc "All Files"] *]]]
    if {[string compare $filename ""]} {
    	set cmd [list source $filename]
	if {[catch {consoleinterp eval $cmd} result]} {
	    ConsoleOutput stderr "$result\n"
	}
    }
}
294
295
296
297
298
299
300
301
302


303
304
305
306
307
308
309
# None.

proc ::tk::ConsoleBind {w} {
    bindtags $w [list $w Console PostConsole [winfo toplevel $w] all]

    ## Get all Text bindings into Console
    foreach ev [bind Text] { bind Console $ev [bind Text $ev] }	
    ## We really didn't want the newline insertion
    bind Console <Control-Key-o> {}



    # For the moment, transpose isn't enabled until the console
    # gets and overhaul of how it handles input -- hobbs
    bind Console <Control-Key-t> {}

    # Ignore all Alt, Meta, and Control keypresses unless explicitly bound.
    # Otherwise, if a widget binding for one of these is defined, the







|

>
>







292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# None.

proc ::tk::ConsoleBind {w} {
    bindtags $w [list $w Console PostConsole [winfo toplevel $w] all]

    ## Get all Text bindings into Console
    foreach ev [bind Text] { bind Console $ev [bind Text $ev] }	
    ## We really didn't want the newline insertion...
    bind Console <Control-Key-o> {}
    ## ...or any Control-v binding (would block <<Paste>>)
    bind Console <Control-Key-v> {}

    # For the moment, transpose isn't enabled until the console
    # gets and overhaul of how it handles input -- hobbs
    bind Console <Control-Key-t> {}

    # Ignore all Alt, Meta, and Control keypresses unless explicitly bound.
    # Otherwise, if a widget binding for one of these is defined, the
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
    }
    bind Console <KeyPress> {
	tk::ConsoleInsert %W %A
    }
    bind Console <F9> {
	eval destroy [winfo child .]
	if {[string equal $tcl_platform(platform) "macintosh"]} {
	    if {[catch {source $tk_library:console.tcl}]} {source -rsrc console}
	} else {
	    source [file join $tk_library console.tcl]
	}
    }
    bind Console <<Cut>> {
        # Same as the copy event
 	if {![catch {set data [%W get sel.first sel.last]}]} {







|







451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
    }
    bind Console <KeyPress> {
	tk::ConsoleInsert %W %A
    }
    bind Console <F9> {
	eval destroy [winfo child .]
	if {[string equal $tcl_platform(platform) "macintosh"]} {
	    if {[catch {source [file join $tk_library console.tcl]}]} {source -rsrc console}
	} else {
	    source [file join $tk_library console.tcl]
	}
    }
    bind Console <<Cut>> {
        # Same as the copy event
 	if {![catch {set data [%W get sel.first sel.last]}]} {
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
#
# This routine displays an About box to show Tcl/Tk version info.
#
# Arguments:
# None.

proc ::tk::ConsoleAbout {} {
    tk_messageBox -type ok -message "[::msgcat::mc {Tcl for Windows}]

Tcl $::tcl_patchLevel
Tk $::tk_patchLevel"
}

# ::tk::console::TagProc --
#







|







580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
#
# This routine displays an About box to show Tcl/Tk version info.
#
# Arguments:
# None.

proc ::tk::ConsoleAbout {} {
    tk_messageBox -type ok -message "[mc {Tcl for Windows}]

Tcl $::tcl_patchLevel
Tk $::tk_patchLevel"
}

# ::tk::console::TagProc --
#
Changes to library/demos/paned1.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
# paned1.tcl --
#
# This demonstration script creates a toplevel window containing
# a paned window that separates two windows horizontally.
#
# RCS: @(#) $Id: paned1.tcl,v 1.1.4.1 2002/06/10 05:07:59 wolfsuit Exp $

if {![info exists widgetDemo]} {
    error "This script should be run from the \"widget\" demo."
}

set w .paned1
catch {destroy $w}





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# paned1.tcl --
#
# This demonstration script creates a toplevel window containing
# a paned window that separates two windows horizontally.
#
# RCS: @(#) $Id: paned1.tcl,v 1.1.4.2 2002/06/10 05:38:24 wolfsuit Exp $

if {![info exists widgetDemo]} {
    error "This script should be run from the \"widget\" demo."
}

set w .paned1
catch {destroy $w}
Changes to library/demos/paned2.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
# paned2.tcl --
#
# This demonstration script creates a toplevel window containing
# a paned window that separates two windows vertically.
#
# RCS: @(#) $Id: paned2.tcl,v 1.1.4.1 2002/06/10 05:07:59 wolfsuit Exp $

if {![info exists widgetDemo]} {
    error "This script should be run from the \"widget\" demo."
}

set w .paned2
catch {destroy $w}





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# paned2.tcl --
#
# This demonstration script creates a toplevel window containing
# a paned window that separates two windows vertically.
#
# RCS: @(#) $Id: paned2.tcl,v 1.1.4.2 2002/06/10 05:38:24 wolfsuit Exp $

if {![info exists widgetDemo]} {
    error "This script should be run from the \"widget\" demo."
}

set w .paned2
catch {destroy $w}
Changes to library/demos/widget.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"

# widget --
# This script demonstrates the various widgets provided by Tk,
# along with many of the features of the Tk toolkit.  This file
# only contains code to generate the main window for the
# application, which invokes individual demonstrations.  The
# code for the actual demonstrations is contained in separate
# ".tcl" files is this directory, which are sourced by this script
# as needed.
#
# RCS: @(#) $Id: widget,v 1.3.2.2 2002/02/05 02:25:16 wolfsuit Exp $

eval destroy [winfo child .]
wm title . "Widget Demonstration"
if {$tcl_platform(platform) eq "unix"} {
    # This won't work everywhere, but there's no other way in core Tk
    # at the moment to display a coloured icon.
    image create photo TclPowered \













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"

# widget --
# This script demonstrates the various widgets provided by Tk,
# along with many of the features of the Tk toolkit.  This file
# only contains code to generate the main window for the
# application, which invokes individual demonstrations.  The
# code for the actual demonstrations is contained in separate
# ".tcl" files is this directory, which are sourced by this script
# as needed.
#
# RCS: @(#) $Id: widget,v 1.3.2.3 2002/06/10 05:38:24 wolfsuit Exp $

eval destroy [winfo child .]
wm title . "Widget Demonstration"
if {$tcl_platform(platform) eq "unix"} {
    # This won't work everywhere, but there's no other way in core Tk
    # at the moment to display a coloured icon.
    image create photo TclPowered \
195
196
197
198
199
200
201

202


203

204
205
206
207
208
209
210
    ctext	"Text items in canvases"
    arrow	"An editor for arrowheads on canvas lines"
    ruler	"A ruler with adjustable tab stops"
    floor	"A building floor plan"
    cscroll	"A simple scrollable canvas"
}
addDemoSection "Scales" {

    vscale	"Vertical scale"


    hscale	"Horizontal scale"

}
addDemoSection "Menus" {
    menu	"Menus and cascades (sub-menus)"
    menubu	"Menu-buttons"
}
addDemoSection "Common Dialogs" {
    msgbox	"Message boxes"







>

>
>
|
>







195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
    ctext	"Text items in canvases"
    arrow	"An editor for arrowheads on canvas lines"
    ruler	"A ruler with adjustable tab stops"
    floor	"A building floor plan"
    cscroll	"A simple scrollable canvas"
}
addDemoSection "Scales" {
    hscale	"Horizontal scale"
    vscale	"Vertical scale"
}
addDemoSection "Paned Windows" {
    paned1	"Horizontal paned window"
    paned2	"Vertical paned window"
}
addDemoSection "Menus" {
    menu	"Menus and cascades (sub-menus)"
    menubu	"Menu-buttons"
}
addDemoSection "Common Dialogs" {
    msgbox	"Message boxes"
377
378
379
380
381
382
383
384
385
386
387
388
389
    tk_messageBox -icon info -type ok -title "About Widget Demo" -message \
"Tk widget demonstration

Copyright (c) 1996-1997 Sun Microsystems, Inc.

Copyright (c) 1997-2000 Ajuba Solutions, Inc.

Copyright (c) 2001 Donal K. Fellows"
}

# Local Variables:
# mode: tcl
# End:







|





381
382
383
384
385
386
387
388
389
390
391
392
393
    tk_messageBox -icon info -type ok -title "About Widget Demo" -message \
"Tk widget demonstration

Copyright (c) 1996-1997 Sun Microsystems, Inc.

Copyright (c) 1997-2000 Ajuba Solutions, Inc.

Copyright (c) 2001-2002 Donal K. Fellows"
}

# Local Variables:
# mode: tcl
# End:
Changes to library/entry.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
# entry.tcl --
#
# This file defines the default bindings for Tk entry widgets and provides
# procedures that help in implementing those bindings.
#
# RCS: @(#) $Id: entry.tcl,v 1.16.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# entry.tcl --
#
# This file defines the default bindings for Tk entry widgets and provides
# procedures that help in implementing those bindings.
#
# RCS: @(#) $Id: entry.tcl,v 1.16.2.3 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
bind Entry <B1-Motion> {
    set tk::Priv(x) %x
    tk::EntryMouseSelect %W %x
}
bind Entry <Double-1> {
    set tk::Priv(selectMode) word
    tk::EntryMouseSelect %W %x
    catch {%W icursor sel.first}
}
bind Entry <Triple-1> {
    set tk::Priv(selectMode) line
    tk::EntryMouseSelect %W %x
    %W icursor 0
}
bind Entry <Shift-1> {
    set tk::Priv(selectMode) char
    %W selection adjust @%x
}
bind Entry <Double-Shift-1>	{
    set tk::Priv(selectMode) word







|




|







78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
bind Entry <B1-Motion> {
    set tk::Priv(x) %x
    tk::EntryMouseSelect %W %x
}
bind Entry <Double-1> {
    set tk::Priv(selectMode) word
    tk::EntryMouseSelect %W %x
    catch {%W icursor sel.last}
}
bind Entry <Triple-1> {
    set tk::Priv(selectMode) line
    tk::EntryMouseSelect %W %x
    catch {%W icursor sel.last}
}
bind Entry <Shift-1> {
    set tk::Priv(selectMode) char
    %W selection adjust @%x
}
bind Entry <Double-Shift-1>	{
    set tk::Priv(selectMode) word
Changes to library/msgbox.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
# msgbox.tcl --
#
#	Implements messageboxes for platforms that do not have native
#	messagebox support.
#
# RCS: @(#) $Id: msgbox.tcl,v 1.15.2.1 2001/10/15 09:22:00 wolfsuit Exp $
#
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#






|







1
2
3
4
5
6
7
8
9
10
11
12
13
# msgbox.tcl --
#
#	Implements messageboxes for platforms that do not have native
#	messagebox support.
#
# RCS: @(#) $Id: msgbox.tcl,v 1.15.2.2 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241

    if {![winfo exists $data(-parent)]} {
	error "bad window path name \"$data(-parent)\""
    }

    switch -- $data(-type) {
	abortretryignore {
	    set maxWidth [::msgcat::mcmax Abort Retry Ignore]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list abort  -width $maxWidth -text [::msgcat::mc "Abort"] \
		    -under 0]\
		[list retry  -width $maxWidth -text [::msgcat::mc "Retry"] \
		    -under 0]\
		[list ignore -width $maxWidth -text [::msgcat::mc "Ignore"] \
		    -under 0]\
	    ]
	}
	ok {
	    set buttons [list \
		[list ok -width [::msgcat::mcmax OK] \
		    -text [::msgcat::mc {OK}] -under 0] \
	    ]
	    if {[string equal $data(-default) ""]} {
		set data(-default) "ok"
	    }
	}
	okcancel {
	    set maxWidth [::msgcat::mcmax OK Cancel]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list ok     -width $maxWidth \
		    -text [::msgcat::mc "OK"]     -under 0] \
		[list cancel -width $maxWidth \
		    -text [::msgcat::mc "Cancel"] -under 0] \
	    ]
	}
	retrycancel {
	    set maxWidth [::msgcat::mcmax Retry Cancel]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list retry  -width $maxWidth \
		    -text [::msgcat::mc "Retry"]  -under 0] \
		[list cancel -width $maxWidth \
		    -text [::msgcat::mc "Cancel"] -under 0] \
	    ]
	}
	yesno {
	    set maxWidth [::msgcat::mcmax Yes No]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list yes    -width $maxWidth \
		    -text [::msgcat::mc "Yes"] -under 0]\
		[list no     -width $maxWidth \
		    -text [::msgcat::mc "No"]  -under 0]\
	    ]
	}
	yesnocancel {
	    set maxWidth [::msgcat::mcmax Yes No Cancel]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list yes    -width $maxWidth \
		    -text [::msgcat::mc "Yes"] -under 0]\
		[list no     -width $maxWidth \
		    -text [::msgcat::mc "No"]  -under 0]\
		[list cancel -width $maxWidth \
		    -text [::msgcat::mc "Cancel"] -under 0]\
	    ]
	}
	default {
	    error "bad -type value \"$data(-type)\": must be abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel"
	}
    }








|


|

|

|





|
|






|



|

|



|



|

|



|



|

|



|



|

|

|







168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241

    if {![winfo exists $data(-parent)]} {
	error "bad window path name \"$data(-parent)\""
    }

    switch -- $data(-type) {
	abortretryignore {
	    set maxWidth [mcmax Abort Retry Ignore]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list abort  -width $maxWidth -text [mc "Abort"] \
		    -under 0]\
		[list retry  -width $maxWidth -text [mc "Retry"] \
		    -under 0]\
		[list ignore -width $maxWidth -text [mc "Ignore"] \
		    -under 0]\
	    ]
	}
	ok {
	    set buttons [list \
		[list ok -width [mcmax OK] \
		    -text [mc {OK}] -under 0] \
	    ]
	    if {[string equal $data(-default) ""]} {
		set data(-default) "ok"
	    }
	}
	okcancel {
	    set maxWidth [mcmax OK Cancel]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list ok     -width $maxWidth \
		    -text [mc "OK"]     -under 0] \
		[list cancel -width $maxWidth \
		    -text [mc "Cancel"] -under 0] \
	    ]
	}
	retrycancel {
	    set maxWidth [mcmax Retry Cancel]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list retry  -width $maxWidth \
		    -text [mc "Retry"]  -under 0] \
		[list cancel -width $maxWidth \
		    -text [mc "Cancel"] -under 0] \
	    ]
	}
	yesno {
	    set maxWidth [mcmax Yes No]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list yes    -width $maxWidth \
		    -text [mc "Yes"] -under 0]\
		[list no     -width $maxWidth \
		    -text [mc "No"]  -under 0]\
	    ]
	}
	yesnocancel {
	    set maxWidth [mcmax Yes No Cancel]
	    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
	    set buttons [list \
		[list yes    -width $maxWidth \
		    -text [mc "Yes"] -under 0]\
		[list no     -width $maxWidth \
		    -text [mc "No"]  -under 0]\
		[list cancel -width $maxWidth \
		    -text [mc "Cancel"] -under 0]\
	    ]
	}
	default {
	    error "bad -type value \"$data(-type)\": must be abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel"
	}
    }

370
371
372
373
374
375
376


377
378
379
380
381
382
383
	    set opts [list -text $capName]
	}

	eval button [list $w.$name] $opts [list -command [list set tk::Priv(button) $name]]

	if {[string equal $name $data(-default)]} {
	    $w.$name configure -default active


	}
	pack $w.$name -in $w.bot -side left -expand 1 -padx 3m -pady 2m

	# create the binding for the key accelerator, based on the underline
	#
	set underIdx [$w.$name cget -under]
	if {$underIdx >= 0} {







>
>







370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
	    set opts [list -text $capName]
	}

	eval button [list $w.$name] $opts [list -command [list set tk::Priv(button) $name]]

	if {[string equal $name $data(-default)]} {
	    $w.$name configure -default active
	} else {
	    $w.$name configure -default normal
	}
	pack $w.$name -in $w.bot -side left -expand 1 -padx 3m -pady 2m

	# create the binding for the key accelerator, based on the underline
	#
	set underIdx [$w.$name cget -under]
	if {$underIdx >= 0} {
Changes to library/msgs/cs.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


::msgcat::mcset cs "Abort" "P\u0159eru\u0161it"
::msgcat::mcset cs "About..." "O programu..."
::msgcat::mcset cs "All Files" "V\u0161echny soubory"
::msgcat::mcset cs "Application Error" "Chyba programu"
::msgcat::mcset cs "Blue" "Modr\341"
::msgcat::mcset cs "Cancel" "Zru\u0161it"
::msgcat::mcset cs "Cannot change to the directory \"%1\$s\".\nPermission denied." "Nemohu zm\u011bnit atku\341ln\355 adres\341\u0159 na \"%1\$s\".\nP\u0159\355stup odm\355tnut."
::msgcat::mcset cs "Choose Directory" "V\375b\u011br adres\341\u0159e"
::msgcat::mcset cs "Clear" "Smazat"
::msgcat::mcset cs "Color" "Barva"
::msgcat::mcset cs "Console" "Konzole"
::msgcat::mcset cs "Copy" "Kop\355rovat"
::msgcat::mcset cs "Cut" "Vy\u0159\355znout"
::msgcat::mcset cs "Delete" "Smazat"
::msgcat::mcset cs "Details >>" "Detaily >>"
::msgcat::mcset cs "Directory \"%1\$s\" does not exist." "Adres\341\u0159 \"%1\$s\" neexistuje."
::msgcat::mcset cs "Directory:" "Adres\341\u0159:"
::msgcat::mcset cs "Error: %1\$s" "Chyba: %1\$s"
::msgcat::mcset cs "Exit" "Konec"
::msgcat::mcset cs "File \"%1\$s\" already exists.\n\n" "Soubor \"%1\$s\" ji\u017e existuje.\n\n"
::msgcat::mcset cs "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Soubor \"%1\$s\" ji\u017e existuje.\nChcete jej p\u0159epsat?"
::msgcat::mcset cs "File \"%1\$s\" does not exist." "Soubor \"%1\$s\" neexistuje."
::msgcat::mcset cs "File name:" "Jm\351no souboru:"
::msgcat::mcset cs "File names:" "Jm\351na soubor\u016f:"
::msgcat::mcset cs "Files of type:" "Typy soubor\u016f:"
::msgcat::mcset cs "Files:" "Soubory:"
::msgcat::mcset cs "Filter" "Filtr"
::msgcat::mcset cs "Filter:" "Filtr:"
::msgcat::mcset cs "Green" "Zelen\341"
::msgcat::mcset cs "Hi"
::msgcat::mcset cs "Hide Console" "Skr\375t konsolu"
::msgcat::mcset cs "Ignore" "Ignorovat"
::msgcat::mcset cs "Invalid file name \"%1\$s\"." "\u0160patn\351 jm\351no souboru \"%1\$s\"."
::msgcat::mcset cs "Log Files" "Log soubory"
::msgcat::mcset cs "No" "Ne"
::msgcat::mcset cs "OK"
::msgcat::mcset cs "Ok"
::msgcat::mcset cs "Open" "Otev\u0159\355t"
::msgcat::mcset cs "Open Multiple Files" "Otev\u0159\355t v\355ce soubor\u016f"
::msgcat::mcset cs "Paste" "Vlo\u017eit"
::msgcat::mcset cs "Quit" "Skon\u010dit"
::msgcat::mcset cs "Red" "\u010cerven\341"
::msgcat::mcset cs "Replace existing file?" "Nahradit st\341vaj\355c\355 soubor?"
::msgcat::mcset cs "Retry" "Znovu"
::msgcat::mcset cs "Save" "Ulo\u017eit"
::msgcat::mcset cs "Save As" "Ulo\u017eit jako"
::msgcat::mcset cs "Save To Log" "Ulo\u017eit do logu"
::msgcat::mcset cs "Select Log File" "Vybrat log soubor"
::msgcat::mcset cs "Select a file to source" "Vybrat soubor k nahr\341n\355"
::msgcat::mcset cs "Selection:" "V\375b\u011br:"
::msgcat::mcset cs "Skip Messages" "P\u0159esko\u010dit zpr\341vy"
::msgcat::mcset cs "Source..." "Nahr\341t..."
::msgcat::mcset cs "Tcl Scripts" "Tcl skripty"
::msgcat::mcset cs "Tcl for Windows" "Tcl pro Windows"
::msgcat::mcset cs "Text Files" "Textov\351 soubory"
::msgcat::mcset cs "Yes" "Ano"
::msgcat::mcset cs "abort" "p\u0159eru\u0161it"
::msgcat::mcset cs "blue" "modr\341"
::msgcat::mcset cs "cancel" "zru\u0161it"
::msgcat::mcset cs "extension" "p\u0159\355pona"
::msgcat::mcset cs "extensions" "p\u0159\355pony"
::msgcat::mcset cs "green" "zelen\341"
::msgcat::mcset cs "ignore" "ignorovat"
::msgcat::mcset cs "ok"
::msgcat::mcset cs "red" "\u010derven\341"
::msgcat::mcset cs "retry" "znovu"
::msgcat::mcset cs "yes" "ano"

>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace eval ::tk {
    ::msgcat::mcset cs "Abort" "P\u0159eru\u0161it"
    ::msgcat::mcset cs "About..." "O programu..."
    ::msgcat::mcset cs "All Files" "V\u0161echny soubory"
    ::msgcat::mcset cs "Application Error" "Chyba programu"
    ::msgcat::mcset cs "Blue" "Modr\341"
    ::msgcat::mcset cs "Cancel" "Zru\u0161it"
    ::msgcat::mcset cs "Cannot change to the directory \"%1\$s\".\nPermission denied." "Nemohu zm\u011bnit atku\341ln\355 adres\341\u0159 na \"%1\$s\".\nP\u0159\355stup odm\355tnut."
    ::msgcat::mcset cs "Choose Directory" "V\375b\u011br adres\341\u0159e"
    ::msgcat::mcset cs "Clear" "Smazat"
    ::msgcat::mcset cs "Color" "Barva"
    ::msgcat::mcset cs "Console" "Konzole"
    ::msgcat::mcset cs "Copy" "Kop\355rovat"
    ::msgcat::mcset cs "Cut" "Vy\u0159\355znout"
    ::msgcat::mcset cs "Delete" "Smazat"
    ::msgcat::mcset cs "Details >>" "Detaily >>"
    ::msgcat::mcset cs "Directory \"%1\$s\" does not exist." "Adres\341\u0159 \"%1\$s\" neexistuje."
    ::msgcat::mcset cs "Directory:" "Adres\341\u0159:"
    ::msgcat::mcset cs "Error: %1\$s" "Chyba: %1\$s"
    ::msgcat::mcset cs "Exit" "Konec"
    ::msgcat::mcset cs "File \"%1\$s\" already exists.\n\n" "Soubor \"%1\$s\" ji\u017e existuje.\n\n"
    ::msgcat::mcset cs "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Soubor \"%1\$s\" ji\u017e existuje.\nChcete jej p\u0159epsat?"
    ::msgcat::mcset cs "File \"%1\$s\" does not exist." "Soubor \"%1\$s\" neexistuje."
    ::msgcat::mcset cs "File name:" "Jm\351no souboru:"
    ::msgcat::mcset cs "File names:" "Jm\351na soubor\u016f:"
    ::msgcat::mcset cs "Files of type:" "Typy soubor\u016f:"
    ::msgcat::mcset cs "Files:" "Soubory:"
    ::msgcat::mcset cs "Filter" "Filtr"
    ::msgcat::mcset cs "Filter:" "Filtr:"
    ::msgcat::mcset cs "Green" "Zelen\341"
    ::msgcat::mcset cs "Hi"
    ::msgcat::mcset cs "Hide Console" "Skr\375t konsolu"
    ::msgcat::mcset cs "Ignore" "Ignorovat"
    ::msgcat::mcset cs "Invalid file name \"%1\$s\"." "\u0160patn\351 jm\351no souboru \"%1\$s\"."
    ::msgcat::mcset cs "Log Files" "Log soubory"
    ::msgcat::mcset cs "No" "Ne"
    ::msgcat::mcset cs "OK"
    ::msgcat::mcset cs "Ok"
    ::msgcat::mcset cs "Open" "Otev\u0159\355t"
    ::msgcat::mcset cs "Open Multiple Files" "Otev\u0159\355t v\355ce soubor\u016f"
    ::msgcat::mcset cs "Paste" "Vlo\u017eit"
    ::msgcat::mcset cs "Quit" "Skon\u010dit"
    ::msgcat::mcset cs "Red" "\u010cerven\341"
    ::msgcat::mcset cs "Replace existing file?" "Nahradit st\341vaj\355c\355 soubor?"
    ::msgcat::mcset cs "Retry" "Znovu"
    ::msgcat::mcset cs "Save" "Ulo\u017eit"
    ::msgcat::mcset cs "Save As" "Ulo\u017eit jako"
    ::msgcat::mcset cs "Save To Log" "Ulo\u017eit do logu"
    ::msgcat::mcset cs "Select Log File" "Vybrat log soubor"
    ::msgcat::mcset cs "Select a file to source" "Vybrat soubor k nahr\341n\355"
    ::msgcat::mcset cs "Selection:" "V\375b\u011br:"
    ::msgcat::mcset cs "Skip Messages" "P\u0159esko\u010dit zpr\341vy"
    ::msgcat::mcset cs "Source..." "Nahr\341t..."
    ::msgcat::mcset cs "Tcl Scripts" "Tcl skripty"
    ::msgcat::mcset cs "Tcl for Windows" "Tcl pro Windows"
    ::msgcat::mcset cs "Text Files" "Textov\351 soubory"
    ::msgcat::mcset cs "Yes" "Ano"
    ::msgcat::mcset cs "abort" "p\u0159eru\u0161it"
    ::msgcat::mcset cs "blue" "modr\341"
    ::msgcat::mcset cs "cancel" "zru\u0161it"
    ::msgcat::mcset cs "extension" "p\u0159\355pona"
    ::msgcat::mcset cs "extensions" "p\u0159\355pony"
    ::msgcat::mcset cs "green" "zelen\341"
    ::msgcat::mcset cs "ignore" "ignorovat"
    ::msgcat::mcset cs "ok"
    ::msgcat::mcset cs "red" "\u010derven\341"
    ::msgcat::mcset cs "retry" "znovu"
    ::msgcat::mcset cs "yes" "ano"
}
Changes to library/msgs/de.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


::msgcat::mcset de "Abort" "Abbruch"
::msgcat::mcset de "About..." "\u00dcber..."
::msgcat::mcset de "All Files" "Alle Dateien"
::msgcat::mcset de "Application Error" "Applikationsfehler"
::msgcat::mcset de "Blue" "Blau"
::msgcat::mcset de "Cancel" "Abbruch"
::msgcat::mcset de "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kann nicht in das Verzeichnis \"%1\$s\" wechseln.\nKeine Rechte vorhanden."
::msgcat::mcset de "Choose Directory" "W\u00e4hle Verzeichnis"
::msgcat::mcset de "Clear" "R\u00fccksetzen"
::msgcat::mcset de "Color" "Farbe"
::msgcat::mcset de "Console" "Konsole"
::msgcat::mcset de "Copy" "Kopieren"
::msgcat::mcset de "Cut" "Ausschneiden"
::msgcat::mcset de "Delete" "L\u00f6schen"
::msgcat::mcset de "Details >>"
::msgcat::mcset de "Directory \"%1\$s\" does not exist." "Das Verzeichnis \"%1\$s\" existiert nicht."
::msgcat::mcset de "Directory:" "Verzeichnis:"
::msgcat::mcset de "Error: %1\$s" "Fehler: %1\$s"
::msgcat::mcset de "Exit" "Ende"
::msgcat::mcset de "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Die Datei \"%1\$s\" ist bereits vorhanden.\nWollen sie diese Datei \u00fcberschreiben ?"
::msgcat::mcset de "File \"%1\$s\" already exists.\n\n" "Die Datei \"%1\$s\" ist bereits vorhanden.\n\n"
::msgcat::mcset de "File \"%1\$s\" does not exist." "Die Datei \"%1\$s\" existiert nicht."
::msgcat::mcset de "File name:" "Dateiname:"
::msgcat::mcset de "File names:" "Dateinamen:"
::msgcat::mcset de "Files of type:" "Dateien des Typs:"
::msgcat::mcset de "Files:" "Dateien:"
::msgcat::mcset de "Filter"
::msgcat::mcset de "Filter:"
::msgcat::mcset de "Green" "Gr\u00fcn"
::msgcat::mcset de "Hi" "Hallo"
::msgcat::mcset de "Hide Console" "Konsole unsichtbar machen"
::msgcat::mcset de "Ignore" "Ignorieren"
::msgcat::mcset de "Invalid file name \"%1\$s\"." "Ung\u00fcltiger Dateiname \"%1\$s\"."
::msgcat::mcset de "Log Files" "Protokolldatei"
::msgcat::mcset de "No" "Nein"
::msgcat::mcset de "OK"
::msgcat::mcset de "Ok"
::msgcat::mcset de "Open" "\u00d6ffnen"
::msgcat::mcset de "Open Multiple Files"
::msgcat::mcset de "Paste" "Einf\u00fcgen"
::msgcat::mcset de "Quit" "Beenden"
::msgcat::mcset de "Red" "Rot"
::msgcat::mcset de "Replace existing file?" "Existierende Datei ersetzen?"
::msgcat::mcset de "Retry" "Wiederholen"
::msgcat::mcset de "Save" "Speichern"
::msgcat::mcset de "Save As" "Speichern unter"
::msgcat::mcset de "Save To Log" "In Protokoll speichern"
::msgcat::mcset de "Select Log File" "Protokolldatei ausw\u00e4hlen"
::msgcat::mcset de "Select a file to source" "Auszuf\u00fchrende Datei ausw\u00e4hlen"
::msgcat::mcset de "Selection:" "Auswahl:"
::msgcat::mcset de "Skip Messages" "Weitere Nachrichten \u00fcberspringen"
::msgcat::mcset de "Source..." "Ausf\u00fchren..."
::msgcat::mcset de "Tcl Scripts" "Tcl-Skripte"
::msgcat::mcset de "Tcl for Windows" "Tcl f\u00fcr Windows"
::msgcat::mcset de "Text Files" "Textdateien"
::msgcat::mcset de "Yes" "Ja"
::msgcat::mcset de "abort" "abbrechen"
::msgcat::mcset de "blue" "blau"
::msgcat::mcset de "cancel" "abbrechen"
::msgcat::mcset de "extension" "Erweiterung"
::msgcat::mcset de "extensions" "Erweiterungen"
::msgcat::mcset de "green" "gr\u00fcn"
::msgcat::mcset de "ignore" "ignorieren"
::msgcat::mcset de "ok"
::msgcat::mcset de "red" "rot"
::msgcat::mcset de "retry" "wiederholen"
::msgcat::mcset de "yes" "ja"

>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace eval ::tk {
    ::msgcat::mcset de "Abort" "Abbruch"
    ::msgcat::mcset de "About..." "\u00dcber..."
    ::msgcat::mcset de "All Files" "Alle Dateien"
    ::msgcat::mcset de "Application Error" "Applikationsfehler"
    ::msgcat::mcset de "Blue" "Blau"
    ::msgcat::mcset de "Cancel" "Abbruch"
    ::msgcat::mcset de "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kann nicht in das Verzeichnis \"%1\$s\" wechseln.\nKeine Rechte vorhanden."
    ::msgcat::mcset de "Choose Directory" "W\u00e4hle Verzeichnis"
    ::msgcat::mcset de "Clear" "R\u00fccksetzen"
    ::msgcat::mcset de "Color" "Farbe"
    ::msgcat::mcset de "Console" "Konsole"
    ::msgcat::mcset de "Copy" "Kopieren"
    ::msgcat::mcset de "Cut" "Ausschneiden"
    ::msgcat::mcset de "Delete" "L\u00f6schen"
    ::msgcat::mcset de "Details >>"
    ::msgcat::mcset de "Directory \"%1\$s\" does not exist." "Das Verzeichnis \"%1\$s\" existiert nicht."
    ::msgcat::mcset de "Directory:" "Verzeichnis:"
    ::msgcat::mcset de "Error: %1\$s" "Fehler: %1\$s"
    ::msgcat::mcset de "Exit" "Ende"
    ::msgcat::mcset de "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Die Datei \"%1\$s\" ist bereits vorhanden.\nWollen sie diese Datei \u00fcberschreiben ?"
    ::msgcat::mcset de "File \"%1\$s\" already exists.\n\n" "Die Datei \"%1\$s\" ist bereits vorhanden.\n\n"
    ::msgcat::mcset de "File \"%1\$s\" does not exist." "Die Datei \"%1\$s\" existiert nicht."
    ::msgcat::mcset de "File name:" "Dateiname:"
    ::msgcat::mcset de "File names:" "Dateinamen:"
    ::msgcat::mcset de "Files of type:" "Dateien des Typs:"
    ::msgcat::mcset de "Files:" "Dateien:"
    ::msgcat::mcset de "Filter"
    ::msgcat::mcset de "Filter:"
    ::msgcat::mcset de "Green" "Gr\u00fcn"
    ::msgcat::mcset de "Hi" "Hallo"
    ::msgcat::mcset de "Hide Console" "Konsole unsichtbar machen"
    ::msgcat::mcset de "Ignore" "Ignorieren"
    ::msgcat::mcset de "Invalid file name \"%1\$s\"." "Ung\u00fcltiger Dateiname \"%1\$s\"."
    ::msgcat::mcset de "Log Files" "Protokolldatei"
    ::msgcat::mcset de "No" "Nein"
    ::msgcat::mcset de "OK"
    ::msgcat::mcset de "Ok"
    ::msgcat::mcset de "Open" "\u00d6ffnen"
    ::msgcat::mcset de "Open Multiple Files"
    ::msgcat::mcset de "Paste" "Einf\u00fcgen"
    ::msgcat::mcset de "Quit" "Beenden"
    ::msgcat::mcset de "Red" "Rot"
    ::msgcat::mcset de "Replace existing file?" "Existierende Datei ersetzen?"
    ::msgcat::mcset de "Retry" "Wiederholen"
    ::msgcat::mcset de "Save" "Speichern"
    ::msgcat::mcset de "Save As" "Speichern unter"
    ::msgcat::mcset de "Save To Log" "In Protokoll speichern"
    ::msgcat::mcset de "Select Log File" "Protokolldatei ausw\u00e4hlen"
    ::msgcat::mcset de "Select a file to source" "Auszuf\u00fchrende Datei ausw\u00e4hlen"
    ::msgcat::mcset de "Selection:" "Auswahl:"
    ::msgcat::mcset de "Skip Messages" "Weitere Nachrichten \u00fcberspringen"
    ::msgcat::mcset de "Source..." "Ausf\u00fchren..."
    ::msgcat::mcset de "Tcl Scripts" "Tcl-Skripte"
    ::msgcat::mcset de "Tcl for Windows" "Tcl f\u00fcr Windows"
    ::msgcat::mcset de "Text Files" "Textdateien"
    ::msgcat::mcset de "Yes" "Ja"
    ::msgcat::mcset de "abort" "abbrechen"
    ::msgcat::mcset de "blue" "blau"
    ::msgcat::mcset de "cancel" "abbrechen"
    ::msgcat::mcset de "extension" "Erweiterung"
    ::msgcat::mcset de "extensions" "Erweiterungen"
    ::msgcat::mcset de "green" "gr\u00fcn"
    ::msgcat::mcset de "ignore" "ignorieren"
    ::msgcat::mcset de "ok"
    ::msgcat::mcset de "red" "rot"
    ::msgcat::mcset de "retry" "wiederholen"
    ::msgcat::mcset de "yes" "ja"
}
Changes to library/msgs/el.msg.
1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

83
## Messages for the Greek (Hellenic - "el") language.
## Please report any changes/suggestions to:
##    [email protected]


::msgcat::mcset el "Abort"              "\u03a4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2"
::msgcat::mcset el "About..."           "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac..."
::msgcat::mcset el "All Files"          "\u038c\u03bb\u03b1 \u03c4\u03b1 \u0391\u03c1\u03c7\u03b5\u03af\u03b1"
::msgcat::mcset el "Application Error"  "\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2"
::msgcat::mcset el "Blue"               "\u039c\u03c0\u03bb\u03b5"
::msgcat::mcset el "Cancel"             "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7"
::msgcat::mcset el \
"Cannot change to the directory \"%1\$s\".\nPermission denied." \
"\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03ba\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5 \u03c3\u03b5 \"%1\$s\".\n\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9."
::msgcat::mcset el "Choose Directory"   "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u039a\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5"
::msgcat::mcset el "Clear"              "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2"
::msgcat::mcset el "Color"              "\u03a7\u03c1\u03ce\u03bc\u03b1"
::msgcat::mcset el "Console"            "\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1"
::msgcat::mcset el "Copy"               "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae"
::msgcat::mcset el "Cut"                "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae"
::msgcat::mcset el "Delete"             "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae"
::msgcat::mcset el "Details >>"         "\u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2 >>"
::msgcat::mcset el "Directory \"%1\$s\" does not exist." \
                                        "\u039f \u03ba\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2 \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9."
::msgcat::mcset el "Directory:"         "\u039a\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2:"
::msgcat::mcset el "Error: %1\$s"       "\u039b\u03ac\u03b8\u03bf\u03c2: %1\$s"
::msgcat::mcset el "Exit"               "\u0388\u03be\u03bf\u03b4\u03bf\u03c2"
::msgcat::mcset el \
               "File \"%1\$s\" already exists.\nDo you want to overwrite it?" \
               "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03ba\u03b1\u03bb\u03c5\u03c6\u03b8\u03b5\u03af;"
::msgcat::mcset el "File \"%1\$s\" already exists.\n\n" \
                   "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\n"
::msgcat::mcset el "File \"%1\$s\" does not exist." \
                   "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9."
::msgcat::mcset el "File name:"         "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5:"
::msgcat::mcset el "File names:"        "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:"
::msgcat::mcset el "Files of type:"     "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5 \u03c4\u03cd\u03c0\u03bf\u03c5:"
::msgcat::mcset el "Files:"             "\u0391\u03c1\u03c7\u03b5\u03af\u03b1:"
::msgcat::mcset el "Filter"             "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf"
::msgcat::mcset el "Filter:"            "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf:"
::msgcat::mcset el "Green"              "\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
::msgcat::mcset el "Hi"                 "\u0393\u03b5\u03b9\u03b1"
::msgcat::mcset el "Hide Console"       "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2"
::msgcat::mcset el "Ignore"             "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7"
::msgcat::mcset el "Invalid file name \"%1\$s\"." \
                   "\u0386\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \"%1\$s\"."
::msgcat::mcset el "Log Files"          "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
::msgcat::mcset el "No"                 "\u038c\u03c7\u03b9"
::msgcat::mcset el "OK"                 "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
::msgcat::mcset el "Ok"                 "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
::msgcat::mcset el "Open"               "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1"
::msgcat::mcset el "Open Multiple Files" \
                                        "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ce\u03bd \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd"
::msgcat::mcset el "Paste"              "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7"
::msgcat::mcset el "Quit"               "\u0388\u03be\u03bf\u03b4\u03bf\u03c2"
::msgcat::mcset el "Red"                "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
::msgcat::mcset el "Replace existing file?" \
                                        "\u0395\u03c0\u03b9\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5;"
::msgcat::mcset el "Retry"              "\u03a0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac"
::msgcat::mcset el "Save"               "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7"
::msgcat::mcset el "Save As"            "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03b1\u03bd"
::msgcat::mcset el "Save To Log"        "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
::msgcat::mcset el "Select Log File"    "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
::msgcat::mcset el "Select a file to source" \
                                        "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7"
::msgcat::mcset el "Selection:"         "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae:"
::msgcat::mcset el "Skip Messages"      "\u0391\u03c0\u03bf\u03c6\u03c5\u03b3\u03ae \u03bc\u03c5\u03bd\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd"
::msgcat::mcset el "Source..."          "\u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7..."
::msgcat::mcset el "Tcl Scripts"        "Tcl Scripts"
::msgcat::mcset el "Tcl for Windows"    "Tcl \u03b3\u03b9\u03b1 Windows"
::msgcat::mcset el "Text Files"         "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5"
::msgcat::mcset el "Yes"                "\u039d\u03b1\u03b9"
::msgcat::mcset el "abort"              "\u03c4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2"
::msgcat::mcset el "blue"               "\u03bc\u03c0\u03bb\u03b5"
::msgcat::mcset el "cancel"             "\u03b1\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7"
::msgcat::mcset el "extension"          "\u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7"
::msgcat::mcset el "extensions"         "\u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2"
::msgcat::mcset el "green"              "\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
::msgcat::mcset el "ignore"             "\u03b1\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7"
::msgcat::mcset el "ok"                 "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
::msgcat::mcset el "red"                "\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
::msgcat::mcset el "retry"              "\u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac"
::msgcat::mcset el "yes"                "\u03bd\u03b1\u03b9"






>
|
|
|
|
|
|
|


|
|
|
|
|
|
|
|
|

|
|
|
|


|

|

|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|

|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
## Messages for the Greek (Hellenic - "el") language.
## Please report any changes/suggestions to:
##    [email protected]

namespace eval ::tk {
    ::msgcat::mcset el "Abort"              "\u03a4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2"
    ::msgcat::mcset el "About..."           "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac..."
    ::msgcat::mcset el "All Files"          "\u038c\u03bb\u03b1 \u03c4\u03b1 \u0391\u03c1\u03c7\u03b5\u03af\u03b1"
    ::msgcat::mcset el "Application Error"  "\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2"
    ::msgcat::mcset el "Blue"               "\u039c\u03c0\u03bb\u03b5"
    ::msgcat::mcset el "Cancel"             "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7"
    ::msgcat::mcset el \
"Cannot change to the directory \"%1\$s\".\nPermission denied." \
"\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03ba\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5 \u03c3\u03b5 \"%1\$s\".\n\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9."
    ::msgcat::mcset el "Choose Directory"   "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u039a\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5"
    ::msgcat::mcset el "Clear"              "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2"
    ::msgcat::mcset el "Color"              "\u03a7\u03c1\u03ce\u03bc\u03b1"
    ::msgcat::mcset el "Console"            "\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1"
    ::msgcat::mcset el "Copy"               "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae"
    ::msgcat::mcset el "Cut"                "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae"
    ::msgcat::mcset el "Delete"             "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae"
    ::msgcat::mcset el "Details >>"         "\u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2 >>"
    ::msgcat::mcset el "Directory \"%1\$s\" does not exist." \
                                        "\u039f \u03ba\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2 \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9."
    ::msgcat::mcset el "Directory:"         "\u039a\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2:"
    ::msgcat::mcset el "Error: %1\$s"       "\u039b\u03ac\u03b8\u03bf\u03c2: %1\$s"
    ::msgcat::mcset el "Exit"               "\u0388\u03be\u03bf\u03b4\u03bf\u03c2"
    ::msgcat::mcset el \
               "File \"%1\$s\" already exists.\nDo you want to overwrite it?" \
               "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03ba\u03b1\u03bb\u03c5\u03c6\u03b8\u03b5\u03af;"
    ::msgcat::mcset el "File \"%1\$s\" already exists.\n\n" \
                   "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\n"
    ::msgcat::mcset el "File \"%1\$s\" does not exist." \
                   "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9."
    ::msgcat::mcset el "File name:"         "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5:"
    ::msgcat::mcset el "File names:"        "\u038c\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:"
    ::msgcat::mcset el "Files of type:"     "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5 \u03c4\u03cd\u03c0\u03bf\u03c5:"
    ::msgcat::mcset el "Files:"             "\u0391\u03c1\u03c7\u03b5\u03af\u03b1:"
    ::msgcat::mcset el "Filter"             "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf"
    ::msgcat::mcset el "Filter:"            "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf:"
    ::msgcat::mcset el "Green"              "\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
    ::msgcat::mcset el "Hi"                 "\u0393\u03b5\u03b9\u03b1"
    ::msgcat::mcset el "Hide Console"       "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2"
    ::msgcat::mcset el "Ignore"             "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7"
    ::msgcat::mcset el "Invalid file name \"%1\$s\"." \
                   "\u0386\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \"%1\$s\"."
    ::msgcat::mcset el "Log Files"          "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
    ::msgcat::mcset el "No"                 "\u038c\u03c7\u03b9"
    ::msgcat::mcset el "OK"                 "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
    ::msgcat::mcset el "Ok"                 "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
    ::msgcat::mcset el "Open"               "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1"
    ::msgcat::mcset el "Open Multiple Files" \
                                        "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ce\u03bd \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd"
    ::msgcat::mcset el "Paste"              "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7"
    ::msgcat::mcset el "Quit"               "\u0388\u03be\u03bf\u03b4\u03bf\u03c2"
    ::msgcat::mcset el "Red"                "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
    ::msgcat::mcset el "Replace existing file?" \
                                        "\u0395\u03c0\u03b9\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5;"
    ::msgcat::mcset el "Retry"              "\u03a0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac"
    ::msgcat::mcset el "Save"               "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7"
    ::msgcat::mcset el "Save As"            "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03b1\u03bd"
    ::msgcat::mcset el "Save To Log"        "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
    ::msgcat::mcset el "Select Log File"    "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
    ::msgcat::mcset el "Select a file to source" \
                                        "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7"
    ::msgcat::mcset el "Selection:"         "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae:"
    ::msgcat::mcset el "Skip Messages"      "\u0391\u03c0\u03bf\u03c6\u03c5\u03b3\u03ae \u03bc\u03c5\u03bd\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd"
    ::msgcat::mcset el "Source..."          "\u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7..."
    ::msgcat::mcset el "Tcl Scripts"        "Tcl Scripts"
    ::msgcat::mcset el "Tcl for Windows"    "Tcl \u03b3\u03b9\u03b1 Windows"
    ::msgcat::mcset el "Text Files"         "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5"
    ::msgcat::mcset el "Yes"                "\u039d\u03b1\u03b9"
    ::msgcat::mcset el "abort"              "\u03c4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2"
    ::msgcat::mcset el "blue"               "\u03bc\u03c0\u03bb\u03b5"
    ::msgcat::mcset el "cancel"             "\u03b1\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7"
    ::msgcat::mcset el "extension"          "\u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7"
    ::msgcat::mcset el "extensions"         "\u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2"
    ::msgcat::mcset el "green"              "\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
    ::msgcat::mcset el "ignore"             "\u03b1\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7"
    ::msgcat::mcset el "ok"                 "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
    ::msgcat::mcset el "red"                "\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
    ::msgcat::mcset el "retry"              "\u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac"
    ::msgcat::mcset el "yes"                "\u03bd\u03b1\u03b9"
}

Changes to library/msgs/en.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


::msgcat::mcset en "Abort"
::msgcat::mcset en "About..."
::msgcat::mcset en "All Files"
::msgcat::mcset en "Application Error"
::msgcat::mcset en "Blue"
::msgcat::mcset en "Cancel"
::msgcat::mcset en "Cannot change to the directory \"%1\$s\".\nPermission denied."
::msgcat::mcset en "Choose Directory"
::msgcat::mcset en "Clear"
::msgcat::mcset en "Color"
::msgcat::mcset en "Console"
::msgcat::mcset en "Copy"
::msgcat::mcset en "Cut"
::msgcat::mcset en "Delete"
::msgcat::mcset en "Details >>"
::msgcat::mcset en "Directory \"%1\$s\" does not exist."
::msgcat::mcset en "Directory:"
::msgcat::mcset en "Error: %1\$s"
::msgcat::mcset en "Exit"
::msgcat::mcset en "File \"%1\$s\" already exists.\nDo you want to overwrite it?"
::msgcat::mcset en "File \"%1\$s\" already exists.\n\n"
::msgcat::mcset en "File \"%1\$s\" does not exist."
::msgcat::mcset en "File name:"
::msgcat::mcset en "File names:"
::msgcat::mcset en "Files of type:"
::msgcat::mcset en "Files:"
::msgcat::mcset en "Filter"
::msgcat::mcset en "Filter:"
::msgcat::mcset en "Green"
::msgcat::mcset en "Hi"
::msgcat::mcset en "Hide Console"
::msgcat::mcset en "Ignore"
::msgcat::mcset en "Invalid file name \"%1\$s\"."
::msgcat::mcset en "Log Files"
::msgcat::mcset en "No"
::msgcat::mcset en "OK"
::msgcat::mcset en "Ok"
::msgcat::mcset en "Open"
::msgcat::mcset en "Open Multiple Files"
::msgcat::mcset en "Paste"
::msgcat::mcset en "Quit"
::msgcat::mcset en "Red"
::msgcat::mcset en "Replace existing file?"
::msgcat::mcset en "Retry"
::msgcat::mcset en "Save"
::msgcat::mcset en "Save As"
::msgcat::mcset en "Save To Log"
::msgcat::mcset en "Select Log File"
::msgcat::mcset en "Select a file to source"
::msgcat::mcset en "Selection:"
::msgcat::mcset en "Skip Messages"
::msgcat::mcset en "Source..."
::msgcat::mcset en "Tcl Scripts"
::msgcat::mcset en "Tcl for Windows"
::msgcat::mcset en "Text Files"
::msgcat::mcset en "Yes"
::msgcat::mcset en "abort"
::msgcat::mcset en "blue"
::msgcat::mcset en "cancel"
::msgcat::mcset en "extension"
::msgcat::mcset en "extensions"
::msgcat::mcset en "green"
::msgcat::mcset en "ignore"
::msgcat::mcset en "ok"
::msgcat::mcset en "red"
::msgcat::mcset en "retry"
::msgcat::mcset en "yes"

>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace eval ::tk {
    ::msgcat::mcset en "Abort"
    ::msgcat::mcset en "About..."
    ::msgcat::mcset en "All Files"
    ::msgcat::mcset en "Application Error"
    ::msgcat::mcset en "Blue"
    ::msgcat::mcset en "Cancel"
    ::msgcat::mcset en "Cannot change to the directory \"%1\$s\".\nPermission denied."
    ::msgcat::mcset en "Choose Directory"
    ::msgcat::mcset en "Clear"
    ::msgcat::mcset en "Color"
    ::msgcat::mcset en "Console"
    ::msgcat::mcset en "Copy"
    ::msgcat::mcset en "Cut"
    ::msgcat::mcset en "Delete"
    ::msgcat::mcset en "Details >>"
    ::msgcat::mcset en "Directory \"%1\$s\" does not exist."
    ::msgcat::mcset en "Directory:"
    ::msgcat::mcset en "Error: %1\$s"
    ::msgcat::mcset en "Exit"
    ::msgcat::mcset en "File \"%1\$s\" already exists.\nDo you want to overwrite it?"
    ::msgcat::mcset en "File \"%1\$s\" already exists.\n\n"
    ::msgcat::mcset en "File \"%1\$s\" does not exist."
    ::msgcat::mcset en "File name:"
    ::msgcat::mcset en "File names:"
    ::msgcat::mcset en "Files of type:"
    ::msgcat::mcset en "Files:"
    ::msgcat::mcset en "Filter"
    ::msgcat::mcset en "Filter:"
    ::msgcat::mcset en "Green"
    ::msgcat::mcset en "Hi"
    ::msgcat::mcset en "Hide Console"
    ::msgcat::mcset en "Ignore"
    ::msgcat::mcset en "Invalid file name \"%1\$s\"."
    ::msgcat::mcset en "Log Files"
    ::msgcat::mcset en "No"
    ::msgcat::mcset en "OK"
    ::msgcat::mcset en "Ok"
    ::msgcat::mcset en "Open"
    ::msgcat::mcset en "Open Multiple Files"
    ::msgcat::mcset en "Paste"
    ::msgcat::mcset en "Quit"
    ::msgcat::mcset en "Red"
    ::msgcat::mcset en "Replace existing file?"
    ::msgcat::mcset en "Retry"
    ::msgcat::mcset en "Save"
    ::msgcat::mcset en "Save As"
    ::msgcat::mcset en "Save To Log"
    ::msgcat::mcset en "Select Log File"
    ::msgcat::mcset en "Select a file to source"
    ::msgcat::mcset en "Selection:"
    ::msgcat::mcset en "Skip Messages"
    ::msgcat::mcset en "Source..."
    ::msgcat::mcset en "Tcl Scripts"
    ::msgcat::mcset en "Tcl for Windows"
    ::msgcat::mcset en "Text Files"
    ::msgcat::mcset en "Yes"
    ::msgcat::mcset en "abort"
    ::msgcat::mcset en "blue"
    ::msgcat::mcset en "cancel"
    ::msgcat::mcset en "extension"
    ::msgcat::mcset en "extensions"
    ::msgcat::mcset en "green"
    ::msgcat::mcset en "ignore"
    ::msgcat::mcset en "ok"
    ::msgcat::mcset en "red"
    ::msgcat::mcset en "retry"
    ::msgcat::mcset en "yes"
}
Changes to library/msgs/es.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


::msgcat::mcset es "Abort" "Abortar"
::msgcat::mcset es "About..." "Acerca de ..."
::msgcat::mcset es "All Files" "Todos los archivos"
::msgcat::mcset es "Application Error" "Error de la aplicaci\u00f3n"
::msgcat::mcset es "Blue" "Azul"
::msgcat::mcset es "Cancel" "Cancelar"
::msgcat::mcset es "Cannot change to the directory \"%1\$s\".\nPermission denied." "No es posible acceder al directorio \"%1\$s\".\nPermiso denegado."
::msgcat::mcset es "Choose Directory" "Elegir directorio"
::msgcat::mcset es "Clear" "Borrar"
::msgcat::mcset es "Color" "Color"
::msgcat::mcset es "Console" "Consola"
::msgcat::mcset es "Copy" "Copiar"
::msgcat::mcset es "Cut" "Cortar"
::msgcat::mcset es "Delete" "Borrar"
::msgcat::mcset es "Details >>" "Detalles >>"
::msgcat::mcset es "Directory \"%1\$s\" does not exist." "El directorio \"%1\$s\" no existe."
::msgcat::mcset es "Directory:" "Directorio:"
::msgcat::mcset es "Error: %1\$s" "Error: %1\$s"
::msgcat::mcset es "Exit" "Salir"
::msgcat::mcset es "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "El archivo \"%1\$s\" ya existe.\nDesea sobreescribirlo?"
::msgcat::mcset es "File \"%1\$s\" already exists.\n\n" "El archivo \"%1\$s\" ya existe.\n\n"
::msgcat::mcset es "File \"%1\$s\" does not exist." "El archivo \"%1\$s\" no existe."
::msgcat::mcset es "File name:" "Nombre de archivo:"
::msgcat::mcset es "File names:" "Nombres de archivo:"
::msgcat::mcset es "Files of type:" "Archivos de tipo:"
::msgcat::mcset es "Files:" "Archivos:"
::msgcat::mcset es "Filter" "Filtro"
::msgcat::mcset es "Filter:" "Filtro:"
::msgcat::mcset es "Green" "Verde"
::msgcat::mcset es "Hi" "Hola"
::msgcat::mcset es "Hide Console" "Esconder la consola"
::msgcat::mcset es "Ignore" "Ignorar"
::msgcat::mcset es "Invalid file name \"%1\$s\"." "Nombre de archivo inv\u00e1lido \"%1\$s\"."
::msgcat::mcset es "Log Files" "Ficheros de traza"
::msgcat::mcset es "No" "No"
::msgcat::mcset es "OK" "OK"
::msgcat::mcset es "Ok" "Ok"
::msgcat::mcset es "Open" "Abrir"
::msgcat::mcset es "Open Multiple Files" "Abrir m\u00faltiples archivos"
::msgcat::mcset es "Paste" "Pegar"
::msgcat::mcset es "Quit" "Abandonar"
::msgcat::mcset es "Red" "Rojo"
::msgcat::mcset es "Replace existing file?" "Reemplazar el archivo existente?"
::msgcat::mcset es "Retry" "Reintentar"
::msgcat::mcset es "Save" "Salvar"
::msgcat::mcset es "Save As" "Salvar como"
::msgcat::mcset es "Save To Log" "Salvar al archivo de traza"
::msgcat::mcset es "Select Log File" "Elegir un archivo de traza"
::msgcat::mcset es "Select a file to source" "Seleccionar un archivo a evaluar"
::msgcat::mcset es "Selection:" "Selecci\u00f3n:"
::msgcat::mcset es "Skip Messages" "Omitir los mensajes"
::msgcat::mcset es "Source..." "Evaluar..."
::msgcat::mcset es "Tcl Scripts" "Scripts Tcl"
::msgcat::mcset es "Tcl for Windows" "Tcl para Windows"
::msgcat::mcset es "Text Files" "Archivos de texto"
::msgcat::mcset es "Yes" "Si"
::msgcat::mcset es "abort" "abortar"
::msgcat::mcset es "blue" "azul"
::msgcat::mcset es "cancel" "cancelar"
::msgcat::mcset es "extension" "extensi\u00f3n"
::msgcat::mcset es "extensions" "extensiones"
::msgcat::mcset es "green" "verde"
::msgcat::mcset es "ignore" "ignorar"
::msgcat::mcset es "ok" "ok"
::msgcat::mcset es "red" "rojo"
::msgcat::mcset es "retry" "reintentar"
::msgcat::mcset es "yes" "si"

>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace eval ::tk {
    ::msgcat::mcset es "Abort" "Abortar"
    ::msgcat::mcset es "About..." "Acerca de ..."
    ::msgcat::mcset es "All Files" "Todos los archivos"
    ::msgcat::mcset es "Application Error" "Error de la aplicaci\u00f3n"
    ::msgcat::mcset es "Blue" "Azul"
    ::msgcat::mcset es "Cancel" "Cancelar"
    ::msgcat::mcset es "Cannot change to the directory \"%1\$s\".\nPermission denied." "No es posible acceder al directorio \"%1\$s\".\nPermiso denegado."
    ::msgcat::mcset es "Choose Directory" "Elegir directorio"
    ::msgcat::mcset es "Clear" "Borrar"
    ::msgcat::mcset es "Color" "Color"
    ::msgcat::mcset es "Console" "Consola"
    ::msgcat::mcset es "Copy" "Copiar"
    ::msgcat::mcset es "Cut" "Cortar"
    ::msgcat::mcset es "Delete" "Borrar"
    ::msgcat::mcset es "Details >>" "Detalles >>"
    ::msgcat::mcset es "Directory \"%1\$s\" does not exist." "El directorio \"%1\$s\" no existe."
    ::msgcat::mcset es "Directory:" "Directorio:"
    ::msgcat::mcset es "Error: %1\$s" "Error: %1\$s"
    ::msgcat::mcset es "Exit" "Salir"
    ::msgcat::mcset es "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "El archivo \"%1\$s\" ya existe.\nDesea sobreescribirlo?"
    ::msgcat::mcset es "File \"%1\$s\" already exists.\n\n" "El archivo \"%1\$s\" ya existe.\n\n"
    ::msgcat::mcset es "File \"%1\$s\" does not exist." "El archivo \"%1\$s\" no existe."
    ::msgcat::mcset es "File name:" "Nombre de archivo:"
    ::msgcat::mcset es "File names:" "Nombres de archivo:"
    ::msgcat::mcset es "Files of type:" "Archivos de tipo:"
    ::msgcat::mcset es "Files:" "Archivos:"
    ::msgcat::mcset es "Filter" "Filtro"
    ::msgcat::mcset es "Filter:" "Filtro:"
    ::msgcat::mcset es "Green" "Verde"
    ::msgcat::mcset es "Hi" "Hola"
    ::msgcat::mcset es "Hide Console" "Esconder la consola"
    ::msgcat::mcset es "Ignore" "Ignorar"
    ::msgcat::mcset es "Invalid file name \"%1\$s\"." "Nombre de archivo inv\u00e1lido \"%1\$s\"."
    ::msgcat::mcset es "Log Files" "Ficheros de traza"
    ::msgcat::mcset es "No" "No"
    ::msgcat::mcset es "OK" "OK"
    ::msgcat::mcset es "Ok" "Ok"
    ::msgcat::mcset es "Open" "Abrir"
    ::msgcat::mcset es "Open Multiple Files" "Abrir m\u00faltiples archivos"
    ::msgcat::mcset es "Paste" "Pegar"
    ::msgcat::mcset es "Quit" "Abandonar"
    ::msgcat::mcset es "Red" "Rojo"
    ::msgcat::mcset es "Replace existing file?" "Reemplazar el archivo existente?"
    ::msgcat::mcset es "Retry" "Reintentar"
    ::msgcat::mcset es "Save" "Salvar"
    ::msgcat::mcset es "Save As" "Salvar como"
    ::msgcat::mcset es "Save To Log" "Salvar al archivo de traza"
    ::msgcat::mcset es "Select Log File" "Elegir un archivo de traza"
    ::msgcat::mcset es "Select a file to source" "Seleccionar un archivo a evaluar"
    ::msgcat::mcset es "Selection:" "Selecci\u00f3n:"
    ::msgcat::mcset es "Skip Messages" "Omitir los mensajes"
    ::msgcat::mcset es "Source..." "Evaluar..."
    ::msgcat::mcset es "Tcl Scripts" "Scripts Tcl"
    ::msgcat::mcset es "Tcl for Windows" "Tcl para Windows"
    ::msgcat::mcset es "Text Files" "Archivos de texto"
    ::msgcat::mcset es "Yes" "S\u00ed" 
    ::msgcat::mcset es "abort" "abortar"
    ::msgcat::mcset es "blue" "azul"
    ::msgcat::mcset es "cancel" "cancelar"
    ::msgcat::mcset es "extension" "extensi\u00f3n"
    ::msgcat::mcset es "extensions" "extensiones"
    ::msgcat::mcset es "green" "verde"
    ::msgcat::mcset es "ignore" "ignorar"
    ::msgcat::mcset es "ok" "ok"
    ::msgcat::mcset es "red" "rojo"
    ::msgcat::mcset es "retry" "reintentar"
    ::msgcat::mcset es "yes" "s\u00ed"
}
Changes to library/msgs/fr.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


::msgcat::mcset fr "Abort" "Annuler"
::msgcat::mcset fr "About..." "\u00c0 propos..."
::msgcat::mcset fr "All Files" "Tous les fichiers"
::msgcat::mcset fr "Application Error" "Erreur d'application"
::msgcat::mcset fr "Blue" "Bleu"
::msgcat::mcset fr "Cancel" "Annuler"
::msgcat::mcset fr "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossible d'acc\u00e9der au r\u00e9pertoire \"%1\$s\".\nPermission refus\u00e9e."
::msgcat::mcset fr "Choose Directory" "Choisir r\u00e9pertoire"
::msgcat::mcset fr "Clear" "Effacer"
::msgcat::mcset fr "Color" "Couleur"
::msgcat::mcset fr "Console"
::msgcat::mcset fr "Copy" "Copier"
::msgcat::mcset fr "Cut" "Couper"
::msgcat::mcset fr "Delete" "Effacer"
::msgcat::mcset fr "Details >>" "D\u00e9tails >>"
::msgcat::mcset fr "Directory \"%1\$s\" does not exist."
::msgcat::mcset fr "Directory:" "R\u00e9pertoire:"
::msgcat::mcset fr "Error: %1\$s"
::msgcat::mcset fr "Exit"
::msgcat::mcset fr "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\nVoulez-vous l'\u00e9craser?"
::msgcat::mcset fr "File \"%1\$s\" already exists.\n\n" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\n\n"
::msgcat::mcset fr "File \"%1\$s\" does not exist." "Le fichier \"%1\$s\" n'existe pas."
::msgcat::mcset fr "File name:" "Nom de fichier:"
::msgcat::mcset fr "File names:" "Noms de fichiers:"
::msgcat::mcset fr "Files of type:" "Type de fichiers:"
::msgcat::mcset fr "Files:" "Fichiers:"
::msgcat::mcset fr "Filter" "Filtre"
::msgcat::mcset fr "Filter:" "Filtre:"
::msgcat::mcset fr "Green" "Vert"
::msgcat::mcset fr "Hi" "All\u00f4"
::msgcat::mcset fr "Hide Console" "Cacher la Console"
::msgcat::mcset fr "Ignore" "Ignorer"
::msgcat::mcset fr "Invalid file name \"%1\$s\"." "Nom de fichier invalide \"%1\$s\"."
::msgcat::mcset fr "Log Files" "Fichiers de trace"
::msgcat::mcset fr "No" "Non"
::msgcat::mcset fr "OK"
::msgcat::mcset fr "Ok"
::msgcat::mcset fr "Open" "Ouvrir"
::msgcat::mcset fr "Open Multiple Files" "Ouvrir plusieurs fichiers"
::msgcat::mcset fr "Paste" "Coller"
::msgcat::mcset fr "Quit" "Abandonner"
::msgcat::mcset fr "Red" "Rouge"
::msgcat::mcset fr "Replace existing file?" "Remplacer fichier existant?"
::msgcat::mcset fr "Retry" "R\u00e9-essayer"
::msgcat::mcset fr "Save" "Sauvegarder"
::msgcat::mcset fr "Save As" "Sauvegarder sous"
::msgcat::mcset fr "Save To Log" "Sauvegarde au fichier de trace"
::msgcat::mcset fr "Select Log File" "Choisir un fichier de trace"
::msgcat::mcset fr "Select a file to source" "Choisir un fichier \u00e0 \u00e9valuer"
::msgcat::mcset fr "Selection:" "S\u00e9lection:"
::msgcat::mcset fr "Skip Messages" "Omettre les messages"
::msgcat::mcset fr "Source..." "\u00c9valuer..."
::msgcat::mcset fr "Tcl Scripts" "Scripts Tcl"
::msgcat::mcset fr "Tcl for Windows" "Tcl pour Windows"
::msgcat::mcset fr "Text Files" "Fichiers texte"
::msgcat::mcset fr "Yes" "Oui"
::msgcat::mcset fr "abort" "annuler"
::msgcat::mcset fr "blue" "bleu"
::msgcat::mcset fr "cancel" "annuler"
::msgcat::mcset fr "extension"
::msgcat::mcset fr "extensions"
::msgcat::mcset fr "green" "vert"
::msgcat::mcset fr "ignore" "ignorer"
::msgcat::mcset fr "ok"
::msgcat::mcset fr "red" "rouge"
::msgcat::mcset fr "retry" "r\u00e9-essayer"
::msgcat::mcset fr "yes" "oui"

>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace eval ::tk {
    ::msgcat::mcset fr "Abort" "Annuler"
    ::msgcat::mcset fr "About..." "\u00c0 propos..."
    ::msgcat::mcset fr "All Files" "Tous les fichiers"
    ::msgcat::mcset fr "Application Error" "Erreur d'application"
    ::msgcat::mcset fr "Blue" "Bleu"
    ::msgcat::mcset fr "Cancel" "Annuler"
    ::msgcat::mcset fr "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossible d'acc\u00e9der au r\u00e9pertoire \"%1\$s\".\nPermission refus\u00e9e."
    ::msgcat::mcset fr "Choose Directory" "Choisir r\u00e9pertoire"
    ::msgcat::mcset fr "Clear" "Effacer"
    ::msgcat::mcset fr "Color" "Couleur"
    ::msgcat::mcset fr "Console"
    ::msgcat::mcset fr "Copy" "Copier"
    ::msgcat::mcset fr "Cut" "Couper"
    ::msgcat::mcset fr "Delete" "Effacer"
    ::msgcat::mcset fr "Details >>" "D\u00e9tails >>"
    ::msgcat::mcset fr "Directory \"%1\$s\" does not exist."
    ::msgcat::mcset fr "Directory:" "R\u00e9pertoire:"
    ::msgcat::mcset fr "Error: %1\$s"
    ::msgcat::mcset fr "Exit"
    ::msgcat::mcset fr "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\nVoulez-vous l'\u00e9craser?"
    ::msgcat::mcset fr "File \"%1\$s\" already exists.\n\n" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\n\n"
    ::msgcat::mcset fr "File \"%1\$s\" does not exist." "Le fichier \"%1\$s\" n'existe pas."
    ::msgcat::mcset fr "File name:" "Nom de fichier:"
    ::msgcat::mcset fr "File names:" "Noms de fichiers:"
    ::msgcat::mcset fr "Files of type:" "Type de fichiers:"
    ::msgcat::mcset fr "Files:" "Fichiers:"
    ::msgcat::mcset fr "Filter" "Filtre"
    ::msgcat::mcset fr "Filter:" "Filtre:"
    ::msgcat::mcset fr "Green" "Vert"
    ::msgcat::mcset fr "Hi" "All\u00f4"
    ::msgcat::mcset fr "Hide Console" "Cacher la Console"
    ::msgcat::mcset fr "Ignore" "Ignorer"
    ::msgcat::mcset fr "Invalid file name \"%1\$s\"." "Nom de fichier invalide \"%1\$s\"."
    ::msgcat::mcset fr "Log Files" "Fichiers de trace"
    ::msgcat::mcset fr "No" "Non"
    ::msgcat::mcset fr "OK"
    ::msgcat::mcset fr "Ok"
    ::msgcat::mcset fr "Open" "Ouvrir"
    ::msgcat::mcset fr "Open Multiple Files" "Ouvrir plusieurs fichiers"
    ::msgcat::mcset fr "Paste" "Coller"
    ::msgcat::mcset fr "Quit" "Abandonner"
    ::msgcat::mcset fr "Red" "Rouge"
    ::msgcat::mcset fr "Replace existing file?" "Remplacer fichier existant?"
    ::msgcat::mcset fr "Retry" "R\u00e9-essayer"
    ::msgcat::mcset fr "Save" "Sauvegarder"
    ::msgcat::mcset fr "Save As" "Sauvegarder sous"
    ::msgcat::mcset fr "Save To Log" "Sauvegarde au fichier de trace"
    ::msgcat::mcset fr "Select Log File" "Choisir un fichier de trace"
    ::msgcat::mcset fr "Select a file to source" "Choisir un fichier \u00e0 \u00e9valuer"
    ::msgcat::mcset fr "Selection:" "S\u00e9lection:"
    ::msgcat::mcset fr "Skip Messages" "Omettre les messages"
    ::msgcat::mcset fr "Source..." "\u00c9valuer..."
    ::msgcat::mcset fr "Tcl Scripts" "Scripts Tcl"
    ::msgcat::mcset fr "Tcl for Windows" "Tcl pour Windows"
    ::msgcat::mcset fr "Text Files" "Fichiers texte"
    ::msgcat::mcset fr "Yes" "Oui"
    ::msgcat::mcset fr "abort" "annuler"
    ::msgcat::mcset fr "blue" "bleu"
    ::msgcat::mcset fr "cancel" "annuler"
    ::msgcat::mcset fr "extension"
    ::msgcat::mcset fr "extensions"
    ::msgcat::mcset fr "green" "vert"
    ::msgcat::mcset fr "ignore" "ignorer"
    ::msgcat::mcset fr "ok"
    ::msgcat::mcset fr "red" "rouge"
    ::msgcat::mcset fr "retry" "r\u00e9-essayer"
    ::msgcat::mcset fr "yes" "oui"
}    
Changes to library/msgs/it.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

::msgcat::mcset it "Abort" "Interrompi"
::msgcat::mcset it "About..." "Informazioni ..."
::msgcat::mcset it "All Files" "Tutti i file"
::msgcat::mcset it "Application Error" "Errore dell' applicazione"
::msgcat::mcset it "Blue" "Blu"
::msgcat::mcset it "Cancel" "Annulla"
::msgcat::mcset it "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossibile accedere alla directory \"%1\$s\".\nPermesso negato."
::msgcat::mcset it "Choose Directory" "Scegli directory"
::msgcat::mcset it "Clear" "Azzera"
::msgcat::mcset it "Color" "Colore"
::msgcat::mcset it "Console"
::msgcat::mcset it "Copy" "Copia"
::msgcat::mcset it "Cut" "Taglia"
::msgcat::mcset it "Delete" "Incolla"
::msgcat::mcset it "Details >>" "Dettagli >>"
::msgcat::mcset it "Directory \"%1\$s\" does not exist." "La directory \"%1\$s\" non esiste."
::msgcat::mcset it "Directory:"
::msgcat::mcset it "Error: %1\$s" "Errore: %1\$s"
::msgcat::mcset it "Exit" "Esci"
::msgcat::mcset it "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Il file \"%1\$s\" esiste gi\u00e0.\nVuoi sovrascriverlo?"
::msgcat::mcset it "File \"%1\$s\" already exists.\n\n" "Il file \"%1\$s\" esiste gi\u00e0.\n\n"
::msgcat::mcset it "File \"%1\$s\" does not exist." "Il file \"%1\$s\" non esiste."
::msgcat::mcset it "File name:" "Nome del file:"
::msgcat::mcset it "File names:" "Nomi dei file:"
::msgcat::mcset it "Files of type:" "File di tipo:"
::msgcat::mcset it "Files:" "File:"
::msgcat::mcset it "Filter" "Filtro"
::msgcat::mcset it "Filter:" "Filtro:"
::msgcat::mcset it "Green" "Verde"
::msgcat::mcset it "Hi" "Salve"
::msgcat::mcset it "Hide Console" "Nascondi la console"
::msgcat::mcset it "Ignore" "Ignora"
::msgcat::mcset it "Invalid file name \"%1\$s\"." "Nome di file non valido \"%1\$s\"."
::msgcat::mcset it "Log Files" "File di log"
::msgcat::mcset it "No"
::msgcat::mcset it "OK"
::msgcat::mcset it "Ok"
::msgcat::mcset it "Open" "Apri"
::msgcat::mcset it "Open Multiple Files" "Apri file multipli"
::msgcat::mcset it "Paste" "Incolla"
::msgcat::mcset it "Quit" "Esci"
::msgcat::mcset it "Red" "Rosso"
::msgcat::mcset it "Replace existing file?" "Sostituisci il file esistente?"
::msgcat::mcset it "Retry" "Riprova"
::msgcat::mcset it "Save" "Salva"
::msgcat::mcset it "Save As" "Salva come"
::msgcat::mcset it "Save To Log" "Salva il log"
::msgcat::mcset it "Select Log File" "Scegli un file di log"
::msgcat::mcset it "Select a file to source" "Scegli un file da eseguire"
::msgcat::mcset it "Selection:" "Selezione:"
::msgcat::mcset it "Skip Messages" "Salta i messaggi"
::msgcat::mcset it "Source..." "Esegui..."
::msgcat::mcset it "Tcl Scripts" "Scripts Tcl"
::msgcat::mcset it "Tcl for Windows" "Tcl per Windows"
::msgcat::mcset it "Text Files" "File di testo"
::msgcat::mcset it "Yes" "Si"
::msgcat::mcset it "abort" "interrompi"
::msgcat::mcset it "blue" "blu"
::msgcat::mcset it "cancel" "annulla"
::msgcat::mcset it "extension" "estensione"
::msgcat::mcset it "extensions" "estensioni"
::msgcat::mcset it "green" "verde"
::msgcat::mcset it "ignore" "ignora"
::msgcat::mcset it "ok"
::msgcat::mcset it "red" "rosso"
::msgcat::mcset it "retry" "riprova"
::msgcat::mcset it "yes" "si"

>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace eval ::tk {
    ::msgcat::mcset it "Abort" "Interrompi"
    ::msgcat::mcset it "About..." "Informazioni ..."
    ::msgcat::mcset it "All Files" "Tutti i file"
    ::msgcat::mcset it "Application Error" "Errore dell' applicazione"
    ::msgcat::mcset it "Blue" "Blu"
    ::msgcat::mcset it "Cancel" "Annulla"
    ::msgcat::mcset it "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossibile accedere alla directory \"%1\$s\".\nPermesso negato."
    ::msgcat::mcset it "Choose Directory" "Scegli directory"
    ::msgcat::mcset it "Clear" "Azzera"
    ::msgcat::mcset it "Color" "Colore"
    ::msgcat::mcset it "Console"
    ::msgcat::mcset it "Copy" "Copia"
    ::msgcat::mcset it "Cut" "Taglia"
    ::msgcat::mcset it "Delete" "Incolla"
    ::msgcat::mcset it "Details >>" "Dettagli >>"
    ::msgcat::mcset it "Directory \"%1\$s\" does not exist." "La directory \"%1\$s\" non esiste."
    ::msgcat::mcset it "Directory:"
    ::msgcat::mcset it "Error: %1\$s" "Errore: %1\$s"
    ::msgcat::mcset it "Exit" "Esci"
    ::msgcat::mcset it "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Il file \"%1\$s\" esiste gi\u00e0.\nVuoi sovrascriverlo?"
    ::msgcat::mcset it "File \"%1\$s\" already exists.\n\n" "Il file \"%1\$s\" esiste gi\u00e0.\n\n"
    ::msgcat::mcset it "File \"%1\$s\" does not exist." "Il file \"%1\$s\" non esiste."
    ::msgcat::mcset it "File name:" "Nome del file:"
    ::msgcat::mcset it "File names:" "Nomi dei file:"
    ::msgcat::mcset it "Files of type:" "File di tipo:"
    ::msgcat::mcset it "Files:" "File:"
    ::msgcat::mcset it "Filter" "Filtro"
    ::msgcat::mcset it "Filter:" "Filtro:"
    ::msgcat::mcset it "Green" "Verde"
    ::msgcat::mcset it "Hi" "Salve"
    ::msgcat::mcset it "Hide Console" "Nascondi la console"
    ::msgcat::mcset it "Ignore" "Ignora"
    ::msgcat::mcset it "Invalid file name \"%1\$s\"." "Nome di file non valido \"%1\$s\"."
    ::msgcat::mcset it "Log Files" "File di log"
    ::msgcat::mcset it "No"
    ::msgcat::mcset it "OK"
    ::msgcat::mcset it "Ok"
    ::msgcat::mcset it "Open" "Apri"
    ::msgcat::mcset it "Open Multiple Files" "Apri file multipli"
    ::msgcat::mcset it "Paste" "Incolla"
    ::msgcat::mcset it "Quit" "Esci"
    ::msgcat::mcset it "Red" "Rosso"
    ::msgcat::mcset it "Replace existing file?" "Sostituisci il file esistente?"
    ::msgcat::mcset it "Retry" "Riprova"
    ::msgcat::mcset it "Save" "Salva"
    ::msgcat::mcset it "Save As" "Salva come"
    ::msgcat::mcset it "Save To Log" "Salva il log"
    ::msgcat::mcset it "Select Log File" "Scegli un file di log"
    ::msgcat::mcset it "Select a file to source" "Scegli un file da eseguire"
    ::msgcat::mcset it "Selection:" "Selezione:"
    ::msgcat::mcset it "Skip Messages" "Salta i messaggi"
    ::msgcat::mcset it "Source..." "Esegui..."
    ::msgcat::mcset it "Tcl Scripts" "Scripts Tcl"
    ::msgcat::mcset it "Tcl for Windows" "Tcl per Windows"
    ::msgcat::mcset it "Text Files" "File di testo"
    ::msgcat::mcset it "Yes" "Si"
    ::msgcat::mcset it "abort" "interrompi"
    ::msgcat::mcset it "blue" "blu"
    ::msgcat::mcset it "cancel" "annulla"
    ::msgcat::mcset it "extension" "estensione"
    ::msgcat::mcset it "extensions" "estensioni"
    ::msgcat::mcset it "green" "verde"
    ::msgcat::mcset it "ignore" "ignora"
    ::msgcat::mcset it "ok"
    ::msgcat::mcset it "red" "rosso"
    ::msgcat::mcset it "retry" "riprova"
    ::msgcat::mcset it "yes" "si"
}
Changes to library/msgs/nl.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103


::msgcat::mcset nl "\"%1\$s\" must be an absolute pathname" "\"%1\$s\" moet een absolute pad-naam zijn"
::msgcat::mcset nl "%1\$s is not a toplevel window" "%1\$s is geen toplevel window"
::msgcat::mcset nl ", or" ", of"
::msgcat::mcset nl "-default, -icon, -message, -parent, -title, or -type" "-default, -icon, -message, -parent, -title, of -type"
::msgcat::mcset nl "-initialdir, -mustexist, -parent, or -title" "-initialdir, -mustexist, -parent, of -title"
::msgcat::mcset nl "Abort" "Afbreken"
::msgcat::mcset nl "About..." "Over..."
::msgcat::mcset nl "All Files" "Alle Bestanden"
::msgcat::mcset nl "Application Error" "Toepassingsfout"
::msgcat::mcset nl "Blue" "Blauw"
::msgcat::mcset nl "Cancel" "Annuleren"
::msgcat::mcset nl "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kan niet naar map \"%1\$s\" gaan.\nU heeft geen toestemming hiervoor."
::msgcat::mcset nl "Choose Directory" "Kies map"
::msgcat::mcset nl "Clear" "Wissen"
::msgcat::mcset nl "Clear entry, Press OK; Enter %1\$s, press OK" "Wis veld, Druk op OK; Geef %1\$s in, druk op OK"
::msgcat::mcset nl "Color" "Kleur"
::msgcat::mcset nl "Console"
::msgcat::mcset nl "Copy" "Copi\u00ebren"
::msgcat::mcset nl "Cut" "Knippen"
::msgcat::mcset nl "Delete" "Wissen"
::msgcat::mcset nl "Details"
::msgcat::mcset nl "Details >>"
::msgcat::mcset nl "Directory \"%1\$s\" does not exist." "Map \"%1\$s\" bestaat niet."
::msgcat::mcset nl "Directory:" "Map:"
::msgcat::mcset nl "Enter \"%1\$s\", press OK" "Toets \"%1\$s\", druk op OK"
::msgcat::mcset nl "Enter \"%1\$s\", press OK, enter \"%2\$s\", press OK" "Toets \"%1\$s\", druk op OK, toets \"%2\$s\", druk op OK"
::msgcat::mcset nl "Error: %1\$s" "Fout: %1\$s"
::msgcat::mcset nl "Exit" "Be\u00ebindigen"
::msgcat::mcset nl "File \"%1\$s\" already exists.\n\n" "Bestand \"%1\$s\" bestaat al.\n\n"
::msgcat::mcset nl "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Bestand \"%1\$s\" bestaat al.\nWilt u het overschrijven?"
::msgcat::mcset nl "File \"%1\$s\" does not exist." "Bestand \"%1\$s\" bestaat niet."
::msgcat::mcset nl "File name:" "Bestandsnaam:"
::msgcat::mcset nl "File names:" "Bestandsnamen:"
::msgcat::mcset nl "Files of type:" "Bestanden van het type:"
::msgcat::mcset nl "Files:" "Bestanden:"
::msgcat::mcset nl "Filter"
::msgcat::mcset nl "Filter:"
::msgcat::mcset nl "Green" "Groen"
::msgcat::mcset nl "Hi" "H\u00e9"
::msgcat::mcset nl "Hide Console" "Verberg Console"
::msgcat::mcset nl "Ignore"
::msgcat::mcset nl "Invalid file name \"%1\$s\"." "Ongeldige bestandsnaam \"%1\$s\"."
::msgcat::mcset nl "Log Files" "Log Bestanden"
::msgcat::mcset nl "No" "Nee"
::msgcat::mcset nl "OK"
::msgcat::mcset nl "Ok"
::msgcat::mcset nl "Open" "Openen"
::msgcat::mcset nl "Open Multiple Files" "Open meerdere bestanden"
::msgcat::mcset nl "Paste" "Plakken"
::msgcat::mcset nl "Please press %1\$s" "Druk op %1\$s, A.U.B."
::msgcat::mcset nl "Please press ok" "Druk op ok, A.U.B."
::msgcat::mcset nl "Press Cancel" "Druk op Annuleren"
::msgcat::mcset nl "Press Ok" "Druk op Ok"
::msgcat::mcset nl "Quit" "Stoppen"
::msgcat::mcset nl "Red" "Rood"
::msgcat::mcset nl "Replace existing file?" "Vervang bestaand bestand?"
::msgcat::mcset nl "Retry" "Opnieuw"
::msgcat::mcset nl "Save" "Opslaan"
::msgcat::mcset nl "Save As" "Opslaan als"
::msgcat::mcset nl "Save To Log" "Opslaan naar Log"
::msgcat::mcset nl "Select Log File" "Selecteer Log bestand"
::msgcat::mcset nl "Select a file to source" "Selecteer bronbestand"
::msgcat::mcset nl "Selection:" "Selectie:"
::msgcat::mcset nl "Skip Messages" "Berichten overslaan"
::msgcat::mcset nl "Source..." "Bron..."
::msgcat::mcset nl "Tcl Scripts"
::msgcat::mcset nl "Tcl for Windows" "Tcl voor Windows"
::msgcat::mcset nl "Text Files" "Tekst Bestanden"
::msgcat::mcset nl "Yes" "Ja"
::msgcat::mcset nl "abort" "afbreken"
::msgcat::mcset nl "abort, retry, ignore, ok, cancel, no, or yes" "afbreken, opnieuw, negeren, ok, annuleren, nee, of ja"
::msgcat::mcset nl "abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel" "abortretryignore, ok, okcancel, retrycancel, yesno, of yesnocancel"
::msgcat::mcset nl "bad %1\$s value \"%2\$s\": must be %3\$s" "foutieve %1\$s waarde \"%2\$s\": moet zijn %3\$s"
::msgcat::mcset nl "bad file type \"%1\$s\", should be" "foutief bestandstype \"%1\$s\", moet zijn"
::msgcat::mcset nl "bad option \"%1\$s\": should be %2\$s" "foutieve optie \"%1\$s\": moet zijn %2\$s"
::msgcat::mcset nl "bad window path name \"%1\$s\"" "foutieve window pad naam \"%1\$s\""
::msgcat::mcset nl "blue" "blauw"
::msgcat::mcset nl "can't post %1\$s:  it isn't a descendant of %2\$s (this is a new requirement in Tk versions 3.0 and later)" "kan %1\$s niet verzenden:  het is geen afstammeling van %2\$s (dit is een niewe verplichting in Tk versies 3.0 en later)"
::msgcat::mcset nl "cancel" "annuleren"
::msgcat::mcset nl "default button index greater than number of buttons specified for tk_dialog" "default knop index is groter dan het aantal knoppen beschikbaar voor tk_dialog"
::msgcat::mcset nl "display name to use (current one otherwise)" "te gebruiken schermnaam (anders huidige scherm)"
::msgcat::mcset nl "error, info, question, or warning" "error, info, question, of warning"
::msgcat::mcset nl "extension"
::msgcat::mcset nl "extensions"
::msgcat::mcset nl "focus group \"%1\$s\" doesn't exist" "focus groep \"%1\$s\" bestaat niet"
::msgcat::mcset nl "green" "groen"
::msgcat::mcset nl "history event %1\$s"
::msgcat::mcset nl "ignore" "negeren"
::msgcat::mcset nl "invalid default button \"%1\$s\"" "ongeldige default knop \"%1\$s\""
::msgcat::mcset nl "macType"
::msgcat::mcset nl "macTypes"
::msgcat::mcset nl "must specify a background color" "een achtergrondkleur is verplicht"
::msgcat::mcset nl "name of the slave interpreter" "naam van de slaaf interpreter"
::msgcat::mcset nl "no winfo screen . nor env(DISPLAY)" "geen winfo scherm . noch env(DISPLAY)"
::msgcat::mcset nl "ok"
::msgcat::mcset nl "red" "rood"
::msgcat::mcset nl "retry" "opnieuw"
::msgcat::mcset nl "should contain 5 or 4 elements" "moet 4 of 5 elementen bevatten"
::msgcat::mcset nl "spec"
::msgcat::mcset nl "tk_chooseDirectory command" "tk_chooseDirectory commando"
::msgcat::mcset nl "tk_chooseDirectory command, cancel gives null" "tk_chooseDirectory commando, annuleren geeft lege waarde"
::msgcat::mcset nl "tk_chooseDirectory command, initialdir" "tk_chooseDirectory commando, initi\u00eble map"
::msgcat::mcset nl "yes" "ja"

>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
namespace eval ::tk {
    ::msgcat::mcset nl "\"%1\$s\" must be an absolute pathname" "\"%1\$s\" moet een absolute pad-naam zijn"
    ::msgcat::mcset nl "%1\$s is not a toplevel window" "%1\$s is geen toplevel window"
    ::msgcat::mcset nl ", or" ", of"
    ::msgcat::mcset nl "-default, -icon, -message, -parent, -title, or -type" "-default, -icon, -message, -parent, -title, of -type"
    ::msgcat::mcset nl "-initialdir, -mustexist, -parent, or -title" "-initialdir, -mustexist, -parent, of -title"
    ::msgcat::mcset nl "Abort" "Afbreken"
    ::msgcat::mcset nl "About..." "Over..."
    ::msgcat::mcset nl "All Files" "Alle Bestanden"
    ::msgcat::mcset nl "Application Error" "Toepassingsfout"
    ::msgcat::mcset nl "Blue" "Blauw"
    ::msgcat::mcset nl "Cancel" "Annuleren"
    ::msgcat::mcset nl "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kan niet naar map \"%1\$s\" gaan.\nU heeft geen toestemming hiervoor."
    ::msgcat::mcset nl "Choose Directory" "Kies map"
    ::msgcat::mcset nl "Clear" "Wissen"
    ::msgcat::mcset nl "Clear entry, Press OK; Enter %1\$s, press OK" "Wis veld, Druk op OK; Geef %1\$s in, druk op OK"
    ::msgcat::mcset nl "Color" "Kleur"
    ::msgcat::mcset nl "Console"
    ::msgcat::mcset nl "Copy" "Copi\u00ebren"
    ::msgcat::mcset nl "Cut" "Knippen"
    ::msgcat::mcset nl "Delete" "Wissen"
    ::msgcat::mcset nl "Details"
    ::msgcat::mcset nl "Details >>"
    ::msgcat::mcset nl "Directory \"%1\$s\" does not exist." "Map \"%1\$s\" bestaat niet."
    ::msgcat::mcset nl "Directory:" "Map:"
    ::msgcat::mcset nl "Enter \"%1\$s\", press OK" "Toets \"%1\$s\", druk op OK"
    ::msgcat::mcset nl "Enter \"%1\$s\", press OK, enter \"%2\$s\", press OK" "Toets \"%1\$s\", druk op OK, toets \"%2\$s\", druk op OK"
    ::msgcat::mcset nl "Error: %1\$s" "Fout: %1\$s"
    ::msgcat::mcset nl "Exit" "Be\u00ebindigen"
    ::msgcat::mcset nl "File \"%1\$s\" already exists.\n\n" "Bestand \"%1\$s\" bestaat al.\n\n"
    ::msgcat::mcset nl "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Bestand \"%1\$s\" bestaat al.\nWilt u het overschrijven?"
    ::msgcat::mcset nl "File \"%1\$s\" does not exist." "Bestand \"%1\$s\" bestaat niet."
    ::msgcat::mcset nl "File name:" "Bestandsnaam:"
    ::msgcat::mcset nl "File names:" "Bestandsnamen:"
    ::msgcat::mcset nl "Files of type:" "Bestanden van het type:"
    ::msgcat::mcset nl "Files:" "Bestanden:"
    ::msgcat::mcset nl "Filter"
    ::msgcat::mcset nl "Filter:"
    ::msgcat::mcset nl "Green" "Groen"
    ::msgcat::mcset nl "Hi" "H\u00e9"
    ::msgcat::mcset nl "Hide Console" "Verberg Console"
    ::msgcat::mcset nl "Ignore"
    ::msgcat::mcset nl "Invalid file name \"%1\$s\"." "Ongeldige bestandsnaam \"%1\$s\"."
    ::msgcat::mcset nl "Log Files" "Log Bestanden"
    ::msgcat::mcset nl "No" "Nee"
    ::msgcat::mcset nl "OK"
    ::msgcat::mcset nl "Ok"
    ::msgcat::mcset nl "Open" "Openen"
    ::msgcat::mcset nl "Open Multiple Files" "Open meerdere bestanden"
    ::msgcat::mcset nl "Paste" "Plakken"
    ::msgcat::mcset nl "Please press %1\$s" "Druk op %1\$s, A.U.B."
    ::msgcat::mcset nl "Please press ok" "Druk op ok, A.U.B."
    ::msgcat::mcset nl "Press Cancel" "Druk op Annuleren"
    ::msgcat::mcset nl "Press Ok" "Druk op Ok"
    ::msgcat::mcset nl "Quit" "Stoppen"
    ::msgcat::mcset nl "Red" "Rood"
    ::msgcat::mcset nl "Replace existing file?" "Vervang bestaand bestand?"
    ::msgcat::mcset nl "Retry" "Opnieuw"
    ::msgcat::mcset nl "Save" "Opslaan"
    ::msgcat::mcset nl "Save As" "Opslaan als"
    ::msgcat::mcset nl "Save To Log" "Opslaan naar Log"
    ::msgcat::mcset nl "Select Log File" "Selecteer Log bestand"
    ::msgcat::mcset nl "Select a file to source" "Selecteer bronbestand"
    ::msgcat::mcset nl "Selection:" "Selectie:"
    ::msgcat::mcset nl "Skip Messages" "Berichten overslaan"
    ::msgcat::mcset nl "Source..." "Bron..."
    ::msgcat::mcset nl "Tcl Scripts"
    ::msgcat::mcset nl "Tcl for Windows" "Tcl voor Windows"
    ::msgcat::mcset nl "Text Files" "Tekst Bestanden"
    ::msgcat::mcset nl "Yes" "Ja"
    ::msgcat::mcset nl "abort" "afbreken"
    ::msgcat::mcset nl "abort, retry, ignore, ok, cancel, no, or yes" "afbreken, opnieuw, negeren, ok, annuleren, nee, of ja"
    ::msgcat::mcset nl "abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel" "abortretryignore, ok, okcancel, retrycancel, yesno, of yesnocancel"
    ::msgcat::mcset nl "bad %1\$s value \"%2\$s\": must be %3\$s" "foutieve %1\$s waarde \"%2\$s\": moet zijn %3\$s"
    ::msgcat::mcset nl "bad file type \"%1\$s\", should be" "foutief bestandstype \"%1\$s\", moet zijn"
    ::msgcat::mcset nl "bad option \"%1\$s\": should be %2\$s" "foutieve optie \"%1\$s\": moet zijn %2\$s"
    ::msgcat::mcset nl "bad window path name \"%1\$s\"" "foutieve window pad naam \"%1\$s\""
    ::msgcat::mcset nl "blue" "blauw"
    ::msgcat::mcset nl "can't post %1\$s:  it isn't a descendant of %2\$s (this is a new requirement in Tk versions 3.0 and later)" "kan %1\$s niet verzenden:  het is geen afstammeling van %2\$s (dit is een niewe verplichting in Tk versies 3.0 en later)"
    ::msgcat::mcset nl "cancel" "annuleren"
    ::msgcat::mcset nl "default button index greater than number of buttons specified for tk_dialog" "default knop index is groter dan het aantal knoppen beschikbaar voor tk_dialog"
    ::msgcat::mcset nl "display name to use (current one otherwise)" "te gebruiken schermnaam (anders huidige scherm)"
    ::msgcat::mcset nl "error, info, question, or warning" "error, info, question, of warning"
    ::msgcat::mcset nl "extension"
    ::msgcat::mcset nl "extensions"
    ::msgcat::mcset nl "focus group \"%1\$s\" doesn't exist" "focus groep \"%1\$s\" bestaat niet"
    ::msgcat::mcset nl "green" "groen"
    ::msgcat::mcset nl "history event %1\$s"
    ::msgcat::mcset nl "ignore" "negeren"
    ::msgcat::mcset nl "invalid default button \"%1\$s\"" "ongeldige default knop \"%1\$s\""
    ::msgcat::mcset nl "macType"
    ::msgcat::mcset nl "macTypes"
    ::msgcat::mcset nl "must specify a background color" "een achtergrondkleur is verplicht"
    ::msgcat::mcset nl "name of the slave interpreter" "naam van de slaaf interpreter"
    ::msgcat::mcset nl "no winfo screen . nor env(DISPLAY)" "geen winfo scherm . noch env(DISPLAY)"
    ::msgcat::mcset nl "ok"
    ::msgcat::mcset nl "red" "rood"
    ::msgcat::mcset nl "retry" "opnieuw"
    ::msgcat::mcset nl "should contain 5 or 4 elements" "moet 4 of 5 elementen bevatten"
    ::msgcat::mcset nl "spec"
    ::msgcat::mcset nl "tk_chooseDirectory command" "tk_chooseDirectory commando"
    ::msgcat::mcset nl "tk_chooseDirectory command, cancel gives null" "tk_chooseDirectory commando, annuleren geeft lege waarde"
    ::msgcat::mcset nl "tk_chooseDirectory command, initialdir" "tk_chooseDirectory commando, initi\u00eble map"
    ::msgcat::mcset nl "yes" "ja"
}
Changes to library/panedwindow.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
# panedwindow.tcl --
#
# This file defines the default bindings for Tk panedwindow widgets and
# provides procedures that help in implementing those bindings.
#
# RCS: @(#) $Id: panedwindow.tcl,v 1.5.4.1 2002/06/10 05:07:59 wolfsuit Exp $
#

bind PanedWindow <Button-1> { ::tk::panedwindow::MarkSash %W %x %y 1 }
bind PanedWindow <Button-2> { ::tk::panedwindow::MarkSash %W %x %y 0 }

bind PanedWindow <B1-Motion> { ::tk::panedwindow::DragSash %W %x %y 1 }
bind PanedWindow <B2-Motion> { ::tk::panedwindow::DragSash %W %x %y 0 }





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# panedwindow.tcl --
#
# This file defines the default bindings for Tk panedwindow widgets and
# provides procedures that help in implementing those bindings.
#
# RCS: @(#) $Id: panedwindow.tcl,v 1.5.4.2 2002/06/10 05:38:24 wolfsuit Exp $
#

bind PanedWindow <Button-1> { ::tk::panedwindow::MarkSash %W %x %y 1 }
bind PanedWindow <Button-2> { ::tk::panedwindow::MarkSash %W %x %y 0 }

bind PanedWindow <B1-Motion> { ::tk::panedwindow::DragSash %W %x %y 1 }
bind PanedWindow <B2-Motion> { ::tk::panedwindow::DragSash %W %x %y 0 }
Changes to library/scale.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
# scale.tcl --
#
# This file defines the default bindings for Tk scale widgets and provides
# procedures that help in implementing the bindings.
#
# RCS: @(#) $Id: scale.tcl,v 1.8 2001/08/01 16:21:11 dgp Exp $
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# scale.tcl --
#
# This file defines the default bindings for Tk scale widgets and provides
# procedures that help in implementing the bindings.
#
# RCS: @(#) $Id: scale.tcl,v 1.8.2.1 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
58
59
60
61
62
63
64








65
66
67
68
69
70
71
bind Scale <B2-Leave> { }
bind Scale <B2-Enter> { }
bind Scale <ButtonRelease-2> {
    tk::CancelRepeat
    tk::ScaleEndDrag %W
    tk::ScaleActivate %W %x %y
}








bind Scale <Control-1> {
    tk::ScaleControlPress %W %x %y
}
bind Scale <Up> {
    tk::ScaleIncrement %W up little noRepeat
}
bind Scale <Down> {







>
>
>
>
>
>
>
>







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
bind Scale <B2-Leave> { }
bind Scale <B2-Enter> { }
bind Scale <ButtonRelease-2> {
    tk::CancelRepeat
    tk::ScaleEndDrag %W
    tk::ScaleActivate %W %x %y
}
if {[string equal $tcl_platform(platform) "windows"]} {
    # On Windows do the same with button 3, as that is the right mouse button
    bind Scale <3>		[bind Scale <2>]
    bind Scale <B3-Motion>	[bind Scale <B2-Motion>]
    bind Scale <B3-Leave>	[bind Scale <B2-Leave>]
    bind Scale <B3-Enter>	[bind Scale <B2-Enter>]
    bind Scale <ButtonRelease-3> [bind Scale <ButtonRelease-2>]
}
bind Scale <Control-1> {
    tk::ScaleControlPress %W %x %y
}
bind Scale <Up> {
    tk::ScaleIncrement %W up little noRepeat
}
bind Scale <Down> {
Changes to library/tclIndex.
1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
# Tcl autoload index file, version 2.0
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands.  Typically each line is a command that
# sets an element in the auto_index array, where the
# element name is the name of a command and the value is
# a script that loads the command.

set auto_index(::tk::dialog::error::Return) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::dialog::error::details) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::dialog::error::evalFunction) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::dialog::error::saveToLog) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::dialog::error::Destroy) [list source [file join $dir bgerror.tcl]]

set auto_index(bgerror) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::ButtonInvoke) [list source [file join $dir button.tcl]]
set auto_index(::tk::ButtonAutoInvoke) [list source [file join $dir button.tcl]]
set auto_index(::tk::CheckRadioInvoke) [list source [file join $dir button.tcl]]
set auto_index(::tk::dialog::file::chooseDir::) [list source [file join $dir choosedir.tcl]]
set auto_index(::tk::dialog::file::chooseDir::Config) [list source [file join $dir choosedir.tcl]]
set auto_index(::tk::dialog::file::chooseDir::OkCmd) [list source [file join $dir choosedir.tcl]]









|
<
|

>







1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18
19
20
# Tcl autoload index file, version 2.0
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands.  Typically each line is a command that
# sets an element in the auto_index array, where the
# element name is the name of a command and the value is
# a script that loads the command.

set auto_index(::tk::dialog::error::Return) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::dialog::error::Details) [list source [file join $dir bgerror.tcl]]

set auto_index(::tk::dialog::error::SaveToLog) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::dialog::error::Destroy) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::dialog::error::bgerror) [list source [file join $dir bgerror.tcl]]
set auto_index(bgerror) [list source [file join $dir bgerror.tcl]]
set auto_index(::tk::ButtonInvoke) [list source [file join $dir button.tcl]]
set auto_index(::tk::ButtonAutoInvoke) [list source [file join $dir button.tcl]]
set auto_index(::tk::CheckRadioInvoke) [list source [file join $dir button.tcl]]
set auto_index(::tk::dialog::file::chooseDir::) [list source [file join $dir choosedir.tcl]]
set auto_index(::tk::dialog::file::chooseDir::Config) [list source [file join $dir choosedir.tcl]]
set auto_index(::tk::dialog::file::chooseDir::OkCmd) [list source [file join $dir choosedir.tcl]]
Changes to library/text.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
# text.tcl --
#
# This file defines the default bindings for Tk text widgets and provides
# procedures that help in implementing the bindings.
#
# RCS: @(#) $Id: text.tcl,v 1.17.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998 by Scriptics Corporation.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.





|







1
2
3
4
5
6
7
8
9
10
11
12
13
# text.tcl --
#
# This file defines the default bindings for Tk text widgets and provides
# procedures that help in implementing the bindings.
#
# RCS: @(#) $Id: text.tcl,v 1.17.2.3 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998 by Scriptics Corporation.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    set tk::Priv(y) %y
    tk::TextSelectTo %W %x %y
}
bind Text <Double-1> {
    set tk::Priv(selectMode) word
    tk::TextSelectTo %W %x %y
    catch {%W mark set insert sel.last}
    catch {%W mark set anchor sel.first}
}
bind Text <Triple-1> {
    set tk::Priv(selectMode) line
    tk::TextSelectTo %W %x %y
    catch {%W mark set insert sel.last}
    catch {%W mark set anchor sel.first}
}
bind Text <Shift-1> {
    tk::TextResetAnchor %W @%x,%y
    set tk::Priv(selectMode) char
    tk::TextSelectTo %W %x %y
}
bind Text <Double-Shift-1>	{







<





<







50
51
52
53
54
55
56

57
58
59
60
61

62
63
64
65
66
67
68
    set tk::Priv(y) %y
    tk::TextSelectTo %W %x %y
}
bind Text <Double-1> {
    set tk::Priv(selectMode) word
    tk::TextSelectTo %W %x %y
    catch {%W mark set insert sel.last}

}
bind Text <Triple-1> {
    set tk::Priv(selectMode) line
    tk::TextSelectTo %W %x %y
    catch {%W mark set insert sel.last}

}
bind Text <Shift-1> {
    tk::TextResetAnchor %W @%x,%y
    set tk::Priv(selectMode) char
    tk::TextSelectTo %W %x %y
}
bind Text <Double-Shift-1>	{
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
}
bind Text <<Clear>> {
    catch {%W delete sel.first sel.last}
}
bind Text <<PasteSelection>> {
    if {$tk_strictMotif || ![info exists tk::Priv(mouseMoved)]
	|| !$tk::Priv(mouseMoved)} {
	tk::TextPaste %W %x %y
    }
}
bind Text <Insert> {
    catch {tk::TextInsert %W [::tk::GetSelection %W PRIMARY]}
}
bind Text <KeyPress> {
    tk::TextInsert %W %A







|







252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
}
bind Text <<Clear>> {
    catch {%W delete sel.first sel.last}
}
bind Text <<PasteSelection>> {
    if {$tk_strictMotif || ![info exists tk::Priv(mouseMoved)]
	|| !$tk::Priv(mouseMoved)} {
	tk::TextPasteSelection %W %x %y
    }
}
bind Text <Insert> {
    catch {tk::TextInsert %W [::tk::GetSelection %W PRIMARY]}
}
bind Text <KeyPress> {
    tk::TextInsert %W %A
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
	set last $cur
    }
    $w tag remove sel 0.0 $first
    $w tag add sel $first $last
    $w tag remove sel $last end
}

# ::tk::TextPaste --
# This procedure sets the insertion cursor to the mouse position,
# inserts the selection, and sets the focus to the window.
#
# Arguments:
# w -		The text window.
# x, y - 	Position of the mouse.

proc ::tk::TextPaste {w x y} {
    $w mark set insert [TextClosestGap $w $x $y]
    catch {$w insert insert [::tk::GetSelection $w PRIMARY]}
    catch {
	set oldSeparator [$w cget -autoseparators]
	if {$oldSeparator} {
	    $w configure -autoseparators 0
	    $w edit separator
	}
	$w insert insert [::tk::GetSelection $w PRIMARY]
	if {$oldSeparator} {
	    $w edit separator
	    $w configure -autoseparators 1
	}
    }
    if {[string equal [$w cget -state] "normal"]} {focus $w}
}







|







|

|
<





|







624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641

642
643
644
645
646
647
648
649
650
651
652
653
654
	set last $cur
    }
    $w tag remove sel 0.0 $first
    $w tag add sel $first $last
    $w tag remove sel $last end
}

# ::tk::TextPasteSelection --
# This procedure sets the insertion cursor to the mouse position,
# inserts the selection, and sets the focus to the window.
#
# Arguments:
# w -		The text window.
# x, y - 	Position of the mouse.

proc ::tk::TextPasteSelection {w x y} {
    $w mark set insert [TextClosestGap $w $x $y]
    if {![catch {::tk::GetSelection $w PRIMARY} sel]} {

	set oldSeparator [$w cget -autoseparators]
	if {$oldSeparator} {
	    $w configure -autoseparators 0
	    $w edit separator
	}
	$w insert insert $sel
	if {$oldSeparator} {
	    $w edit separator
	    $w configure -autoseparators 1
	}
    }
    if {[string equal [$w cget -state] "normal"]} {focus $w}
}
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
# point in a text widget.
#
# Arguments:
# w -		Name of a text widget.

proc ::tk_textPaste w {
    global tcl_platform
    catch {
	set oldSeparator [$w cget -autoseparators]
	if { $oldSeparator } {
	    $w configure -autoseparators 0
	    $w edit separator
	}
	if {[string compare $tcl_platform(windowingsystem) "x11"]} {
	    catch { $w delete sel.first sel.last }
	}
	$w insert insert [::tk::GetSelection $w CLIPBOARD]
	if { $oldSeparator } {
	    $w edit separator
	    $w configure -autoseparators 1
	}
    }
}








|








|







995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
# point in a text widget.
#
# Arguments:
# w -		Name of a text widget.

proc ::tk_textPaste w {
    global tcl_platform
    if {![catch {::tk::GetSelection $w CLIPBOARD} sel]} {
	set oldSeparator [$w cget -autoseparators]
	if { $oldSeparator } {
	    $w configure -autoseparators 0
	    $w edit separator
	}
	if {[string compare $tcl_platform(windowingsystem) "x11"]} {
	    catch { $w delete sel.first sel.last }
	}
	$w insert insert $sel
	if { $oldSeparator } {
	    $w edit separator
	    $w configure -autoseparators 1
	}
    }
}

Changes to library/tk.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19





20



















21



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# tk.tcl --
#
# Initialization script normally executed in the interpreter for each
# Tk-based application.  Arranges class bindings for widgets.
#
# RCS: @(#) $Id: tk.tcl,v 1.31.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

# Insist on running with compatible versions of Tcl and Tk.

package require -exact Tk 8.4
package require -exact Tcl 8.4
if { ![interp issafe] } {





    package require msgcat



















    ::msgcat::mcload [file join $::tk_library msgs]



}

# Add Tk's directory to the end of the auto-load search path, if it
# isn't already on the path:

if {[info exists ::auto_path] && [string compare {} $::tk_library] && \
	[lsearch -exact $::auto_path $::tk_library] < 0} {
    lappend ::auto_path $::tk_library
}

# Turn off strict Motif look and feel as a default.

set ::tk_strictMotif 0

# Turn on useinputmethods (X Input Methods) by default.
# We catch this because safe interpreters may not allow the call.

catch {tk useinputmethods 1}

# Create a ::tk namespace

namespace eval ::tk {
}

# ::tk::PlaceWindow --
#   place a toplevel at a particular position
# Arguments:
#   toplevel	name of toplevel window
#   ?placement?	pointer ?center? ; places $w centered on the pointer
#		widget widgetPath ; centers $w over widget_name
#		defaults to placing toplevel in the middle of the screen





|












|
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>



















<
<
<
<
<







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67





68
69
70
71
72
73
74
# tk.tcl --
#
# Initialization script normally executed in the interpreter for each
# Tk-based application.  Arranges class bindings for widgets.
#
# RCS: @(#) $Id: tk.tcl,v 1.31.2.3 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

# Insist on running with compatible versions of Tcl and Tk.

package require -exact Tk 8.4
package require -exact Tcl 8.4

# Create a ::tk namespace
namespace eval ::tk {
    # Set up the msgcat commands
    namespace eval msgcat {
	namespace export mc mcmax        
        if {[interp issafe] || [catch {package require msgcat}]} {
            # The msgcat package is not available.  Supply our own
            # minimal replacement.
            proc mc {src args} {
                return [eval [list format $src] $args]
            }
            proc mcmax {args} {
                set max 0
                foreach string $args {
                    set len [string length $string]
                    if {$len>$max} {
                        set max $len
                    }
                }
                return $max
            }
        } else {
            # Get the commands from the msgcat package that Tk uses.
            namespace import ::msgcat::mc
            namespace import ::msgcat::mcmax
            ::msgcat::mcload [file join $::tk_library msgs]
        }
    }
    namespace import ::tk::msgcat::*
}

# Add Tk's directory to the end of the auto-load search path, if it
# isn't already on the path:

if {[info exists ::auto_path] && [string compare {} $::tk_library] && \
	[lsearch -exact $::auto_path $::tk_library] < 0} {
    lappend ::auto_path $::tk_library
}

# Turn off strict Motif look and feel as a default.

set ::tk_strictMotif 0

# Turn on useinputmethods (X Input Methods) by default.
# We catch this because safe interpreters may not allow the call.

catch {tk useinputmethods 1}






# ::tk::PlaceWindow --
#   place a toplevel at a particular position
# Arguments:
#   toplevel	name of toplevel window
#   ?placement?	pointer ?center? ; places $w centered on the pointer
#		widget widgetPath ; centers $w over widget_name
#		defaults to placing toplevel in the middle of the screen
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
	# PrevWindow event.
	# The info exists is necessary, because tcl_platform(os) doesn't
	# exist in safe interpreters.
	if {[info exists tcl_platform(os)]} {
	    switch $tcl_platform(os) {
		"IRIX"  -
		"Linux" { event add <<PrevWindow>> <ISO_Left_Tab> }
                "HP-UX" {
                    # This seems to be correct on *some* HP systems.
                    catch { event add <<PrevWindow>> <hpBackTab> }
                }
	    }
	}
	trace variable ::tk_strictMotif w ::tk::EventMotifBindings
	set ::tk_strictMotif $::tk_strictMotif
    }
    "win32" {
	event add <<Cut>> <Control-Key-x> <Shift-Key-Delete>







|
|
|
|







344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
	# PrevWindow event.
	# The info exists is necessary, because tcl_platform(os) doesn't
	# exist in safe interpreters.
	if {[info exists tcl_platform(os)]} {
	    switch $tcl_platform(os) {
		"IRIX"  -
		"Linux" { event add <<PrevWindow>> <ISO_Left_Tab> }
		"HP-UX" {
		    # This seems to be correct on *some* HP systems.
		    catch { event add <<PrevWindow>> <hpBackTab> }
		}
	    }
	}
	trace variable ::tk_strictMotif w ::tk::EventMotifBindings
	set ::tk_strictMotif $::tk_strictMotif
    }
    "win32" {
	event add <<Cut>> <Control-Key-x> <Shift-Key-Delete>
356
357
358
359
360
361
362
363
364
365
366
367
368




369






370





371
372

373
374
375
376
377
378
379
380
381
382
383
384
385
	event add <<Paste>> <Control-Key-v> <Key-F4>
	event add <<PasteSelection>> <ButtonRelease-2>
	event add <<Clear>> <Clear>
	event add <<Undo>> <Control-Key-z> <Key-F1>
	event add <<Redo>> <Control-Key-Z>
    }
}

# ----------------------------------------------------------------------
# Read in files that define all of the class bindings.
# ----------------------------------------------------------------------
if {[string compare $tcl_platform(platform) "macintosh"] && \
	[string compare {} $tk_library]} {




    source [file join $::tk_library button.tcl]






    source [file join $::tk_library entry.tcl]





    source [file join $::tk_library listbox.tcl]
    source [file join $::tk_library menu.tcl]

    source [file join $::tk_library scale.tcl]
    source [file join $::tk_library scrlbar.tcl]
    source [file join $::tk_library spinbox.tcl]
    source [file join $::tk_library text.tcl]
}

# ----------------------------------------------------------------------
# Default bindings for keyboard traversal.
# ----------------------------------------------------------------------

event add <<PrevWindow>> <Shift-Tab>
bind all <Tab> {tk::TabToWindow [tk_focusNext %W]}
bind all <<PrevWindow>> {tk::TabToWindow [tk_focusPrev %W]}







<



|
|
>
>
>
>
|
>
>
>
>
>
>
|
>
>
>
>
>
|
|
>
|
|
|
|
|
|







378
379
380
381
382
383
384

385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
	event add <<Paste>> <Control-Key-v> <Key-F4>
	event add <<PasteSelection>> <ButtonRelease-2>
	event add <<Clear>> <Clear>
	event add <<Undo>> <Control-Key-z> <Key-F1>
	event add <<Redo>> <Control-Key-Z>
    }
}

# ----------------------------------------------------------------------
# Read in files that define all of the class bindings.
# ----------------------------------------------------------------------

if {$::tk_library ne ""} {
    if {[string equal $tcl_platform(platform) "macintosh"]} {
	proc ::tk::SourceLibFile {file} {
	    if {[catch {
		namespace eval :: \
			[list source [file join $::tk_library $file.tcl]]
	    }]} {
		namespace eval :: [list source -rsrc $file]
	    }
	}
    } else {
	proc ::tk::SourceLibFile {file} {
	    namespace eval :: [list source [file join $::tk_library $file.tcl]]
	}	
    }
    namespace eval ::tk {
	SourceLibFile button
	SourceLibFile entry
	SourceLibFile listbox
	SourceLibFile menu
	SourceLibFile panedwindow
	SourceLibFile scale
	SourceLibFile scrlbar
	SourceLibFile spinbox
	SourceLibFile text
    }
}
# ----------------------------------------------------------------------
# Default bindings for keyboard traversal.
# ----------------------------------------------------------------------

event add <<PrevWindow>> <Shift-Tab>
bind all <Tab> {tk::TabToWindow [tk_focusNext %W]}
bind all <<PrevWindow>> {tk::TabToWindow [tk_focusPrev %W]}
Changes to library/tkfbox.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# tkfbox.tcl --
#
#	Implements the "TK" standard file selection dialog box. This
#	dialog box is used on the Unix platforms whenever the tk_strictMotif
#	flag is not set.
#
#	The "TK" standard file selection dialog box is similar to the
#	file selection dialog box on Win95(TM). The user can navigate
#	the directories by clicking on the folder icons or by
#	selecting the "Directory" option menu. The user can select
#	files by clicking on the file icons or by entering a filename
#	in the "Filename:" entry.
#
# RCS: @(#) $Id: tkfbox.tcl,v 1.31.2.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# tkfbox.tcl --
#
#	Implements the "TK" standard file selection dialog box. This
#	dialog box is used on the Unix platforms whenever the tk_strictMotif
#	flag is not set.
#
#	The "TK" standard file selection dialog box is similar to the
#	file selection dialog box on Win95(TM). The user can navigate
#	the directories by clicking on the folder icons or by
#	selecting the "Directory" option menu. The user can select
#	files by clicking on the file icons or by entering a filename
#	in the "Filename:" entry.
#
# RCS: @(#) $Id: tkfbox.tcl,v 1.31.2.2 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#

762
763
764
765
766
767
768
769


770
771
772
773
774
775
776
#----------------------------------------------------------------------
#
#		      F I L E   D I A L O G
#
#----------------------------------------------------------------------

namespace eval ::tk::dialog {}
namespace eval ::tk::dialog::file {}



# ::tk::dialog::file:: --
#
#	Implements the TK file selection dialog. This dialog is used when
#	the tk_strictMotif flag is set to false. This procedure shouldn't
#	be called directly. Call tk_getOpenFile or tk_getSaveFile instead.
#







|
>
>







762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
#----------------------------------------------------------------------
#
#		      F I L E   D I A L O G
#
#----------------------------------------------------------------------

namespace eval ::tk::dialog {}
namespace eval ::tk::dialog::file {
    namespace import ::tk::msgcat::*
}

# ::tk::dialog::file:: --
#
#	Implements the TK file selection dialog. This dialog is used when
#	the tk_strictMotif flag is set to false. This procedure shouldn't
#	be called directly. Call tk_getOpenFile or tk_getSaveFile instead.
#
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937

    # 3: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::file::$dataName $specs "" $argList

    if {$data(-title) == ""} {
	if {[string equal $type "open"]} {
	    set data(-title) "[::msgcat::mc "Open"]"
	} else {
	    set data(-title) "[::msgcat::mc "Save As"]"
	}
    }

    # 4: set the default directory and selection according to the -initial
    #    settings
    #
    if {$data(-initialdir) != ""} {







|

|







923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939

    # 3: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::file::$dataName $specs "" $argList

    if {$data(-title) == ""} {
	if {[string equal $type "open"]} {
	    set data(-title) "[mc "Open"]"
	} else {
	    set data(-title) "[mc "Save As"]"
	}
    }

    # 4: set the default directory and selection according to the -initial
    #    settings
    #
    if {$data(-initialdir) != ""} {
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
    global tk_library

    toplevel $w -class $class

    # f1: the frame with the directory option menu
    #
    set f1 [frame $w.f1]
    label $f1.lab -text "[::msgcat::mc "Directory:"]" -under 0
    set data(dirMenuBtn) $f1.menu
    set data(dirMenu) [tk_optionMenu $f1.menu [format %s(selectPath) ::tk::dialog::file::$dataName] ""]
    set data(upBtn) [button $f1.up]
    if {![info exists Priv(updirImage)]} {
	set Priv(updirImage) [image create bitmap -data {
#define updir_width 28
#define updir_height 16







|







975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
    global tk_library

    toplevel $w -class $class

    # f1: the frame with the directory option menu
    #
    set f1 [frame $w.f1]
    label $f1.lab -text "[mc "Directory:"]" -under 0
    set data(dirMenuBtn) $f1.menu
    set data(dirMenu) [tk_optionMenu $f1.menu [format %s(selectPath) ::tk::dialog::file::$dataName] ""]
    set data(upBtn) [button $f1.up]
    if {![info exists Priv(updirImage)]} {
	set Priv(updirImage) [image create bitmap -data {
#define updir_width 28
#define updir_height 16
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
    pack $f1.lab -side left -padx 4 -fill both
    pack $f1.menu -expand yes -fill both -padx 4

    # data(icons): the IconList that list the files and directories.
    #
    if { [string equal $class TkFDialog] } {
	if { $data(-multiple) } {
	    set fNameCaption "[::msgcat::mc {File names:}]"
	} else {
	    set fNameCaption "[::msgcat::mc {File name:}]"
	}
	set fTypeCaption [::msgcat::mc "Files of type:"]
	set fCaptionWidth [::msgcat::mcmax $fNameCaption $fTypeCaption]
	set fCaptionWidth [expr {$fCaptionWidth<14?14:$fCaptionWidth}]
	set fNameUnder 5
	set iconListCommand [list ::tk::dialog::file::OkCmd $w]
    } else {
	set fNameCaption [::msgcat::mc "Selection:"]
	set fNameUnder 0
	set fCaptionWidth [string length $fNameCaption]
	set iconListCommand [list ::tk::dialog::file::chooseDir::DblClick $w]
    }
    set data(icons) [::tk::IconList $w.icons \
	    -command	$iconListCommand \
	    -multiple	$data(-multiple)]







|

|

|
|




|







1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
    pack $f1.lab -side left -padx 4 -fill both
    pack $f1.menu -expand yes -fill both -padx 4

    # data(icons): the IconList that list the files and directories.
    #
    if { [string equal $class TkFDialog] } {
	if { $data(-multiple) } {
	    set fNameCaption "[mc {File names:}]"
	} else {
	    set fNameCaption "[mc {File name:}]"
	}
	set fTypeCaption [mc "Files of type:"]
	set fCaptionWidth [mcmax $fNameCaption $fTypeCaption]
	set fCaptionWidth [expr {$fCaptionWidth<14?14:$fCaptionWidth}]
	set fNameUnder 5
	set iconListCommand [list ::tk::dialog::file::OkCmd $w]
    } else {
	set fNameCaption [mc "Selection:"]
	set fNameUnder 0
	set fCaptionWidth [string length $fNameCaption]
	set iconListCommand [list ::tk::dialog::file::chooseDir::DblClick $w]
    }
    set data(icons) [::tk::IconList $w.icons \
	    -command	$iconListCommand \
	    -multiple	$data(-multiple)]
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
	set data(typeMenu) [menu $data(typeMenuBtn).m -tearoff 0]
	$data(typeMenuBtn) config -takefocus 1 -highlightthickness 2 \
		-relief raised -bd 2 -anchor w
    }

    # the okBtn is created after the typeMenu so that the keyboard traversal
    # is in the right order
	set maxWidth [::msgcat::mcmax OK Cancel]
	set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
    set data(okBtn)     [button $f2.ok     -text "[::msgcat::mc "OK"]" \
	-under 0 -width $maxWidth -default active -pady 3]
    set data(cancelBtn) [button $f3.cancel -text "[::msgcat::mc "Cancel"]" \
	-under 0 -width $maxWidth -default normal -pady 3]

    # pack the widgets in f2 and f3
    #
    pack $data(okBtn) -side right -padx 4 -anchor e
    pack $f2.lab -side left -padx 4
    pack $f2.ent -expand yes -fill x -padx 2 -pady 0







|

|

|







1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
	set data(typeMenu) [menu $data(typeMenuBtn).m -tearoff 0]
	$data(typeMenuBtn) config -takefocus 1 -highlightthickness 2 \
		-relief raised -bd 2 -anchor w
    }

    # the okBtn is created after the typeMenu so that the keyboard traversal
    # is in the right order
	set maxWidth [mcmax OK Cancel]
	set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
    set data(okBtn)     [button $f2.ok     -text "[mc "OK"]" \
	-under 0 -width $maxWidth -default active -pady 3]
    set data(cancelBtn) [button $f3.cancel -text "[mc "Cancel"]" \
	-under 0 -width $maxWidth -default normal -pady 3]

    # pack the widgets in f2 and f3
    #
    pack $data(okBtn) -side right -padx 4 -anchor e
    pack $f2.lab -side left -padx 4
    pack $f2.ent -expand yes -fill x -padx 2 -pady 0
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
# Results:
#	None.

proc ::tk::dialog::file::SetSelectMode {w multi} {
    set dataName __tk_filedialog
    upvar ::tk::dialog::file::$dataName data
    if { $multi } {
	set fNameCaption "[::msgcat::mc {File names:}]"
    } else {
	set fNameCaption "[::msgcat::mc {File name:}]"
    }
    set fNameUnder 5
    set iconListCommand [list ::tk::dialog::file::OkCmd $w]
    $w.f2.lab configure -text $fNameCaption -under $fNameUnder
    ::tk::IconList_Config $data(icons) \
	    [list -multiple $multi -command $iconListCommand]
    return







|

|







1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
# Results:
#	None.

proc ::tk::dialog::file::SetSelectMode {w multi} {
    set dataName __tk_filedialog
    upvar ::tk::dialog::file::$dataName data
    if { $multi } {
	set fNameCaption "[mc {File names:}]"
    } else {
	set fNameCaption "[mc {File name:}]"
    }
    set fNameUnder 5
    set iconListCommand [list ::tk::dialog::file::OkCmd $w]
    $w.f2.lab configure -text $fNameCaption -under $fNameUnder
    ::tk::IconList_Config $data(icons) \
	    [list -multiple $multi -command $iconListCommand]
    return
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
	cd $data(selectPath)
    }]} {
	# We cannot change directory to $data(selectPath). $data(selectPath)
	# should have been checked before ::tk::dialog::file::Update is called, so
	# we normally won't come to here. Anyways, give an error and abort
	# action.
	tk_messageBox -type ok -parent $w -message \
	    "[::msgcat::mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $data(selectPath)]"\
	    -icon warning
	cd $appPWD
	return
    }

    # Turn on the busy cursor. BUG?? We haven't disabled X events, though,
    # so the user may still click and cause havoc ...







|







1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
	cd $data(selectPath)
    }]} {
	# We cannot change directory to $data(selectPath). $data(selectPath)
	# should have been checked before ::tk::dialog::file::Update is called, so
	# we normally won't come to here. Anyways, give an error and abort
	# action.
	tk_messageBox -type ok -parent $w -message \
	    "[mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $data(selectPath)]"\
	    -icon warning
	cd $appPWD
	return
    }

    # Turn on the busy cursor. BUG?? We haven't disabled X events, though,
    # so the user may still click and cause havoc ...
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
    #
    cd $appPWD

    if { [string equal $class TkFDialog] } {
	# Restore the Open/Save Button if this is a File Dialog
	#
	if {[string equal $data(type) open]} {
	    $data(okBtn) config -text "[::msgcat::mc "Open"]"
		set maxWidth [string length [::msgcat::mc "Open"]]
		if {$maxWidth>[$data(okBtn) cget -width]} {
			$data(okBtn) config -width $maxWidth
			$data(cancelBtn) config -width $maxWidth
		}
	} else {
	    $data(okBtn) config -text "[::msgcat::mc "Save"]"
		set maxWidth [string length [::msgcat::mc "Save"]]
		if {$maxWidth>[$data(okBtn) cget -width]} {
			$data(okBtn) config -width $maxWidth
			$data(cancelBtn) config -width $maxWidth
		}
	}
    }








|
|





|
|







1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
    #
    cd $appPWD

    if { [string equal $class TkFDialog] } {
	# Restore the Open/Save Button if this is a File Dialog
	#
	if {[string equal $data(type) open]} {
	    $data(okBtn) config -text "[mc "Open"]"
		set maxWidth [string length [mc "Open"]]
		if {$maxWidth>[$data(okBtn) cget -width]} {
			$data(okBtn) config -width $maxWidth
			$data(cancelBtn) config -width $maxWidth
		}
	} else {
	    $data(okBtn) config -text "[mc "Save"]"
		set maxWidth [string length [mc "Save"]]
		if {$maxWidth>[$data(okBtn) cget -width]} {
			$data(okBtn) config -width $maxWidth
			$data(cancelBtn) config -width $maxWidth
		}
	}
    }

1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
    } else {
	$data(ent) selection clear
    }

    if { [string equal [winfo class $w] TkFDialog] } {
	# If this is a File Dialog, make sure the buttons are labeled right.
	if {[string equal $data(type) open]} {
	    $data(okBtn) config -text "[::msgcat::mc "Open"]"
	} else {
	    $data(okBtn) config -text "[::msgcat::mc "Save"]"
	}
    }
}

proc ::tk::dialog::file::EntFocusOut {w} {
    upvar ::tk::dialog::file::[winfo name $w] data








|

|







1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
    } else {
	$data(ent) selection clear
    }

    if { [string equal [winfo class $w] TkFDialog] } {
	# If this is a File Dialog, make sure the buttons are labeled right.
	if {[string equal $data(type) open]} {
	    $data(okBtn) config -text "[mc "Open"]"
	} else {
	    $data(okBtn) config -text "[mc "Save"]"
	}
    }
}

proc ::tk::dialog::file::EntFocusOut {w} {
    upvar ::tk::dialog::file::[winfo name $w] data

1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
	PATTERN {
	    set data(selectPath) $path
	    set data(filter) $file
	}
	FILE {
	    if {[string equal $data(type) open]} {
		tk_messageBox -icon warning -type ok -parent $w \
		    -message "[::msgcat::mc "File \"%1\$s\"  does not exist." [file join $path $file]]"
		$data(ent) selection range 0 end
		$data(ent) icursor end
	    } else {
		::tk::dialog::file::SetPathSilently $w $path
		if {$data(-multiple)} {
		    lappend data(selectFile) $file
		} else {
		    set data(selectFile) $file
		}
		::tk::dialog::file::Done $w
	    }
	}
	PATH {
	    tk_messageBox -icon warning -type ok -parent $w \
		-message "[::msgcat::mc "Directory \"%1\$s\" does not exist." $path]"
	    $data(ent) selection range 0 end
	    $data(ent) icursor end
	}
	CHDIR {
	    tk_messageBox -type ok -parent $w -message \
	       "[::msgcat::mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $path]"\
		-icon warning
	    $data(ent) selection range 0 end
	    $data(ent) icursor end
	}
	ERROR {
	    tk_messageBox -type ok -parent $w -message \
	       "[::msgcat::mc "Invalid file name \"%1\$s\"." $path]"\
		-icon warning
	    $data(ent) selection range 0 end
	    $data(ent) icursor end
	}
    }
}








|














|





|






|







1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
	PATTERN {
	    set data(selectPath) $path
	    set data(filter) $file
	}
	FILE {
	    if {[string equal $data(type) open]} {
		tk_messageBox -icon warning -type ok -parent $w \
		    -message "[mc "File \"%1\$s\"  does not exist." [file join $path $file]]"
		$data(ent) selection range 0 end
		$data(ent) icursor end
	    } else {
		::tk::dialog::file::SetPathSilently $w $path
		if {$data(-multiple)} {
		    lappend data(selectFile) $file
		} else {
		    set data(selectFile) $file
		}
		::tk::dialog::file::Done $w
	    }
	}
	PATH {
	    tk_messageBox -icon warning -type ok -parent $w \
		-message "[mc "Directory \"%1\$s\" does not exist." $path]"
	    $data(ent) selection range 0 end
	    $data(ent) icursor end
	}
	CHDIR {
	    tk_messageBox -type ok -parent $w -message \
	       "[mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $path]"\
		-icon warning
	    $data(ent) selection range 0 end
	    $data(ent) icursor end
	}
	ERROR {
	    tk_messageBox -type ok -parent $w -message \
	       "[mc "Invalid file name \"%1\$s\"." $path]"\
		-icon warning
	    $data(ent) selection range 0 end
	    $data(ent) icursor end
	}
    }
}

1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
    }
    if {!$isDir} {
	$data(ent) delete 0 end
	$data(ent) insert 0 $text

	if { [string equal [winfo class $w] TkFDialog] } {
	    if {[string equal $data(type) open]} {
		$data(okBtn) config -text "[::msgcat::mc "Open"]"
	    } else {
		$data(okBtn) config -text "[::msgcat::mc "Save"]"
	    }
	}
    } else {
	if { [string equal [winfo class $w] TkFDialog] } {
	    $data(okBtn) config -text "[::msgcat::mc "Open"]"
	}
    }
}

# Gets called when user invokes the IconList widget (double-click, 
# Return key, etc)
#







|

|




|







1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
    }
    if {!$isDir} {
	$data(ent) delete 0 end
	$data(ent) insert 0 $text

	if { [string equal [winfo class $w] TkFDialog] } {
	    if {[string equal $data(type) open]} {
		$data(okBtn) config -text "[mc "Open"]"
	    } else {
		$data(okBtn) config -text "[mc "Save"]"
	    }
	}
    } else {
	if { [string equal [winfo class $w] TkFDialog] } {
	    $data(okBtn) config -text "[mc "Open"]"
	}
    }
}

# Gets called when user invokes the IconList widget (double-click, 
# Return key, etc)
#
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
	    [lindex $filenames 0]]
    
    set class [winfo class $w]
    if {[string equal $class TkChooseDir] || [file isdirectory $file]} {
	set appPWD [pwd]
	if {[catch {cd $file}]} {
	    tk_messageBox -type ok -parent $w -message \
	       "[::msgcat::mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $file]"\
		-icon warning
	} else {
	    cd $appPWD
	    set data(selectPath) $file
	}
    } else {
	if {$data(-multiple)} {







|







1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
	    [lindex $filenames 0]]
    
    set class [winfo class $w]
    if {[string equal $class TkChooseDir] || [file isdirectory $file]} {
	set appPWD [pwd]
	if {[catch {cd $file}]} {
	    tk_messageBox -type ok -parent $w -message \
	       "[mc "Cannot change to the directory \"%1\$s\".\nPermission denied." $file]"\
		-icon warning
	} else {
	    cd $appPWD
	    set data(selectPath) $file
	}
    } else {
	if {$data(-multiple)} {
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
	set Priv(selectFile)     $data(selectFile)
	set Priv(selectPath)     $data(selectPath)

	if {[string equal $data(type) save]} {
	    if {[file exists $selectFilePath]} {
	    set reply [tk_messageBox -icon warning -type yesno\
		    -parent $w -message \
			"[::msgcat::mc "File \"%1\$s\" already exists.\nDo you want to overwrite it?" $selectFilePath]"]
	    if {[string equal $reply "no"]} {
		return
		}
	    }
	}
    }
    set Priv(selectFilePath) $selectFilePath
}







|








1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
	set Priv(selectFile)     $data(selectFile)
	set Priv(selectPath)     $data(selectPath)

	if {[string equal $data(type) save]} {
	    if {[file exists $selectFilePath]} {
	    set reply [tk_messageBox -icon warning -type yesno\
		    -parent $w -message \
			"[mc "File \"%1\$s\" already exists.\nDo you want to overwrite it?" $selectFilePath]"]
	    if {[string equal $reply "no"]} {
		return
		}
	    }
	}
    }
    set Priv(selectFilePath) $selectFilePath
}
Changes to library/xmfbox.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# xmfbox.tcl --
#
#	Implements the "Motif" style file selection dialog for the
#	Unix platform. This implementation is used only if the
#	"::tk_strictMotif" flag is set.
#
# RCS: @(#) $Id: xmfbox.tcl,v 1.17.2.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Scriptics Corporation
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
# xmfbox.tcl --
#
#	Implements the "Motif" style file selection dialog for the
#	Unix platform. This implementation is used only if the
#	"::tk_strictMotif" flag is set.
#
# RCS: @(#) $Id: xmfbox.tcl,v 1.17.2.2 2002/06/10 05:38:24 wolfsuit Exp $
#
# Copyright (c) 1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Scriptics Corporation
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
    # 3: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::file::$dataName $specs "" $argList

    if {[string equal $data(-title) ""]} {
	if {[string equal $type "open"]} {
	    if {$data(-multiple) != 0} {
		set data(-title) "[::msgcat::mc {Open Multiple Files}]"
	    } else {
	    set data(-title) [::msgcat::mc "Open"]
	    }
	} else {
	    set data(-title) [::msgcat::mc "Save As"]
	}
    }

    # 4: set the default directory and selection according to the -initial
    #    settings
    #
    if {[string compare $data(-initialdir) ""]} {







|

|


|







233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
    # 3: parse the arguments
    #
    tclParseConfigSpec ::tk::dialog::file::$dataName $specs "" $argList

    if {[string equal $data(-title) ""]} {
	if {[string equal $type "open"]} {
	    if {$data(-multiple) != 0} {
		set data(-title) "[mc {Open Multiple Files}]"
	    } else {
	    set data(-title) [mc "Open"]
	    }
	} else {
	    set data(-title) [mc "Save As"]
	}
    }

    # 4: set the default directory and selection according to the -initial
    #    settings
    #
    if {[string compare $data(-initialdir) ""]} {
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
	-sticky news
    grid rowconfig $f2 0    -minsize 0   -weight 1
    grid columnconfig $f2 0 -minsize 0   -weight 1
    grid columnconfig $f2 1 -minsize 150 -weight 2

    # The Filter box
    #
    label $f1.lab -text [::msgcat::mc "Filter:"] -under 3 -anchor w
    entry $f1.ent
    pack $f1.lab -side top -fill x -padx 6 -pady 4
    pack $f1.ent -side top -fill x -padx 4 -pady 0
    set data(fEnt) $f1.ent

    # The file and directory lists
    #
    set data(dList) [MotifFDialog_MakeSList $w $f2a \
	    [::msgcat::mc "Directory:"] 0 DList]
    set data(fList) [MotifFDialog_MakeSList $w $f2b \
	    [::msgcat::mc "Files:"]     2 FList]

    # The Selection box
    #
    label $f3.lab -text [::msgcat::mc "Selection:"] -under 0 -anchor w
    entry $f3.ent
    pack $f3.lab -side top -fill x -padx 6 -pady 0
    pack $f3.ent -side top -fill x -padx 4 -pady 4
    set data(sEnt) $f3.ent

    # The buttons
    #
    set maxWidth [::msgcat::mcmax OK Filter Cancel]
    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
    set data(okBtn) [button $bot.ok -text [::msgcat::mc "OK"] \
	    -width $maxWidth -under 0 \
	    -command [list tk::MotifFDialog_OkCmd $w]]
    set data(filterBtn) [button $bot.filter -text [::msgcat::mc "Filter"] \
	    -width $maxWidth -under 0 \
	    -command [list tk::MotifFDialog_FilterCmd $w]]
    set data(cancelBtn) [button $bot.cancel -text [::msgcat::mc "Cancel"] \
	    -width $maxWidth -under 0 \
	    -command [list tk::MotifFDialog_CancelCmd $w]]

    pack $bot.ok $bot.filter $bot.cancel -padx 10 -pady 10 -expand yes \
	-side left

    # Create the bindings:







|








|

|



|







|

|


|


|







319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
	-sticky news
    grid rowconfig $f2 0    -minsize 0   -weight 1
    grid columnconfig $f2 0 -minsize 0   -weight 1
    grid columnconfig $f2 1 -minsize 150 -weight 2

    # The Filter box
    #
    label $f1.lab -text [mc "Filter:"] -under 3 -anchor w
    entry $f1.ent
    pack $f1.lab -side top -fill x -padx 6 -pady 4
    pack $f1.ent -side top -fill x -padx 4 -pady 0
    set data(fEnt) $f1.ent

    # The file and directory lists
    #
    set data(dList) [MotifFDialog_MakeSList $w $f2a \
	    [mc "Directory:"] 0 DList]
    set data(fList) [MotifFDialog_MakeSList $w $f2b \
	    [mc "Files:"]     2 FList]

    # The Selection box
    #
    label $f3.lab -text [mc "Selection:"] -under 0 -anchor w
    entry $f3.ent
    pack $f3.lab -side top -fill x -padx 6 -pady 0
    pack $f3.ent -side top -fill x -padx 4 -pady 4
    set data(sEnt) $f3.ent

    # The buttons
    #
    set maxWidth [mcmax OK Filter Cancel]
    set maxWidth [expr {$maxWidth<6?6:$maxWidth}]
    set data(okBtn) [button $bot.ok -text [mc "OK"] \
	    -width $maxWidth -under 0 \
	    -command [list tk::MotifFDialog_OkCmd $w]]
    set data(filterBtn) [button $bot.filter -text [mc "Filter"] \
	    -width $maxWidth -under 0 \
	    -command [list tk::MotifFDialog_FilterCmd $w]]
    set data(cancelBtn) [button $bot.cancel -text [mc "Cancel"] \
	    -width $maxWidth -under 0 \
	    -command [list tk::MotifFDialog_CancelCmd $w]]

    pack $bot.ok $bot.filter $bot.cancel -padx 10 -pady 10 -expand yes \
	-side left

    # Create the bindings:
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839

    set newFileList ""
    foreach item $selectFilePath {
	if {[string compare [file pathtype $item] "absolute"]} {
	    set item [file join $data(selectPath) $item]
	} elseif {![file exists [file dirname $item]]} {
	    tk_messageBox -icon warning -type ok \
	    -message [::msgcat::mc {Directory "%1$s" does not exist.} \
		[file dirname $item]]
	    return
	}

	if {![file exists $item]} {
	    if {[string equal $data(type) open]} {
		tk_messageBox -icon warning -type ok \
		    -message [::msgcat::mc {File "$item" does not exist.} \
			$item]
		return
	    }
	} else {
	    if {[string equal $data(type) save]} {
	    set message [format %s%s \
		[::msgcat::mc {File "%1$s" already exists.\n\n} \
		    $selectFilePath ] \
		[::msgcat::mc {Replace existing file?}]]
		set answer [tk_messageBox -icon warning -type yesno \
				-message $message]
		if {[string equal $answer "no"]} {
		    return
		}
	    }
	}







|







|






|

|







808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839

    set newFileList ""
    foreach item $selectFilePath {
	if {[string compare [file pathtype $item] "absolute"]} {
	    set item [file join $data(selectPath) $item]
	} elseif {![file exists [file dirname $item]]} {
	    tk_messageBox -icon warning -type ok \
	    -message [mc {Directory "%1$s" does not exist.} \
		[file dirname $item]]
	    return
	}

	if {![file exists $item]} {
	    if {[string equal $data(type) open]} {
		tk_messageBox -icon warning -type ok \
		    -message [mc {File "$item" does not exist.} \
			$item]
		return
	    }
	} else {
	    if {[string equal $data(type) save]} {
	    set message [format %s%s \
		[mc {File "%1$s" already exists.\n\n} \
		    $selectFilePath ] \
		[mc {Replace existing file?}]]
		set answer [tk_messageBox -icon warning -type yesno \
				-message $message]
		if {[string equal $answer "no"]} {
		    return
		}
	    }
	}
Changes to mac/README.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Tk 8.4 for Macintosh

Originally by Ray Johnson while at Sun Microsystems Labs
with major help from Jim Ingham while at Cygnus Solutions

RCS: @(#) $Id: README,v 1.16 2001/07/05 01:28:34 uid38172 Exp $

1. Introduction
---------------

This is the README file for the Macintosh version of the Tk
extension for the Tcl scripting language.  The file consists of
information specific to the Macintosh version of Tcl and Tk.  For more
general information please read the README file in the main Tk
directory.

3. Mac specific features
------------------------

There are several features or enhancements in Tk that are unique to 
the Macintosh version of Tk.  The list of these features is
maintained at
	http://www.purl.org/tcl/home/software/mac/features.html

4. The Distribution
-------------------

Macintosh Tk is distributed in three different forms.  This should
make it easier to only download what you need.  Replace <version>
with the current version of Tk.  The packages are as follows:





|
















|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Tk 8.4 for Macintosh

Originally by Ray Johnson while at Sun Microsystems Labs
with major help from Jim Ingham while at Cygnus Solutions

RCS: @(#) $Id: README,v 1.16.2.1 2002/06/10 05:38:24 wolfsuit Exp $

1. Introduction
---------------

This is the README file for the Macintosh version of the Tk
extension for the Tcl scripting language.  The file consists of
information specific to the Macintosh version of Tcl and Tk.  For more
general information please read the README file in the main Tk
directory.

3. Mac specific features
------------------------

There are several features or enhancements in Tk that are unique to 
the Macintosh version of Tk.  The list of these features is
maintained at
	http://www.tcl.tk/software/mac/features.html

4. The Distribution
-------------------

Macintosh Tk is distributed in three different forms.  This should
make it easier to only download what you need.  Replace <version>
with the current version of Tk.  The packages are as follows:
Changes to mac/tkMacAppInit.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
/* 
 * tkMacAppInit.c --
 *
 *	Provides a version of the Tcl_AppInit procedure for the example shell.
 *
 * Copyright (c) 1993-1994 Lockheed Missle & Space Company, AI Center
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacAppInit.c,v 1.12.8.1 2002/02/05 02:25:16 wolfsuit Exp $
 */

#include <Gestalt.h>
#include <ToolUtils.h>
#include <Fonts.h>
#include <Dialogs.h>
#include <SegLoad.h>
#include <Traps.h>
#include <Appearance.h>

#include "tk.h"
#include "tkInt.h"
#include "tkMacInt.h"
#include "tclInt.h"
#include "tclMac.h"


#ifdef TK_TEST
extern int		Tktest_Init _ANSI_ARGS_((Tcl_Interp *interp));
#endif /* TK_TEST */

#ifdef TCL_TEST
extern int		Procbodytest_Init _ANSI_ARGS_((Tcl_Interp *interp));











|















>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* 
 * tkMacAppInit.c --
 *
 *	Provides a version of the Tcl_AppInit procedure for the example shell.
 *
 * Copyright (c) 1993-1994 Lockheed Missle & Space Company, AI Center
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacAppInit.c,v 1.12.8.2 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include <Gestalt.h>
#include <ToolUtils.h>
#include <Fonts.h>
#include <Dialogs.h>
#include <SegLoad.h>
#include <Traps.h>
#include <Appearance.h>

#include "tk.h"
#include "tkInt.h"
#include "tkMacInt.h"
#include "tclInt.h"
#include "tclMac.h"
#include "tclMacInt.h"

#ifdef TK_TEST
extern int		Tktest_Init _ANSI_ARGS_((Tcl_Interp *interp));
#endif /* TK_TEST */

#ifdef TCL_TEST
extern int		Procbodytest_Init _ANSI_ARGS_((Tcl_Interp *interp));
45
46
47
48
49
50
51



52
53
54
55
56
57
58
59




60
61
62
63
64
65
66
 * Prototypes for functions the ANSI library needs to link against.
 */
short			InstallConsole _ANSI_ARGS_((short fd));
void			RemoveConsole _ANSI_ARGS_((void));
long			WriteCharsToConsole _ANSI_ARGS_((char *buff, long n));
long			ReadCharsFromConsole _ANSI_ARGS_((char *buff, long n));
extern char *		__ttyname _ANSI_ARGS_((long fildes));



short			SIOUXHandleOneEvent _ANSI_ARGS_((EventRecord *event));

/*
 * Forward declarations for procedures defined later in this file:
 */

static int		MacintoshInit _ANSI_ARGS_((void));
static int		SetupMainInterp _ANSI_ARGS_((Tcl_Interp *interp));





/*
 *----------------------------------------------------------------------
 *
 * main --
 *
 *	Main program for Wish.







>
>
>








>
>
>
>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 * Prototypes for functions the ANSI library needs to link against.
 */
short			InstallConsole _ANSI_ARGS_((short fd));
void			RemoveConsole _ANSI_ARGS_((void));
long			WriteCharsToConsole _ANSI_ARGS_((char *buff, long n));
long			ReadCharsFromConsole _ANSI_ARGS_((char *buff, long n));
extern char *		__ttyname _ANSI_ARGS_((long fildes));
int				kbhit _ANSI_ARGS_((void));
int				getch _ANSI_ARGS_((void));
void			clrscr _ANSI_ARGS_((void));
short			SIOUXHandleOneEvent _ANSI_ARGS_((EventRecord *event));

/*
 * Forward declarations for procedures defined later in this file:
 */

static int		MacintoshInit _ANSI_ARGS_((void));
static int		SetupMainInterp _ANSI_ARGS_((Tcl_Interp *interp));
static void		SetupSIOUX _ANSI_ARGS_((void));

static int inMacExit = 0;
static pascal void NoMoreOutput() { inMacExit = 1; }

/*
 *----------------------------------------------------------------------
 *
 * main --
 *
 *	Main program for Wish.
315
316
317
318
319
320
321


322
323
324
325
326
327
328
    TkMacInitMenus(interp);

    if (strcmp(Tcl_GetVar(interp, "tcl_interactive", TCL_GLOBAL_ONLY), "1")
	    == 0) {
	if (Tk_CreateConsoleWindow(interp) == TCL_ERROR) {
	    goto error;
	}


    }

    /*
     * Attach the global interpreter to tk's expected global console
     */

    gStdoutInterp = interp;







>
>







323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
    TkMacInitMenus(interp);

    if (strcmp(Tcl_GetVar(interp, "tcl_interactive", TCL_GLOBAL_ONLY), "1")
	    == 0) {
	if (Tk_CreateConsoleWindow(interp) == TCL_ERROR) {
	    goto error;
	}
	SetupSIOUX();
	TclMacInstallExitToShellPatch(NoMoreOutput);
    }

    /*
     * Attach the global interpreter to tk's expected global console
     */

    gStdoutInterp = interp;
364
365
366
367
368
369
370



371

372



373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391















392
393
394
395
396
397














RemoveConsole(void)
{
}

long 
WriteCharsToConsole(char *buffer, long n)
{



    TkConsolePrint(gStdoutInterp, TCL_STDOUT, buffer, n);

    return n;



}

long 
ReadCharsFromConsole(char *buffer, long n)
{
    return 0;
}

extern char *
__ttyname(long fildes)
{
    static char *__devicename = "null device";

    if (fildes >= 0 && fildes <= 2) {
	return (__devicename);
    }
    
    return (0L);
}
















short
SIOUXHandleOneEvent(EventRecord *event)
{
    return 0;
}





















>
>
>
|
>
|
>
>
>



















>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






>
>
>
>
>
>
>
>
>
>
>
>
>
>
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
RemoveConsole(void)
{
}

long 
WriteCharsToConsole(char *buffer, long n)
{
    if (!inMacExit) {
    	Tcl_DString	ds;
    	Tcl_ExternalToUtfDString(NULL, buffer, n, &ds);
	    TkConsolePrint(gStdoutInterp, TCL_STDOUT, Tcl_DStringValue(&ds), Tcl_DStringLength(&ds));
	    Tcl_DStringFree(&ds);
	    return n;
    } else {
    	return 0;
    }
}

long 
ReadCharsFromConsole(char *buffer, long n)
{
    return 0;
}

extern char *
__ttyname(long fildes)
{
    static char *__devicename = "null device";

    if (fildes >= 0 && fildes <= 2) {
	return (__devicename);
    }
    
    return (0L);
}

int kbhit(void)
{
    return 0; 
}

int getch(void)
{
    return 0; 
}

void clrscr(void)
{
    return;
}

short
SIOUXHandleOneEvent(EventRecord *event)
{
    return 0;
}
static void SetupSIOUX(void) {
#ifndef STATIC_BUILD
	extern DLLIMPORT void SetupConsolePlugins(void*, void*, void*, void*,
									void*, void*, void*, void*);
	SetupConsolePlugins(	&InstallConsole,
							&RemoveConsole,
							&WriteCharsToConsole,
							&ReadCharsFromConsole,
							&__ttyname,
							&kbhit,
							&getch,
							&clrscr);
#endif
}
Changes to mac/tkMacDefault.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
 * tkMacDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacDefault.h,v 1.11.2.1 2002/02/05 02:25:16 wolfsuit Exp $
 */

#ifndef _TKMACDEFAULT
#define _TKMACDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
 * tkMacDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacDefault.h,v 1.11.2.2 2002/06/10 05:38:24 wolfsuit Exp $
 */

#ifndef _TKMACDEFAULT
#define _TKMACDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.
355
356
357
358
359
360
361


































362
363
364
365
366
367
368
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"



































/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK
#define DEF_SCALE_BG_COLOR		NORMAL_BG







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"

/*
 * Defaults for panedwindows
 */

#define DEF_PANEDWINDOW_BG_COLOR	NORMAL_BG
#define DEF_PANEDWINDOW_BG_MONO		WHITE
#define DEF_PANEDWINDOW_BORDERWIDTH	"2"
#define DEF_PANEDWINDOW_CURSOR		""
#define DEF_PANEDWINDOW_HANDLEPAD	"8"
#define DEF_PANEDWINDOW_HANDLESIZE	"8"
#define DEF_PANEDWINDOW_HEIGHT		""
#define DEF_PANEDWINDOW_OPAQUERESIZE	"0"
#define DEF_PANEDWINDOW_ORIENT		"horizontal"
#define DEF_PANEDWINDOW_RELIEF		"flat"
#define DEF_PANEDWINDOW_SASHCURSOR	""
#define DEF_PANEDWINDOW_SASHPAD		"2"
#define DEF_PANEDWINDOW_SASHRELIEF	"raised"
#define DEF_PANEDWINDOW_SASHWIDTH	"2"
#define DEF_PANEDWINDOW_SHOWHANDLE	"0"
#define DEF_PANEDWINDOW_WIDTH		""

/*
 * Defaults for panedwindow panes
 */

#define DEF_PANEDWINDOW_PANE_AFTER	""
#define DEF_PANEDWINDOW_PANE_BEFORE	""
#define DEF_PANEDWINDOW_PANE_HEIGHT	""
#define DEF_PANEDWINDOW_PANE_MINSIZE	"0"
#define DEF_PANEDWINDOW_PANE_PADX	"0"
#define DEF_PANEDWINDOW_PANE_PADY	"0"
#define DEF_PANEDWINDOW_PANE_STICKY	"nsew"
#define DEF_PANEDWINDOW_PANE_WIDTH	""

/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK
#define DEF_SCALE_BG_COLOR		NORMAL_BG
Changes to mac/tkMacDialog.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * tkMacDialog.c --
 *
 *	Contains the Mac implementation of the common dialog boxes.
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacDialog.c,v 1.6.8.1 2002/02/05 02:25:16 wolfsuit Exp $
 */

#include <Gestalt.h>
#include <Aliases.h>
#include <Errors.h>
#include <Strings.h>
#include <MoreFiles.h>










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * tkMacDialog.c --
 *
 *	Contains the Mac implementation of the common dialog boxes.
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacDialog.c,v 1.6.8.2 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include <Gestalt.h>
#include <Aliases.h>
#include <Errors.h>
#include <Strings.h>
#include <MoreFiles.h>
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
OpenEventProc(
    NavEventCallbackMessage callBackSelector,
    NavCBRecPtr callBackParams,
    NavCallBackUserData callBackUD )
{
    NavMenuItemSpec *chosenItem;
    OpenFileData *ofd = (OpenFileData *) callBackUD;
    static SInt32 otherEvent = ~(kNavCBCustomize|kNavCBStart|kNavCBTerminate
	    |kNavCBNewLocation|kNavCBShowDesktop|kNavCBSelectEntry|kNavCBAccept
	    |kNavCBCancel|kNavCBAdjustPreview);
        
    if (callBackSelector ==  kNavCBPopupMenuSelect) {
        chosenItem = (NavMenuItemSpec *) callBackParams->eventData.eventDataParms.param;
        ofd->curType = chosenItem->menuType;
    } else if ( callBackSelector & otherEvent != 0) { 
        while (Tcl_DoOneEvent(TCL_IDLE_EVENTS|TCL_DONT_WAIT|TCL_WINDOW_EVENTS)) {
            /* Empty Body */
        }
    } else if (callBackSelector == kNavCBEvent) {
    	if (callBackParams->eventData.eventDataParms.event->what == updateEvt) {
    		if (TkMacConvertEvent( callBackParams->eventData.eventDataParms.event)) {
        		while (Tcl_DoOneEvent(TCL_IDLE_EVENTS|TCL_DONT_WAIT|TCL_WINDOW_EVENTS)) {
           			/* Empty Body */
        		}
        	}







<
<
<




<
<
<
<







1046
1047
1048
1049
1050
1051
1052



1053
1054
1055
1056




1057
1058
1059
1060
1061
1062
1063
OpenEventProc(
    NavEventCallbackMessage callBackSelector,
    NavCBRecPtr callBackParams,
    NavCallBackUserData callBackUD )
{
    NavMenuItemSpec *chosenItem;
    OpenFileData *ofd = (OpenFileData *) callBackUD;



        
    if (callBackSelector ==  kNavCBPopupMenuSelect) {
        chosenItem = (NavMenuItemSpec *) callBackParams->eventData.eventDataParms.param;
        ofd->curType = chosenItem->menuType;




    } else if (callBackSelector == kNavCBEvent) {
    	if (callBackParams->eventData.eventDataParms.event->what == updateEvt) {
    		if (TkMacConvertEvent( callBackParams->eventData.eventDataParms.event)) {
        		while (Tcl_DoOneEvent(TCL_IDLE_EVENTS|TCL_DONT_WAIT|TCL_WINDOW_EVENTS)) {
           			/* Empty Body */
        		}
        	}
Changes to mac/tkMacDraw.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkMacDraw.c --
 *
 *	This file contains functions that preform drawing to
 *	Xlib windows.  Most of the functions simple emulate
 *	Xlib functions.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacDraw.c,v 1.8 1999/12/14 06:52:56 hobbs Exp $
 */

#include "tkInt.h"
#include "X.h"
#include "Xlib.h"
#include <stdio.h>
#include <tcl.h>












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* 
 * tkMacDraw.c --
 *
 *	This file contains functions that preform drawing to
 *	Xlib windows.  Most of the functions simple emulate
 *	Xlib functions.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacDraw.c,v 1.8.8.1 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "tkInt.h"
#include "X.h"
#include "Xlib.h"
#include <stdio.h>
#include <tcl.h>
366
367
368
369
370
371
372



373
374
375
376
377
378
379
	pixmap.pixelSize = 32;
	pixmap.cmpCount = 3;
	pixmap.cmpSize = 8;
	pixmap.planeBytes = 0;
	pixmap.pmTable = NULL;
	pixmap.pmReserved = 0;
	pixmap.baseAddr = image->data;



	pixmap.rowBytes = image->bytes_per_line | 0x8000;
	
	CopyBits((BitMap *) &pixmap, &((GrafPtr) destPort)->portBits, 
	    &srcRect, &destRect, srcCopy, NULL);
    }
    
    if (newData != NULL) {







>
>
>







366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
	pixmap.pixelSize = 32;
	pixmap.cmpCount = 3;
	pixmap.cmpSize = 8;
	pixmap.planeBytes = 0;
	pixmap.pmTable = NULL;
	pixmap.pmReserved = 0;
	pixmap.baseAddr = image->data;
    if (image->bytes_per_line >= 0x4000) {
    	panic("TkImage too wide!");
    }
	pixmap.rowBytes = image->bytes_per_line | 0x8000;
	
	CopyBits((BitMap *) &pixmap, &((GrafPtr) destPort)->portBits, 
	    &srcRect, &destRect, srcCopy, NULL);
    }
    
    if (newData != NULL) {
Changes to mac/tkMacInit.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkMacInit.c --
 *
 *	This file contains Mac-specific interpreter initialization
 *	functions.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacInit.c,v 1.3.18.2 2002/02/05 02:25:16 wolfsuit Exp $
 */

#include <Resources.h>
#include <Files.h>
#include <TextUtils.h>
#include <Strings.h>
#include "tkInt.h"











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkMacInit.c --
 *
 *	This file contains Mac-specific interpreter initialization
 *	functions.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacInit.c,v 1.3.18.3 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include <Resources.h>
#include <Files.h>
#include <TextUtils.h>
#include <Strings.h>
#include "tkInt.h"
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
  rename sourcePath {}\n\
  set msg \"Can't find $file resource or a usable $file.tcl file\"\n\
  append msg \" perhaps you need to install Tk or set your\"\n\
  append msg \" TK_LIBRARY environment variable?\"\n\
  error $msg\n\
}\n\
sourcePath tk\n\
sourcePath button\n\
sourcePath dialog\n\
sourcePath entry\n\
sourcePath focus\n\
sourcePath listbox\n\
sourcePath menu\n\
sourcePath optMenu\n\
sourcePath palette\n\
sourcePath scale\n\
sourcePath scrlbar\n\
sourcePath tearoff\n\
sourcePath text\n\
sourcePath bgerror\n\
sourcePath msgbox\n\
sourcePath comdlg\n\
sourcePath spinbox\n\
rename sourcePath {}\n\
rename tkInit {}\n\
} }\n\
tkInit";

    Tcl_SetVar2(interp, "tcl_platform", "windowingsystem", "classic", TCL_GLOBAL_ONLY);
    Tcl_DStringInit(&path);
    Tcl_DStringInit(&ds);

    /*
     * The tk_library path can be found in several places.  Here is the order
     * in which the are searched.
     *		1) the variable may already exist







<

<

<
<


<
<

|



<





<







71
72
73
74
75
76
77

78

79


80
81


82
83
84
85
86

87
88
89
90
91

92
93
94
95
96
97
98
  rename sourcePath {}\n\
  set msg \"Can't find $file resource or a usable $file.tcl file\"\n\
  append msg \" perhaps you need to install Tk or set your\"\n\
  append msg \" TK_LIBRARY environment variable?\"\n\
  error $msg\n\
}\n\
sourcePath tk\n\

sourcePath dialog\n\

sourcePath focus\n\


sourcePath optMenu\n\
sourcePath palette\n\


sourcePath tearoff\n\
if {[catch {package require msgcat}]} {sourcePath msgcat}\n\
sourcePath bgerror\n\
sourcePath msgbox\n\
sourcePath comdlg\n\

rename sourcePath {}\n\
rename tkInit {}\n\
} }\n\
tkInit";


    Tcl_DStringInit(&path);
    Tcl_DStringInit(&ds);

    /*
     * The tk_library path can be found in several places.  Here is the order
     * in which the are searched.
     *		1) the variable may already exist
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
	    Tcl_DString libPath;
	    CONST char *argv[3];
	    
	    argv[0] = tempPath;
	    argv[1] = "Tool Command Language";	    
	    Tcl_DStringInit(&libPath);
	    Tcl_DStringAppend(&libPath, "tk", -1);
	    Tcl_DStringAppend(&libPath, TK_VERSION, -1);
	    argv[2] = Tcl_DStringValue(&libPath);
	    Tcl_JoinPath(3, argv, &path);
	    Tcl_DStringFree(&libPath);
	    libDir = Tcl_DStringValue(&path);
	}
    }
    if (libDir == NULL) {
	libDir = "no library";
    }

    /*







|
<
|

<







110
111
112
113
114
115
116
117

118
119

120
121
122
123
124
125
126
	    Tcl_DString libPath;
	    CONST char *argv[3];
	    
	    argv[0] = tempPath;
	    argv[1] = "Tool Command Language";	    
	    Tcl_DStringInit(&libPath);
	    Tcl_DStringAppend(&libPath, "tk", -1);
	    argv[2] = Tcl_DStringAppend(&libPath, TK_VERSION, -1);

	    libDir = Tcl_JoinPath(3, argv, &path);
	    Tcl_DStringFree(&libPath);

	}
    }
    if (libDir == NULL) {
	libDir = "no library";
    }

    /*
Changes to mac/tkMacKeyboard.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkMacKeyboard.c --
 *
 *	Routines to support keyboard events on the Macintosh.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacKeyboard.c,v 1.6.8.1 2002/02/05 02:25:16 wolfsuit Exp $
 */

#include "tkInt.h"
#include "Xlib.h"
#include "keysym.h"

#include <Events.h>










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkMacKeyboard.c --
 *
 *	Routines to support keyboard events on the Macintosh.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacKeyboard.c,v 1.6.8.2 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "tkInt.h"
#include "Xlib.h"
#include "keysym.h"

#include <Events.h>
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
	len = 0;
    } else {
	hPtr = Tcl_FindHashEntry(&keycodeTable, (char *) virtualKey);
	if (hPtr != NULL) {
	    len = 0;
	}
    }
    Tcl_ExternalToUtfDString(NULL, string, len, dsPtr);
    return Tcl_DStringValue(dsPtr);
}

/*
 *----------------------------------------------------------------------
 *
 * XGetModifierMapping --
 *







|
<







243
244
245
246
247
248
249
250

251
252
253
254
255
256
257
	len = 0;
    } else {
	hPtr = Tcl_FindHashEntry(&keycodeTable, (char *) virtualKey);
	if (hPtr != NULL) {
	    len = 0;
	}
    }
    return Tcl_ExternalToUtfDString(NULL, string, len, dsPtr);

}

/*
 *----------------------------------------------------------------------
 *
 * XGetModifierMapping --
 *
Changes to mac/tkMacMenu.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkMacMenu.c --
 *
 *	This module implements the Mac-platform specific features of menus.
 *
 * Copyright (c) 1996-1997 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacMenu.c,v 1.20.2.2 2002/02/06 07:02:04 wolfsuit Exp $
 */

#include "tkMacInt.h"
#include "tkMenu.h"
#include "tkMenuButton.h"
#include "tkColor.h"
#include "tkMacInt.h"










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkMacMenu.c --
 *
 *	This module implements the Mac-platform specific features of menus.
 *
 * Copyright (c) 1996-1997 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacMenu.c,v 1.20.2.3 2002/06/10 05:38:24 wolfsuit Exp $
 */

#include "tkMacInt.h"
#include "tkMenu.h"
#include "tkMenuButton.h"
#include "tkColor.h"
#include "tkMacInt.h"
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
	menuID = HiWord(popUpResult);
	if (menuID != 0) {
	    result = TkMacDispatchMenuEvent(menuID, LoWord(popUpResult));
	} else {
	    TkMacHandleTearoffMenu();
	    result = TCL_OK;
	}
	
        /*
         * Be careful, here.  The command executed in handling the menu event
         * could destroy the window.  Don't try to do anything with it then.
         */
        
        if (menuPtr->tkwin) {
	    InvalidateMDEFRgns();
	    RecursivelyClearActiveMenu(menuPtr);
	}

	inPostMenu--;
    }
    return result;
}

/*
 *----------------------------------------------------------------------







<
<
<
<
<
<
<
|
|
|
<







1401
1402
1403
1404
1405
1406
1407







1408
1409
1410

1411
1412
1413
1414
1415
1416
1417
	menuID = HiWord(popUpResult);
	if (menuID != 0) {
	    result = TkMacDispatchMenuEvent(menuID, LoWord(popUpResult));
	} else {
	    TkMacHandleTearoffMenu();
	    result = TCL_OK;
	}







	InvalidateMDEFRgns();
	RecursivelyClearActiveMenu(menuPtr);
	

	inPostMenu--;
    }
    return result;
}

/*
 *----------------------------------------------------------------------
Changes to mac/tkMacProjects.sea.hqx.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(This file must be converted with BinHex 4.0)
:%A4V6@&M8(*[DQ9MG(-ZFf9K!%&38%aKGA0d)3!!!52U!!'Se@H#8h4eCQC*G#!
SBbNa16Nh,6%j16JJ3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z,#"SG(4`1Lm[Gj!$,Q&
XB@4ND@jcHA-ZBfpY,e0dG@CQ5A3[$3SD!!83!!%MkJ#3!h)!!3#3!h+8r!fPT9*
PFf9bGQ9NTD8!TC!%!3!!1!"%Y[&1mlEa6e`!N!d)iZ3!N!21!#T'#!!")a`!!Ld
q)%*eD@aN!!#6j`"h!!-"K3)M!F$rN!3$([rirr$,4!!!J!#3"k@3"!%!!$8!4,3
GFA1i)pb9!*!$FJ!")Y-!N!0b!!836`!!!5F!+N3L!!%KV!!',6iJG'X!!&%D!(d
!%!(C!IS"`2q3"!)HrrMrm-Y!!!#!!*!(TC!%!3!!1J#!Y+(T3,G0'[)!N!21!!!
0p`#3!mi!#TmI!!#ULJ!!$()!N!32!&4VAde%48BZci!!!%#b68e3FN0A588"!2q
3"!#3#S"`!*!'3X(8V`#MIfe6h,C[6F[BU8PkVQmm&A9!cS#KIR"DLBeM9H,PPS9
d$9l$pX31ecFM`r`D9A%EPU'2`AfrXQc3kZLVbRrdF`ZFFdJTQa6FP4TP[+DkdKd
$UL5rmEZA21frG`99bH&Rc3X-)&5'bmT3#bhE*GM,D2h8md6[acq`JM[fj)P2i,b
Y9q)BrZ)45'D(mZBINfb*PEL)kXC15Kp82)Z+R-6-jSbG'A-$6RfjrM#H1rHJCSe
1j(-'6DT5f06B4Vm$i0PlE02VVDF&!LJh3&Sd9X*IL,`M,S$%&3!R14*QPjmC2V+

|
|
|
|

|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
(This file must be converted with BinHex 4.0)
:%A4V6@&M8(*[DQ9MG(-ZFf9K!%&38%aKGA0d)3!!!55`!!'FbmEa8h4eCQC*G#!
SBbNa16Nh,6)`-$%J3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z,#"SG(4`1Lm[Gj!$,Q&
XB@4ND@jcHA-ZBfpY,e0dG@CQ5A3[$3SD!!83!!%NX!#3!h)!!3#3!h*$LJfPT9*
PFf9bGQ9NTD8!TC!%!3!!1!"%Y[&1mlEa6e`!N!d)([`!N!21!#T5+!!")q)!!Ld
q)%*eD@aN!!#6j`"h!!-"K3)M!F$rN!3$([rirr$,4!!!J!#3"k@3"!%!!$8!4,3
GFA1ieiZ4!*!$FJ!")jN!N!0b!!A&[!!!!5F!+P"#!!%LFJ!',6iJG'X!!&%D!(d
!%!(C!IS"`2q3"!)HrrMrm-Y!!!#!!*!(TC!%!3!!1J#!Y+(T3,G0'[)!N!21!!!
0p`#3!mi!#TmI!!#ULJ!!$()!N!32!&4VAde%48BZci!!!%#b68e3FN0A588"!2q
3"!#3#S"`!*!'3X(8V`#MIfe6h,C[6F[BU8PkVQmm&A9!cS#KIR"DLBeM9H,PPS9
d$9l$pX31ecFM`r`D9A%EPU'2`AfrXQc3kZLVbRrdF`ZFFdJTQa6FP4TP[+DkdKd
$UL5rmEZA21frG`99bH&Rc3X-)&5'bmT3#bhE*GM,D2h8md6[acq`JM[fj)P2i,b
Y9q)BrZ)45'D(mZBINfb*PEL)kXC15Kp82)Z+R-6-jSbG'A-$6RfjrM#H1rHJCSe
1j(-'6DT5f06B4Vm$i0PlE02VVDF&!LJh3&Sd9X*IL,`M,S$%&3!R14*QPjmC2V+
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663



1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993












2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129


3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156


3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183


3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211


3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
B(2*@#`hZ6TX@%UecE0J&!`VeRa3kDAm%4%)kAB6D'8NRI$KEDZ&SFi3D86LAdLr
h!TH2mI*Bh3M1%-3Q0$3[XZ2`r`"Lf45V1#@4DBbkGrLebcC[S+H(BrEk$FJrZAb
M8Yr5c8Qc#mjeQM5B-Br!%0QP6kE5c*ME@Q"HN!$MA$aQLkf6'@Yj%kL`)Vbi,6#
3!(9cA[I5f`fUAS!eI%k[,)9+Q%kGZ%1e#%GJ$Qjkd)2rbX4%llkAf@eJh+,c@l5
CB$dUpE6@FAP614b)9)08G0HbCXb3!,HrT,%F!1N5dkEq@i)b))mN'bRJd4KUXYr
#cNU`&-!Cc"XU+he@PR5rbQK,9hrLDH8rB3XYpY)Blm#I*L!&''VDGf6!MJ2Ml[E
c"(hYXh8YZJ3raeM-PQ-9USfdij2lI3TZ30'PE%'3!#519jQba!SN@A!1K"PJchi
5"6%hBD,TBP32lPBkr%L&kPZJkaIRkAZMBBrM!+@3"!%!!$i!J,5KkFDhfk"B!!!
0p`!!G3F!N!21!!kPa`!(VHF!!&Er!*!%$`"8DdaTBR*KFQPPFbl2J!!!3,*069"
b3eG*43%!rj!%!*!+J(!!N!C#`G6H#A*'`qFAP'bER8VP`Id"C@dq%6Ae`M-PcC5
92qNQkh2iJcD3!&%jpFiej`'9j,Al4d),d[KXS8*)+0r##)pGGm5N'1K9Q0Sjk(E
Lld)fH5qL2020%2%!F1DeZ!NYphVS'Y6N"JjbE1)3PB"rkG"'kaK(L0A-583ISki
HPr)&CHHVeJEGXr0eVA#Ek%VfGemFAUL%G0K&CSm6!PRd,H%+,VkclM@G262[U3*
5UhG`+Abdbd@hrpI2cD,d&r,V!E)S)crS0`9%QB!0j+IJ,p&8Ik40[MV`S#&*$8X
jI(md'iEUA,M0'&m6&,jE(pae0+aGe[`F@0BG&Dd)6hNH2`!l2"#TF!8m%PT49,f
J9h"3&aZY6mUUR&5`KUGCI+!U88ci&@bj)$bUQLTYh*DT(9k+Xe+)TXf-MNBD#jC
%4+Ra5caVNIbTKCb-!+m1A6USf92"EAVDS%1F$(cDm63Pa4JaaB(N'3i(!e4jN3Q
136RBPVMH5GE`0'T8K0m9%EeZT2h)AhA'&I(RdT%K+MVJ`II5FZQ9J#pmQ`mZeN0
fEiiKD)`BMNJ4U`+BI'*kFLhaMAA`d(ak+G6lQh'HK1!50i,NH1CKPY!A@I$c"p(
K+j-YHm`A"-+T9mVejE8C1ebj!6(rd1U0(Q4EK&Rr,hi93BZf,&a+N!!'&$%f8I(
Im-Lj40daF5qD[dAGQ5&armFDjH-94!ip%9'F5L#3!$cHk3hf[a!bqcDII0R[YK@
kVPDESImj#mjBVhm9!-YPQM#$hrNX`*1aA`3h$-3aejNVf92D!hmmTlZR`5I-1ME
$IE+#J"'H83%,YXXEAXI1MI)`AP4XrS,6RiKLRLCDKT4`0E0rDcTR-Cf*#3rlb4a
J!echh1J!DI,Ge&45R$f4cS3hDGB#0T,"Q)DE56IV+1Mr4*`-Q@(Q(r*J"6J#b!'
K6L-+flb6!rj,(hB`hS3dY)`mbr$6JflhS%4ml"d#9YccES1b"1"@L53!9"kZF3M
Ed04%jM)[8`AVqU&MX4*2Jr9Nlie$p1SeGG+$$SK6*D@KFB*AU4'0f$TSBIm$Fm#
UpUf)$ie)D[(&M!%qII"!E2YpUJ"%jlT3YVEM@Cj4l39Q2'Q0Qcm-N`'J(&k0a6E
*5`3VqhBTjq*iqefLi6Jl9XZd02YDV[[!c@Yd!HZlJPb*A%kBqA3YQ%5YrS2YEUa
),CkS*Uc3YDfpipVU2bf2Drfe@''(@Z1mdLX1NX'JJ[mVAe!SNR&j9r[iXF5M-'1
@HFB1MFD+3&)l#)`r*,2jY3d2m%P%IU2qj4me-aY1Ijef"'i&jF32E+$lFZ#X"d&
-fHS)U[EhUS*+$E5FH('I!86dQG33hNRk)"5qa1556&pk-lE0fHQBb#8LUBCYXL[
d%i9%$,*%Gq4X1j&!%eLaU8Vk%ZR9jYeFL$1JGq5VL*c@+jhVZ#fN(8Y8m*YZ"Zl
i$%Cd'QV-[S2XJp&Y'`9P[1pZJc[a!5p'4CFJ(*LeU&LG$D%iR[Mr&,U#DZCQ#ij
CF&`aVU2Rdd0-)BGGNMRe'-P!9S!Ddh`ThjBK*@mG-Ge#KFfqZ4"CE9'be$qSc6[
q$pTS+Z[3GY2fhla9Dcc4#B+aGK3a3'8#l6Vp`)8D[ED&FEF'3',beIXrlA3S#eT
b9%%r--`jFEAp6%KlIV$K*m+C[RjY88cFjC!!SDAQcD"F9K58R@S#N!!5$3f,ei"
"ZL8i"*AKBQ[1qqhb#VBC-d"99LE8(e'EcB#S8kGNPp#Fj84@))3&LVCVfReVY@+
8QTakMPS4#B%Nd3UQM569AqRJ0-fkdl"((JA+RPXmIFi,cJl2JMLrE+H)G6qfKPq
5qlh)lU`&mUF@'6$+EBpdRlU!4%ZG&1YcdPlRE6qfS8fqGPTQ+DZJf9Sf2JS-KQl
XFJXU+E"NTYekj'IFK!V)GS@lb!XMmm("&qYZlc*"@JR,EekhLE5NIA2V6'fpS8T
)AEm,Hf00*r$FXU"jVdLH@rR5XeCDE#8AGB84mlAX41()2S2RRT*E*,`'fcme+"k
Qc+-FA$*pe`UB#&Rq[j!!H00Qr'XE5eV!IKr'q0a"IS+A`19EL@mV@jF0I"kCC&"
LF#114kEK"83Z-Rpji6ZXrR&1BmFJfJJ!([adLi-a!S$K9fqKe4A$KF90A1"##X3
#Q)pL2m6V9@pC'elR)AEmZheTF0"mKSi5BhqK-ACV-!(*fm9S,`3%VDJ`@PdTV#@
Sq$LV#Ze5!hX1Fj-%$HPKH$F&![%lSR,F%IIS$GU`M5C%PRG5!`eV48VPUi*F@Gk
%rk)fJaRH#5qrBPlRB6r2Qi!53(5Xa'`K`0di-dajQkmdb&9(T5c+1#NI&JdiD$N
H%5$h`r'Pe%iAN!"[`EPKeXHD9TUeBj-mD*`2i4`X#$#'""50#'lrUNJ8RYDp0l$
cm9l1Kk6D"b"k*E694*26&+GLlKe3bjT0&CrTKjF,Hjk9j))8iX&U)$X#4GQq0rl
(Mrp-h5*LB3LlFH'SU#lSCTUmYKj%G%JEEaRJ'6$pqk`(6!IPQR"5PeDp19*T9L8
&1&GC$CfbPI)2hHQSTF$cGaLjVZ(kVfCX+&$Hpc3TkTk$DIU`-J8Pq`Z*BPI'F*(
QaZHBCVSP8ArFT-'A%L4%-!JT#'&AmBR'VpXaAM[ErKkhq%"dZ6fjRpTApej@Z61
B)qii"k,#ZS,SqD-E+9#S4&dqEUc%aF-SZk88(Nb6U6q$pFrbc(B)'RFP9M+D`49
i#[dJT@e2XhcA%4iXY4N-H2-im#"Mb`,YeK!IQKeF'0)1%Ak(cFaN0`&"#8VjYV0
6-D'!JNCQfZ+p,+c+K'@q3YXBeQhp$FlYp`pmDAeY2QMT,a3RprdZ,LCj,`iY&A5
J@LYh*XR5r2XjjPM6e4e%N!"KIepbXjf!IGB`I#9Ii$RDUq6!eS)aHS0A8pMh(&Y
5)QDE,,0&i#MjZTj(YAB48BK`jD5lp"%ZQ#&rAp`cS[ElGc(QDSl8`p"M**HLJNG
Xp)e6`$,R*I"%25lj$6Gja9`-'PZdiYeKGL3KGKRaVlG(SBH)3QrY%eJXj,I9G26
Sa'Se,SqNYAb)BSDb5qckI*D"NBG#d[PYG+H*6$kMeHP*[VR59Q9D*5&Ad,4S$Ka
J9jYNqX0#SU'D+%JEeYN1J1Id@3J#jJPNSR*R!KMd+PZ,,p`&qc5)rcaVpD)+4TX
8GR&K8SilhLK(![$AT8L,(qF%C55JAFD3!)h*%A9f!eUMCcD3!11C[DP#&0$qNk[
iZ'+Y`Gb#A0*5"&`BUX4ArdZ03Z(AcLTplKlT#(33I'haQN%*M-*30*cr!XU@Jrk
-RpehB81'pQVrQI+aKTAYb`S"EHc9B)EC[Z$pS3Z'RMe(fRdN4*4d(*`*kN[26VL
CX+P6mb@M*qU1SEb*%bi6harmP(fi6JNBIf`f[k#ELIdNeYT'IrYKM0&#PM,Z5la
Al,TSGA31iSAXK`Q91Z($4+E)0#XVV9`9IlE`DR,pE$HkjXd)"U$ZP3FeY1!CkG)
A0e3-8RS2"EMEq!&#SYPXT&@1-QIk(9L&ceDhQrq)Hh)3faq-Y8%jPfNF2$4p*LQ
qa$+MjDIpdeRi3GA5VH5)rC!!ikUX!Q5pR+P'X2B&,)4PYm)SH0h+BFqS,cYGUYR
&L96c)4DHfJMX$NEbT[-b1b+"raDlG,R0(aZCSahP#53U)8bjp$Xe#5V-H##iD6R
)k%U3!$#9I6HD`0'rQNFGcHh`#fhj14H14SC9)Vr[Fb-GqYcbPrbUp&@JXBBj"l)
3IV)+eH@4qCV&2bB83"MTEVei%E%UGEij!Q,c3jcBM+QC4QPQdSjR#V8p#E3,L'0
8Gm)RY)[(j&M9dEFDN!!B0bRf[G1B61K0dajB!1k[YJ9P#*YE+Z`JcPeqQ4@fp"i
BU!2R%$B'`"pbfh3@#'GQi!04`P3AM8VmBU"1PTC6V6#mY#S'b$1(D#r0Rf9A,@`
C!3QS#kdq[4PZNh6hLIN2QYd%rY'kSj!!$5Ell"*E2ES`RBqM5#bqr@!-`9T&"iN
KirBj,3UamTM2T'b&P`2&Qp)D#&"ZIKPl*U9X25r+BT4db@DaZE-V+A-`#ERJKkh
Sq-4X9fq5UE$T8ZCHL5)%EGBmdc@"FchD$$&q'"-Sa!lDM`pmhTH3!""E4kSpjUr
G'bLZLZd6+Y@(CkX4Dj[S1@cL!TcYEEiZ[m@Mh3%D!@r@&@h"dmD1%*p&!RB6aJC
H&fpQpi'AQ8p#JiT%b-4lXAX%f-Mmc6+F)5[0GiCi,Q8aFZl,3,eTHMGm)mIiVJf
U3J'AiS2"cCD(d8hpijBKiVf50c*1[ih8e"d#"F[)Y31IpmVRfZK4TaUN,i9)+eZ
F$BSdLUYXFiJY64YT&$EcHFeDZFYG88B!0PapdHm)Yer#la,c`*TIXAcUDcAaha`
#ZBc-#)Kmqf[f'I4&[Khj&qrC03b*MQM,Kf8I9q`9%"EDje9"[6R[jH!SbaK`C-P
S'"&+42eC6Z`P0M#(!)Ed1rrjX`2B)q0*FL9N[Y`R9Le'2TiQYibQ!1hkAej1!hD
GqmPkqL"$k9i2ee$+%VmApe8pJ(@(DGdq`BJ&Yf1e[@iB!F6&,q#5aeZ!`LK(3XE
E42`TACa"N96+YUr0ajl&+A[DF@J,iXEc+DFEhRC1cjl6%$`mPYR,)ecIXZ$r+"6
%EkZRmRPaU@0E@PU"NpRVMMAN4C!!)0cjX"jZka)$l!rCG'2AbDPeZlACldA)"bH
LQmAmjl#8J95#Sj!!"c+EJU9L!FrP31Z9""P2E5MK2SG*)5&r"I-r'U9EErjS[I@
-lCd(1$,l8md&QfCUNR'AJ((eq`A)cL%)F`chY3C'pmcJ"1*mTr8i6eVCSZNHiLm
!d3m5RiX,)prRm,eBD"*FPeFabS2cB8V'')jrHS+m+fl[IZR4VBk"eX8iC44a!SC
pq@R%IX)'hY+Ic$ISY2a*YHGGG,4NU@*Nk6)jqBMb*QQfYK$JM[f3!)LA#j+h!4J
FSZZ@eFfGQ5PETSLcJ&j'1iq3!##(JbLh8%(#V,aYA@NVAm%5KCaDe`1P1IpmY1[
p+MlD2*CS-rPSAlDj,4Bj'Yp(pbpJ-HF3'J9BF[AbPj!!`ekDMGJC36qU15J2"h,
b4R8T#KaQ1j,L#FbrXRQ*i"IX81'XU6(lF`-QC6dMKXN[-TiN"eN8k3Y+k'fQq`b
@Z34+!p'QFFGM3iS5L@S#LJh54J2jQMJpUrNdSB&+HD3TQX4#qN1lUCS4ZRLj0M#
@eSi,,AQDfPi,*[F5cfK8Hm2F,fjr-8kb+M`0!lRNlbUcad+fZ!$V(l%bqb`,'8f
2(q&AMQQ1!f1DTprmmaU0*i"8baA9+Ap,Bh9$hm*X[qQeZC3h)babjIRT,80jrIJ
A"#9lbe(mjjKhaJYNqlCb5UUqfp&Q4Hr886SPSF(EahCN+-FUdi3M)L4Y1aAL42D
S4$T2Tr)(Qb-RpU+-1YB8*FbA"0e#2$Q[fj%@JI5e9il&D(M6-JQGfkc[4+`1Nd*
VqIMZ"a`+1rhpmI"&%il8IQ,rQe-a#2$%@B`P[V*[am90EU'YV!`-%HZkr4Hj1IT
PML`NieMaCJXV(U`BUS'h$F*a)%cYT!FS#&j`Y18[EQipY0*,!6!Ih)1*JYH-4%Y
+@mkZ9VT*6--4aH@UqI5I3SLaV'$U6F'PcHqPVZHS4U`#-ES+!ajLX$c1#TC&U6B
qe!l5CJ[TkjcAcpj*A3JE,32lMh*C$hk+[Z03E,cLh!f*LQppF)TQm!,G-$`Q-A+
(Dl$'*kQe0Rbm#aSVXi'F8#T1GGEJ60KfCV++$+@L4Hp*HN91BGTXQrNH4VC3*&-
$%R(QMFld`X%9'rZXVj,3"DU&0Z,kYP'SdP9eUiFfADmrM"cD@aG!3Rfq*,e#S*B
)AAjQB#jfIDFm@GQ#5PelRXA13Np1CdbC*DR#q3aZS[iANj'EX4D&HRbc38MUXFH
,h[q-GRDHpS-ZMi8J8G+aeUklGfMkTQZk1ap5!KGHaNTCS1,`'L&JrPYPXpK2lVm
LM-"lEqRmEXCB!#mTZqZI6YI@iHYHHdpU6F@4F%V,HDA(YdVqE&E,)H`4&r`!MFL
(4PG#,UD1Z!dJk(5Tl!8q+KF(AG2Y6,+CVhF)dCU1+Z9@99jXED)pfCMc&DSjBI[
m2SZm$GT,"HhjFFB$X-TZ(JK+0C!!9fKY!amUfDBSmSRrR3PY,I`D+(Ul5De2i9D
GmaIT44'(pcf4!Ab5hrJhh(h2E3TH",kj23fS@@jCq2rlBe""-5INJeU2BSlB852
1N!"`MJN@mr8F6-Ai'SaDC8mc6eY0,*BdVbf4)A%RJJiKX"0mllkV!Q5+-!jY@2K
32+NqNrh%+`XAYXK9U%)#TI'9@1GB&k!Kq,PTViT-hJ&V"1JH$6'BHXmk43$iLX&
J%1hA(@!%a6eqUMh@D23A,&j[`L[GKE22lJ#55`),i#cML,Yd)HKmN`"ki'Tk+*+
$&@Yj4G@-aKreDQ+YXQcP"'m0DPVhlNZrHJqJ+&-!3"Y(+*`4-4h1el8BVrUfa2M
*GA2lZ[2h&aH*Y,0Mc##C@aiF[6ilMFfH1"kIT"N@+GN1eJ1`TrYF(pklp*2bSf1
kUJcZ,eBNdPKhBX%rl`N,"!1N`J-T+8"-0DUL98L&6CC4Sie5!Yk`3kd%bq3,l6&
jc3FTMj*dY3%eUaN2)+fejq@I9rL3!)`'*H+Pf`p`DCqL2aM$,+)H566bh"8Mh@k
6LZjd@jj*AqXp,6cKi"X3NLcZ&R(0YE0DAX,-MfPrIc#(Jp`D19efFHJj'1$'C)5
"*Yq8X#+#1J2Q"8'G,V(PTUAa!JA`(Ma9efpqe$"GKMe)8'HpU%EP!&5NLG[&b"8
pq[5J*k1AG8YQBY3plP(R[$AXR!kmQ!h1D!,1L8NBiBVCQf26-EZF)5,%hRMUjQ)
+P4"c'Z!RbeJiZP-&-8)0r)!&5#V!&CVRe$YVpVI"6KcKVL3'm0&$-"+P'lEGNMG
5'k(*cK6eEB@SXYLNcEF-$RdFiTf)3VRb5[ViDrBCV#a&EU+0bHENPAprVX%(T26
-e)f!IN69$GKp551"IqC5C9mU&U%ZQ,%+@bbQ9T2*L%ADm2Ih8!R"SIThRNBM&Ld
A1VpK*f0'ET6BXXHJB3eq&0dH1"hGf8MEb%K6k,*F'm%dmj'SP25"!cm!P$ka-[L
aJ9iUVRHZS9$*5Z1"fb$M),@DNKqDmDRdB*-Bk4-2&*+l5eZIEk[JL@2K@MGhj)F
hLp+Mil2rI`JmFD,4RM'1)R@iYP[4@Y`F6RIZ"d`4QSp0Jdf&i$!SB3#NK4+KqU9
UTT'GCrJ+e6X5B1b#,'Q68b),b0RSeCA(hk3App29NRSf4VLpS#3eqT!!B-ibDUR
N%CZ)-1%b$lJ*TRQ%Jd!d@Tf1aHRYa,0C!X6ldQh"25ar'@2N2f"3I!R9ER3@'A%
LGJ8,ED%&qYFDZ(iB1EDBUfh,[(Xk",M+hf-@EEZKX%H3!(Z'&D+*J)204Z`P+2S
jT2IbR,(eMU+CP-+$&qUe-H30cer6aAm$a)jaE!5,N31YU`&0+3IbRG40!A'*baH
*"L!+LJP4fU(bNADK1X,*-!NJ2+4jZE@)EmUdlXF[A5Jdm%bSShXcGmGpiMq(jlM
Qk"4+b-8*RTIj'pm0mZKfd%$jQKe*5Ma*mRQLqQM8CR)4EL##l-fIN!#e"ieeT(p
YN!#K)mJ6A`1$&5ETSUc$RYe@lCjYlIp9IcX43J(qQB(N+UcdYUAMAl%YZ'NUS8M
bamR&BZ9PNe*[$*U"k@'U+kd[4XGq1QiPBEqX'c5ekd1%0emR&H`Y,iaKdjlZIM*
(!ZL!-9dZ,3B@@`VcHEiFQif*cX@6AGQF[1mc"8LGkZ@0qCbH8eE!3Mb%lMErP0B
)-GK0ZZ"&e"f![FTRJ-`'64Q,qd@YM6GA$,NDUF5B0Bq#6UebU*Zh3P-`"b)K91I
N2TXh+a'mclCjUDk`mrVdI5l&#!5+l6Ejk$hT&+J5((iQ&+5dX`01Dc-4Ej9VCh'
kJ#4%ADfXI-[c!XS6drEU"+S6CmMa[D,jZb&JEGk3!!5NrJrZAY)``eZ0RXaC@N#
(jqkEXK$YAVQ1GcX5%BYG[jJ6h4irrdk1lYYmZXDEM,MZ5AH'3SAJP[qa[HGa'0'
dC#hP*@$ZcJY+flHGc`cQAkE9kKfX9Cjcc1*11dH'VcR-hFirk#-"R,4J1Bj,aXY
G#[-(&q+)*Im(2#SPM,+MpA2YCZIfZdkqjRBfG[iKd"0)6f1i&J0`"QB(h&3m0Xi
MAM0BSdP-!ecp&lc`Nf)Fh@@0d+k2pf5!d3$B`-4C4Q6TCiTj%,h`9lRVPB[VaZp
pMiKVG*D0#-+j0i(T%D,MaaK6Q%kEAq%U6GkRN@MC!qd$6NEd`,G6,$AfDFj5mId
!fSGeTff[GElC,4@i(Xab`dR-IVL+6L@6&IBF@#5SjAMH"q,+I'PX,1RdlilaN!#
abGLR62Yc*C'1mqAaE6Y1P1mD#$l(VF0Uh[IIaYADl5(Ym5"hX6C1dd8SYGAR,SG
Ki+"MN!!U&141BiT(*((EISU!r6e+*LYA-+Sfk@BaCp!()IUXZp6MqNZaHZGZZBk
SbL*4aYeM1i[iU3$a`SjXUVbr&(@R%pM(BFLD0`!,IA9##TV!K(l1E%-r0"q5cFd
&1X3%14qdX3'VY2Qjab-Mc1"'!GlAjq`5&ZDa6D-68U"UGKYbXjRLGXd+SMb`NAi
3"N(dH(pS,*f[G2UE(RJ%C,KBmAeZU%Y[Brbe(%NRJXYcS`ZVcT@`R%[4#b8HFA`
+%CpH&*P-["c%L1)8k`Q60J0l[5chPAR6@4qpQhU[R)$,e43ZihU!2E2h1)2I%1b
P&kIA(8M!N[S9DX*-M#,ITll$MEkf1irTYq&*%C&XlpF554)QV4HPH4YiBF&ap*e
&klCT,Rh&6CJkTJP[JiPMI-M&e[0VemQZ1(*A9P(*S8i@l8hQ#YT%5F4`S1Ga"Tl
r+%AjMLce$8RHlCQZC!jNJRC"cdPFlj9ID),HmC%Hi,U0c*!!I9eArPeS4#Kf+Aq
V&,lYrYr[`1Xme(YVZe"3V)Ri1*!!mAdkd9PKM$DAMU5`'SSN$Td'LP(`lfIdZYU
Yqb"(+2hC('-5lFHd,c!EddlN8BH[VV3ReZeZeD0,NVHj&NP%PXNAjeCrq611bL[
EUB8[R$10%8faC162kU!eQSF(%Xm5M'GjrmUqqDD!jhAPh165Pp5ckp90[Eeq@B+
+L!DQj5kTF,UmCbX5MihJ0&SbE$01r@-,q@+T8iCifH@3!)FejVGcCljRA1(NEN*
(*G'*Q15%4J%pUFQMcV*$Ae)@[AE`h1h!B46TGVQklThDE-r-*Q2Q6YFb6jTTK0h
8`N-ArhMIdAm(rlqGqE+@&&h+[eeqikR-+N36PfXi,ZSB)4,U"e00HL@2TqpmjdK
H2[l!UUH$q8`i`$3ML+b3!%Q0$r*qSY-BklTFFHPMIrU1,[G*a&r3kRP!Q''A5Jc
EKDMG9B"P85p3FZ#T0,d![E$3-h1TPR0JFbdZ,N@583"[&k`TG!3a04c3$(XiNL$
m4TH%U&*VpIS[5'lLK'#-rbGm8+@%cT@K-(1!IaIMr'kRSr%[mQeTD[+M9Dc*G["
2GJNZ69eAqHHbA-(LlFqeipp!E$-K#HeEp#R`-e5H9rR1iBQ96Xpb!TFU6e'%-`+
(0ml4I[Ak`XP0mc-efh[PC,E[pP1A,P`X-lB*ff[-(-Z&-#YjBCPr3PfDH8ENG)`
%aJ(h*1(HL4Fkd,X+rYYrEiTe!52Ja[+lmXP@r%A1YlDX0Yp,3-Dc9mEKI")L3R'
'ReeUrb""USX%#rCFdA@YBVa!L&cKpA4LIk@B3XbL3-64$AHrNCJJf26)f6@6)'0
@BH1%"aJ@89PYil'(5%2GP*apYk,88XLPTK2j@j6Ya5QN%SbTqb%6[[3Rb31BhN*
ed*SKFD@Jb-K+rm6#Fb62C(32bEI'&jCNi$(9Y4FMi%0A#McrpB"+9jcJG)%'iri
@%rY"fFi#RIS)SYIlA#)@Cb+k$'jbZ-#%ZZSHP@,bPf+)G-4@Y4H,T#FFrEdqVeD
65'NrXF'd!#YAYiKUNK8EUK249"RP#3E"HhZC)hL,$S1V6KE8HJXdjVMSPaQmQZp
Ill6[EQHN2[rKMp1FRm`#*%MCcdrVbT!!"#k4RDc8&`qckJZcbMH4)IjUjDJIa'd
JXdaUTdRHT""Khj163k2CdHljQa4L"`S!Y+hN0kIKN!#jEB6jd,LN'2r*!aZM4V-
erHNEdfcIe1FSlKNqq4dflMeke#Ca5UpaU50+RRJ103p%@L6amDRL+Lp"Vr0r4aX
ib!U*66H0Jii$XGh"2#1Pa2%*J0JYZ@lU!N#502Cce4+`$'Sm*aGqPV)1fXcVeIG
GV+K"A26BfaCSDf2B,P)2(rG"MKd'C5%FDJCCi`FP`KapY%Mqbrqq,Hh2rqR-rIq
UVl9V#i&MHE3N-$cM#!90,XXR@#`f)LHmhTMedC8i%cN9j$T@T'""VfYiD*TmL*f
F*6"TmGI%m-(k+qZNL@N[c"`@1DC2+pLaYT,qhUjkJ"hIapNmFi[be*6G&1CcBDC
%mbqDr)Kd8U6RE8Y-FDFB,HrAd3,ijpTj%D!'A1G,+5VHMl9YSP*#b)$Zep+E8K&
E2eaD4SlX*k)FKb55I%,jVT93AMh1BV`L68[0$DP*3jM%k9iUM9T(#)%l&DT!h(@
4RF@j,KRVkqQb@,"J-+#8(j0$$(cQ`aF6h&b0Y5Gbch("e+S'XL&rpB8!G,lpDFS
XmJ#(B`'T*!QfbRP6"(al5CbXVfGj-5-X&c3'!IlC13D"-#!BH8i(IB6DCYpQdAG
+XKS2J3%%4pT-Y!ri!J)LPb13!0NAF18QXj!!6#QkXUSj4EJB(!@Q%*!!TS68Uq4
D`NBV`K(8YG-MJjGj9JqSS'1TGBjB3*KG0-C)rEXP&PY&-pVAcm2ee!dQC83,&[!
qm$CQFX5dQQj4EG",Y*9ZK&GDYGKY+de5lalLJTq&bGqE$8VNR*N@NTl`%"!FjHk
9PiBpAmpGUbMC#)@FZ,1QMVF0Hd'eD8)!1`Ij`3(iSP98'QBfl2!!&1RY)LBYUL"
P+DV0X2YcZGFXbrKVE`6(d9%[UEjQbZ5TFb%!@1[&0jf$r-lRelV50+ZdfSfbBRQ
8UrP+4PH2pcD"M2@p4eheq'iZGipKiKUZd2(be`jrMJUQ4aK%1&9B)dhrQUrSA5G
3QbJV'$25$'k2Vi65F&Kh4R5Hj@"IlpF"dYYXR6j!)3MC*bH$R3d)5ik+aTD2K)$
c,%A[qKK2Lkp&biABkYql!EAlXF(S13J5&Y*j`DTNI6$`M,$'F+UVML&+"Nk*5[L
ZX$l9Abha0FK`bKr%kMG(DDCQTjlQGSH0M%%2*e2Pp-pJr&%QQ6+&k5,h&ceLrb8
"Q0!LK"CIMBEM@5aikcaBfB8AT*Lb$e$1RBYc3S'f8f,D0e*YBr1@RM[ILm!Gk9M
eIE-NbdDH[QbP5!cjV6lK"pjZ`BJ6fA-LTiqeZFfL*4Y8J0db80cm68+IU!&D#04
49j!!hIcmVl@P%)IdJZeaA`C`lmFBQ1jpd8lP[h6J@2eS4jkiZlG,j2qYV+B$0N9
DhD5h2ePE*6C-'k$23dG0Y25T-3Y,IiQc4IT#LJ0Yj*fIqJA41@5"mZF9*GP"0MJ
#4*%43L)M)(-#H5DGd,d1X`VrC-@UjK6`D1NFq8eZF504[NBc8&FGDA[dS1eS&ZM
$rf-K8P3F9TA!2LU2-SNdZM%DJ%%TGGceUJ"S46I2q(aYFHPriLL9G8AqpGI'cq4
emHp+D+N"dbEKhE*BS1-dkk$CYN)0acUDrkdSf5bPF1RD[%j6+`lJV"d!T6b6&X-
l2lrS,Fa%0d1XKM-G2Ql`3`9c(hJfV,%me3'MAqFRlM*35kZ%rLlLG0@C)9FjIq*
hE`UV@EVV*G'JVP1T,K$1f60E#(AFQcYK`dLDL85%PF3&k6lZj(mJNff)J+$#EfH
!KC'bqCN#Q%i)&30SZ)kNTN5[5IrJM0I)8*,H!0-I'M&*%J+%$J#3!*pl26[V0q%
Zd)VKEA8"GP(d&PMeh-8+R'EmXY0bNjeQiLHTh,a!SP'&9)JlS6&H+L40MEbPP"p
*8,a-E+hfqq'Mp$[a!X1rTC!!-lb$iljS@RC321%N9P"JMM,SGGRJb%T'e-8bb2b
LAhKNM0K)1QHXPK)4jkS[5,M'42!A"4BJAPFLRDPICeVS'ZPardJq1',JbLCF#%G
QqFp`KK3dB1,c%Tr3L&h$$Rr1UZSfMj9,KI*J9H+"X'Pda'+@`H)ACGSLK$K6XY(
%Yr2@G4b0UmL2FfXJ#4R8-rrf'4STI+5r*JNTQmjSU'Gir+RXJbaT1ZN*mGl@GdX
D(#Ik2'$#CLS2faq6BG@""kfPadf#NEQIN!$R'pP6K[KBDFQffRKm2"d[ZQY8lEq
%f*3")U+,2&PQ3"PhC(M`EZUmei(**rJ5'Cm[ThVk,eA-3YRTR!J*aS$M)4HQ@`0
5ZhULGeL+-QKSV8#m2kLpNp+QPGIdB+ra+(fd6KhfTV&K6$1Pd*4lp2am1Q!%R+#
GdlZhL`-kqhZjY3&[B#*0V"r6%mCXGN[d"5eV`U9hiS'da'f%()31BfDAHT3BjY(
9"S!FQ#C3KVILRF9fbl[e#5,C*#mIRXDD$XJbhe,r1HYj`C!!B`*h1GL@6'X4#d9
B'`Qq*f6dT*pGrH8f-2SZ9Q%!NrY!%aRrSP"f6GK44Vq8aRID@U!NI[(#j`VrVlU
E)%BdSF+FUpSfM)i(h-hGcd)K`)SjLKG[l5j,dqRcXI``,k6@[l-(4)&Xa4#r8(K
4l!'+rYB66mrr9Z-A+E9X)A'Bk)r@+-Q8E1J+2R",q$ZpZ'Er8@IHMpGer`CQ`0X
rER@T`d%)Z0-AQE"29p&,RZ$-Jm[I0J$C#8"5`1BX+ZKr#ZAIZ9P,b#[[C4Bf8S!
eX#%"H9e'GrKG"@`IMLP5)kI8fT-c2)I2AeMfpe#R"IJT4Jr0AZPDa6dZ-$e(MHI
#TkPrEI0-Q5N4CAUSI*S3'kkB,e*li'`MZAea4+VZf+((-'36J`rHcDDP+BmU*FX
#2'AUHhq"lhJl9G0e@PcA+'GbG-LD$qRfNjB!rA,r3(EDXES$M1(CAHdT8%F[%M5
pkAQ(PRX(2)DMd5j"jH2-1`V-eHHC9+R'q%1Bmkca[NZE+0!hkh8r1C*LJS&Fq6#
ZG%M9IBM$mEhdIZ*i#F+693ZCcMaBZ,'-Q+5YErEddYBZYL%5MeIX*QTkrQL%!e$
R'()QBMkF2el1Lq9#mFaSKZ4FlP1h!FC82,Il`hj9h[pq&XELhSYSRJ(S5[aabrF
cU-JadLera,)Xb%G5qk*Q,Xk1flc6!8S04$$"kei'bUC@3ciRe#c3X89@1Rdkc$d
A[[2q*al3jD0lq$pTF1C3j@H+)h1CHUm4@a`e+f!D(+VVI2!d6&$Pee#&`TJ,plP
'MBVAr2bpQ'RB1(CpSL398%I-YZD5k5&rb$emY1A$8[P#[864+[jT9b(kdQ8)Q0N
qpLXY%AU#`l%l+hliTM1Y*bjr+T2q%L"pcE'ZTB*E#Tp0,c#FAK2jEk)8l[r#a&B
P)H@l8Vf0$BP2C0UD&[hJk23jaqYk$K15E04c*TSYSN42'&C%QY8Y[,TTQ9m4'Fm
'NP&ZiILc0AfMYAb%[aP0FJB(+k#l"8$Ua+BrR,1qTpL1eKH%f8"4pG6hj5Vmk&V
4*54-Gc-8-UKN,KHJ6R#KJQbjD5*1eT'IpZdk0`'5+SLC$fUQc)EH+0CjM+3`SM[
1[[hG$'V'45HUp4!#qa%PY-+`)6b5YLr3N!#L+'6TQ4&fMZA*U@UKjNe*KDGNRD)
S)&bSk5K()%$b1*0ID9edNp!QdHR-$J5%VNGjU'*5a$h#mSPQa-,G4+C1S&qdl%*
q[3!3(hERhMk'4+jQqPXD8@SRXN,-GKq8@$HLrQDh@$%MiYdDVfZ$d$A!)Y*&&-D
@YPaq"@fcahTV6,5[N!#JE[1Hi&D`h&lA6#fUd1'$Lfie8l6[6STiDVH2lVBFGV4
GH6qV`*4PF&Y[J-q@8N+'TXX$"E0Ve,#0(pjQQ@N-hXJSjRU0Aj@bNBprJrKGB,X
@q5b)@BZak&&(8XB+CJ6[1AE"qa*8aBfEd`&J%,4@bSXFZ06pSkPp'EMp81Z-eiF
l5G0YpU-KA$RHG&$[3G8I1(DD,4R8)+V#"*ErP,Sh)jmE-YEHbG2kUP@"!1dd&EZ
SSk(c9*rVUEVe50"A@l`cH5F%$900DRSq(3KY"D!%NJ&1-KTeqhh2ICU0"-Ll#CC
jhX1c-H$adTLIrrcSNYTkYN2458Bk2Ph-JmPlL'%A'6Pm)1pjUBTNX`N`E9Z"aN@
I"$kdU0Q5Ia@53S&34)V5@!E5dR-1A)SlTZfb-+rXI[jS5Y8I6N@jea$Gp4KK45r
rZHNUePKJDZ#[iUrNEVPe%A'HNIj!V&4B"'2L#kS'E$qZQ5FrjGcHFSL+XJPQSjf
'"92'V*H!aC!!Vl&!SB@mU3lHJNimcfc&FIbGMk@Qa4F"94JM`-9HX68P43FGQMZ
G)&41C2q$Gk'B'Yb0ZSL69DBYTmjQ1rNS[V,6*TiMP$cmBG-JQAFqMA(EM`Ai5c,
qVh5YPKiXNmSrZDqre1b#GLmlM8PBNl*i@R`B++9REIVXZ)"e2$3FZZ@J3MZdIjE
XaCQqrB81)NSe&1lhLc4Kj*)G11Ud$`D`VJ-UAC-c(MI,k5"rBr`2"md(K68GVqY
4)9JKr1$&`D"c)-,8+S*4[P5q1jVXQ2M))i8GXrS(0b(driCHYFqG@lf%03QE&TQ
,5,UmYf,ePL1r8#11@(,"9YX$P'6@*$&06i5T!5!8Qf8`0R9Ca)S1ED"Acc$XA%0
#6Cb(cK9L"eDGpG$5@G*ll2'S0VA+X+d"pbH'Z#-dlc5M-VfRGI'8qqhq+df,q"l
6l$Sl)Ci`kpPM9b4QQZp[Bcj"0[93ZpX4P00+FqURPQ`$JLmNI`!3kM$eX#lfrQD
i$hC$ACJ+(RiK00e`KQR[QC*U"PTCDdYPL#c0VGbTq!('DHF45S64CD6&ZdZ9M29
4U0K)L1dqA0Y,0Ff8p5ZMeecF#RdTl1MdRCUiAh*kJR9l)hB8dV&9GU(-#CKC%h6
hQR)SKM)jpE6ach(rj*C[)-6peZUQJ*!!5`Hd")8E8pa6E'[S,l6(,*b!Zp08qmL
5`0kT#`&TmjM%mC[US22fl&I9C"me#lDE2-hR+%*!@!Tl5U5+f)5m4bMJ8ieVce)
3p'reFUh3)MYG'd%R4bEp(Xqh44riZI0a(@)J0Y-iG`+SP"5Fr!"6%DQJ"NQC-SF
4Illr#dAUP,R[V#4!3b8&TeANJ54E`YL80'UGNV*KZB%k[pZ&03aAm1"YN!!+LIH
3!$,DcJFi'J[MlbR1ldd*$"kTK`a&A-,jmJl)240aqF@"jh*0'4-#PZdFq(#pYDf
58N9@I*9@6N`#-%c#aXD+j@1&&lZ-0rq0HNNDDcdY@C`f#iV')6'qbLH4E@`8BZm
CBb%+(,3!9'9ZHjS0H$T$63rUlN-i2TVI@3h2$)C+`6IK-U2-jc-4eV-H,jmVP!d
j(EkM5RSPT@rp9bRX*(46&kI&PdY+GlcB1QHDj69kI$-#&a+UEkG-#dU[,if)$Hb
S18Fi84'Ed2G3$LD[8i&54TcAcbhD`6VDB$E-ZaFm%2aYJ8qAlqb$cD-hYA*8ULX
i@ZJT"aD*66&hL(,lBN*+ZheR0T89U-MJKHqF#hR%j46LXL9%YG-Mq0&Cp)S*j2f
JV8rGAFieSqmHMT2T#UNNJr$*5'4Gb&E1RhHHR[%r9L$G,5'mdd*U*$Tmm4+lMF-
N(T-L"D`Cq3C4NK*HEPIjPL#!jLG1M@LAi+BRBG)RfdPHTkE5P%8e6Y*N+4)HJRc
$)ra3i"+6`*5hXUr++eGFQ$%,bdR!bM96PNZP+@mG9,)cb&V[Qc[0Fd4-NpJcN[9
[bkld9fY"h$J)+%-AE[a$@$`485PQ6-jIU0c*4&U$62,9(!RCiH9UYaC1TPfZ$fj
5P4TjS1B3pf@6N5Y$EK%ZL(h"J29BQrY!'LlfRZdFC`Mfm5h0-9K9Eih8NU-c4d3
Pc(XP88[3RfX(&ZR3"8Ki6L1&h9q&#d,Sr"aM6DV9Hli[h6([9hX%4XAdk1"CTP$
G%9f*XDCK@aXeM2,%RL%3XEfM1`YRHpG-D23H4M2fjB#Q&I&%b)1URVVXLZRjET2
fMVbi@,B'X*b6U,eYa)*V2*@bVId,+$B05i"N1G"mY#3YSSjKJY@FkG1FjL4HeU'
j5j+Z)p8"GSGQI$1e-#Q21UZ4$eQ`,NkQ909RQN5LPJBq!Y&P-,eJqdfX"dR-"RB
@S`kHrl"Xhf%i9(%TqC!!A'Gkh0P+q4mp9'!Rr"(b#8M*qZ45)-TY6FQY`i#*kBR
(&M*!X3A%,j3#BF6p(S*r$$PC+`fi5q"`jia(GcI+K10SbpR!br"YhR8CmbNYiKL
8qrd%M+$HF$"B$$AMirEEeV+`(@`A12P,cL2K!*p5,T@K4,Z5SeLGdENR$`T08+l
INJ$IX$P@V#q1#KMIf5Y6YET9+GY&D*KDD8S"qAK44-9Kplq,P*J*r*QrGCYTHM3
LJ,-1YK-FEShBYVKrb6pidMZf+`lGhh8+F9UZZ2LF#2cVq+!NUI(8L"kV%B'kfa*
ZS5A0PJ$Sae)*!VibCk'a5803-mJ@f93KYVUJ&4`PZjKFCY`#rqfT34PA1*8FFBr
I@NUb$E6[jFdiGVfU8Se#*ED,dmiY2p3F21@rT9f9&2jbmf1J*IG0fBZ$Yj!!SC[
fAAV8J&ccB*`45qLbfKhd)3YaUL*S)'Ycda23X%[[!ra@lm3K5KU9LKTd4K$EBdK
5phkUjRX)hVI1q4IC1L`+fbJ(3I*TUhq%LcZpPUk9Q&#kcVdaC'ZY6'2l6q)B*cE
@dj10GLApNAZBK*VhEXfM2f"kiMGJq&e(16JPJi0Z)KBj43QbC&E&TS8FY0Yd6Jc
VaE,$U!bh'S5B'qbi@6r4R-!qE%fB4Pb-jhEKQ8I2LakjJ#U$L"+lP&m1AUTNe"p
lGN$ePRMr!I2J"BFqJV`PTPk3!&GqeaadY"e"fK"leb0@+UqX)Xh$Yhf83MlI,KP
fcH6Bkf!hc!-)5S'4i90Vi#'(8+8Ih*f%Qme*K)&bSI,TB-FZP@3,QRUXPM)%D3,
HYe*D606J#H"44G+eQ-f&r1q@A"hGY#L-IYX"Y9[+iCZPbbS)bd'UX1KVDHNC[mP
lra*m@IhBIb*LML4k$V'BkN'ZhcA0eGb2j1,i8lX#QqSV@YLS%c+UZQ*jT8089%'
(+pqEed,kI2I##iDVrmVEN!#-HEme&I)lk1aaZ'2ck"SEYFX)k4f&401Tk,kQbJ3
4D3`$Dmc)+UX[i0FYX"DU,#D5[I-*"TrR'MS+`aj8GHcL4'9TNp+-DH`kJ!H8+kf
,54EQ-d$Tf5"[YRN1d$CrR%X(!mqqj`C9&TlHCq(!MeUlQdGi-(2#bdi2J3e1JY6
R@HKb0UhY+C!!5iL[%,3Pf)pFQNcmBf!1"22@a(hh'&0jAkKrBiEf(jCpYbH+08P
H*!!H([T18QRia9C*fUJA)A1hU)M%$jqL+`NhBh92NT4A890GrjcF-)c3[V)ZE&4
CR-!T9rES`ac9D5J-22ILb03mPN#!hHqXVmR!#HTXf["MXCeAe2eVUhBZZm9KeQT
M1G(BdMZpX3[Yqi!`2L)!F)0J1[TL'UKG(K1`A%EqdK&IH-QL&FhLErYKh6KqYQH
XePmQK!KB+&@DY'l4C"HUS"m$jZ"L+GVqQe-,4bI55B5&'G[MU(N!NK"XcQXXpJ9
c!eV9*0Ac1IRF@8eill)1paqD9,%A$ZAiYj1HF(S5HA3b[SfcZ-13!-GF3AI$)PF
,",S@e2Yl,3%F)'@&bqQbXGVQZH4+L3)&3T!!D%C9c(YD-)X6P!Jm3FKAPLNUdHX
Je4TaPQh,ldp3X*k3!#$!d2Rl1PpcH*8`H,j'8VGi[%-BLC[mBH8dkMpK%jmY5IM
-,m14qPMF)+YK,)Tj*5i1(VXA&q-99dpDS1U"bI'dqD4r'k2[%iir'j)a"MIrPb*
5b,6#)Q%E'*Pa$k9A*(JYI1F+[r5q'4@8a,NQQmZ#NNamS["D@fDa0'Nfm9NLJFP
+aeU9lXf)1CECE@E5Vd'Ej!&M$iHY@HI5diVYUh1AjJ@TEIbLTTMirUK-GNC9KP[
3dJRV!#Sib+pkCCZ`)Nch(JEFaYEc`jc6b4V*iIJF#5-$&+SjHQST'eBJY'imMSX
C"kQXE@-X#Qii49fCGa4k*,$Mra'XTfU"9%F,#hE#(QC1&q3""BNQfMq2(10`bI1
lrLBdVPJ`F2@"hjV1J&5Rrj'G3)qc0)`pCh(LDS*+iD2li8Y'`RA9p[arabUEZQj
9jjDPD6a@C9$CZ"MU9+Ipq"-6)G(K6U[c3jM*E(PJcpR[9qLLR%P-"0-EGT,0N!$
(GDlAU1lIlSa#GHjZh%bjbXhl%AMhR'iVD6qrDSS,Tb#XK`I234k[`kXha&GIR,8
A*pJH)S9LZ5h@#ehB1,$"pQII6`,RYa@9k[)B3#aVA&dTdmZTVrB-ELkPkYIG*Xc
d'lJ8B$eErXlQd%[L,hdP$ChYaK6JCr)2jqaFm,8hXXmU8)MVfqmVGc2%*qIK-Q9
,`p@1[&cAEJBdj93e3GHYC+ZKD26Jbe6--2"i-#DH40QZJcmDJ58K`cC3fIMIH[M
qpZVMjBpqC`)jqAM4S#lSjIUEDX"(bk0,4N+1G48DEFBYRDBRkb6jl96N-F@md@1
EFm,Nl-+[@k3ZV'Qe1KE&))B)"ac%l1"C191X2P)-a$T4Ui%[ZEikr5#SN9d$h0M
b+5jM,+(%DUNiBI'q,H-jBGM3Qd8"FF`%+*U!EF0b3M4''3heH,1)K%!GSrD6m[1
GU-#c%"d-DD8C6$e5)04Z$*R#P9mAHb8"kAmqCkX!2$G2b!h-0`kHj9M)pLfG%p#
e@eQ`YGT6prflek#Mj9UT#q30N!"N!(qq%f$BM,p-`*5VHC0I`LSpKU'IUmEN30$
ZRiVr@m9)+kdb#'AAjY%+#,06#PqfKiRIQ9Ycc#ijR+21j'GlhMZ"cX'E%5c$[HQ
k0,ca3RPCPDHULH@(VPH`jFR$+NCJQbYV`YB3b(2QM5D&j#VXia&Fe8Yhi*Eh'Z*
mr")0A30*)dTQi-cF$%cpD,DSUAk@cVVF5elm@l+ZFp8'iHBa9-(820UpC*lGTF0
M6eP[M2A'R`&QIYJ4LS@B,@+eR+aY)`8T8RUFYbRmjV`5eGaT+52#(Dd"kfXJMkk
1j4fTlGe['CXeGUPfATf@$1jB'j)XE)D@!TMdBTB9YcjQAZK-E@-6T@HK,,-&Y*!
!)Me5d@lb5Z12hr!cBXSjRK16*fE)M82#Z%@H2IVDQ2F(Bi&QmR!DPX94(Vc4L1q
D4J)&@!aT62dT*@(KJ&#aEM'G$EV3ed#+C"UT2T0CrK#MA93,M[Q5d4lm0DdFP$S
bfCQe3[mZXBI0iCMfl6&fPeARH5QNC$FX2#KY#,)T#'(NNQF3V0IKbJIYVeY&Vr*
FH99cP+'PM,(++ahG*M)b(8mDdM,38&)c9rHXVM(%i8I`Lb`Z$Xc4NiCUT"6YQ-+
l`!baYRYiMpr5H3hlC!h2MA,808Y%RI@cT(DjLZq6rZH0'!RCVBj!BI56qEK"+Y4
jpaE!#9*5A8p13c!"5eMf,G)&8hRb)Me4A0a6mFeV0,iF""[bFS!-[[5cB6QX5em
dBZ`im[4LLF2P$#Ge)6(mNU(Q'D)d%3@2MQbb"mdLc54)8H9LmIL[r0TYM1B'M"V
6KmZQdlU8p(m[R,JZIN"*[r$6'$hFV!YZdb$AI$ckCAkcKZXEYc'ZS8[)U10jJM[
l-IF0HJA#5U,Yfa)M8ZZZDY9i8F%$2JNTcYZE"id6J%!fiV2!Nfk[9!Z(K%CE5bB
Fi`c9FMDi(%$2f6M`Z*NDFa[dCj!!GA[*RT8`lbrNIUjP$!f!ffSY1mFHSShBaV%
YTk&RlbKaQC81Z)e4-mB3VH8c*"Yh)icPfT1lQ`Am6U5DPPD)P'6m@lfDHmI5XmS
)1)Udp1McS#e!J$-CaTM&h4p+RS(H(9,[JmmZR2$a1@3dhr4M0`KeFdP[,RcY*(-
(!Y#9l&)I0f9'mPprNpB(0N)"BEGbJeeN"JJPCD("hfKkM!,3"la'$XlMe(m-4+)
UMa5!NpRk`l3EqEH'kV-Y(Y[#beqmhqR5Lb1N6$jN2BFI3Y!'EQ4EN9")!r3+rBP
*V5j6Q0H0USJff3CK!Npm!-3G`Cab!h(X"G@C+J1XpSi"ibN5r*c4V#hR&`X"PiA
ST#P+@TDJmYa@qX&jIM8'5fY)&Fe"ik[SerQZ'9*H&%$YJ$8V,fk&EkIcIM1+jA!
HM'S$DHZ'5MS'aE`ddk#a&9@M!`YKdMJ)&5pDNPhVIV#KeB5i-ePSpI&ReKRBcP(
03R!i4@JKP&F%`H"lFA30GCm`ir,0MmJY@j!!*+"m10h#F'Jl#X'GNS,"9!H$31N
IQC*j6'i8+9E[`)KYkfTM#S4j@db0,STeQ&C'*-9d'l*&&SK,bM)d2f42fjJk2)G
rq(5$C+S,)Hf)XC4c4c)erhPF1LBeI%HmmHARca8'%1kJ8b"mBQd"&p'@cN#`RjF
mf(chYST8RJ5#@ecL5'b3!06GJeAPha8mZ,RkAKifeMfPVX1)3RIr!%%)5hJ-ZPE
m+Kh4%0$aE@4I-iFij80hG3`!Q[P0[9@M9h)XF1-[FCT2V6+S3K4D"+8V"!NP`ip
hpK+mrRG9c'iLG!ATV1%FrLNDMp#3!1)ia1h!FGQSTP58%GDLGGN9Z*!!%TJ&TXA
a&M&&2#l(E("8hKUdE&1AX'PBNlGZP`SIP4UUdmd!3c)[P$+GI3JJHF%kPb)T$dc
DfN"1S9RP0il(I@kq#FB"`fZ1PPpPai1VC6d+P(K1ZHJ4aiAfE[)N3(c4U1fR)Fm
LdT2h8c3M2!A8-lb[@H%9lbj!Qb"l+(a*HiR@EN5dUi,*Y&fX#*0P9`%dmU25X8'
"6"CiI")3G+'ZqqKS`@21QjmF9qUF6(F*3h%l*'NCTXMZN!"+5A[c9-FBcXd+CqP
pB3,6[CPl@hIU`eU[q($k%k5jbkCLhId5-b*ed9Ra*(@J[(J)AbHKrV5e@kmJ!i+
Nk!(,jq5C&FkGbCbh3)*#fU3C4I%R['LcAp-bJM5D6-GNNjcHq3`I2IJqMCPZ,L4
A$dM3TH*EE-D8!Q`2QU(EU9-maHED&1j1kJcMCJHaV)1FXq#'UD2&IK%$kTRN(UP
)b(,,+`kdS9F[J55H"%AT`K$2*Xc[CEac4LfrJBEQ[Q!V299biTkD+%lf-K%C%1(
5Nk@i%@CT9D#S#VC2Q(CpIprd5SD2ZrNC1aIC3)5N`1Q6B1PemM9bKhGEDX&3,83
e*bEhM*TR(JHp`YHaBI,Y0Emq+#k8HD!m!(MlND24Y1UZ19Zd8k2CcZhA8b("9&q
p@SJG9"d!35$eUZQ2q&@c3P['4GdRFLVB$1HFU&5lpDi%c8GF3'N0CCRc&5ZJB&R
*MYj614ceV2DCIM52!kda1JhHUVYcXRQAX$q3!'k+l&I6d0ARl6hiU%6RhkiCXUj
RZ)Le,G2Z1BeC$He8!G&G-Ip+UdQK(JBLcZj''6(JG,iQGBEp)@XpPFf*G-q'"ID
iC%V4(-m`60+6dVZHp+%0Gr&cSdEX0*+'MYVd-RVNCS5%%q#Br*1L2'FDj49UH%k
@,EQ6KD#Nfmf6Mc8ZTU,D%EGeU(iAX`0XJ%SfC[88l%82Pm["'j98KrbFIBS"A!)
kHH!*PXGaq!4mBNG8MaJ!`ZqK+P&cd@+Q8!NYL(E'Fh"QMc&Q6%k551d`I#mFBX&
%rAHKE$XKld0h,QBSd4ZlT9jU[Y9,fF#rk&S"60k1G(ThN!$NJ9DL`r%QTc'+G4R
03jG`$dZ0qQ$DHAG`-aKBm&DMSCR6jj)N"5,eFLXUHMEGYiAKKM9XIfpX*(hHP3M
YEIQjGkZJ"r'3!)Y)4[FSV0j4d4*CcHL+6#[f2CKhKQr'B1TrD-FL'Da-EK*,Z6N
!3A5+X"BB#SN`'*VVD$)ZT)"98HKpJScLlL4Jd"cS5S`,d4#P#j6"*$[hk$4'cdc
VlZFZi)Md!1$YqGBq)C!!HQAiTj6ek@mK*iqrEbA1[ZJT[MH,I$cB@ALQ!6$6[(F
(d(fjZ1)@+MRRqIUPX"Zl6q"F&j'$VbI*5a&#HLe9E'rG3cZ6lB8QkI8Fd$eH9mR
,eKAKh'h@`%e`RX(EU@kda0N2$BNb[cZ22BhX3b&Z'!4,a+paLr9*53b4`%lMcL0
E#29UAQX!qFMG+DZjV0!)#0TF[[kf9CS3pU'9ii,l,0K2%6+QL+4AK0[Qh*1ed@I
jYRNLQ,jP(ih)V(5CJKIkkG%KXLiP5DE)h9`Qj1BT"Aq8fH5pGc1j,h94mD4'eR1
22R+(!M"*H$VFJ'(rL4a1@J`0r'rDDAe%(9(BV-#Qm42bBAD1fTBDAqhT0RK(3U+
*cm,KR0Nm@GE+,5TeQ@TISiBqQ,8lD`MT-&Ah693FMc*[paE23m08(JMiKl65'Y8
be%bGH6"F2q,8RJR*M"@,l,G1m-JhV@JIi9'BeYV3I%+-NL6V5,$c[k69jX#%iY!
1A'[(UkPAA6qUTN@3!-f!mrGrX,kZ!!mN!0ZLlk4D-0E,h4IPh@6#*[+C2@84El-
FKcUVJfKT*)bhiJ%q!C1X6@ZiEZA1ceFJ%-P&`GF)Q2$R3mGiGIaEX)1BAMd9Vi`
HHhUFV96$i!RU&$D#-R5d*GKj0f636$CmN!#ek&5EJD,2iiHCMVCA8I!N+lH(T#r
"aZ+Z01d@M-X&rfR$1Se"X06!Q&,HUDCC[$D'[&pF$%I-*IMqaZa)cKhbI`NZh9@
-!8L@mISRfE8Qa(,8H%"m,C(H9S0pEEK)U'GPb-DKLV[(P$'dT5*SBTP1%DfJe+(
T61RAYS@D`D5!qB(EjIVJM,dPJdi8c#c$El9ier0l)JrIQU&RqkP%`h*PXcfLYhA
f'PU*EpR%1c'GSKS02[b"5LGK`#%X0%!j(fd`h8X&3r*&lYj"DePQL(BqJqF9'Zl
ThMd4TFm$MRIU!YAB*%E@6D@XPpr2(,e%jH@CmNK24BjdfH$RAMc9,TiR@jQJ[',
8mkZ"Rd,8jU3"XfCaaAkGQBAZ++'ARiRDMiIQA`lBSm!idJY3[hlk"1!k0QPV85(
md5+r3$Te91)jQ'*fB%AGV4A2IY0l'5X)F@pM`EK+I+A8'CXYTl-3epUVC@#Fa*T
FZbDi'q)NK4T4KdRENRC6S6mX'QDKYJQ1E)cCR28Qc'TDKU*,C,G8b#,V@MYr9e[
[E-4b*d2P'NYE1l0JlGq(B(VI!MN`P))9,'6%V3hhA)NbXB5%Q+5+GChKj`d&I3E
Um#rkjKFR1$8E*M4@V0kB#h+$SC+pM`C40LK@LT15&%@'&6G#4kQQlFLhNGR3fXP
G51)qcmA4D2JG5mr8"K4[i!@!b#%0(CPSJZ3I"fH$J6BRF@qZ*%#d)MHQjcL0p,(
9QU[pRpSiSL$)T82INNEH$!@dCPLi'jIN&04piALdGQ&*CGP@3V3c)eKqE,E-AR1
,YkAZ`fLBA0Nd1"!YlViDZlYfN9B[cYCcE%LYTc5QPBF%[k'EVEZM',,8-A52&#D
c8-AiJLaX2hc6(ME$NpJeTUfBJ5kDqQX-Ep+'N3F9S-3mJ04DNF-l#LYa5,"lUr)
J#3`jX(lmI#p#jUhblMQVB(,'YTFU(damm2Fl-AAQa&+%20qJ3RilqPdi*q1NmEB
j`88#)$bAY`Xrhh8VN3NjQ0USCH)lIfDL`k4ZXUMj"-'fPVRl`DZ2bDU'cC,)TF9
YIBf((8Elf6B12E)25rdCHZ!hdm#!j@mZ6G9dE)%hDjk)5`Z4k1UCrBM-N!$[R'm
ABcUlrqF33+BS6cjV")qH@rFk&r@3!""prIK9)jJ0`&))GR8+S-qpTbm1AR+h'XY
+J!R[JI$cc-aLl#!Y2HM0j!c9jdRCm80Z$Ic4BG[2!)@)fBheIb3pFr8%e$'D-D`
qXMB-P**jZ'`b&'&(31NlClcjf[K4+H'5mNek'PbSd#kJAhZ!`-HG81q4C*4*ML#
M)eqQD@!E1&rj@%N638il2#qN&d"Vrp-fJ!6PPj(A*cD4D8[M*0)r@8i3(&+FC$Z
fT'A$%(U'UY'CUFd2pIC"Gh6+3jPdrqhMfibBeG$pU%UH!apeeij&YPac%6Klq2L
Dh$'Fj1TD1Ci+S%CJ1ZIbKm-Xk[fm8"MBp9CfEb6)mjk!qVBRN!$)r8-L5"jQbiP
1bX@$#CkME&@k'IVbbIH1L%`@IY8%K4HN6MrRk&jL8+K6a`[Fqbb,M-"+Naf5*bc
hGqYR)%[b"!8S&rFCN8hF@P,i5*N&jM(mlH,mN!"BclEp`id"8CLZ@TdAYMN+$3,
!4-N&AHJp@f9S!`qBXHf(qep+Lk8Yr-RTqa"`rD&m@[Fp$3FQP*N+UjF%10M9%6e
Y`(XHdPiIEB#$d0ijEFRqNLmjM0qVr6M['RK1"jCI+"@3!1bS,#cSU*S)T1Im$Vd
&4iRpdIaXB1(hkdHSrSl"hDlZb%2U1G0G`@PKVD`ZcMGLM#ENmQ44Mh"[P!GSE(!
(E`2dZY2MNmCa!PVVNC)!mffb(l@qEC[k(FTN+09JYF&-aabR(KFSD08Gm,*i0)-
Y5eiVl+64QASK0hi)'EL)'!6V+T[9S[RTXYG!NFF#X#q"!a'25@m"rm[k6A1K#%p
"U*D'@H,4UqS2`pIM5J2K(CXULbXeZA4ZI'5&3eETGL#"--FXf3SI4GrEVpdNEhR
,hGbaPC3M*ZSH[kFm$T+5%,P'QqANbD[-9fFHl@Ff[dL-j1K#K!ZR%2DBdG,2pe*
HBrejZZSf1i-R*L'j1"6TJe#ahRD3!0J@H`"48mVXDdN"@E91FIqTq4h`JXe[@H6
[DQ&5"9D+bAVj$6UCSkrVCbj6h,G8LmM+`LjF8pX1-#BYd%GLa+B(cKlq"NITmlp
)`TP1bJP%`*XTaIHe0laF0R!XCl54*Tec`TGhXfCT%SV4JL)9Z68#R!QEb8$!T"'
,`Br($%mAXfrI06dED(D[3U&I-(P[G2hj#2qicURXbUSUrLir+e1pPLUq*85TP(B
QH4LXm-,[Phm2FmFrLrfhS(j8HS(JHR9*8*S,!-Y(&&f3!0pc)k32,9i1)bSbr26
Kq6!14FBXP,adIDREa,F8fQ$2)'ab'`X2D4"8-X*R58LKHYM4fb-PT8V"e,lIQeE
V3N[J$i-!@Tk8*Li!GR4aGiAAL1L3!&9Ac-H&BA$08`CPFk,3AqX*U+[%SN2'TXU
)"i*#qk@mdfMB)04,(m3!rIYTK[r32IpH65R05lPE$U)Ej8-JVD-d82EQmMd5p!*
hTZ'[c3j4+BN9!,2FlcpGlV6L5SRd[kNlPS[6hNe-,iIkIJFp$8FjkbG@Q,'BB%K
1'f'!"Q(!'ldK'rdVA2hX4ej0VEjkm6VCm[aPT+JQb4I%rMjj$#L*MZjfTY+#l(4
-m-)U2l'CZk&N"U5dLTF3"me0-AiRRPd'!K"&NRBL-KBJ%NmTYLT['&bZ!`@krUT
$eN*JNlP)*hLX9,ZQ#Y*%NUE'jH5I!LV!I+qZd-1l'3[8c*`#b8pm9Z0*,Q+LTmD
-!cClEi9d6d0i,M$-,UF'Kq+P-X1K!LB8QIPYliS63'30+1+R5*I9"@E&qq)Y5%p
Y$EI&JXA*qHHfq`#TL$#-N!#KT2kB%L$rC+iGS#I(SK(19rk"-"1XF`8IbN&R5aH
4eLVHl9kQ29)'cZP[3M2[$&@J#jqj18m&"8"r2,JRlRE)pKM%EV(I*6A5JMMfk-L
KVNRD!`"Pp)8CR8b1TJUZP8L[-ESe8!qD`95(E&&YM&irY8@aMMV1'0#"ea6JI#c
VK)3#G'"&fke[)[#K@%P)`U8*DE+QE5@Dm`b2Imfp*Nl12ZYk"(alE%!$af+k63l
e1Nhe*Ti@j+I)CV35aLe-hHFm8,if0[V1&9BU(DY'MS,"EA4VD+i$'U!-I[%SPI9
)4%!@(h+9$bpKU-JjDCkdU%AMV4(X%U),#6DDP"HQF**$@kC(NU(qlM"!%6RF+V6
QV6U-9'+T',b,e0SEYUSARFAPJYee#%INYT1d)K0$#@keUQ6P)Pe@`9[P-(eR8q*
P$Xca2,EAIm8`F*Y34G08+hSc-"-)dMQjVY8db`HPU+YXGGXXSSA+8IkkMS(XqKY
A2ZpPj63TN!!P15C%1VHf+5(5k9U+FM@qp$"@SmT5,aal0ZG$4PAc2V-(4i2r96Y
MfLi5KmchG$"!$UVQZ%XqCfTd#&r&Hp5qmIm+GZZTKH5*4CaH`kMr3`k192DN8Tc
V8X5Nq,3+[iE,UGRb65&RBHBUQ9ee`bUP-TNL'LHQ[`XqKr-D5-FFU0lZG`D%rY&
pKqF%dA#F,9"!Ib%#MkE5fD+2TmHiHNk82DrR$Rp6DaJa5hMZeV-RIZDVfYL$Zc0
3LZ&%[lEcm(hpR4f$JK`mRQT'()r(Ia2Y'*kVDLYYL&!V4cjM!'R#VheCTY9"4ND
@G&[68XFR4DXfB&10jPQ0Q1aCCZ"YY+eKHrS$1V"IK@!'(#!Uf(cDCb5d@N%m@8a
2P(INd'F2`jVmDK($Xk&AiUNQqUB@G@X5R5qlMhp$d4UC8#APDNeiTiPcE)r6&`5
[,kp(%+@0dX$-XBkLqihS'%@,pX(&IFY9DKFIQ1"JECeeYpXr*hN,cRQR9(C*5+"
Li'pr5$AcG@05l!U+)AI+RYQ4rpIjce9j3"M2K#DND`c!M'@N"VKbl#5c"q#*mmS
9&h&Q!5bU200'@[A))[!k-+T&Y9EqM2)kPrEHHY9LmF#QabC"0r4V0h#F(P-+ppQ
bSBQN%bcb6YcP#SVT4dN42)`Epajb#Sj-N8#&BM",'bD-2p%%*2Rb#"5#qDY'%)d
VIdQZLbTU["[b$0V$EHklpHq,r`-hai[fJFEBl&qm``dhM+HMLk"T'8lTcX#l(Q+
j&6S8Jc(9JqlHTeBE[#8D5hAP4qMmT2,if,Sm9[hA6+cm#h86J3`FVM0B4%0IM5`
5ErrG($S`0qrf!4`rcG8kR!i'm!l*l5,$&#BSKIN1EJmDm3A%+#,d1'1$FJAfN!"
Al"VF)hllr#eP-Y&YeEKC1%ZmRU`B*Vj'+JKDZEKC*e8L*6MT#)ci60S-Bh2!LXi
M*"05U!eeCh#caaPbLeD+(q03+43!TriHfQ`drGQ')fph,(AfePIA&T-k!e'+Y@-
FULM&MqS3FdE(k0Nr!d$6K5Pqd&1'j4AB(#pa(-X,[)UY#KhJjBXqXBrhp$X2UD*
bMVA5Ch[(3f6ZR#K4pSi*V$hV[kE&maLDD'4hd8A@djkejXDja"mBiDp5f!)+`hF
IpX,d2lem36q3!-Cb"pJH"*S%c(5IDaS8KPcCkZM&`&kQ[)3F%)pC@TqT6PLlFpC
[(8HK&3LCk)'M,RqY3Mh@IULVPLK'qUdHDr"F1Z4QYiq-'1b"Eh&Z[&fEr6)X[#a
`ASDble8d)ZQZ+lcfqPp0KZUpAb+&SbXQN[4+68[Xk8)[A24Phf+"@bi("JBh0q$
id[Ypq@aEdcl[I'j1kmbp8Q!K'Z"E[*Apl3lmRQRSY!Jp,dTE$NCP`j55I)4e3H0
H3[SBKmU9`+me+5r8Rq+,r*3p*RE'[86cQ!N4ThrRC8L54"hl!Sk13q@"22@A0qP
jPNMdL3J,2GTB0dVeZN*D10dESZ%bYjQXDmd`L1"pCH@N2!)*bAfF@M3(3TpB"j6
ZRm,pNi-lp`'%40Mi9LYJG3#BdkD)[eIf*+&8N[HrqRD5!X)e`N0IMK+dBmh-fH,
@eVH4V3!X8B[B`d@pSP6kZI@XU'jDTDXS4+a`M'a3A9-J,3bIM9@IeIU90C[RH%[
QY3ZV%Jk3!0N(2bd-*GJqf4Z--d-QV`1L%IB*'3&Sf%XT5MA%!8l'dLP$#$&C+P3
C@m3CMM$IUMZ3!&E-#b5qB(BeZ,#iYH,+h12jmeAUc+U9$3d6*P"@h3G&4d$d*#d
crqXki*INAC[dCpQ*!-MY)FPS)D4`J3EaUC!!LcXV88FB!Va"TD!XE)U0$*JbSCS
ic'e@AS(SaU#YPHTVid(%EX05i#cEX!C),HXQj+T(k-``X+j#eB8A+!32eCB0)3+
rGE(DC[mJ-hMe)YT3+DSId+p'J5+'38!2,AiPl4Ckp%$%ljEE85k9kLmHmje)0Mi
bYRTA)$h1[4Q1*,lmDIih)f2&Gd9m98C$8fU-H+-k#46l[Q"EFYb3!&MCZqQ3!1p
AD2F%P*%(p2X[IVd'HXBZK0b`RH$FaTGHkmH*8R20M$GbBjP#mBrXP1q&('D0EQ-
CifGJj*Tp9IFi'c3AVYS-k-PR%fFk"#AT'l%q30@e%GUpFfq-RbR5l&Sfe%JFa$P
*ESCHjiU0l3Yrb"M3R%&LH#XQT1PfqHCFRDB[*96d$IHf9'V%I!Z6Lk83(8)C"!B
U5(C8f1M4hV*4IpmU0qG[`A,2X3H+Id[SGjF*fKpZf'ii)+U!"-TPVI"SQCcfdb[
hDa65CePbY+pl$b61XZ"$[+hb[e""48(Nk9i'5j*SK)@H!"l$AMr"L*PfV)q"APl
TjMPMl(l`Qfk&jGa6Df0SjVXI@Hrb[KY0PlUC)*EiSVf*abG3bJ2RUY(h$c8[mb6
RicbL1L8+E[Tp,4h*4e5PHHblN3beE`&GV+5b5i#q"PJ,fTF%[*SbRAVp*6l$Hm2
jh1N1A*&*I"[a(FH0I#Ra9!J&c2CmY)dXE2dS9J9j)j6!CAN6+U-4$LCA-JbLNae
XqFBTfjbhkN`#E8G*6EFrXh1mIF!VZHETrHCYq(Sk64lq5LcbVff6hJc&e+j4I4p
&FHcpmRl&pFP810dmRqP`5bDJNlEXcijBKVi#Tcbk91!S`fp&)!fm9$QBieGZIIB
M3P,qJA'BU@TK*6JL[A*K!khDl6-)KC0FMl4S!q(eh463-RbVabXFBPGPND!2HP`
INiUJepb1ieZZqiSiI@Yj,HV&J64C$FNa*0d`mLmfa34T!&!Gl2#"jJ$h04`-MAD
1V``jfb0LKbc-MG``eYQP%pc`[4bS,&I9ji+r,BZA*RjM3L-qf$"$cc(VNcc3%!R
Fm[P4aq"IL0bSp#S95kMN"k,T*+mch$QX-R$em2[L#H*CT#@IAIJQ&DKk592D$hJ
@kbLPk@6DZGA!iDX-UD(H0#TF!AUfefj#I%b+a0C5JT+!kkNGKrT-MVm'2X("I(r
",k*0b8+9(N9KbGc+dcLr+,9RY,pVlapGJ%eMhr"250k-$$K'`fXDf0fc'M3DQ8K
![XPCrJ+"a%2'ASSiYbdGYYa&Q'e`9X64S-S*4[Kh)hCR[)(*+Y4$pfZ5@l($Yp3
Ii!#2RTdHC4FZYH'*EXAm,CBa*1ilSpqcR*(VjUAq0EPlp&'k)dBl%V-ITlPKB&a
pCPJdGG"ca&[bM[[A$c,$m,UV586`1#d-"N'N4[B!QR#62LLfQ6"IYd#%q'"bRB$
6i@@j)Hc,CVK6A8'rY)L3!-8F3-GU@S10RS5Pm[6RKdam@eP#*4r8e'$AV'bUG+M
mMb-h4N3GKrKqEX-#A)jXQ0`+8UF0K,1U[aYpN3b'mV`J63)FD#p8eC-j1dIi+b9
QELBUq4Cj0)XNCVA95%$k4#!9(k@3!*3MC"6dL(3["QaUh(#CTRf'JD@$!FR1lGL
bTCP8U$Yj[9[m*45JHBLQU[qaIjGKXZ"1l,$[fDK8GfjE3S53!,JrKT!!akB#R")
Z#K@2K4i'F*khTDK4%U#rq#-d--9Z)0RQM#Sb@0k`,jmm#$2'N!!#12lQ&*[8j(D
UJ*!!j,!fA6Q8QcXB3*0q`1cSbJrDb5kSHUEkZ(XMCre$`&SJ+pSc"kD))ebh9AV
,m3HZEhRckA$U-'RA`Cp*!+@3"!%!!%)!%,JMh!#i)p`!N!-GTJ!!VN3!N!21!",
lr`!1KAJ!!$MA!*!%$`"8DdaTBR*KFQPPFbl2J#jiE@`!!(2"9%9B9%0A588"!2q
3"!#3#S!!N!G#`G5R4VU2PNbdGRr!9SpN'Tf9[3#R#mE&4hqr'A68ha66EEc@HiG
&6c#I*pYd6E!Sj5NK'9p46VGp,#QXj@9bqL6i4I9JP"%T8j38PkXq,880T6-6K9c
!+2pb&C@iN!!dr$`+lEAd1H3TfU,bE)!lRd#"PP34ba'&C,V1SZ'XCZhV'hcJ3cI
eEj5(`CaTGq%!cj*DA1j&#N"+Xd+0(EF1N!$E5dR#kjG)5Dq#kAUGc''@XV%'li6
@q(im8C(NCfZA'R%b"P8Y9'Ca$Qa0bG,S)3bCMp(MADh5PlJ&mC@9-HE09URD,!-
YI0'**9'1d2UhmP8hFjSN[LLAV"qA[ii%Vr(0rk2Ff8c"ZM-)l6jiMj[-#'$XFN'
iNb`0pQ0a(DUCL+3f3dHBR-ZHAT!!UcChBZ"*eUZQBq"C*%KYQH59@pm+mEappAh
G'GcVDrSl+QSZHC8E'DhX'mm32@flV&aj,`IFPBb`(S@5[#`IErV%"93d,S`XiD2
8UJ+pGjcV"4Q6+bU4``HX`-+j8kL$)lPM)ZZSmUI&B&GFfl5TUm`H$Dq10FVNCbi
JRTS9Q&mh,e3,*$jHd"c%'%XY)+*iXJ6)9DPaF0bFSUHDpXYcq*C1)HQ,qd`@p'2
SGmU2S[lPSA#H'ca6V*6D@1l&m#!0$3QX61%[1!Am8+5bkKHH$k&Qf9#+MSFKm[V
)k)F$4j8XpKJmq@kIDHE,6Y-B(earY@+Z2%2SHV)[bR$T$T!!F-pRbJ4D6XrKVGQ
m(e(jef+chbdMQ'`lU3Ab#rBk)0ILADM2E+`A5Rb@D#mSfZX)306[01D'rc54VTJ
Q@el(rZ9)N!!Zb2ZfN9LAUSQCI&YPIE&EGAN3GRGr&9!XL,AGBTHe-ZQa,TeDXJa
'@RLa*j3IY+aH*`$L'hc8LcX!&#"cTfK2$0PVpq9#D8fYZV9CN!!Qp[i*E*i5(-b
+QR6Q@hBbXX#2G6N8rm0%5**M6*('eBl"D8&4,R8Sal6mVbdRKMNM2GrK3jNkMRX
c6AHJ![#P5("U9Yf1-(d34QA%l)Za2L%P'KUCUpU+[lC)p'(BAU95qZAfR9#B(XH
U0h5XNN9r"PBT`1ZiRr1!FLT"93B%SKjS,*@Scl,34B(B9NEiM*@3!2cEC488HfI
0f1aeJVUjBqRb"A*K`Qbrk*4d@r&bQKI%,V"%IVB5%+'"9id5k6J@1R*"%cJH$Qa
"JF4V%p1kSr'FV(KS58L4!2GFHHdU8!2FVB`e$IY(Bp&"j!l8J,qNkNNEhV,p+cP
+F$p3YA,`,-Ma0ZJ(f#lGTUAbr6eQj#%9$965r@Y$*E'&G*0cA-XP"U(F-GeaY4R
B,eUNQ3m'a6ZS88EbZ+'$8&"i-`EeZdl!m[Jk`UEX0mERqHX3Lk1hYEkf598HpJ)
B@RjYD0qad12NkbZGdD98c6#DCAK5iK4XqiTdjfkL[P@YV!CUH*68[c(9J@GE@[R
*@am#5D5`b##kRDhJ#ElmI0ReeM5M54BSrS"QcpUl+rZm4rrX9Zhf#`mhD-Q3!)X
%6jrdliTJKrp&RU!Fc#'iJE%Qj0qCYhd1FKY)L+C'8V1Z+"fm+C@+pH8UNPFX"B(
X$CB2ZC3fLfZLZ1Vmc+A-mbeJZL91-0Q("VAZk5Lfj$brrQ%I5[+ark@NU+5D5RM
F0P+F%8R%BMaM9+'c6b%Pri(QmXGBQLD%-K,'2+-r3%FPI9KZj-`FP"L9PQK(pS6
'5CY(5[el$8U54T(-CY+Uc8A0FM@#rE)FK@B"-$pK(8#IVjpmM6[4Mmc')$,b+fm
JH'B1HpX&6,qQS3fb%IEYqJE2FJD*SV[FVPJ!9C&"2j(f+r$MC+B![6L6`r%0RAe
0N!$dl)Nd0j0J,CmQVAFlA`0(&08J3bB6U9`KQ''DS%E`h*al[m"ecNj,j0DUTja
(52&,)bBFjZYP'k@GD0k,GNX&$Iaq9lhY06Z-`T2p-$YmNrFfpDk%0*GQZcGN(fT
Ci21-mfkaJck61fGjfQjVl@h[M(YJmTJ4HhkEEf8U#SX'daRGQd@J-8ifh"G`YjV
D9rjd0GQZab$PJm8HjYU)a4fD*,h)CCrBiYMG5!+'YKfKq"Pq'Q5Yi03Zm4f,j,j
jEbHQV@5SDTVSl*qbe&m!9!e@"0K2I@bq,8SM1$E'hf"8260dU6Ydmrh['X*3UPL
,&&,SHQ4mN40J%DB6V4kALlkRU63@%MMPE`ND8raZ*Xhj`X[`Xd@bU69qPfSe66P
51N+D6Ij61P"T)AG)K-G+PSChZm@#9iXJ39PhGiRI8"h6C@R40BrRCVCHk1MfJ#'
R+3cZQMHj'*epd8lSS2##8Fl68&H"('Xr0%[SC+Gp1cdf[aNS[Sd('U#FNfL'CJG
L&Y+IprGiG$6VjMUU@Z)!cffJXqq(fpR+eC!!)PBSYm%d%piQd@0pfF8*!B[Fdmm
AL!68@9e,)2TNY6)TfNYA82%T4e"rU26MdFI60+@-ieke3rCm#aj05j0!d6CR56h
FB5*L"XrkYMaY$[5H8kK4IEib`pLc)Heh$VcIKK`rH-FZ1`F-0CSU)NV8MkUQ'e"
K[qe#mVX`ijT'e40-eDI4-CelX!Z$(CPXE$JUKP*D$+-0F"PM30%'mZ)'8mL!)9R
,j+UQ[DMS,-8IbAL9M%Aq%i!Zaep'XCkN[8p#m+XDcAml-+IZ)bp4B2"[c"9B2PH
G"i2"UbBrU[RIES2J+T-mk2l1Z,ap9XrK!UQG3KM#CjH9Si%'0lEp@ClPNXQHf8&
jZ)$59%Bc3Z`)DT!!b3(iLpq*c0&jBQrPTVUm3*J'ekY#klXEhaQ)blb!&SY6LfV
9ZUG"(5a2%jNebiZ!KDeISGE)U9K(jD&`EpMbB[UDH8HYk2bPiqrAQ41Ub0a%KDD
1hGQCH@X&6&T64GYNpD'`I)4iAQmNI0V2'A#6iDN9"GDMG5SflUY9k0V1N!$cmpk
[@AGPjF6Rd#5,4pH[J-F)JPT0rclA**Y[iNh4"4"H'5)X3!38iX$5VZT0SDkh%hA
-UN8#RbBV&b-)FpFUiEb4-jJN([+5IDA)3RUCTUCMIHJFh6TAV[cJ!NT9[@k!3KZ
8h-keEieKK@)EUlGIIF+PCUGV&q#""L`[mESEELl'[UYe"c"dUH-lhk45M2%j+h1
3!$pbJ89bl&$pRGZ#&%a4p4iefP*c3#&IfbU4bAp9MVUc#,28P&`Gb)5&(pE8%Qj
*rmp[+MrJN!!8pdRDFTTRji61V#ak2B936MXc*EMUPl%(!r6H,T)6piAJTPR4QQ$
*!cMT)&')%EM$l*l"U8[XmSEfd0bN)0rBdlJ5L`(lee[)2ic3A-X9Q,E)@c0*+(f
r$G4MX30f1E2IA)J[3EE!hQ3$8Pe20%$SG$HJ1SpPrFEc#RPCfpadiJmUUE%JfpG
$fZ@*KiT1pRB2Dr)I3SpU("9)QE3[DZ!$8,UV1M,X!(pT#aJm+I2UlN"%l6VXXHG
N2akk8+92%@2T`HC6BJm8&m4`$b5aLK#6PB`$4Ldeq@9aihpKh08FA,[Rd!EeRTi
eTR"hrP@)`9RFiaD+3TKiD4[R3G)GpL2Z4Rq01#iQrUQD-K1[#d$$K6c6*rG4CZ4
h#B"ElLpA6-4[B6fIM5ceij(QGDM&BdLd!#Ff9FPhX&`jUY`KK9"QAXXJ*bH+-1l
Z@JT9aah0hE4(Q8@Z'&J-mQ1l#08'jBH&l,iF3jIASJqaFA'V)j[C4Jk@RBU8jIk
jq-9)V9hBMM9iYl4!(MD&bi58BD(pdPf!a2#Tca'AZadKqAq8iS+JQR@R1LjM@1&
UYRc,33'B&$IJ$*XBK#UK#cYBc3IeSbr21'S8-AQ5E8krPdHR$9bi2SXa&Bj91dG
Cl'`0S0*fE`VT6MZ('A+eDTcTV4mHN!"2KQdYDrAM4i!jrBImefaRmqU8+Y[Q92#
p5i`hNRmUpA!V+F8mcQ3hpR,ZLfEHaIk9*UmCj24Pe$Pa'%mjCCC)4FH+d0qSTD[
)X2KqM6&UJ+[ac4j0fZakNZF6[YQbI!9YVSc5(3Yr+U5D@cL1A+pSkXE$B%XSCk6
j`PLL$'5!Z+32+1ApKFP[mP1S!T8"UQcM$0011NhUY)l&NZ'Z*RqGfm2(B9rcd0[
QXXCcBQ9JS8+YkS(LCPJ*S[3iQ0pXK*U&DLQdY*3Y)J#3!2K6`fTr8q!,UK#J@"0
@f'-9jY`*KGhIDBY0i[Ql%GL+XAS3q2c'CSh'j,eSYM+h#X6T'`l2$JGMdI"@bAT
BeN@L6'6%Q%[j"GD&V+$TcE1a)H63EPI!Nq$'k86B+cU-r6lq#rT%@hKPG)IX!2H
!qIDi#"eX"bIfdM9iZ*b0#rZ,%H9kQ-*bK9$TrL0(HDdiU#@1M"*TK92%-KfI%-#
r4bcR0K!X!l9!mAa&%T'mr,IMCDkX$$PiN!"$q604CJSEMJqrZ5[#)rN9p9[+#Ge
6*#**%-B#Q(eS[Y9-Rk'%'FZr9G43-S&KK6EaV@r+fQmJYNie*,!E'0"DPCi(H)"
Hk*N1b!+69a*5[E+8pKP"qAV,8@h"pC[kp)-'Qi5(bIfLAP%BaKqU+*J[!4(G*-Z
UUf4Bih0"d"(Y'N"B0!`+4NdE%adN$hA*Z%'G#iX,ZQKSa*%$NS'[qY5i%deK45G
*4DMi2@V!)$)%ZJE'UA'XBJc*ja0h-5iaF6!#FN54cT!!)4GYU!lj*lp(DAfTI!2
Mp`FHp1-Bj4kF*j!!BIbZPhIh*N6V@i(RFjBNp,'ZFGl`-CCBi$6j6#NcrhmTBp*
cIGMZ(MYTZml!M8*D9p2GAkDm%(Qlb-UpN!!1TDLik4T6q[Lj6N($Gl4#ZqEiMUS
EeZZmbrFr9[Fe2eS$9HqA3r6qb-9mbUm'Gq`,4)Y$[$YN@6K&02'Mf+91Sme3GVG
1,YdPed@%QkXJ#(B`Di+3!&UB8r,kG0VcF'XbDI!D4@j*eD#X2D0F-U`+l$%N$Dh
d+i9B3HM(9SSk#AUkU$D%p(,hV+dKJXQhpY9F&d*ND3q1!Z-jEPYTqIVS#c0PmPZ
2&d[IcYl!MZ((Ia6fNaNAj+pp-Yp-Am2c&K4rH&(8ePYG$)#SQFMMGH"(55jR-E9
-mBE4AdJmP(QfE['3!)k3!("&EC6TlS@QZphIdi&-d&f3!*RmDJqQBQDPDbGIjeV
a1[CaD&kKe%0r!G9c1lleR%bN4*bpkZ[f0l`Pc[I!pfTpBFM2!+HbF93@)LaBCPr
X`eU@B'r[AE#QfVid[UMZUhER($@f+%Hjk6cpTQ(jG36k9q'cVE,&PV1e5LB2D%6
2dI!K@FJBiIRYrGm*VqPDPmR4Z('Z`C1GJa%PKC!!SNMTE#Hk+[ZN@akMJbYFf$B
4ejfXjf'BV2Tb,-+h(UYMQMSK$Hjd(8h"IEP5bGQCE)1!@@*UU@[[4r$&BT9B(!C
Y5d##HNLH8K3"123E5AKdBJp56r@-$M"ZHiVSb4BrYTV[cH@h%9SeM1V'RadDrC,
6FD$IdYd0dY*j5bL[Lld--Sm*K@%'b"Er+mMm9!j*rc+b'LJm022XhN[iCVpTR8U
`X,r9+VJbEXV4*D6MRa2PajDdRTM(RSr&LR(1#0rSED2+)DEdKX1EIA1!b**0F23
Z)c')9D!p+DhfA$A`QiL&aEI`N!"LBFrajUfl+IY"1Ykp)kkVkKem&PaTep,&EHH
1pd12hR5NZS#[3**Rh5CRcAVFKM#N%I9G1V$5jhI6mIbp80SGLX3M(C1d3JMIEG!
b6kEdJ[Eq8XCrV1G9Uk5LBAb9FB,F2&,Hb*%*pM8B0L@8li,KP"Iq2mR8GNi02R$
e6qE+e0+IKi6QDJ3Ni,fkkRF5Uml#(beZ'ZIq"RGdj%lAFDr(QJ5DPZeS(SV%ZiT
BGfQNaV3KfThjRVq@"e"6B6YCADQQp[m90p@*im3dbMPBT+L$N!!m(ICPV#e(%KU
qjeck+)%CP$4dU`2$(0lVR9QSrC,Y"6m0ZCh-I++i5VmK+Hr[0BMLic3imY)cd3D
P6"HUQGkV-l"Q)VU9C`k"%FfJ-6$QrV#Zbjp[KBp&l6kqFe`UJ'FGe5a$U(c%M2k
9kbTrpB&lX`eC+cZD'-VL46P2KKeDMIh8RPR[C",,2Rq5qdBm1#Fkq6NJ!Zm1(UR
YE!i[Q``)2*PE9iNlRMp"kMVS&J@p,m`aYd)@ZAh#PDeUb-+f4(0F&pme6[jV3,F
c[+Q&C$&)[)4ZeZ$@8%hDLH&6FeYb53U0`9YA@ca*MSAVZ0IYTjrSMc#K'Q*pH&#
0Eid#CE"he"1CFJU3!'DbFBqR9rT16LM2l,B*l""@)3-qZhY8ML2kk&()4'hl'l4
'3''c$feJUkK`b1L#`b*%Q[')EAH[A"X#8'jJ$l#hbK%)f2Ye!9Yh+2&21f2"GdF
U9EYeLlQmXJPDq1*(eYITSdc%LqhFB3k8*2*'6)pcf)L#U#MiQS@&[KqIZ"'XCe@
Y1T,&+I@kqh'IjD6Q$h1$'j*jf8b&*(lTm-b#!VYhM`A%%Ch!(1KMGlcD"b*kVhj
@'FT&[F6!Md9m!e2McHeY#hh4(iXBd2I2cm3!p`ec)%m$%%j4jP"G8r5K%i2LI-q
M%eGMab+fcIRNq919H6#B$2kq&4HNbe31"3Ma@"cT++ZE098@bAmVdH"T!cm*9@*
*M0rI0DZUrkQERERq#*MM8`Fm1e[i0$K26cB2&,8T)UYVqj0l1JhGpkISZq*883-
@pM-+qac0b)eG2F2SP#GmP,r5))hpeF"4+baGPXrV#I`B!cp6AX,E)DbMc*,9d(V
H(qH2'`RiaqH0N6c%%RYU1#8FJ$b)HimXLN'5kl5[ImIKrXqkp05iSpS[1`KBrdB
H`!PA`KQl$8TKEA$)ZUM+"ZN,ljm513)GR-+(L-D[Q#46A9F3&c@(8%Z46YikVdb
c(ll`FY-JjYSK&6mlr&Y9!XYP64rQ#)H8ejZTMd1&3T3mdi9C*l%``6M')jYf8mb
LJp`0XKb!$AQc9rL8FApq)q9[-T4fqb8-ITR-e$qcdq4pDF%0AjR&BIBEmKd+R-K
I4`l'&6#)-f&K4CKm3*r$d42(eLC42J8%C3RrH56rb8996V@YJEmI#Z9P3EFml8i
A$+$SFp&aF0G2F)3a,4NA*imbSbYFl&H9h9+Bc,bMK@%c6LR`V2CQqP2-'I,(hmH
!a5i5(6pN&c4mSPNY+G558)5rlieG+4!X1Ab5UiNqreKL5bRY[ADq'2cl1"HJ'GF
*#B"Q0k,Ci[h2MHGU2-bm!G`#(N6#'TIFD@B04#M@!c655khSR39)4pDjih02Vef
i@Cj8Rf%Z+dhFK5P$cebJh4RaIXN+NNka81TjVY8Hr%pPJIQBj(&CMlM1hMCMSZf
ApTmHVSYiiVD,mXCXB",[X@F&!(SZ2N86)DApm3(!$8RpS)mhY[r#Sfl8AcAIBP,
F-HaYTTZXM#H5!!L8rmfLSK%qL9mB3IPTF-@jX2KMLT61l1kHl3qBDJJG%L##M+-
5C5fR%`Kici6!rA-F0',VTrMLXq!HU`(R-9QY#-6,5m6RBHMYL+lD`&Q"1-D-Rjm
k8pcFEBKL@-EBNBik$'1SjDT@aaTcCIeZcNIA`VZkj9RI)NX9K@NGY1@p[@#!lhQ
X'0,qB,eXr,fSrA3L1X(4B6T*([G+RB6m*HDir5&F@0YUqSJ)Ra9&AXV&j-3cefr
MPrVh2k+mQpCFN!!iL8qjIj%P-I8%RT-N$G6j1Mrc+#)9*-a,c%IU59R5rMrNC&e
+pipaUjFHT3Y6rCfDc9KaQY*-LTFJKUPCP*%MHTP@FMEic`L,`ZEPaR&UX!)[B@L
cAejQ#Dr8GPX*RQ3SIM`25bh&K%jUHQAi+8B(IPSGh2h12$mK@XfP"YQVeh$-mlr
AhLL3!#TQBHVAQ0G@+!qkAKiRFGU"a#apKMX9JVdXrXjl[dM3l8D2@&[[fD2A642
5FBl-EKV#ml&4l*rRlGE0*VeQ-*GYXY&YBI,YFRD9BYQ"Gpp$(#d@iJ9lQ+&4B@4
UrF@QmN"6GGYYE[1Y5PHYJLNfX+i56'2(2&IkkZ!"HqM1AFdj4DB6'RIadG4rkH,
PhGKM6,GIV0D'UVAa8b*p-#Jf@2kFYVqJ,G"mr89U`"rEcSbCHVVG+edj$MTD*Fj
&GY&S8UIJK9I-U"2rZ$fjl0`bfdB1b0qFSJqPYH5FGj4R6d9jQphES-Q,Ii+@Q`T
-93HDMSE#8PH#R+r%B1GPkQj9XIiY@MV6lh,BFKC@GbBA0HiMGl8fDM1l+K-j+LM
)`%Xi'[82JR5p6T[DVf%8U5A1F165-US)0BBC)Qm8LZF),@FGcGPSJCHf&*ZaYmj
bJ!1##MBM"i6bkIBP&*Sf,(EIbqVPY9!+a3GZ+#kdPEc'8rHSVheYCc+26R*&kT*
FS42+RI+8jjNj"T8J!0#T"9aj8e`lC3!fL(RhSfVM%T@MaGbhNP[4C*U#)YK,IqI
F%(8Y5N(-KAaDKdDd&L8pm'BUdHmLr%$"5VrrmPCfi-aha@JmqmT4(i'lkBEr6@e
BFq#aArJ-Sk"M6N@hL-68#f',E5LM#4Mb+F0)5j3hJ)LT"0T#PcS#qAIe82KP+lZ
%pk56+9E2ER)#!$Y8N8#RU9KFNNaaj*4%Ph5cpp%KLe+iZ!N-DTSPkNE,r0Y)[CK
-ee1-QfNjJ,ZmS@pXq#`YcK)BBY#j8Zj88HD,bM*SiLUGUN`@Z4I"X,SSl4HBFTa
&!@Q)IC[aA-(-r2G$1aQqVKj3qf#[CMlkhJH*'J-Z-0JKjl&GHff%GRVAheTiCa(
*pf3-c+NI`[F0Cj!!64+*SI0dI&P2miVQbq[aT)3-29B)+V0pSTUr$RbGZ0GHY)4
*(PXf3&RLCRl19(&+V+L$qmhD)KN9hZV[55K#j691TI+5$qC'@-JJPMjI@T%alKC
3"Vd3ac2hRK+,,p"p4ii`T5!)P%piTEb"GJ[TGIJp0%B[m@KX$XPrPPVM8Q)LGI`
RmBpRc8BTM!qY,N#N1,@iN!#k"ad,5rTF58Pd3KUH#UDm5D20NQ[iE)Q0TMRCb)j
Kl+IVZ8@Ca6F10-U`cM3G5Sj1br&BaR8b'da%9@10N!$b##0KTeB95@85X)848[m
BDE82N!#2!SkX4acMJUTe$dr%G9C!%FcBQm9%'QTeSMp)RpEGJeT*iZ,mTJ0L6&Z
a[04Q%N[8H'rip4BeB[m$i#CSA,0-M%(G1)+$AL%Nke3F6UK1p&b9hRRq&Ce5h[Z
4$DYA1,0YN!$!Hb,$Z&h'*'mUBEbPG*bp`VRkB[TbZJAeIKHSEAYa`#Qd0"IH@e9
PaDke5DXBrH&BIdFcdPb*0Gq94[ePHH4aBT[RTmQ`VaG0cYk8QASr4*!!mie,PiR
DrXb,4MdU&clhaN$ff$ppr!9)[6#$40[)KVpe*dha4b,0f6R09AfhlAdCUSKE8l`
Z!403PRb&CmHcNRf*'$1`qClR-T21BRLpFH)3c#'RJ+(dcVpf+#e(VlSbDejI6Qa
m,b08@DAVim)PcaqRY46Z2UAM"pAlB@-SmPf,@[EKeL*$0pZ)qN8pjK54TEq*ppY
+f6a-SmNDBB8i*2B5KFUAKCmb&K@VB&c8,j`#S!+JmbV9A&Qe4V`l343T`2-ej1r
XpX5a3!BJ!fMU+$FZ%#4J"flqJ#5TZhH`QeJ(j+U[cDL!al*-kBK%)UJ!iAqh4qC
P!+bRTR6`%5i0+@Y!qe"Ga(N,rE6ECI#DfKdDqRSk+cl(421LYINdcj*M%8F`Hq2
$LYl(2JPAB69@(hqf3p1*jd5dPhj',e!`&@FECI,#IQXd+EFQ`cPeBUC3NG1FRT!
!iVS`6bCB1A+JbZD,['J9%LVZ'TE&aABHjKpR)HHphVZD'b)VF"r-3p3kI,Z1#C(
i&6SKb5"[#EP+ZliS,hS$35r#5TB'ZfB)aq16a'6e9Z-G,Q4)a&YFSYJp!$hN0[T
pcjBPmMbI9aeDPVME%KmI8f[6FMX(e'rZm%-3ST18V"afmKYaR0EXe@Q)CXB10mj
SViYR4I(YB"U&X@(JSb0GZ!kT[mCJEicVeF2KBbTVL$1(p@[d&14$KM)!Z*%MJ%A
0,Z)JBUVkQXD2(Rei0*9%)q,f2$-3-eX38),FI@fR#JP)B1ibClM38jR56`6U+lD
BfKhfqKe'(#QBK&1hi@rR,N55F`I,a*i-B,'dB$[4kL5)-,0ib,JMAi0e864iFc5
b,C'Y(GIr56S*$+!"j+I&01CSJ2cQ[MmqB*SGD6I#6-4r"%UE(jLYhFARA%h,(#i
#bpRVIi(N&!,ehF(ihCTV*E!,KPpI@,ap94XME6(4S4E@PdH42,ijIYM+[a'UkC6
1#2XEdJ#`3ABPBGchZFI#+TY&U,YUE-B*JH,jeJ"-jm3lTqk$!IPI@1EGV9YG$"Y
iU0eXHB!RMdaH*2T2X2rJb+-"Pi@Hh0(Fhh#0&SDM688CfH2`14*XGlmF(2S"IJe
P+i#q4Vr9!'A-pr9Ibda#SA+9'chZ00p-&Bi0$H9LB0h6Gi3'P1I([rpaHIR1&&F
53NXH,jfGV&KmKDkARXC5J43r'(8h`&KcUIUL`RU6i,KbG*a4`lH&jAVA1QeFaUp
S,,8XYJ6pTaLiI@d8*%0ZSmC$HcQ2UE6HN!"PU6-86hNcTecqM6b+rqPl02+Mf*3
4%VcKV"`lldCUdr!beLXJ)3@-&@+d3#FAAPJNp,8L%,%mN814EQ2T#&EH4qe%68Z
&0iLRj4i'lH$LA$1da5b&5R6$QB8CXp04&5+21bT2SN!fba8%qJH&Ylk**&P[G6d
-2C'P&XD%R#Y-QjM"bD$PNN0E4E'Pc84$MN[iidmkYG(lqe'5QI3#*F#p)9JRNpl
hjB%Zl'Na$88&$`rFRc1EHp6f1AbRP+Zm6*i2U#XIidQqAjIMI&F5fLl[HIDdJjD
1H*AGi6bDHLbCBjLAqH6ND8H)C0@LkU)6&-FljVJE%$NheZp(cP6'*p$bZ$B4kH&
1TX3(`FR@9A)m1jNqGmV(V5e%"LA5*1KYV,"X%AJL8F0'*4hpYCCa&JK*apU2NPl
"1qG#D)PR%GUkdF4DDHURrQZ(d$L!)[e$2@AB'N4)k2UARp5YY1AKrRE9JmN3YJl
b&TUh[+'&I*1d)hBL8AJNAD+Vc4`96pDp4DR[FY!`"l0G8eq$A56j(lJ9i&!!1S@
f&@Y$pdC%KCGfcR3D1"Kd#5pP1eDHP6rQ+'&L`K#P8V4mmFM[DjFS",qijC9Ne&R
iDAD3!#hKcilaTd$Imkq+4FVKcqp&(aPEBSKUfA`J*mRB6$4jD1Ze'bXmhFq)c,X
R(r4DSi0mi4&@)hSkX,M2kaK8b9b5%kAd'$(EHiicCB0'TNUfZrG`hj6$q"DQIaC
*'#X+,*Z,%#IMIelE6!2EDU8YhRjqULGQ0%Z+!ZDlr-`[p9L%E[Mr+FV+KXT8'VC
e"m2@&CK9drZhE+aN3r"$10MD$"b$iRN9bDj8GYhR)`c0j[Z&X'RSFM(ZJp+F6J,
$`pY'S)a,[rVHcS06f@ec0XR)5"U,c$6XCAX1mHfj"LU6jUi(GYBeXi2hR&"b(XP
eDj!!,G,r!T(rFSk3!$3r9R*0dTR)e%TbqClfLfa+@$pk81D"k5$!fJ$UCq9p&Ni
Pr0pXB'3Z6a@qAL5a62V#IZ*"@k#JGRILLbB2FV3ZKJ9A0lSIkI%Br$V1'afkjLb
6HQ#hc(bbjI#&j-8L%m@M)B9ZLiY0Z(N+k@BaJ3&Q1LHlRhF`3f&V9aF)SNNC5&Q
88b+rQq*KHSae5J"$)kDHVI"rEMXBi(2DfQ@DC8IGIH"N4N%S*R5JDi4(682T!1H
Ik!`''f"e%+N4*p6fAPcFL,4`+c(-i8Rl*2E$ZMq*Zi0L1II*@Ph%raR$Ni4c'0*
$ShSD8BAXTIlaD%1Skrk$Z&+a8(V-"M9[Pe3MeT@4jH%MlRXFC1DAPCHr%eTM-eV
"T0P4GaEpqZCF4Zpj%,)E!#iYSUGA30[B3",L1CXHGJ8Tl#kX+L),hZ6d'`VJm''
J#0pNGr&NS0alTbR0Pb5IX)[+SR,1'*!!$GJZh'V%6r$E8I'mQ[Y,FmDC(@6lH(2
B*I9jDf(d6h84S)RDS`Lcfb@$p&ahNP6ZNS,p`ERLFQZIA-ZF-BHSSr3kqhABS%6
qF&C+4dTP$GahU`k'#kcm+V!IRV0h0BSTh`3hFmVJ!HHZ6B6+G'"UAP@ra1TT8%X
PB8RYrXkmYX3$10*rq)52KY*6fqI`HPNbSJ@*M@f`CbGR4-[k"(2GCH-!q#2aeG4
d)%J$HmQ"T2JQ@D&)hR1MLUTjEBp$$kfBIS&lc@ANXG#-(8!cP6,TQjGpD++SES9
,,acb@GI!aDMCLbEj0B,J"c$Xdk22'lHm(UJA[Zk%e5kN+GaG50@3!"88BLBYI2I
[()(33)3Ra2DkF2a+69jV'K$#dqP`H0H&#GRSNm5@VV[(LV!0ZjA,QEKM'@#4CD3
j@J39)f%jef5Nrh!'I@@a1e-'FNTQQJ"eRmdhSkSZKCLYYqDq[UIJ4c4@"EcTT+5
3!%ZE&CRQdYKY-E(E&)rX3+kq'h%+I'X5!VV0GQlDh&9"l1)P#QU+*QDV%dmi1DY
#6NeZ'f%dTM[r!h0ik51'MGe@K[pBNMIe8GkQ[b+3!,3AHfANjJ8KmjZNbC!!Kd"
*6BQreQNRM#G'FD[+,K(#mXa3(E!XrjCb0KKPP1cVAXcc96pZqaQHJ5115)JL3EJ
ZI-)"5I#BA@YrRJHSm9kGlB9aRGDZB"CkiUQbUS+!1p9'pHm1Rr4T"%92mp9)d(R
Fl+D#+p'3!(aYJRqc1ZFm,XZ"CL3Q,FrFIK2rV-NVYTbL-mAQQ!dXL8eQ08#Ul8B
KRX0f9P+TiZPMF[df(*q0DGHaeCGTJGrS9aX%RFT5amCUC6RYb58(QR-UJE91EQd
AX9KfhA8X-PPG*6iPABfI`"HCh%K)j)#VSKLS)$M2)q46MTR8Y%&39!DqDJrEa#,
+Sf-Z26$9D%apcdPqVr-YNNZ+6)Vd`6Q#YcMk*[d[4k6JL0N&4*X81b#V[Cl[M@Q
V,1pAmpJ%0-mPFQEdSl%rqB)`%*MJ!Qlc"!UbZJ`N(SX1iN($Zb(B($mEV+ql["V
"T3hLS!UAk5[Ffh8arRjZdihS'$!2B%0HcVM#MQX$fRA"6JFT22-a#(0kfV"-'XY
mE3$R(i%!P2QT5QBSH-Y+m5cX%pdMklI9YmrlL'X(U-6rGFh8E)GS!jQ1,mLim`N
ajRm+4qd!#)M+94*dk4CAe4G53HRYZ"9$0K)&1UB(K`FJMc,+K6P"%0RADA-2L$Q
P69CLhL,RIf9Ql)FmJ4&JXG3R*'*j1+ef'pFL)d!Q2p+%[Xlf4S5ChD&hZ&NI*dj
jf4bleIBc)j0%eP@Y&0@dc(8m)5D#0A$8,K@HPe'Q4M@JNi[@!l@aND@3!1Ki)lc
m(Q*@8K0kDmKEAAC1G)CTH#MhP$9VGkJ(Vb3&fXB-MY*NVJMU@I#b-PlS@NZA+qN
d1lBCfjpLN!!#a#U3!#0I6Ui9B6YBaHS4e[fXcKQbQZGRf8RmA+iXLD`HP4RfLJ4
9GV"Q5MaB)k&Rb)l4!F+CRG3l@XlXY085CbaeS%&!ipDjEq,akbPK0"#m'T*4h-l
lq8%kf5'X,QE"bb2$V-VY`aXpGJ&dbe&G3M3d&dI$kpq*iB-m2hP[3[T3$Ab%LEF
YX,h%$YMTk[8e9cClcYEkqQbB%H!0am[E@k[A9A%8j!"+8TVC'3&ZqP`,)ZEU"m[
hT@mSbkkAlEm4G-1)LEI$`C1a,T,d'b6G%jic,JqVL-H&9c82*[LrpTQ`l1Mj`2,
dlCl5,ekHb,P!!A'#N!"XJ3EHFB%&2q(#iS*6mKDl`Y@H(Grhb%BLY0rN4(JC!AD
[r9`KlmDa`T5J-%jhiC!!qBVFd9'Gp%VKDi1Kc4`,G9,@,PeUqq1&D(m3-Uh&#4S
#(TdmdqCGLYRBAY"LQEA*3[Adq9ql"QGSX&Ih[Mjc`NPPbkC@V'"+d9iB)h#Md5S
`KKPK$Ki9ICb9Kj!!eNX(%fl+NCEDb(HS,dFHVlH8GJb2NMLp%b4+2fM8qbA@r#*
Uq6m+FDqCIkD(1MA'0iY3k69kf'+U6MKA#iL&!G)(,J$4rK`hJZ4jT[V&X&0L-+k
!bA,2-3UrbYJSSFj-k"Vpc5EHr6jTqVh45`hJU"DGfkhPcp0qeI9N9%#m2B@AX-@
Y@bmF#e3"TQ84#%[mh-hdR)hf6ad'i#'dHXq*'lNH#+TJ[#NZQ8-CKp#Srf[(0Kp
NR(MS9q-HRbGNZIG#&KUq#G@$aRUlF"f,1b`UkdQX)'#d*8T-cdL$(J[3$*ae+Ir
AlV2T,r0*3PrB1h-Q-H9ciLT,p(QdA"2&cNJ)rZM#jKV3fYcjBV,$l*b#ik395)`
X651f6i492%T"m4+(5d*HS"2,GCJ1`IM0Q0%ZpRG58MA!%m0(3P+&-Mkrp*V(UfQ
lMeCU*lS`4"$fkkfGQ@E2MTA#h@jC4EiX4&GIHpC(Hc$3`TZlCkKT&k+IcU`,q83
1qQS`b#SE4T1B1aPi95CUDDbPe-h8%Y6"5c'L$VKGKj6L,c"V[l)[@TiP$UC41Kp
9VPAE2A$Q@09cM-X1D#2MaG8[MkRcJ!!9Hb2Cfafb#-JL@JQ+2eJalC8Zl%TrjF-
$dApmh"rcidX4%bLb)RJ!M%H(VelM5Fi,)X[drB,[(T2p)0(fq*`a-bKYTV3#Fm,
1*a&kDM"[b13GXFB()@5(LBQ`H#jRfVCBJ8R5mem5J9M"YR3(IXM9k`L+e1hi@RC
9hU"!iTj5L%c4eiVB9,ED%TSIlTr49DGI)ccD50ZQM'JEKqp*"@LhJNbFYIaLkH'
R5LVLII(QVqpTfMUp(Ll5"SrJr+5EZdE"3UGXB2Urq4*EQCc$%Sa*XL9Ai@Q&mp[
a2a(J-j2U1%ar,$I`10(aaiXYGM8QI1PPi@pYU43k0L)DSe8Y1bjEEV5q!Xma@-'
V+',+9Nkjf&ck*,Mc`Nh3J(Ii!'TFK'3,G'-Y(@d3X8ArTI3a)rRRa'Ml5*GPCQA
'"*BeDf@#S31ep)hDS(&h2"F*j)NA-MPd"(E6"HXh&5%R&QmqMqkmCcl,Y`)Jcim
65PME3PdKk2'UK3qriaD0mq4#ULL'3h!NAqY-ri5*Y!E`DKr@R4Y3C,TX$NJ9&c,
%Km)D9IJKXr)4'dkDkBVX&N*DVd#D2D5#f5-SNBR9TJ*&!rN&38GIDXpFalRb%(5
9fi+fb4AN5h9lF&"b1UZM3MGVV*2jTEraLhlrbLPe)'Ti*VXmdJ3R&J04j#Pq`Nd
`B`1J%QUp#KR(Xh,QZaRa+9eUCP3ipF'%Ti1&r2#,9V0jr#A6jEl*FDTIM5VY6eF
X$%`jYBJacb$Ufl'd,0&3BGm6&TpP'c3c6-A3$$Ua'Q!RhE2&9aCpa&8*Q6SJ!&9
AJV5rVSe3$M)ZY"#8jeJ"GHkAe5j3Ehrh10b$YQ'")ZhQFJY`!m*HD'8@[V@9F9-
IV#aX3pY%aiY4BFAcR1DN'JX[*F3jmA8R1*2L!3QU+aHUa#AjC$Z-h+krKDU"K,H
frZUKQk")L&iQ@r--De!0-FTpkKB"L!E"FdDR21V"cS+pU1*6i'Vhkj!!'TmjB(b
M'`0S3SK!L2hT&PUZU@K"j[@r+@kR-jL&*`$p5ZfJN!#,B#jM+RLG[f$biMqLY*!
!DM"M(!G1Yi)jKc6p"aLKC-FbE,cHAJqpX(C`aTJk'0@,8'r0Mqa('HHd(mUr@NG
&r3S$@6dda"eR&%fYikYI[R-@6,6rL2`M1A)4@&eqB!6j!f)Dp%K85S[M-9dTiq+
3!$,fQI*(6Pa)RYclpqLJp"A!f42hMpl9j!ZK$9Ha&!a*"[r1bFkeeLIj*$CJAlh
1dL#)m2(1C%IF`lp%ZEDTc!Xa16!IQSkdU[(QIIDaQJYf&&pGH,45c-!lXh8mhUb
Q`C8K,Tra&J9@a#i'V)QLI!(`4)Eb1*%Ji4IrG2Y,GU-5!i"b*Rk%"f'6c(%pmUj
0hZ,QIC@!1$(13R(2r3$G1!@rNXK`Z+2D@$miEJ`(1-*Z4A-jP4kher)K`rN%f00
@2b#IP3P+6rQUqfrqKLP!m!NUP1EQ5)Q+LUEGc&2jmT!!CAYeeTm,#A%I04p0(Y'
jc#VjEeSk!*XJ9pP6XN0Y)JrD-lMPJ`)U@%%lN!!d!$kS$d(GcF-h*USJ"BRH[!e
ZSJ0++*AqklU(!bRFhfS$PFP+hl@SEeUcrX3JI4$pUYlQd24P6(@r1k`KPF8-PK8
Gd%AN-9Q[MXUQ2N[!*+XA)DP%BI8+fRim[DDB&9TdP`5DJi5@Fcl&1H('c`+TA"0
3f&Mi)3[Xa0e#8K49+NF5fJ"HpYRDrPbK"b4klHY@+#PIDQ9Z9!E!Jc(l0J$+DhA
2dVm[kc%@Y#bhBTED(QJCemj0h'cCM$-+5QJ$N!#&,5H1QV@qhYV8Y@YVjX3&k5e
RP9Ujk@a")+FrIpd@DVLJqr[@L*q$Zd$c)$1E')Zc-QTkGFb83X3&r)J-8ehJkZJ
T,QFMik5YmYY,Lc"CS%Mfdjk*@0p*cJKq1LK+K#&L)k8RpT(9kXm86e9p&GB-@i8
a%k)`m-RFHaQ6A!I6kf9drRIbJV(,SF)1&r'pES$lUKdPELIqb6K,iHPpI@dm-qm
2l+5H[CrkVUhS5`C%,J@@T-Gi9Dd9"hZ,C+Rf!c`I*GIDSqj9R[E$U!(K+c*iU3'
epJr`DC+1Z"FE"q[K@!H`fRFN$1MKm34h`p4DfeENe)2NCb*YFSXl'LL$Z*2qcJ1
jR8"afJRkNr9b%Y,[94N2c[S)e6T[jk364S)[H@RKA8i%!(rj)5mc%Z6d6Ph59IS
XX2@CMkB1`aX$3+6G(@8!fBL"TdKhG"Y[`L2-medlFZhCDqYaaL6YhPbN&bjYNjC
8Ld-l1cUh0,apA0%A"*Jpj[c$0[QM2558TEMC(8$$CVRfEHGDN4%drFFKi4ddQdf
d#L&A01i$DdBe&IZ(9$,NG2r6r4D"913KhEpQ49PV2iTP8"3Sh4[S0,#I!LP[YY[
l!9,$+cZV0APd$bC&%4X&)*KKJ(6Ik9Gke[bU,rC#$K'j[q$kjJUejJLVJd)j9dD
HmINRLJGV`TSchU*H%mQ2G*1209bFAhRIdXGMDLN"d`'TXepU&8pGcFK#(,bDGR"
&)6Zb2KHlrhZ+4RK36[!a1e9G46&8eq-J`#fI(MQBI@h54[J`!F['9KQTD"14#(b
$RhG9mpX`FMR@EDN6aMqDVDS'Ap2UK0#2Ikqa23L[H4kbY*p'S9)`lFErfIaHGkL
HmHFp(cccAZJGQ[3!%$XZpH32FHBP+Tlm&ZbPQqG'-VTSYiUfcjhUCaI@qJ1)%Q&
!N!!dSJcc8YcSBN'#%+0*#Qe[XI31paiE3HS8,N,-)i,[,82iBi%jcRY&11F"*a'
(!TT1$aiXEIm2fR@r,'('UiHj&f)hqf@@"rR6ff(Z((lC,TCkmkDY0CrVrIH2$Ik
KN!$Je5H*"T!!HFR**ZY"PK6rZDj9fT!!#T!!-jXI&5TG)Kprl$$m%Y`#IT-0BQl
LbBT5QVb2ihAR@$$0jY%IbcEb,9R*b5H$"aq[S[K0pLImfD5MqM@+Y`[Z0Q"K!9b
@,BSjF5Yp0IEEMYV%$cF[d+*8a)4Y5[Q4eJeG``p+KqUK,5,84!pDadYi@`4@E6E
ip+$i'Jq`aGVR&$J3456*jhGff8k`U8ASB5$$MhJ[0XcN9-90"SI2CD#Hpff[lGL
mkjK50I2fdeApJqCQJBZ4j'-&1m#%MhUc-c6``dCXekCdYS95q6K4d'XTTrFK4`f
q)bX!$#cDkS0ji8bkSbp6XUE%IP'c*KZX(S$ZS5fdEhj8Th[YGa#jr#l[aNIm[53
0iql*GS%&XP3'$T!!3I1*ZMK+#U6Rae"!"ff%3(@LQd4qTN*JkdU%5UJ51!D8*(q
HSjpT*`J'AB0LM,m8(eK!AP#i+l2K#*K'ZFmd4BmN1,)AVEeS)E*N))`rQQT-&#1
NNbTiKeTN8qEj'jRJiGP3TaJ$mJJlL156jM$adqPc4BdZI2'V%,63B"3VQ#V+pN`
b)"QaFCC2`a-lkqIZ6Pa0ea@6)-*i@aG##F3Z5Xd24T!!hd@e3&)SemYCLhqN[&Y
4bcJ3J'*%(S[[SfkII4YSUa#+L0r,e8p"[j0NE'e$MheqQZrm-*0V8GZXfFdA9&`
(f5F!J@P&TL`[NjSd+G(#6BGH"c**"emD@eIXjBPAVL(+hmb'B[5*`Xh6N[Ee9e`
Pl9XXbQk(E3-jkZV4UD8PGf1dqc%[im6iXZpHR'Uc@+l%cm)K8j9C1D''B$8EP2S
%4Fh'#T!!p,400qf(C!81q`'*Xj9CQD-Y8rEa(F9`J+UkN`Y!LT4A-ZT``J#+f35
)#2Ym'P6K5%,&3)aA(Y5G!6EZ!42HXSH`#kYapSG1jlr9PQpIZ2+*VJ(RbVF92eb
@k-$M2d#J-#m[6)!hNq14&UXR"[rTqc`fA+K003!Yc`YL*QJpQ&(KllfkRKjXff4
p'CG0XZj$&bcpRMBK2GQ"Z3aid,8E%1bSKEIf"HSI9rTfj,2fI&Aek0'C03%q-'R
9$U#kG+$J@)mF,+Yll*-9j6(rQ4F2FViJhI1(+K@SRXmqjeFESlF"FKmck28,T2F
`f(d@DE!@P"B&IV@F`BA3"qYbrmbrfN%QIMekl2)VpUCmJ3f%R5FrSZ%55i*P8`B
(1M-QjGlY#@'j6IRARd-H!F"bT5VaTKfFBm@YK5$XFQKT,55H%,18DddVE()U&l-
i+rIYA!P6S2VAf$@13ZfIHNB1kpRc`[ep&i#"Gl8"(H"&0A`'E2c@mD@-8Q6GK6D
49SIk,jP-[!8,(Jf&J!kQ2BX[c#+BP"l&NS1%BMU)k#(9"&Y-5kUG`Ij1*DJ16Ie
3&H'k,LFLr3*rI$#+Gc'F,Z&MLQYk$epF+eXE32EcfrqBfqXNe`GI!`1ZS9E!IdF
SY&5Ea(mmraH06aCd,$C(,G5JYRbY-U4-0#Q238D-c'YHIYLAUI06%&m#M@26d9J
Z4SMf,$95XY-lI@A3Z(ZSkY)[Ydep&dV%8Ub1ZD1BXV%H"21EJ[K0aI"[l5Bh9QS
m+h'AQr3"EJq`E0kAESb+PHi*$XTMFG`$ZM3,9lMXi1@cC[GJLLM0K#4hHmkbCNd
XFC%hAkK$#`LD2ic)CVq3!1"AM$Q*2Em1l3[E!T!!`GIRD'kI%H!LITFS,P*Ik4e
ETYKQ,HF5G,MrbaLp"Yd8#RAaR"+H%XG&P&&RXUp`9R$2@kT4SB!&4pY!%*UYPfb
RkMlJ%6+E8LQp5QG9ir3M!Raf5iN1FpP1pRjHGJ6BC0S[D$F450G#3ZL$MM"EjXU
N6#mKBNi`*FZdMJPfB@*U$"SRQ*!!rBS+j-E`@KLBNdi5N!"jQi55BG8DGcTP`QZ
#68ajkShMdh)Il3[TYkPU*8S[bFQQ,K,"+j!!cGbMF20'4&E0K1BpI"-&(K%f5)d
$mP#UKPeGkYfS(D0(rm,4PKkHM3(T-*0`0P3GA4%92BNiH2MjVA9l`hrlTBY#d+!
q+kdqE0Lh$Pk0ADHDP2GHC-[FqpT0()LBZDE`LM'*d2CHKplD0Jh&pNLi"H##8A5
rk[S2'IjCX[9iTM1RX9&BEip)3`P'Te*ml9X"6PIB!Pfb@qhD&Nrh!+@3"!%!!$X
!J,5L65qhXE4r!!"e"`!"!"B!N!21!!YV13!(acS!!&&c!*!%$`"8De0SC@aXFbl
2J!!!3,*069"b3eG*43%!rj!%!*!+J(!!N!C#`G5),EBLJ2a0ZTi[rUNbk'iNed6
!ffXZ8VfN`*mL8Pj#5d`b3GmYmHKNQlJ2'r[Kje(KS$%D`NZFAA1'K5L%[K8Ik#E
+%9Q9m1-"P9J[B2Xf03HH(*GmH-jL2GpLUK0K@@"a6r!ieL0P1a[rQmbfPYl`2D1
+8ST(a1j0f4'kChY3VIEZlXiY0TE(0E[8k&!D`fbbMiGBi[1B`JdZhL18q$CK*FX
52&j@N!$-aSTia4rh2b'+3SUTU+Cei)R@L$-L[eYbadaGl1iJ$FG1l`qDB5`U-hJ
9QF'4I6`@icpr@BCrF1kEVmT2NUEkqTj1HT&GE1E,dj%p11##M!F0X%9MD$&@iE%
X$Sr5"1Z)ZNNi(l9i+4XD`cGXXNdq#IY3hEB6X%Z[0[+&H&fVB@%db*4@eN"6JdD
L6Uj"%L!IXmD#M)*9f#&(%l+VCPK59!)'q2Qmqh6R4cZYF0BCR2Y%SGAPDG&#EGL
PI`QXmF1ViZN"ULb[2[iCCXJKYd8@KkC-jiM0eYNPZ6X@LhlKHS!d9q5lF*XaY1D
",`PC2D*GiYH%&`*Rq`RB+@9YR`M*&jGqACad`k8liZ"94mNaL#CaN9TVAL4`J9d
!VdhZcIm+1Ki4KMp0)JX&CrUrE5)XXMPq%f[D1ke6a"m(Xh'bXTQf0!elX6HYQCF
E%D#a-Te@Y2@V2cN3004aMNIS&JZFZekaeqb(A*X',9Pm6+`1Uei%XC,23)-aPiA
%VJ&&USiI[CCEU0Ppjjp*%lC$1kPQm)[ZCKbN&P9flKF"'"C`VLpma2r`S2`&XC2
',ja)T0bmBrA9J%)GG51e!bf(*p$H2$'+Apq"*3%BVIX&)!kRDAYDLd8@391S!KB
lRpZ+N!$Z,jSV"9GRChY35[64KqA9ZMj5QBlq"5&mRa8,`G,b0$XK!mU3!)YqGh%
Xr`@)Qq,1!0[UAljceA8i8rQlHY#PjqLiYJFi[E"4Ml4Bk"q[131bh@IJ26GKMf%
CXMHZ!0B8%lC+IRFV+N3%%Kq*QNh*dRj9a!!5``HM[J`*A`p#LDf9`5f#F"3P19G
FKAj@GZe-LV8'QP@e4QlAD6+ieXPPEh1RqUfrXB6m,cRrfp`3Jf8$BcfAd`&k0V4
6DA)*%T25kZb)#'HN46!,VChG,XAj3RbUESF-e#Q[-CPfG#9hQ*B$S%&a$cJ"'!f
i%Rr-"k+hJZ`A$1HK,1rbU$&r4LE&G%[h)A2",CbaCkCm)aQ%)DR"S4@-Rc*hk6r
pRA!'D[q1Z*%FFFFVLTdP3'PiZh,R2$YKP9r2B'UNSq&'K`#jpC',hXdm&6NPQM!
r3#FDb3aBqS'I9Zf3!![MhR5HmLj+fCJ[018f2ND3!0S8T2$%,SRhmZi2rUS0#Pl
fJNSq'%5*l+$8Sa[qqR*E)bXBF,mUB-0AUrqP(%(hMjEGILjl@L8iZa5m)4raiIK
e-Z6G1'&#HedYXIPBU,FJRKD%hkm$M[@`0*S5$L'0Y&GqD&U,Q)+p0Ua9+,1VH3h
I@(6M*(80`GM(A&F*)4p1*U[!rpN[XHXbTP$AHD8QM`a9UeN#L3&EX42M(KD!2TV
2HL%RVM32aI9SLL6Q)NV)rH5rVp353`Fr)*!!J9i3'-rKSJki-G-$&pqr!!ZSm!I
djL,LVP28"XeRH3q8Z9)jrT*BVLGjZf)JXaDkrk&52lVUrC@!DI!FS0NbbdZcBk"
[kE-IPMR5"6+'b5R`-pd,fGGfefMlc`FbPmb'bJ81N6I%A([`phK'0122@"@Tkr%
"hqYL(Sp*RChEG"2&H*qh*,mR6PHiMGa[E1E[rRF5cY#fLPDd`"9"3E`CFM%3,bQ
Z$[Z%262"+Tr@H6*9k4bmE$YMd@%QGj3-9iF8Z)JMm69!RmU4l6E)5KTck#ap[,S
3V9j,4iYrYJ*S9@BM)1he-fEXT3p*H2DSIKq9TXSE*c!'Z6pMPGS#KGH24+41NE5
JClma3DC(0em,"1XV'6%SHmESZ)ED3q8XIDdMNCQ[GGfUAZ+&j#+""cmVHYq+,c`
Cqd-CT2+&K,9(5+RrCrp-)2VBbr4K1UF8S8*r3$F'Jj%MK%3%9cEGD("pVlXDI"V
NfaDUC"5prZ0"i%c#+&jd1(Z#dlCV`j`S+VNT6$')!+Pik8I&2a69P22N#$qZXLR
KP0RYXlarhB++#d-"k)Bj+$+0!!kVRVqmQhGN1XrZC398PHr%'VS8i#MhD1Gj6df
k*+cS43HC#I2%Gmj[fqAQil#IaQ3+khTZZ!qD0qRN3$Kr66'mlkfa&'5F[mYeU'K
eM$Q)0QmKQpD[++T,TipJJ6)QI[JMUhhYQR!%rDG+UH!dH,P)hlk!*I#m!1[fJG3
1FP3H8J9I&-E`k4S3l[)U5K10Gr"Md!M,9R-,*B0$FM(M!m#5Ermf#"04%-XKX3b
`khHGlNUS(E@"!HF"qY8[DIBi[paFeMU&cafKmYGMDZ`E&"dh(%,$TELZX4cf[@a
*YX'`5F4,brP-jeKS"2p6*9LD-6lq8,9L6KibK[q$+N(Hcjj`PZm&Cdrl)Mk6fVM
N`Zl"fI6-R'MImRj2iJ2L40fPkFhI6cdeL$6e28@q3&-#ab2S!qGlBIZaL*!!YqK
'9jq!'HFXZ0@'RpRXVG!JSb3D3U%q$--C*a8%QJP!+@&NMf9Q1Ga9Sri)r2NPZ1h
f(4SRbcI9MF%S4SrU6j*CD#H!&XUUN!$RjCj$*CqUj0FC5Al8LPM"d2m)kfmSHYm
%B*l1m,68@pC6RB+$MMbrUU"Dme10dB1dRVlhc$XThlU'X"8a0PA,RbQ%aVY4e@c
B%E1$GLTqe'EHLJV-mc+@q63D'C`NC&VeM+Z8SC&U)6(ql$Z[m8UX%A)T-mc@ae`
bj)'I4T)FV0[-%iN"0!X`d+8%GDcQfK#m#@SI&%4K`[khlih8cRk[QhYKd-i1JP9
r9X[JG$lB)0QIKjBTK02&cfadfDP3iXD$f66rY+&MJMZ0!*L+I!$SemQ'%RP`PJA
5jbjch0Q#UZJMQ"5(UHD&j5E-'erlV"mf!r5S66Uf6SDZi!3'ZpT+fIPmYL-L1R2
9EaX-NKSZQK2+"af,h(E*mI5DNBAQAi"Ji(@K)*!!TPUJND!PXe'8cBDYhmm`1X2
!F(*'D$&YD#,IV$Tk"ViRKf`ef3Rq%!@eJCB'BG&HKi0N%Ed2*f+IXmEC[BNq(E8
Qk59Y#f,5BDBb!I+4&EqfX[Gb9[(Rd,kbiQf-JRGIbk+4-dqZi[1N399K8VE-2f[
f*5aGC+$qKVq"Hi,DEK(Ghl!ScLVZ22m4'-9[LS[NaGXK`4QBpZ*Er2m3&i2Qh8%
BUCRkm%EIESmT!iREk5IImX#QcR2hI-MCr$l)','lc`Hd2BIm&%Y*`pGp5+CHlc4
#rd[d!2k+aiE6k&9Lf6aF,#%p-M"h8Y-"FVXF#%[QMV"2rd(l(5"1$!Sic,dMRTV
B50`EX(#qR`cA`S'"!41bJr!UiHT+PGV)C[Ba@)DlD!G%dC+(dE%58P4@8m1!9(@
fq#)C`$XlD(U%qJrmVBYe61A-DIAm@'m-bP1d+@hRdpjD-JEbKQ+G@,6HflbUb2+
K6k"UeH*YE`4h"pc9l1eEaT!!&QFB!!#'B8i+5QG)b,`VA&j)KD@P#Ghrj5J0k[U
U#(h@-1Ac!4JFS4[-NSEGP0@((5#G`KpCQ#e"aH*Mf85'DGM@KRb@RfX,+,C1Z%#
-@a3(4,8i&8Ue,j!!qZi0I2PAP'dNLCG'dKG%!lMR+kM&JLl@`I3p,m'#[la2TJ&
,5,m9rADfEH$ZbV&$C-l)bK9aC1G23FAbaClUIKp1I+h+AP&k@VjJd8a2+)A4I,H
cB`V5JI8@T8R,Sa6mpNQI0(c2U(k%S)f8NTA"3lHTp($efmaelU[I3*8)m%Sc@QJ
,0kqS@pajpaah,qfM0Te8Ca`M$r[5Y"T(*LH8YIM+UaLZc2bQJZX[%RTS)aSe'9p
3$XIq1I'6*!e!8f*iaRka)S5#6R6$hKFV0#r)`aGG8&KeaMelef&$l4hpkCEXN!0
SUSq)2`dJ9QX'3ke,k96Ckc,J*pY*mFSadPcU4`8ij&A`R23,1RZ8mel)YdJKmIN
6ILN5L[#$*jbPcl3P4Mqq04FMXcpjp1HdaIIM(6-eAj!!YZle)V"kZ'E3rp!H6Rc
mRBUIU%4(5IFLDbhDlrLcU3XKJ8hb#03p[)cPrQY'qCZ@-i%Kh-9"CShK))@K[Mm
)Jak,hc+*Mjqq$SB--Ac4%HMlK[)T9L"leaSeBhRpCRUaC++0Smb4`F($Q&QJhaa
&*UMrPSaL+hj"5D2L`Uk)He@HN!$M383JCIZJJYQ`f2rm$U@LH*F!9[mQFF%'K"@
b-fXNkRm`AF3P0d9)jDPdaAU9*8m[1q19Y5VfcQ#!RFaJ1%+2`1Jr3[iTq!+NqXm
85"@PYj4M0$k&8@jji)BlYPJq,VC1KdNA@V+cj`1Kr'A&B*r)*k@1dK1Dac#mebp
[Y,S8B0c55BF-TS0QNVpcjl#mXJ#Fkd0B)QBep251VZ")`54N!NH-+TXD0a*e-S0
(XpA&dc6mYZlD5TQ&4l4J%N$+hf8SR@C$lR@VrcCSSX,-#"ZhhFLV!ZXJ0iS0p-1
R+kMd$K@XBB@k)4k'P5)('mE[DUL3!j5XdFiAY90)$VS(al`T@&X3#RCHX))-Y9e
@pRY(J*US1BhXQ8VIYD)MPII@B&MA`YK#afkCGeG-B'S"Bi6G[@kZ,-KP')(0V%i
jE8-GJ*,,QLr[r6!cE-Ymp(2G!QTAr8HKSEiEYQKd0IANCh9$)BE&GVRm+3h[BTX
qaS+jE-0Ar`Jf[JL88`,q@(j#JFiq8fRi06!0rH*2CGqq+b(K*,MR)iq,[lBeLac
R#(N,065TY,BfF2HMRE+L@VKC-Q*15cF!`e[cP-blCS'TI3Hm$BI#Ql9k2#8L"r8
N5`'3!&@SNY-RP"ejFEFB(JcCAJHTR6qXF#KXd*)%&hcc%pCq,H6)E*VpMi91*5p
Z%al3D&(bPVZhAF*NrFFLbcC-fF`Kc(HZ[8`bcCL&M$FM6+YhE4AUEjKlk@2QLC1
'JjDcGcKFPXJcU+9YmSJac9IiL8-X',"L8DcGIC!!r+(8bCN0%&3JjNp'F0+&VNd
'$X(+9ei"-1p'pHfI6*GE3dciTG*,3+!VX"EkN!!X%DV`Cm6a8rG1$)4hESr3FM)
Fl0A@d)F1%CDdNG(daP!9i+i%NXRZ,K3Q!KRBGVb8RKLKCB%+KHNQLrke&a$rkS-
$cKFqc%PF6Hh*XHS!f1l!dh$G34f-5Y,*c1L9Z`&'`(,B[JkqfAU3!2"Ri(DMCi'
1X%G[lihQh`0IfX"FIUC1J+T*fXZ5)6EC(4dbdJP``'i"EKk(+b!l45G6S8fjKG2
PJP,"RjbJGTQKqHZi'2+-1HM@iQcC@65(*H0jeSE[Al8rKQ'M[!M2BA5RNkaHSjR
#q&JYclESZ!(RB"d@pq-b%BPd!NP@TQMaDA2f0mZi%-&NJRI4!VZDZeY#c#jXU0T
Aa5PiJD2hU"[*UbpR'&!-aZ$YUBPLSj4-rXh@DX(F,%qEDN)[YjN4%p!f1XDm!C'
i3D4kV0(9Mm9`[!S-U(kq2GZKQ!VM[`-qVK6&m!&cT22!L#PV)qY4%P6)$Z5!6G9
BH'I2e,0bSrV(h0J@%rQclMSL8#pp(#RLVaDUYPcc!Hb94P,XUdA3'G&l34,P2ch
$dT3L!A%6[f!rj8[ESH,E9f1Mk(UpG,!fU"29U6`33'UYBfRG3Zc-hjJk3qPH4XJ
DI#86(mfXDLlAYI8DhZ(C'hffVTkJ$rAJhA'@KGmN2V))I0(L*I#SZd6YiaDKa9B
`qBaMH,X4F'AMQIRrH5jU86$"Q4RPF%lppJIrCVT#qCPVYYI(!,`D%""R(BAL)-%
PTQ`4"BcUAmZjj"%[kU&-Gbd,BBCc'&FSr!T23GX&aDPiG0kTIEiPDI(JLT+mf*C
Nlp+jI+*qN44Z$BVH[aBF"-6"EH"8dE8Za*1J5GR*T!,6,2M1Xr*ScX!hMP*KIe6
GhA8&rkqX``B)"T8jQYqF)A"E@5*abQ&FI#'j(UEFAeQ[V,fH9B)2NeQR&9"&X1e
$mV["88KhZJNZS#3@)B"@DBe+E-FYVPjF3H,IU[q-k5F+b&id,Cepa((Vi6MfKfX
Imck-6lMJ*'9ar"e(`+hbGIU8e,NHJq6#4IhbpG+#Z0ep5L`PTL'keVS2lSF98cp
M9NcNhDcLA`B`&J3B2i'964hL+1HYU$PZ@bJRkP(jGBV-+C(8fTGLF)*IjKTHJ`J
6(1EM%$b23pZiP64r"V5!D63a-jaI4iN"G&l-&)aC5'XmZiAiT$,ca3RZcM#%Xi@
`VURlq%)@b"HdH`jZQD$PC"#G3XEb%1SLK(8HF+j5DY3lmk+,aV"p#'BLKhpPE65
F)TS(@G9f#)[%40Rj(39Si,rUHjfi'kIJr$2Yba0bm)!5L9*R#()END,F)6"*8Yl
pAZH!j!PqHiKi6ZhR90I)@b"NLmi0FaZ6r'`2bX8PPL1+2+Rb)'9'[0C$0k%p1RK
QhA+#D3Fe"968N@d'ZNB,iUaH19Y$#%,(*R$!NUmdG9FjjcHEm[)LmkcNbR+lG+!
-[c+@q[0I[RaeK!B@icf!M`DH'@d-&IEP%@imH4kSq@qi@5-I4F-$TP-mpj!!Llr
cK-Dj0&Xb+Q[c'M#ISZfEb8)h3kf0Lf+caRh"Jj9Epe!16GhC%i*X!V9Dp-VcLq9
mr)+JiikYV5"J1P@kBQPTmAI"r#b3!-&"r&*#,ck6Cr4$",@Kc`d4`c!4J9LE3DR
0Cq352U&ph*%U(X+5NllJblTPXdc00NZ1`S2CN@ZZ3F`4qmP@38SPYfHbmAKM2[!
P1Z[deVLjeFSVqIIMUTMf)+fd[r0A@G[T5fF,2BZDP#&e&dTP%2'+'@HZTrJ`b!9
96hErGUIe,H9KEQ6VNqeY4pfSY##c5"Hr'4YCTEMSS62NAZ)6k@3)@`JqTbfRGec
2JQIX#0GI%-B0Z@-B3RjI4f0Ei9H3!,"`Ah+cLN$6K@LiqVIPL#9*f5-*Z@*CHQ8
AF3%A4!lLiGlaNUZ88@Y[`lY,kr-TIP$XG1@"6Q-j1S0d%C1C@QA1H9202Pl%XIm
UXBM1,FGHl14H"Sk88rF83a4+hFYBq0QL*G#",bdQ#qNicPr-+T945&e69I2G*de
r3)qdh$JQKE&1d#L#LUUNX%D[DKXYG)IKDm#"f9-4@%p)#3EX2&*6Vm316YGaaY9
YhJ$a1aAHNMZ)F!XY#+QkFmTarc(a$V3(G)9(GBqF[[2D#iYeh'bE)05,#E+CZ2@
Gb-k1rF`@)DNfa94Zimce0TQJ2drV3McQEKE`-L3M`fqbIL%X8i3'),clZ5LRd+U
DP-)Gfc'FCbhM+qJb`@5dRBIYaFNpTp$pEC2DKELL6(')MIhdb-2G$FT3e'D2&p0
DU%34K`)N@DD2X+["ilQrCG2')5NFZKRUF5HD*SIUUZB'S1)P',`jZHIm+[fVHp5
YKIFJUP5[@(lAaq*EpSUZ(*pUE&hMPRmEqAM0QfQHq8*NfZc)b+@'V83aTK#pG@0
QqJiaQU`S'Dq)rbprkih8rJ@jZh4PMXlGCQrBRl9&m6DGd+J46#pTrG0P`$&h#Hj
4SM33LEeXYCdN&4"('PlGai8fq4CB4c9Q6['5TFSYZIEFCBI&@qM@4JN33E*m8dX
&qk2)d%&Ka)4+'[r8YN*e(5,4i8rbQEE`FFI3L'TKZ%[mBhdT5eYB9U2X`lP-)Yj
iF[LA!RG[89UZYB,Rf(lf#Lp2M#d)JC1meNSfUbP834+QLp'd,FSZ%jeaEa(lISS
"Zhl&!+qkCb(l(T`$cXP2`eCh@qb1F6Jd91T4+NA6Z[Ye+XG$pBfPDkSi(h3-,E$
(SCZGY4-GCqDX9UE*1d4bY2aTE$Uj'd$%m(0S@9kdJ$!(eTE4)&GI!CVabj84SHX
j9Qre'G1$QGeZD"F[N!#ZIVH'C%aGTlKGbK[jH%qY(mKmXCF&A0UI2kZ2Y#N0IU+
PF&+M5k`TqQ*+mC8+$QEJ-F01%GRhaBKZEFEP9m,FF,BPk'4HapFeVEi&hM"m8j!
!FDV#Rb[iVr'Vh-XSXXi'KTpRU(CQ)fF91MMK0ZXF'1,,9B+Mj,D2UGaJQB19Mb%
dAh""T9[""G$B0RVX(Nj"41ll8e"Gq1LN0SC)5C*Dk21Uh)jAfRJC0qD(B[I)l&#
HCArSI69#kL*4&P)T0EUT$cD$DR6SZ5#8c2AC0'D,jpf4R3CLhY*(F5NE0*`a#+9
Yjh9(4lY3D5X*5856E"H3!#NBY#eH&[jAFR+GkfRX6'eNGXJaU%mLXBb!c$&@mI$
,K'2SDGU)TJi%E)hLUB+'Mh(@pHGpTpE9AfDL")2'[2PQJ+J4E+JCCZ$4A5UKe3V
H0ZBTh`-*+ZUera'`h*ABa#b5#6ci3F)eK8`XfUN1)[@[h*qYcGh1kelc)44EY'd
JKMDF(dajdAB8N!"piK4cbV$*SP*0P*p(aYZ`2FE5jD++A+kF$(,Rpr@L!d`r354
C3cR3aY!)F-&k+H@M2E11`abN3,HZ&,TT3j!!Fj(9K([feE*+[-6q#5`Bm&--ZXP
qM!KE0MaGS08d1m*'6k[GA"qFB-iZhl[D!C+9Si)PP"ZDmXPR2+h)dc-a",r6,C[
E[P+kF4j$*f)h`VfAf1iHlcK%T+fbl1U&U0hkPFR)%a0&G48hphAkpHH65Sf(LFq
QlH"9dJ"QG,($Q04RLM'(BD,6`'E)iRT&GaNSY6TpTH"UaNi24B9`q8NVVae,"lD
-%ERIBS29KCdkP8UE4Yb&3q0[XL#*Eq+6P$-&G[NHRBKZEljF,cHlQMef"4(ZU-`
V1E`iUDhJcC!!0*-UI&YkhLV2Q(P)f#6m0X06SAiLFaiQ@L3Y(TKBJ8r8e0!GSh"
Uc203*L8@N!#@VJ"BX4UN#I!IPB3ha62P+lK$-R[Ycqm"Z8C+r0V#DHA5(%`CiM!
C0Nlh8[I(k2Qieq1XcC'6A'(Ve069004iVFmUCQGca-&LUe0&!,NGPlVbTM8Yj2f
Xmk""MI38ebC[TX`lMcjZh!Y"%'FPRGMdD+(IH$dT0[a@@i@G#%Pb+EM9pK"cQ*C
eFKH*[GK5Sr+Hc,+-[+4qT&DB`I'F@`!FiS[TQG[CRYQ8"jaUKI(ee(KBil%E`N*
M@KD9U%)q8*!!(ejjHkAQmQce#%52'XQ!S@2Im+HLA"5Ta2TZf-5%*rlDAK%FEdc
FJcl3Y$2FDHR@qT'LjX5EfqlN)@VI8H$)hkmV!XY#T@!4i'rM(K"N[$)*(+'iHQ$
8P8*Iei(@cEm!UEC*05SmF3m9Z$KI-Nc[TXQ(T@++(!`dql%h@LRSM%hL"qLZGP,
HV&j0V(CePACM+3$mP!l)jCCA8CHIL[p5&!MeqZYp%GqUI-0-UPI&f)i'T9*lRLr
iE9DqZ)eb@CH2E'XrUabVpK5cAil[VNU50+)M2Slj*MCR,EhX'#XlUZ%6f9b*rp4
CE',JbLb4U4qQG`V9lP%,caBjcd)Sm)5,2dH1H0&H$$J2[(U(c1AA[+rG09-6RS6
heDFQ"(h,[!Cq,6)p(BGY93dX-aH(IChCEMVkJlXc89A$*Xf)ekeUXd[CjT`iU01
6RG,hL(UmD0Sf#BqH1)m(hjqq522[lEH01c'XbLqQI!EMPa@[J[5k%ALFGDkGFNI
2B8[JX!QiN!#L(NLX'EMcIG3MTL6aQ@qZDjL(S$JF!mILr0h5IMm[+q"$fYlCGcY
A(ENd2(mG!a[iT3Q'JJAU1`0'`c4CZA[4T-%C%lUDbd8Ef5NA3BI9fIZiQB(F`!C
9Zc0(lJFH@l!I[eaXL)T,NpJr%8l#hjeGa(L4L%9E`9!%iK4"3M1A@LC`ZZCijZ#
dhp9@DA(E&a!`X+R6THdAak6#ek%B+8J5KE'1VlAArB)4S#h2S[G"#EA&(C4CaI*
U01-)S)lGJATfU2T*A-Y""`GBFbD45JqFp[@)Q$!*&8'1ELdhR6VieRcRUZTT&UZ
T8ZC!Je[8BJf@U%i[pcb"JH9%PLYPbf@EL)+U9Dd0+YA3RRDJ(0PG1L)LN64&!J+
j*eJHpLE9bhEqE)A9fLShUi*f8GNRQVBT+5XrG"ZC-U0#4BTR)d9#IGS,G`Y(8Sl
FaZH"F'T0FmmIkHrGHjTEBAPD@II1$AaVf0lR4i&'Hi&Iqe0ap84$@Bd[-YVi&@X
#Qr(p-L"5Q+h0!HK#3VJkJII*'!(6J''rM5ffdc[*Jj!!GG8j8m[1[e,6GL(*bXM
q8%4+FJ'EaJ2QZ4iN[3d%T'11CM,SK@0hp0*i'X%qAD,a94aSBF*5KK6DHf[DAd@
Rjk3"8UCQ,D[fXG5DPC+c,TB339E1ir*BY3j)+Bc!$ZP2-j!!ZfBhf2hB5d@RJ"i
qFFJ4GecEd+ET`c`T2"6`i#q6PLc'3ifZPr4r-XAPf)-hbYcrQ@IBVQP,(CE1#`a
ldTDqQR-)c'HYMQZ0"rTJ"%K#e-A&C(5(l)#SeAT(R5-+(@blY93%KdPKI%)KaV3
0Z"rYp!Hfl(5e-2biIb-)$STFrB31[(%0`C!!5@!LBeDd%$aF#r%e`JEMaHS9Md'
Vc[L+FGHJ'J+$B+!ScppSbZU#-"H49CVZf-@LKqN'`UlHhQMX2)Q,QKIJQAkA'[`
iJ1H@42Fp$Hp9*!aDeKJACq6f`%5+m4T1-Jp@kY4I*+8qafjQQ3!B0Iii`4lD9#F
Rl(CiBMdmVm!0P2md%FdB&+*,#ai9L"$$fdI`QKL"HX1cCp'mM@--01pN+c8qP$q
kS,99F3@IbJrJNY*2pd3%Ke-[aKQq65V,'$213R+,%QkPbEPVED*`M4,9qm()`A9
(6-MYDLEYpE(&V%(bp[@NCqceKjBKflcb$mN`4L[-1a6fcKqaL#)Ghd1,b6c#ZiL
Phm,H9I9+m96[F,VP*Q0fcrj-i'#,50A2eIT4ICA"[38RC+V1P'rdIDbN6rrblH'
e`-RLiV3KZ5!Z-AZa@)XI1MBp1L"266jiJH4CVhB*LMjHVfX4X91PU2B'H["&#fJ
G&*K%ka8P-LQ8'&XL-iBKP)I'YH1Q$VH,XE8VBmGV2)$M0)'hY4TjY!QbAX(aBK(
0J0lHm4'h0aj$-[(AG+CBY`AKre$+)X(Ei9q4-KjIBkrGeP9JT&4Gi*aKK!!6P-H
1A0bpUalCXbIRMp4282XRCB@RD34kA#!AAJH$he2&FRdq5ZHjKT5e++jM&'D4kqK
TB@SP,dZfrm@GRK5Q&mFbP9bMS+)4DP-B45$JX9#APcb,l83--0U2NS'eF6haC8[
jKAS+LrN)'VKL9S-Hr`Ufk#P(m*%"Ximh@MB5UL'[$Ap55a5[))5'MQG-E*3@HMX
JNE"'*+J*pL0Sa`#MR($YpXi`d'e9X9GjNUB9@B40K!-l0d6JHRK+VA$4C3L",+V
C9PXl5Gr,mYB%`5m3fq"UehqCA5YpkI%VTMPdkim$KBb21JbRH"ST)b(,Z)*a63c
Kam,1CMdDYl)kJf5RlRh*RT`KXMi-r+-(9!`('6j[%4@@P"4&(iELGl)bF+&)Z11
1phZA"Nm1Q6+#d@iPr52SMV8C#*SHD$0`cfddb93`Y0rh!-P2Dir9-i6kA(0P9LV
q1j-HirGlf`GI%Cmfa*ZC(rA%c"[(pZJd+M'-3Y4brR4jH'Z-X-Ae+f9U&*mdJ$J
&K"'&V$D%c)`TG6LSZU[k-A$Vk,#$Xc!)@EUY%jfT3)G8N!#kPKqMEbp2"Y4Nb6J
J13PSK$53!2)a[4mD6(6#GPi8k8Q0(hSDc(5G@K8hmSMeqRFT1%C'e-Dpc6fA[iS
a*b@GqC&hP)bSc'b@bJbD[m`jSMeXTPGF'lTZK4l#HS1D0fZF`P&Bj&hQaPm%1)`
(H6V9c3RjAqG#b9V2G+9[e(Mk`B#c*9N0GLLP5j[rMI,Jm&B&pIL%MBcXcbQJbTF
`iB$M4S$VhZ"4'p3lqKJMN3AH$(mUXiD'Qmh+[[iP@0[Q(YpH!lZAZ9R0UJ*NEL8
pPT3*dPHNRNT)%ZkV#S[F5$#53`Z*@IqR99DpKDa-IFdDQRi@Br*'X8cCZ*!!)f9
iJM#JqJpK!!*I'3r2,&'cU4[cB%cd4F,VQ(hXPF84V)&$&ER+4M5kUL%V5(L"G4m
-P-aP[iXh6#Ea&$DCHfX9191qeSF!N`HcbXEJ6*e6rL)Bj3f-"bHA4ZZD,lU2DFK
)Uqe(LBde()`mR1%--!%3dMb["V0PAlMElLQ4K!l!3@'E$pA6h'&paR(A0j3%kp&
--qIPPFe,p8(NIMBFb@cNE-*'(U)J@l@6YkHNBj6*U&8-'4-cP@,RmUS3pp"KICX
C8dqR#)2"bPGqm'"0dVZSKT1KY$#Tq%dIRDfA(cp%'G9VRNECEIDFN!!V#0TJJ!"
M2-BLCYG'A9RJ0@I*F,&e@ZBllQfC(R@4D%e6m,A85T3%D!MJJM@GC!VITKV'PbV
G)$3XJ1abCC@6r!-cM85B$GXM50ErLL'6Y!DERkfdTm[X%+k1#e@bLEDM'!LC@@N
BF+DU9-mMARPCAACeI%5iZUm+TCTmRL"9fMfXJHb4[HRE,F5&(F2*"&6Z)$-bf29
@`GM+Q9he!QY#2S-edMNq89(&qS%1ZLI$36q"Ur,328B0)0-U@"SBP`l4#QI$S0m
BYG58jTQ05[q9Q))Tm&CD*C'I01JTprU%*3@1VmhK%4DUm'jah01P+3VAkfF!QH4
e&KFb@hPfpa@DVmdE("5m%TIiI!G3["Cl[*5em6QeP"IjL)mBFbLj!%9#8+ERUeA
(E8rLYX5chM'DhjrrR@9fU5ed-A-eHK#8N!!cG@"Hhb1AQpE#m0'K)D[`k`8bq#b
!Gf8hGK$ZU2Q`LI-'r+E3NmE5k-*i+dXkp!!84a$BQG15B891fG0$IcUqK@E4hrE
6+0JimErpiiIKjRme69DM,J`4@r8PfpIp`k0-T,LZ2a5D%%4NJYV,bjTr@34LG8[
rb2*B[[@#m88klT8[V[3EQDA(9MANKHZFDpIpHQ#8mBLLP5('1a-`RfFp[P#8B8p
N!@(TR`1FN4%$`52f#KILVFJr'qhb#U9rlUD@9kGL3V,@i9+D(%4bbUX@iifrcQj
Y!aGE!2pZ!Ba24ka3SMar[U*CI)K`f'p2D'k2NLUcP!+#T+YB+AHr0@YE*TYqZ3R
TfbNP2f*iJFiph+"8bL!VmmN+0fm!PSbHPNae5*KQ2ha@fqNi!`G23jRD[($e&ii
#el"LeV$9(!khGR-hQPk#ZkrhZ+@cdk8JRD(ke[E1ik1-NJHqXR!,9Z@1M5C8`&I
j(F#CpQ$6`+dMdAe0Fb2(TG3HY4*ZIY2+LPY4Dh-BqPEr0rlMP,X-EB"mecAr()'
@!d(#JXMN@RYeZA@iU``!F6&Bh+1"8"NXFk5CXr5rKNL"MbQBeR+YM3U(aU`lXiH
b0`Cji"&Cjj3pDC4TPpZh5U5j#"H3!%k'2ZBcU@VKDHfreIlaAT+R6Bkqr3KFjm1
Fh4+1iA1AJ'dp0EhpI&N5lDE2FLUZEm*C5&i1FRYPF#GCefCeDF6S'@K!2`Z5aj8
r3NE+6)E)KL6TklfR*b[I"SKEFQNI0NYVHZIkAXijY3mi5DIZSaGMELYNY`cK9C!
!E%+9*`+F`ca'Qm#LHZ`c%Q,E,f2@A`Sjrq+`U`Y)rrdAS"!$GS2mVAPc`p0Z,Jl
Jr'@hEPLiDUqY$Umq9IHjVjRF03M68QckK"H0)klL[H+#EG3AJDCe,(XQdJE"eBm
m-e6QVkZ08EhA+F(Nip8+CEp'0kpqY6'VU'Ka6A14*MEY#c%SD@6%jK"LUIYPPd%
'N6XVXAX&!2c#dKihl9aPB'#%BJj$"11D[ePie%clb#92a+VL,CaKaQFKhEp*&E$
V)+!k2bZ1"19X!CA@BP3VH3NY8)JAehYI'IU3!)BhLhi2[-1RXkMF'cE#0,%eLcc
%08Y@lCTKhCclS"BKcYX(&DTL!-H6MNCZ(b0elQ8KrBXhH`daGd"#TRQ2Ym4$mSL
2Nc[RK)1+8[r@Gj!!b3FaQb[R8kaT0JqhP"3Q26ph"N$ffRFVmPjL"K6fL1-1Pi8
PQULMqbXIVEki(Q@C@k4@SG8@NA*(C13L@,I$YPZlf%Qr%GaTkK@!I9[YfIH+ULT
lak[C)RIrNC2NaBYBr-,Rl`kRQT`dGJp*LK2EVaaP`GC`"GYr2h[XLBL3!0CQF1K
`VCbjdjN(HL6LmX-Y6-l0DBDiILECrdRZJ8S["mA")e-0,%UqKjU8,U&'3PXmK-k
i!jjMhB2U+ah@L9Bkfm,dkG4jBRi1C)M$B34hlr(rjF1J$e)r$8c!l+6X#TlVh(Z
LT`6rkplh@!#h3V1+'MUZFbR(RA%5K)Gm4cfh8,QD'D'Gr8-KY9ilVjb1LUj8$)$
0KNqVb(%[!Qr,N!#[5@5U56cN)JA9q#c0%b%,3C2abED1)[S3()B0ZkGl#0lpFZK
9%DG%h`IcVVNei@[*1U9AFAA)Cf0!!PU$9JlE(c,*(9lqV+2hAmUVkY%#Vc-4!hV
QX+fPHTrXVrCNBe9-`b3@SGe5M+fcH$[Y,Q1f!ZlYDZLAGTKq09%Th0f&flf(eR)
SH4-cY2d25LE`Q,"LApM&S'al&X5DU+mjJ%kLbcC'j(Kr-0"&FQ3DR3eF[G9T$C-
P,Q--XPM%QBL6a!XI(+dchT-S(&-`i%h%9*qEqA[[#cqFAMlXF+@rBQ8CGZh[)Be
j$2CTDh"'Qh*MZ6p&QLIB@-q)D&8Qa[%G3&l5@*T,X2$TbQqDLp&Kf([F&S6Dk*j
kBH1kIDYLZdbFRm$SH2V$i4(9rJ[IYfIFQEbU02HB6kBq(N%RBib%Dd$k*C2aKFe
DrHNB2`#5&)Ph4[&Yb+Ebm5k#P4pVkd,l4&#)JbS5#b13!)`d'#[riEX6e+$9XVf
3!+#R&)E@3`&fEBB$ENBThTd*ApDl)N8pc$*`#UUA"LQ#c`[VXYi$A@d!5`$ChS*
'&`1QGDJ4NPYB,pLkdBUapQ'Y51p"ZK6@h""E,IJpS)lh[@,YrXpjRQ-Je%,1'(*
qBHM!6J+Q!440h%2ANkR!A,VVSlNS"h4!H,l+kc1X+D+d@(4,5HD95qP"%+afDF+
(Y3HANbK%ar!A$Dd!4pErcGaM[1Id`K*@XEfHfp+YZC1ScF4qZpq%148Hi,5U2PZ
1$XEa*)JBkf"bYjp)DR"M)pPd&a9D364V#pKB%XZpTS,)6lIcp"li,U)V4$qU!q*
m!)l(XEDQELmS'2JcPN8der#%QF0Rb5ZiYPka4F)cDNhk)8rFmJTX*DMZDdM)6kc
Z'@h50h,+X`bba4Ql`0Y([N)K!rM0"[PBMb@5mJA6#M8K@[q0)@bMUpMk045m[Qc
+ZdS$RZ!Tf&8EDjYMF5Z('2,DkE5TY#q"`Zhf$c*`r9mbe*b&[X&@*0'eHH5,',j
k2Caf$CcfF1ZU9#((Q"Y5L@m0)`,k6`+P6%afaVV+3K6Gac3I6TCN($iL"1UHJNr
+B%#3!!eCEJd[H1YVSlk`d!&qGf!*Di$lF8MB2[U$(pq&VK$m2"qM1qCADCaS'XE
93j2Y`-m0+H`QU,8j6a9QXlCk+eb*6jmV&-mD["9pE"B$dSRlTjSU0jE$dMC6fr4
X5&R!"dl$HLV$VYXmi1ZL&+$62G%4q)l5`N+ZRMjE*9lKk[!eT1U[R55eKA%HS4l
Qbd1DlE#(Td"8I"VHcq!fcrL@rGJDS(Maf0l6Z36&Gd382riFFRhZ8clI-lq1-2%
ND#$4H!U4Y3)cZS8Q@r38[83pEU6b9VFk$(kJhamSl+406JYQNi&4cYf,Pmj(1Y"
`8,-JY(0A[qHT05+dFf&@cYJ(ieV)0'(1Ka!alc'iGHUTDSV(p!K6%6RCK(CJEE(
JF(Q6eK3f*kqU9a2[&Zq2aMrjrr1Zr`(1B4U#hp+JmA'DBk5JaqA"UbUT)hHV+Ph
i&BJ9S@VUQD(IfFl+c#MMDD,I)J@%V[8iHJ)#6X(86f%fqqr@Y0"KYI+T31a,L0i
VqK%)$XeB-'AqiNY&KYK$F1e,P4mS[0hQe2FI36`CqfiX,Gf24jhIlqAAP`qm4-E
i"LcrfX*DI8D''B5rU'3'&Pp2bHK+#qRr&LrCBA2%c1jE94qAGQ140Fi#8Lq@)r&
rm(6kJ%Z8++2Ti(3eE4D1Ibqf)E%6D#`V$UhT(2bbQ0DEpYlZX#EBaalYNA+k@`V
%AFi`2fMB"id9T"Gr$C[#(hZUh#RFTF6A-EmJX(E1q(qR8Y&F6QDd8Pp3C(heRi(
Y8J2l'4PdXGal*f9YXdRJ3hqLk0+cFUJHr+eHB"qGhlS*B@$`f40BNlI3XcE)*Q!
@4TUK!hh2f4'KAYi#ei9PFB0#KZXU"@&S0-Ei@m`!26#!UZl'4I"dNehG2rdb[Xl
6%UHEK55)98bR)#S,haTj#B-E)#jHNfS40Fd"6mpBA45c&&b8hYZTYT4R3Fa5pp9
Yace)L9eT2l)8TjEi)EZURAXSi#+j6p'b'5+X&rTjd!YIMM%BpR)DDK3lTeDfP,-
#PY'THIKG)j!!4*'d#ldpb#S'e+SF1jHNQe!4"-[B1BAJ+X8bbIC6dh41RXE4,GX
bUdMESjG!8jV,YGMLZK!Km#cQXR-haiXH9NpP&"`ATHQp',H5bhe0%D#JHj(3#Gi
(GC'2MIar@TC2bTVr8YHiP,p-Aka'j0J$1lPJ'GXAZT)-@"ZKDqi3YFRY2lQUcNh
`2q,N126Z"DBDf-KJN!#QS(EEJc'&Hf9%Vh&*IK5f+Z*4SK%J6YUB6f@TAlLA6N'
XkKNBNJ58cl!c-")2)hipbZ[jfXKJ%-NSC+fH0DH!P[(Ni(lbL1kYf+"l9H)A$dH
aIXA3Thl+VmEqlUFIN!!GHj0`aN08Ch2-8h-ZkVaGh+G*KJ`P*BKQT8C3Z6B)ieL
[R@d3I%i%cF`KIAIipM+L9UcIiR[IQU12C%N'@D-2FI'@N!$r*+,6qdT$iI$hh&E
-Hbi89l(SHdADq9CD0F%PNBpDD%6F1"Vi)U0)KkqZ9ihN9+U$3*!!UT9qCF3D5CF
XSLC%,!Ai5)#FCPDlj(AE+r-641m+YrBRN!"I&2L$DA38iae+hcTq[k86#rEHe@i
R+8THB(N`G0B8#d,9r)j0d1AM9[(1'(Z6%@G5(*[,q&MhpFk*b,k[XTGQicI`Fae
M0@I6)")MlHi#3Ce)0GV,Sfq+rm)`5Zark+!FfF[PIBrAdfjc1j`VGeIXhm!q34D
4Y[ABbhpBbd3+A[YKeHVPNELr6rfr&L[+@!UQ6N)`3$HPER9&DfGJra38m!1SV[%
65',HMSJGE*qT,Y,S&N1iIE@d%)bbq&#eJ+SVd%EGVU8(KMU%C"3&5GhXXImIU3(
2+N'(Q#4&V$%$S@9QG!L`ha%PDa$B,9J#dbqchj!!Tl*!DBqbX[,RDI6'`-edQ)0
'99XRLjIpEPNG3J1p'cAT`DNU(-E&36$#PY$6N!$Z%b4SqX8cP`DJ)+@%cM[l61-
J(@c&MVZB*XQGb#(`*D5(S42R#EZeN!$Jc6*Td-aj0Z5[TdfL0ai&RafDr%Q2RX'
$kc!Y,efKVXkeai#m&Qb2JJh4[0ACe!#5%hH3!)NFh`VB!K,0q8MSCKTa9"RiD,H
0c)J0K@5MPLqQTer%M&%,M1QRb3P@q%5r3Sj1F,KYG*E-Y@(U`5f-X-qrad0[2(D
l[fBdFeN55H5h%*a%TXkiQaQbc&LZ4L&L`E,Z2RpefEI9,-Ld"Hp+0iJ4dbP'Bea
1Hl&h8HQZ4Ecc1!,D$(qeGdURfX26i-6UF(I90)@831k5XXQ&0(Rp#Bi9,dp,B'E
A*cqYFh@Ge6pB(c`Dj[K3Y4)Y91`GJY8jMa'"""I@qB4mdVfbcp5A2l&6k['@f1S
HS(h+Q$`GCM5P*ZKej+,8(r2@!Be!3E(1HT'[+e@$hFC$+b9&lNXY-(EZi@dppb@
hcklGK)2S9ZNjBec$+4)YlBiL+GpiHJE!Fb*%pdUbhYVUjHDU`MCCie)D@,FSb%N
YF31hYh(0,rQc&,hR8jk$K`J+'&JA`pi-FQrrlf4dhLM'Y@@LK8d#IQ3SL#hFA#[
fQRa)cLH6d`S5U@#AS)dPq&(P$QhIQQ!NSJZEA32a8Z*Ah1p@a0X!M68jeqJe+DY
SN8RT4hQ+J%Te4*'Ab(b2Gm'2F61Ap5[kHii8ae4rJQQY#acG&TIBkUZrT6eRB3Z
I1aiP1VM!B$kbrP[hS+A89IN8F"p@)5r-**m!X-h(`LEp!h@J0+dSUPB%aJ4Lbmf
6L4jZJA9JS25%q2LJ3bb@'SU%cZHABK(dJ4A-Zc!FdSA0HNdiV93jYJ$P-ibV@Nh
I'a0Pd("-20,Q1$,2rF,fH)h5MU)2Mcpa*-#2Blm4rD+jlr5mS8(m),+5P2aQ[#N
(0hP#l0b1DbZ`kS6UYHGlhCi%#RD3!%eA-Br9T#e+ZdSKeC-)*kKf(-@0A)`U1J,
&!+Q*82S1DTCTM@NFVc++Y9pjMamj`2r0i((S)rE%ebS6AC8$cjQQGhZddZ0Z6CZ
AiJ9m3G3FXrkcrq0aD2E5pBFC(CC2eQ![N!"HQ@`I6bbjDV0R*QG5HJl-#'NM('+
G6ah)5QP)8NHY3RZ6EBDfUEed-)+pVZQ)E@TeP5**XG",RkmXeD&[(2c%3b+bGQ3
#--,JUjBNhJ*S%LH8&*6&6j6BFR(1bZUfZmTiASi0`q`T-f-&8Q2qJTX[C4Y0K6Z
bf0&`qL$i'P2fKB2-@dQC'l3G+9q53BQVLd*0Hm-Y0L2VIAD+lhD8I8qPC00fbh,
""S4hIkNMJ@kRVC+@lVSBV49DEG"G$"QE,PqPf`HR$mBY'b+PHX#B6qH*C3REh!4
`S`"p,fEqNS-IGkN%KpGXrpbM#IS@'PqSBKY8QhP($NdZHb&VFrKriNQGT-SpFRP
6-B[(8"pqiS1a@a"1JjQKR%d8Ba3@1%hUIqH3!,$GH@P&dj@d'b"1[B$d#RA%l6Z
9EFE28m1F$q(H$MqT3cX-RR`eb)[Q,%p'TQA+#B'MTX2l&XpJ(V'`bK`K2dFkPq)
-pfaKbqYBS03,[CJGkPjQqFH9+(kRXV5R"*[(N@%Q9QBr(-I`+@K&dGa-)LP*e[3
[542)apPTfX3'qYE%DUPRK-,,0"@J(!@Q,j&[2pDZeXaQirPVD+*)U)44#EkGDNc
m[Gj`%006I8k*3C&ZKYlfa$e9mflfXSPcjhaZ1)e$i0mjEUd"e94FLI5-T'L$b-5
S@pR!dL2d(jcKBN6$rIM-*)J'3-,JQi'mbLd0-p#2Ki-'ATV`S4C&L6cXi0"cjKk
[rYM2%Ylq!"2%qE+K)mr88+18RacH2$84+(!@4+#l$EF'cRN@@EkB@65&YrJ!S3F
+PLN5lfe2e$le09@00BUkdP8MU!$pRLcmdJU8(YPGfrM&)D&EU'YFAc-,Lb$S9jk
FmdlC,-EPNG%30"!CKiCA**-6dqCcm0lU02F46!T!E(#p9eSq0!+h"fB52+S%X2%
&*dD`PE9fkAqc#!,@qAJ,'jE9$k6Uh44L6Mi0&I2@r46A%,'*,l[Zamd@aJEVV+M
%bF(B)L@6p1Cp-P6X(QkUiAVl@i4p4Pca+BT,DqImr3HmSU5jEL5S*NicMViNaBh
3bSFr298T5kcb%,E(CYSFA,#ZP*%c@`3l(RQkiqqr(&)C"NHd1+"#fiA8@p@#J+A
H@`H#KYAL!jpPa,em+a("!S(D-jKSbC(J(#1#d*EZr)d+Hbj$VfI,prqf3HAq051
,hcIV8mfNX-0"LZlql(3$8aGpcHmN#q'UfT0[c5Il`@#!H3qjK%`('M+q)L&Xi$)
$F0aVHSfI!r[C",rV*#*I(A'ebNR,'mPrDP'CL46b$!Nb0$3'miB!4H$FA@DYG%3
55Mrr44m)N!"PrJASq-PG'SjF21fj-mm(ppTkfdkN92Qh2GFiA)dTeBjdd6"+J)Q
jSDU!j&d`2#krAU4N[&A5#(D4IA(JM(V[T&@Q#ai`@PV8#ie$r*RclXeSlr3jf25
M`@K`Vr4$H0bVZ[,RJ!DZ'a(d3Kc9[8@a'A,ZBYAB[EH2%XU'hBPk%4!*%NYEiiL
1Yp)[$S"cB!+BMaPdehFZPmKlI&k`b*ZQiY!5qd-([)m0Xe&-JMNb8AB+c9l5mRG
G#J9*D*p0GRdEUM&$2$LRk!Y(FNm[!1!eB0!3JC1raUDNG[TZh'3frDjLSKN8mhJ
)c3KIP9rqA%8'#N@0&0VI%9+Q00@FRI0FbB9Sq1M+2iH`#Q"9$YL3!#'4U4YM)`J
9UFYFB`e0r#lrL6)SpXT@r*@&c00F[LhiL$CAp'Zi4X%)cX([kIQS5(X6&G(C1$a
-MH,9LXZUJJiriDe+Zc`3e54[DMcETD$YZR4")`$qFQB9ejZ#GXZqa'i4JERBe4r
pKYdAkAZ+c'bmG#ZdSeE6jbLi!$`Ddb"QK@FFJ$+q5M2$fj'$diYJ,86QcCF"['f
XDN!r@&l-f*3cN3V`#-d%6A%9IRBeNfSQK&QqQ)5+q8UR2IZ,`FMb%IUlR&'edil
d+PP&L+`dp$2@'S!''(R)Y4ZTFhTC%"0Fk9FLZ[YI*N#K'bb8d"Pc'0Tc,4H$J0!
X)JjQjlQSd*`G&"0*BQYe$"'1P3QbVmeGBqe!UZ#lKSmD@YqIc0V(6i`(2I-+Z14
-NC%@TAFpHP4G-%)3`%G@jEr&VS5TpTXS3CaP+9hpUGj+bCke,M!)#k2iUi*Ef'i
I6fYB*d!P(8C-qVMaVH(G'de8kh!01'fqXI`HhbNl$',r+h+j9cr6"Jc%MTYSPf)
Mmb'p)#bhT%D+N!#2%ZX3#R`[LD9kQbJP1F@f5e+@l2[+12BS-@Z4!BQ3!!@E*hk
J'2K2ppU%N!!FS(8a-AclR+Gp"FFrJqLF9CZS#Di2!L@C(Q'0eI8)[HPpI`Ud'6k
a5bPl'8ZJA)20M6Ue3iIhjNU93Uf9&!-Dcd6VE`IchD4I'mbZa3#J+6'V$D50"eS
J08Nk%Ae&`1@qTiCRbhdm@)1E&S8Me)JL980&"qrF0bG,DHZl9I9,QUYQGc[,-kU
iJ1VmRkD(6Mfj9TV1TJ61ACq$+@A$)MZb94jeP)64(50dR5Vf4CE+19IPp[d26Db
+Z4UPSiV%@CNMEfeXM,&3C0paf)YBmX@P)T,hhJK-#UX`)+kV,U!@)X,qHK**X"6
(!RTPT*X[#-["0F#AUfb(LqHICELqr%a"%6Jpm$"K,R2kTN#X$ELk1-fd,ShaR+0
@HrC38*Zek@JIB2MAGcXa2$6MekG"ZhRRZ)ThTl[X3I,JT3d8,05[$2+8K),K!rq
Sa2d%fLdFlP11A"TCD$+b-Xd3rE$[JkEK,KVQ(rp)52fD*`!Dkl#8b1VbSASTiq2
I@jqp!80A`4AVC"F&rCAr,hVYb6*d2(T%bHNTXA"d&5@JHHbH5Y[dN!#1D1r!UJQ
95Y(V1LVAY2A6d%6YC$L',Jq0*JeNU$D+,N1k9VY)&ZBT&EAmcKr-m2Y-HRFrGlX
clp$C*eDQcPkIEL[qj$BMd9+RjU@(j+qY&E!99A`FePU@B)K'-6CS-YFFFE)bFAG
J03`DfT'1p9Mr2Cj&"dKQYPKC`0YQ8r41L'S+%Ab9c"4!D81LrmFibU`e"i0BCFM
-B2TQQ$PbhKLhCriAmf,GFeiKK6,fICkjf")MI[%GMG1e%$Fh8`8`$kYG"ZUYX(M
&ZJ"hQ%Mhm5C%YBL`YrZ!USi662![,2k"UJUL!Ca'-9BD`5kbHJY+GJ(39ZUrmC!
!"dC!#,Hkde$3JqD43p9!E9%fpdFB8q-0*NH1j5HcTZrK,18MBikYeQ)'IJKf`90
8VNp&F$SGH'6Yk1&(K4+3!2((EbmplfhmUBa6q21G+NDS-+Br8)#ec@3lUV*BRal
P2pkT%+aG`P1jF86qCGR%GCd1PAqVa8SJfqKZjEA`1NZ*Y!KQQ4!FbrdPX%GNGJk
)'@%JRpUHq8c9m85991TS![(V[8,Cr@j!Rf*%'JHNPZ08Lk(S"$GrKEi#&J#c5-9
"'MDER`Cr,UMKe`mljR$)%Q"E2+'cNqC*0"-r2N2)LMDa[-qM3E002aQ!RJ5$"bN
IJ'r%U%kV9ZD+#,0Sq%@BqlmN*9e@lc%r9I4fC6j11aVC2blEa-M&`R2jlf*04QX
9kEG4fA9i5apS58qePA1I,QNP41*6+G6CbaB$q'*bD`M[R`hB&KFE+k-i#SqYAQL
k+%@B%+6LF[aj8Sc[0F$-CSb-I%MDKiIJ%IDph4F4%qb3!'%'5&(8!"Q"hF+4L''
X4,20b%&2+$)55Nf*r!%GU'3DGbTZ%Q%f*6j)hZXLf(pU(Xd$+d0K9hikF%kGRl&
XV!dG'-m()1I)T*1%31"pFc-j2eAi4ZS1mr)aGbL,9aqGj[Hec('fR"lPbQF(qSc
S3(dki-3AG"br6H3'Xc-Zk6''fdAfAIIApX'2&lj)fr5M-qBYm9aAl"3D2i",L5r
-e1GIl%mk&b*bC#E16fXU%NQF2&%D4V5)L*0S$p$rec[SKM"DZq5Jm2j%0KJHkHZ
MV`A%D`bP+(rT1l('P(p&VGq,4kC8&Jq-6[e"Y61U)@`$CR!d!hU'h(Q*A,jRq5H
0G`Y0[@kDVGi829PQKJck'9F3,-S6r1X*#Z@Vp9Dlh2r3,L6,#Xb90fF`Qpc(a[I
b2Q5E`A#qN6if6&IR-A,K!fbIE88Q-I6a-RqSaiEIX[Tb4"9MBU[3NG!CdX"VEiV
pN!"-j&#a#Ka[N!#-*PX"2ViJ,5d$N!$@2feNh[9(P(!22+mQ(iU"rXmmGJI0TL#
P@5N,-)GA+[,[4-*['-!e#$T$PB*kL&5iEbEc"l#dXXM$j*XjD+'[GrCCrdqIl!q
hNpJJS"#ikEXc4FS"jc)"iFhK5ITe4EkJDG2)S(L[[Fjh*1D+ihJ(!9[$h[VT##G
a*M23,1d0,riF%,U-f@`jdEXbCbkBqqBb("A2l@IjL699*a"ri%H)r93fDdik$c0
8kJdfmL6k41R5SE'Vk1A'%IRjSbqT"D!'m0Y#bMX(h`FSM&+F`B+JD9T9*NCNi,B
C(-ejbV"'4Ffd@qF0D&a)-PBBGMFq6U3j(f!AF!MMJ9fFPXJ$@(%6-fJmUQcDZm%
Rlf#![JVk*%(&Fe'ZA*k!h1H5J4GH46k!`eDE0Le9K#pDMm,)dR+HG4M2R2hXVJ6
dXqh(69N#P#6lSKE4(+T"XC6bG9ljQJ"D(@p1e&i($%21#H@93aUAJer)VTNQ+`Z
41$1@MS'DS[CF%-NYNC8llDjEHcaL1m#RNATp@%r*NYV+9a$0+qGkE-EYQ%B&QP!
GShfKdQEE03"6PJdGB1ZMUCff[3CAaJaM"qk`aI&HNp48mdKRhk#`Aa%e0$-&%3f
Ke!"@RAL6ZJkc5QNIQe4HL*Na$BA1#"NKD(QmZXlL#L*E`#ZZr8l-U3"Nqh5NmJ3
TE8iEBeSXTX"HlJ#1iL1#Gp'Fp)-BfcFdDh%&!M%(28iRDQQpCkF%XTMY&!b[,AA
qVZ3-@@I6@QKU[NXf%'AbTI&&Qq4NbQ6I5R@G@(c63l6I%YlZAUM+jPQrbAAX8jX
hA6IFJ5h3Z9F#QCVTYB@PI&FAH8Vcl5K)Jc,5&6Yl1mVG&pHJUT,i*m4F#)Sh'1k
&@2L&KlXJ-!dJ5!qi8ThpQP$AQ'(e%V*SXj+D+1e1*E2(B@53!)k(8JajG-bd"J5
"I0,%T%,X`#eqFRVhAUNF0+d3k5JTrhT0Q%IfV%kU$feZ%d5N)1[q2)BZHBEZal5
ZX9IE'5Zf,)$0Pmma*@kE5$b`XqMEe$+T0S,&4GUSkVH`'IYmS"ma"&(J,Y2J2dQ
5%)J+ah4Q-E"*1[DL$NIekDD9&,d`A5Ur1#J[#Ci+hPL9SaF#rqkIf"$TeH[DGPh
X[%6KHF$#INCh'5X`HRp4TV$2C`9$jEQammIfSl*rMN&!YGK0D+MlBqB#2GM,$N!
Ua,PLS"4FUa!iqZ[Gjb!l`99B'6daZ+eKZ!KckeG`U4f$lPBIB0dAe[5j8E9'#P`
4UHYmH`,393NhUqSM+[[Sacq9!cqeIDQI)fZVZH&MSRQYd)@R"bJPBpa5ijC`9SP
kFR"j"#p3Sldp&DrX8H`SQN12I48UplmkQkBB+15m@Y2#qS'!hKY$RbV)9cU'P##
B-l,b*8QH!l[Fm(6CA*%4hVB9$fL4Airmd`@J9%8T"Ef'(28Hhj&4i,D-qHASe[@
P'9K`ML"5FJ2,9QDL%[+3!298cdqT@c&UIb`MiK-DkPHaJ8JZ'%&hG18jV4kh[(F
fa5JF$"ERH%b0iKkGbjF)b1#E$k'#iVd&Dm[H`iD`-I8,h4)r6F+pjLREZ[$QI((
Uk6pdE%Hl"5K#kZ$LVM)#%08(Hl(c)CB(EP4Q`$k-*X(JdX2'-N)arkBcX5m*RpN
D+j%k-0jkYm'eQSkkcR$RJ6bNFP5!K$CSl+!+H8jr"kQXeI3eS)dJ23kA3`JCR4)
,HJlYR8ecIbd-peSdc+%I31cp(Bi$TKK-%q0aapjBFG*h1&)ASG-2P*QJJ2PA6[I
BkFFjk&+0YLRk!0DiiA)kGHk#0U18KU#p3Lll-hrJP"4'8d"$,L9iYXj-PV0(#TD
i@FS,eCqTNRk0H#18PKk1*mliE3cT9'UU9cGcj&i#ZF')68He5Id,`IbA%ideLLL
)30[XMMHZkLU1[eTar@bdZJch3!N@TPE`IQdm5ARMp4QNReZ)MRmGYR-fkGBG+R'
M*q98$EE5H+m!1LGqmLS@*rH)p,4`bUr%)h09BDKZd5T9aH9%@&"4!kE)HQ-(-fK
PiULXmD"3YYGH8dijUFIMZR-4fE9k)YM0H@ccV"I5[)4lJ6RJ#@m+ia(Sf59#EZ#
[[SYE,`j3l+Q"Si)AfAQ&4Fj$1!Vjchd9cHD$b6P%r)%EhD-HpAb5qZ$J&K6Hd%6
"3ED1PC+QUEHS`&HMQCK04C3AbErjZ!"ad,,C`DiP,+b@m(4i"'iT[R14652p#00
p[X()lKlpS%D5iA#23Z(iNqX11Y'[DXfi'd4dGA0XX&ZRCT@bqZE3cm9G"9$%-%l
T(Ir#CX[iY9(jS"0"%dc``&ac"SZENJ,8khfY'EU14LL$#%PZM[$c[&E1Pr@Se'A
LQ@ld!GNIhp'1kYhB2XM6IbP`eed,8@cT2M,arXdj#-c,9KZp$pPN`+T$0(a-kZA
&IB#Z1hTGCK'NBNB*qYh0m*dIDea%`!PqD8q@i'CmNHX@'Smcj%J+j1Z0JRhah!h
q8[R[%2bY"VcS%SJYAXP&6dCbCdZHFY'LSrNhkC!!K!Sb%N`m@lEQ4l0N#!PL9PV
ELdk$N6bU@K9AL6AqiR#["c*Q[h1i#Iq1Z[M$Ii1j6V(#&I[85Pl5(e0pU&G8+[3
2ADSCG4-'"Zr1k6NeXf-AHq(CHS&q*9j''P2R88I*Q$jrXeaZX$+$m[5-Yi5ICf`
+lmJij!+$q'b)1Mh9QL+XY!%+N8ZrSLfLNBeGf"+-('NrY2Zd(a(A28G6S66$VLC
l-,V5iK'deSm+5)[V(@6P-$Mq9K'#J-Yl'%Pa!TZdmQIYV8ZpG3(AS#QM"D3l!1D
9bU@c@1F,-bfa*mCj*%[22Ka3p-,ciY[qP`)$JGL433Gj*ph6dX+F-"M"p@rkChV
c&C9!S&`YQBV3D06j4IXii$PLGFJa8Rb(TmMRM(DrVT8T9KI#!FS)G1qV8&dB@Yc
#"fc-1qDa%+X'),l'U66pBDlj@SUI3bDedCMhI$eV*e#3!#B'riMlKJHhU'Mpl)G
h@j!!KFNR#cH"T9Yqm(&e1MRR)L1erVG,VLd-2-QX$Q4p1QRR,fS[LZ(J%EQ+-Xm
@jNJ$Fp43[,a3UP9DSqCa%Dd5kYaU&@KfC'NQDfVm!JJj3Vc%aFPA3@,%!qeRX1h
2!lZjjrpPR8PDJ@3bYmVUYj5XLq9&m5+-N!$#qU0RNUjca`&ZRZ`8C5*bRC)4Pij
aqX%Y25'*eI6TX@`DHL@V%lFE#H9'Cf5)li"cUEjZLD$T!*63Sc-lmZIlS-%P4KZ
+QY(m8CP32eG4I-A@(@b10pV1L&'4fDKS2UXpUD4QS65#P8P1q%G&)CpRAFrk612
")8*@1`5KDZHPU)R81$M`(NCh5,Z![R)cl!--MIF!Bkpq$J(#EQF!Uq5rm(82([#
VP9R&hKVCP-1C3LHQ6RYlr+f4`5j080@q!P'KPmJkFYrqeJCpIe-0eL[I#$F'FN,
B`SXB@,TXk88Nma0J*RhiVZ3Yb*SEIrL%VrFh"A)dVPli3$Gcc[rJI-&5lDlNJh2
#R163@%IR)5*T254(!(195Fj8bmJ[*#iDi'(jf2R9!NFaSV`J[k+NP,bETjK@BVK
2jV)DlqP*qHb5iV+H,r"-JR,FN68F$Fiq0A6GmTP*86q-62*4[*X(aZ5hpEP+8Dj
+2&Vac+Pi!LGb(%4*ad!9JF&VT1S9Ueer1'E4cRpX,DpA#A$Bej'*(Ci$l1L#r1h
dH$3fqIp#iVdCUdpqAUp$,14XY-pXeX+(IYh9SUSF3(0#+!a%MB2FK6C`T!CE%L5
+M3pBbCfC5JfIRdA64&La,b@YV5Se%)XYPhET#Va8[R*'*8M9C,5"eY)6H)*khq2
"r0-ZQRkFMi,kI6cm,+r6drjrZq)LTJ`UZJKKH`cN*Gjb0dZGc!0Fh&Jjep4a+Gf
QV8N03YQ0"H4RkM2(X-bKdFJYN5!$9SI3ad43"SKbM'SGj@8H*BBDRVLNrD20C`b
Lh-d')f3KFB8c2"T*ddbVIE[dhD88SmYcqmr!)0@+ZT11`3U1*[r"JL[p$"'BEkS
%,(&N5RV"!ZZV#cdV#ifJpj(9p8E2F[ah`D[QV@i-J+aCG8lZp5`ARDQ-`Y8YmTN
p`8CJbTb%LMZhcC!!llkJPXUqc)'e-8iA"mR)4%c2,XiGbR+K%M*d-cM1P$B%j#4
9iPfY2k(GMk+rH`DJqQDc1H*!r91QS!iN`k$3bIiR3m2[N!$03ldrF$d[qP(3Hem
c+(1QJSIm3f+$ZD)!$L2#++qJ0U,2&Djqm+T0RIq3!+JZ@!@reXpSd$EN5FE'c06
'QG[p0QmC'!M*T0p$!1m+Y@'-'TEDhE6IS$`VNLTiFd6qXlZH*HjM&[K@P0L!8f6
)"l5[8aQ(hKSEi'*XY0YCG3$!kkf0e[p*EU$3-**[b#FCSakE$h4HhQB9V'FY*@f
QiHT,R-fZ(#+LR52!a&"j!AS3@ZmCqY!%1I#[*NN`8cFAJ6*NQJcNEVfMV'E9J*l
bJjcpGX#0XXm)Xf!LkYH1fBh0kIFEeN9SfrQhUqdS%*!!SdHeH%IR+cN,3XKZ+Be
$mD,kmXNd6M!pQ6kV)!4%-Kp5`,kJpGIiT6[KZ0SbC*4p#)+aFXK8f`0"VU4,DTR
TBeR$e)%bJHJTB&@,NKjB"'hhjj5JS@p%,lHpSr&cla58arX#R[I,HKajI1c)B3%
4r923l1'28499&lPLl"#Q[F2H9QkP%fNKPdf+i3ZJ&H3PL@Bk-hJYVa(Mcke9,SJ
-lFrG#NIEC#fB%'i(hq"c*JAG)DZ*GTip8*CFl[*SK5Fi,HJq22&HJj9X-2C0,HF
,C,V,MQEQp9K`)afK-JaH"8A6l%,DRaSfJ19qDKd-lp2PcNH2D)D4%@HBTHL0(5Q
$q,EqlVSeF*6BrH90E23))rh*EH-U[Y4%Sb4Xm6ZIcq,US0c5CiP9PCLlEdPqE)P
`iNMNX"m80Qa[CELY%350-SNE1CMa1PPDMh+L+aUa9V+-IRE2if#rZjUa"&")Gda
91CUX[h`C4C9qS+4YZYJea4fIH4*9eC[H&ZUe#N)(014XXQ[k%9D4)h$d39iDp&F
[)BrTaRD1+"l'hTccCQXYd$qrBG()R&i,`1h,+KECEIr1,,JP1XTHG!HA@q`jC6S
KG,%BllVQTekUU[i5T,H@,jKRmq+2CV(Nph&f$ER6b'!k*ieN"9Fl3BECl9JAX+N
NVh5'D*q)Cl8ei[%T4%JlbCd+jr8CAqkS%6NEhhI"FA"VpM9GS*3L+h#"d`1QQk3
%3hhD!%1cCU[SBR&F4$ZjfUqB8H`d5pY5+LA0"-KEVhZbm+aD*lZ&Cjr0&h#b*BJ
[86cLC1BkGlNMUGihY6FB0Kb1Y)*ME'qdRR(RZ"h!TC!%!3!!2`!3Z#2ElVJMfqi
!!+j%!!%LS`#3!mi!$jCj!!UZXJ!!)LS!N!32!&4V8fKPE'ac,Xq!,RKYE!!!Fm&
849K83eG*43%!rj!%!*!+J!#3"d,"e5(69&&Pl&CI("#rGY*Ph'J)J"49-!5AlYQ
YRqfUGTfD[[`0Ih9'M1kSKZTKU9&4m6)(S4l12`e8HGDS[55#H6$%!P1YjKbYIMb
lb$K&Lm56'MUBc*0VA2Bh5GEJ%XU[JH$48-(Br)K1AUiXZl&!5ZfLReXa,q%3UKU
!PZC[IEYfC(8kSpX-"R51E'XRcXFL`T!!4)ZJTqKj)5(Qq)cG#81(kXeTj$GZ6@l
HEkFJXCkVRBNSkhUYD3K0'`0)f)#@"UffUFkM)C1R&4CiFDUTa3BiiaF`YHk6[Qp
F96V!AfRL5KDfRS@KS%Bik@e909D*$NLM)!2U03R5'Q(6I')4l`ZqC'Xcp6G@)6q
#Jha4,@ak#53DZm%CmiUXY$h-$@UJ!XQ[*QJ$R#qUaPJ-5Mr5I,i)[0HFpm&3cCa
1KEmET,VaLGc)$FdKe1f8AFSG(%IpcJp8dLAc6RRNQ@G&3*Y%qZmb'0,SQC00%$`
`5($3IDSBDH'BU*!!TLrK&)S@Ac$)m0lQE*Zl$YPU+,p&+GM5G`(*J0Ni5AKCdh!
dd9S0ZFHcN!!-&9+0+BLm$)*cA2eVf$2UVl6&'e+Li&1NPBCRU[#Hem+c5[4r[RK
8dUKJmPZb#ZeRfB#`fUAm3#BNcfZAXr)p-6U6J5,Mq4`X+AmM9F@0#TaId6ejY9#
EYpAkS`,6bJM6XT!!j1fpj4Ir%)Z%R@-QG9EP9"k+c#)@`p!+L#E`P'N0i%-KH$&
q1c04N4ZHp24c%6UDpPZ)`IDGdQeim`[fjcF+k0lplY0bcQ'D"XR36Shm8UHjH6`
90+,#%plG%C8qD8PEkR&E-'Q&SBR2hjYSN!$Z"KjImZk6"qjKZl-f58PUD4)mA-q
Z36Pe5C88V4mA`,ce'$JY'EP(B'B*@0`pXhe,`a@d&S)NN6*eSXXXXFKdfN#J2r8
,IK1P0rF9dGZN%bmF%L&%H"6ESEU2+paUGBXldC!!lp["fY'i&`dR2b!p[$a+MKi
4&Fk"VN1AFrFE0ciI,dKbR"[lGe3*T(i)NS3H%d,'4GprdTPZHG1-MBcb,Pkfjf6
r@2KU(!R)8KbMT,(3Mrr!m(FZ`9TqNjG'!DPk-V9TTfFDqKIL5k$(R8E8'U65HCk
!!d`I8h&S"*b&kjVTXF1cUeDLlH[dKJB,Cd%cXe5Z-I8JH!Y(Y)T5LQKdacQC+i+
fqf$PPQ8r#('0B"a&LS0LN6kU#hR-4("200`C)NN+jF#kB*C#3G#pE!,FcFr)['@
!DiTB5LS,mkf0'Q-'S8Cjr(4D-bmGdBjCeI@&-kpC-krZ1$Z*jqUjfFlHc*E#R!i
0Lj)ADc,`$YT8X)iH$A6SZfiL'A2)SHXUMkF,IhRq(jCVG8adaSeF1["&8R2f-'S
IU1+,CJSf[%Uq!Hk*+kA`'$r*A,E)J)VHSEaqSE[lmq6!MQePUU+2jZ@Rf6I4Iqd
m&FdcZAkJ%-K8&+#kC@b)MVq)[aRM9B#pNZY!,%4!@bD(Dm3h!YHGEJ#-9q%2"j(
93FAr%6bT)i2Ndb@Je+iJ&C*CVY#RSaJh1"6R#`$eSed%Y5pb'cqC[dZH!`6b`[N
,(h$5c8cXr&kS`XK2%Q`1l0@(kR[3XdU#a9#10N%13ihFT#$2LS[@f$35cXlb[GZ
5lIm)j'13!#er0YL(ZiPJ[F2*KQFR0)N,IcYFdmNeRDXMUMG$91I+jVibR$hLD"m
2rPhQSHjpmk!d6ELP*3rZhkVh2,kIX"jUfm3!bcj-d9480bKGi$L%UKM5l(%PEX0
CIaUdr"IF8mL0"GfjC+F'&FEdQe`RZfb+qJZYaihLa9jiB)X0U,+QVmLrM9TRaad
JiairmlVV,J@(M`PjqSZF8c0@,M[%"(G@F8j+(QhkJUAj!(q8m3jM9XI)3@TL@JA
NUBSdJ@`NC"R1DmdHD[bkcdc$b34`+YHNiAPQ-US9BAk3!&Xr-RkqRcE#')4qVd$
0LV!c2&bbV%EX1r[QL(DiFR6kSM-ITmrGIY-j*LPXVSrSP-hM+SJBU-T0AB8bX@q
)mfcQCZT4J*PS(r,)![kl`G!#+8'hR"aBIfpKCT4#F-JXI8ljH2-Mjk5f4lq4PD)
N1hMX92RVR#R+(TkN!9BK*MN5)'f'T1eijpU@Rc-PY@RSH1RUb3JR*M$F8CM8pb5
aYKITqLe[$QJFLHfYqRTYrk)bAZ"3Y[CNjTVNjS#0P4aKq`fXeYr&IiP#i$23&9H
IC-H2CBFqGRbL)jZ1CDU!q2eCK)QIE0%A0)!l`PK)8Ul[&bFYX-,0II-I1*d"ZA%
+R(`#9k)lK-IRP+&TXHY3k*f4GdXcB#,%%SI)63%"K8#RaU-EcZk5j@N&ZN!#XT!
![$"q1DN-BrjJS#3"r93c+UKE24#f&C+6Nh0('VA#lqYVIU4"e4@C3rYi6f0%TTX
ReH5hX-'2'$U[!kj`+)['aIZNZaUfGV@C(E&8F[F$pjPQdF$3Q4I5dR(3FPT`R!k
E4''[SDk*MFeGC#&q"NFUIE(1X1XHZ2A+@l3bRXP3"6&T1FDfE&+R8VUad")EM0Q
c(pLZplMAJ&c5RR(NajjrBH9Y1S(p+XN`-YdiR$bM2MF-Ve25(+$cJi(X(mTA(Ja
*3cqb$cDakMj'ceA*,Am0)ceddSUa+N&r`fjI1dr8'HYb)[%JK&H(h2*&dpeir%i
cj+0cFqd#!Y0P-6`ha(Lk&+ZUB`I$&T%qTP@SB')VV%c&j&dbN!!mCFq&HhbDq6#
YbRMC$m6,-"%,*MZ1h+-&TMMrr'DDhbmrN6mk!+BAa95K*LX)rVkl5l`!(%%8d5'
Lak0BjUJU$MYk`+eA6NA*FEE1D)93+SH#303D`%JS0jp#Ar)@e08m6%,,JSRUSj!
!KMA+R0YLk+f#D)8LQ8q*k'#@-m(aQb8F+Z@b1jk%KQMT9ZBh21&Uj`"I([Dp8a8
4)9U--HK9Aa"hii"+mPM)V(ZD'M6lQC[4h0lPa4PL3J`#$8,E`l%641%Z-(,l*"1
-,%f`@,CX`I@IaIjCPk'pbCqG(LM@Kh(251!IS4clp$ZCiP*$@9jEj3*YIG9"M"D
IjiAMemS%5'KPYMNZdcHLbNZVFJ)-NkDhI4SZ45((!p$D)"k@"Zh`UHIl"&m0!9G
mZ@KGFbi2h2),`K4k5mN""afF6CXBCk9A)606*Qpb6%Xe*A2YH6&P45qDQP@8dp`
TFRhMh@)[FQY!&QAmkUVVcD@2%"1R'hPYR$ajR[HdPQ&DBj[i+CX&QVd*d@aqh8r
%@Z-Q2RA3,+0aa[4*8frlR!Y#Tr)V3VMSF5T-B(-"Xi[Q'YEYGQckLDbS'UmB3X4
5(k-9lU,SZM2%XjNa22emRa&hfS2k6&!Q5CCAr(k@D%jpYI)RIYcCLkhK)MKZ#VV
FEe#SePX&I403#`#@,U-[%#(fiSG1#'mZ,,01M'NiB5kDcaj*KPVP[SeNeN9h"a0
9`E45*0Mcic9@IrCe4ALcY",pCdZEKki98)iPV0aKN!!5'FHl)(m&`L4(+i,LZXL
G&!CR,L&8q0A[rI8D8IiUS%SVLTi*iM)QKdh!fk"D%KaUFiZ2f6+r*F2+A%M$QH`
RIa&2hfSISp5eLq%Z!-qV9!G+3F$5jc92r@i[@Hh0XlNR#Erm)m63H1Gj$6e,[F#
N(P)0Q1kLea"IH*MPKkdD,AfU"Y$LAEPc&CB34r%TlXb`T,"P[MD6mGUBTfHeRX"
'!RiN!QEiG,YfAGFJIdYF&CpLAhFXTAr@8`6TbD[qM&[*[3a26rNI8k@%d&l)(D1
Cbb6laMhK`3Q#fmrYImV[fVjP#b[rX!0R5DXKa)*K-Mh@C(c1-,Pc"!M%&)0e+'*
VTNMaf)NVB-d&bR1XlH(G,58CL*(HY-iikp!#IAS4Umbq3BjDE9km`[$ZN5$T`$j
05)rZQ0Z6'h#)ZUVAr6bfU5(pMkakV0pYJ4Zd+1!b&h6JM'Q+'E5j5H#Plfd&q9`
(dZ$K14'H(@0X(N5f9Rd&eS54%-(V5I6S6L'"ZCZ#$%JYI@48mNahQ#J38Db8m4`
4EGYMJdeTMCT-Gp-VIkdf$kj`crQ8Iq44KqBESc2GSb0Dc-44cS3&!m@VX984PUR
bLJ8k$RYBdQ9&5RiIT,NXP!RmJA8p$QS@)Z@a[Ui*q1hPjK,'[--(0`LXTbDcbEM
E-UaZVKU0Sh,@)0U)$VFa,Z-A)PPQc*aTP3#Hf-'h!%)R3QER4DmEb(D5MNBq3f4
8#Q4c$95YH#kDBXZiIq3$[!2GF!dNKhHlfJjdA4M(T),N`&4PF9ENCelj,QicB2R
1k(b[l$Q@%2p(VLl83a1q29)QJ[+#[M@UTjpSRRp-eFVM%X!m%Kb-pXBlam2b%PN
iRpQiYH%`([eHBUTc'S2qC6cS%F[&PJ0!N8)QC!9`iNM1++pGcNC'm,ZIh&EI,&"
eRXlM-SfHUL()T9h8q8j#DP[9XMB#p#rZG285IlYq)1fe*3Papi#Qa#1i3UkP4XQ
f9JCqMP+j-Ym%[9cJ%$biM6U)XGE%mC3ckb6F#FDI,39C1SkYHk5k93+)d4pVTLc
BqBeA5M0c(6Qj%AM-"'J(FDC-1hlp'dELN!#Zr#['N3k9$*R-*4J9IGPGl!+jq1k
iKP54-Pf*4JaqLepA@-RAiZJJp1KpGC@3!2qELj)6VEJmE6l18Z5&i!J18rME2X4
a[G%UI,&J!&cp6H[m[A5H&[H4%,MeI'GT9[lSe98)$LfdN!!E3!CrCMGh#bEq[p)
Jl[Tj[i)L6,CP&!plBP#SX&C3@hrrf%IQV5i$IFC,$i($eDR#p,ja8"-9lhdPSam
FIP`YG4p4N[EJ5kFN6T*QCJ9UE@r,ZiDGmkprZ6fV[c0hY6NIih`9'@Z%(@5[6h&
Ndem4H3hiDi(1e,$Q@QdF%+FVT%m,VIK)Ic'S'SXjAm%l$I2B&@eQNQ)ZdRVVh54
0YkQ&P8[Di0bS&MGN0UeqB*!![k9qhFiM0##$cq9kTZ)BiJ+T9l51'8I8LQAE%$r
[mPNjlDDk$M%(eM4U)Qi4Bdfc-pY0C,C*+hXh[E'FiEDS2Ifiq[VF@(SGcIck8iJ
pMBDEF&6%fCXhfE[jV[c84"ajFpc#URVRc4)m8if"N!!IIHXM'LTp[$UJE"VPFCR
%h!HTVk"%6[a9X9(PBP%)Rq+-&Xp&FT!!k`Ek6hA+b[P@%C[kCUc1d6r`eK''(al
r*CdiJJa1[`,R[8&Z%*Yjlb`q*l-rb'4`mlbbelCTL*!!aM--ZKlDpFlf6pbG`dB
M#T9%)NIqY3DNRa4Q5MP!V%1#i%6)J)F-qN#2H&pUKHd,'"$"$M6lU3Qd8PbbN!$
jiHcP5L((qRh8RKl0Ifi*0q+9YD52cEGaJA[KR2P[4mhL5)8feKNr#0iZIR*ITH(
,f)Z1FVJV2G[GTMLP41V8aSYR96L`2+4KK%4(6+e6Zpcl5[(1RQNj$L4GVQi%Fk`
U)&b+F`4c5MJrmLecah)DA,1L,43rE!#&"4G'1ajD9@cqj0RkBYbU#$m8+fmjm[R
A)&q(C"#B1qG99RHC)5fM!L53!$61(DA8[$+8PG"*IHlNAG+DZ@8rde`BhpHCZaQ
9lIl&p9b98PeNMSJ2lS`UAJ"kP1rIFFhIjcdpprRh@@!$[Z`YDUXJ@EV"8M2P5-h
rf#3#a[Yha3*+9McmA#1M'INNeKkj9`0(ZZ$I'(m-YA*j-MD5LQEXh2lF@XbS[-&
aXrB%4hNMV[JVE0U8mR'`N!"C+a+6V9hKBJDA!ZK!pI64@@2SAE-CrIa+V(%FUrD
qj`KF@RdkbMi*K*6F''hS2EqjV-YL&CPfr@CDj+A$Df!R((SUA3@j6RY3K21#EG$
,Z%GA[TUrBGR'blS@-0PaC3!bP!KHNJa*8**T2UYq)qR&8mSE4!aYXCbCVfj5phQ
d'bl@N`(J!NGTYl@q0P3a-@qZA)GrEmqk[3G1)*42d0kXkmmlD,DHVR4A*NDfAfd
!eRceUp4rkZ1$dII5D2*krJMYLZreh521*-Fd("0VAA8I@D3pQhI%Kpr9(aJP(e2
#%BGPVe!Q3e)@+0TFV[ZA4S1HM@8M1qCf@E+@b98%f$,*6dQlG59m6Pam!H8BfrS
Dc#YLcPK9Cb1LHl0j4VRkTHGDG)e(BVF,X9M+8VkSEU5U#aG-,b46P$Na+STq*pL
ICmC2ZCDaFrlrX3dX9Aj$$ZZ5dT1rT$9Z!K,T,f9-hclQbb2$&!'I"CK)XIFmpbU
XB3Na-6R4eh5-(A`AIe1bTA4#ENrQUlp3LrD8NTl-4fq9QUA5[I'd'[iQj-KS!bX
qRfDE,E%PX4cmC0X%555hB25-P+HbbLZVKp*H-plT##CdENlA%k*hBVXH)pcH%#C
+c+Rcci'q#N)C!,j8mQ[6aPIm-+H8N!#kCG&a9GT(2YD9&L5522(pQ"Bjh!r&14'
)m&l3F)-U*BNm8fBjKURYZYa9EabCBLXNfY5GC'Q$dSZHhHpmLfl4!D49"6JAM*K
Sb!9-!5NBBZEI!+eY5+2pjpY38malrjrZCaLQ5&AMa!d,mf4[+fRX@J"TMVE+kFi
[AePTfQ@aAYdX!6c4hpqFM$1HF-il`@-f(p`q`40dcNR0N3dDe%IGF'BS6[l"Bqe
c#Ja6S('`Yl8b[RNIbMaHe"SP#9XYa'$$GG5+B4P`(X1,6C+%BG4XbcHpEMjLZjE
'qF6j)8!(Z5%&eQbIIMCYST*&40CX5ajIMLD+M1,FQT`01L"kQ-!LX8TL9h'5-*D
K0TSAIMJih09QkLdBV@Rh!eq9+4hZDS+B8rRdNk[$'BlNj&a#h(r-4(i&@lIUGmH
SjUYcElC11I`E2cS$#'lPB`h'@Rp&3J5&MAY6E(-cG+rVbT+DeZr[80Nc$P39'"I
&e"$R!`XFp@Q@[Pfd82(%`I1P4EkD2pIDBiD6M#MqCbT(Xea5+F0jT&LDaHYQL9c
mdD!P@8BM8!B$3YPJj5HU+,-EV2Zl)M&f-0hTPVdrKa8`dPRe#*TU+UahU`B'2V'
cmIRpb2)rri8N1U-Vc+`N&!#T#5JHh'N3ZXHM5*4QQp,&TlFk6#ece%[#4,-Z!1X
lLQ,Nbd53!%p2jepC%$1mZRT8IEU&E*p2p0p)hNr@fCk*j&#RQR8hG!KpJbEUH9e
9DIqai,[H0[0hf(SGS83+r+QCjZTIJGY#Xl8Q*6+G9''4`4Yh%5jD'Sd!5%T@1qC
BfVql-e[5[D*e'a[R02R*Lh@T3"4M)1"VePRPk4GrFjMI`5U(`"SRCdTqbmQcEmJ
qeN[RK*q[*2Fq[4MN[qa6kDf9qHPRc,E5p3mrN4)SU8NC-V6PA%NqDMq8a2M`*rV
0TI%0&a4A#AU$,HQhh0krff5+FBf'ePNPlb1jfbK!E&m)FSNGDCc88fi8[VJqArD
$aaU$RC!![bJe!F0A4,C22KcLMDiF4bP-iQMNE9#fZV@R!X8I)@J-mBc@bSLrr&+
+[S'k`$UKARFE3PhH5R1JTP%QS&iVG)Afp,E9&c'2MiPRrBKprM`9c65Xqf&dBEX
)pZdcTjCD@0Sh"Qbe+44VjX1dI#T,'pEJPpM[+%4jPN%IS8A9`PG$P5lp0["+!0A
)ZC4[&IJb4jb4KTQ#3L@,(Sc9,iqdA)rHb%G"$1M'*VFR3bUa#U3R("hGMD9&DJC
-H+1pV%l3*VZ9G'qcAA9HaQp`qSd5k%cTDHLC99GmR%j)"M5Sm%D[dalH+bEK2j6
4h!)jU8[imq+p08K[LS6je#bh'Fm#FDbk4[JTDaP3h)$$CfT0B5FSRj%f3(GbVjh
!`JPlRm"0GbQ&3iRh1QkY"kD0$9EPJr6bNMU-5VhS+VGir,@3!1TFTZrN+9X-p6(
'!VH'0!mEik*a&I&h&B%IAYX3m+Z8!!hLm!HV$B@Q,1,GHi*T2+fTlL)5EjK8L6K
k3&)LCTJN-"`1)'Ph'ReIZUJ!3b[5f'P,Qq[dE5rp!mer6c+%PejdYCL(lD*&EMk
EG03#"k2UC""V'N@B@P@q3Naa4pRFQ6+(d*Pi4#3"h"N-R'(ZUB@DVa4m#X*a*L(
M[ELF1*SYN!$eMGp1F8*K81&r*0S(6SrGVK&X%Y[jeL(4cDf"D9`[mDaH+PCGDXP
d2Vf+)jJ`-f,E3bDbXh6Y`*I24Nl$ZACP(YURRLJ6F26dhAQhC2Lbp$c4R259Yrf
ZmGDUf#U-EPhm+iN'9Xa(+bJA%r`U-N)ieJmCPifmh"!hY)[0hkF%p9[01[[P31#
0h3GYS"VbKGGb%8Z("CbYjA8%cBJ9HRpT*b`kkf,3*LT8[KrbSb(6`UIXV#p&1Rd
XU85Q9qV@P`crGi1S5ZckPYJrDM*GIcKF3)@Pjd10`1C@V$0caIK@6*!!Z&,[%%+
&DND4NBAZbGlU)[JKPYmlkP%ae1'V%Yjd*6i1'F@2N8[S2$NDLV+c9Hf)('AH1(Z
6cU0lbNVlIed2U["jSr!4jFFjB+9'[aC*kiF,225cf5I`I&08cFe@HlD4Fqe%&R(
(3-Rkh(G5(m5SEKFAE0XUNffUMm1+K&UE4S"UTYVcY1R%KahYe2AfrZ`rl[K(*AG
,PEBJjffMH`'[`UH&IPd[2SMq1[-(m8NE4E&&'%ADeB1b*PdUhf`KY,d%#BI"GiT
hUG)NT8EqQ0cllF$HC4Ulqk%ZhFN"RlAULMd8UQAUSL!LjPITV%&N`0j6q8ZCP0m
4cqC6Trf!SQ"Xi,aP22dKPdM!,*Sq"8XUqm1N&`0FNPpl'k`LHLmGMkMi2fQc,q$
+BM+IZNPcJCGN4(iFLB@YQq(dp5hp%X8-pp)1%#F&"iJFP0k4c&jEQ*f0fm1Sfem
EpCd-p[mFBl@hG$rl`lA6fUBf9KYpq2%(,VqB4a8Ye!A6PbScj(GIipQ1'ARl*b#
!PPT%Q,2JM$0%U6'$r1DAcMFiRRfN"Fm%Ih[Pk8eM5ercmUiBI`X`9r0Tq30d%G0
Km+fH0$bFIJ++HNKMq0[ejS,paT4-mkDC1kGp68RlCi'5Eafbi(`YEI"9e6T#+4D
+KYSN3-Yk8c"*Bc8$[S32,8&P(-TDS@L,qH-!`-j@SESi+*d#"rIib(`G1!hc3GK
4TUpJ!cX9XeA)me4i[[5&&CF(kkA(elPplPjU,T[qY2k*3*VRCU!F+m*[3G"'3J3
(kP0h0Xjk1erY*RBk%Ra!([dCL%8r@em3&(9lAZX#6-q1U',T8C3d4EY!EAS(MGb
G'BTGhE6$0Tfp(2mJ%0164HEXN!#N+IaCZ26K`ebI[A2hPXqLpCV5BLVBf,'J(X8
'4EI(ZV"aqj8jjiBlHJ+9[BX"-pCm4ePLmA6#6k$`a8Th+k`F-D-F[5YUb9FHdRI
#JKX[ZaN'BHcY))BBebC$Y8FcT,QIc,df(-m*&(dD4#hEd*fiH%qBaK8er53S1dB
`d'pf%`Ga2S$j+cRQH36TfBaBf2U0SYc"-`*4U0ik$KAQ"id`G#CqBQDll18%XpM
DP!J,MEiVS+dkNrkRYmhMXM@MGErPjld39U`Y$@UmS8K"GaTQL3T0e+ek`GQG-5@
-N6pj'E&)mI1G)Q1L3C61mXH8#f-%ma0pX63"jFZ9FKrk1D*BB5[Y3MmdFc'XlM'
$)ff'm9R6N!!`bS9m9`$D3IIp,9K5PNa5V"KIj@`jqA)EfCjk6lY2#9f@$hM@FB-
Kf'jF+R8Z-6Y2alAS62mZ#)MLT,pk2)brlL9dNjGlT1E)8LlX40H!ZRf@&jM)22,
-BaL3!&DfF3A`iE$-eMKcd1VYLrqjiIbNiqhQ3@`@(9RFNiFa2MY4mPPQ2GDSk2'
M5!$Cc#bNJ(Hi`U-'-eYeHm0$(f0VVm+QDHYRr'J2,199GmDY3-N(*N3fC#Z"-TB
)pqNf6Zd%(I3i0k%fE%J1e+C%Xq1L-G*NbPi"DMS2[-HM(C)1T("*PBcE63%V&p!
IB[4@82R4Up,$1LTC+k1car@f)"db,d@[NYMibKLGmfLQj(iS`5E@,q[9%PFVHM(
RR'Gle$JBDH,Be",3IkCK9FpdQ0)6`Cq-6BVjeZka*qAYH,5dpD,B8Y[IpYbZk++
JUIB`&%,8ScUl%(Y3"ShFE[20*J2FL+PbZ!qm)eB8mf#4,SR(Laq6-hS0f-@fFr(
bBXMmY!j6V`#8"`TK0c`@VVk)-MkreLc`)f9dcjP)i1lEkYXVCYRpZ+C5X"R%A!H
TUp6)E0GG-#AZ8jA8G34[djMT[6IJ-e"##DQ1b&lZ*AV$Y"JhdU'ArhL4N`LAQ)b
4E,FdBK*edS1j%+qKUkm*Zi2IDF)L'i$B1#!4S&lqU@Lbl6EFT0,&"PPl$mK'lNI
e"a02,Ba4PFV5a)rkC)+0bfHfm5pkkYLC2'p)l9fAM%Xl@H[j[YJm1JeQaT1Yk5j
l2M8*DUY+Y(QMj$i(UKC%0,#J(b8H-kI,i8TjY6S&5)&GqeM"5%q+V"RXiC6NbhG
h%iNjAFej$%Vd&KrcZpRi)&`'UADKfCq41#RLfZfHl"D[U3'J0&R26GFHHAJ*$,S
mQ"'Ce2L0*DZkKLe+29A&N`MfCQ,@im@C8XfI)jhq,P!8CUX3")P2GN!Ud86pfLr
8mS&-bLMSbj8m*H9Nj4HpX(,lmMhI8#GDZ@UqcheVb*N#KABA+Hr4ch(eYRU@QQ[
KYdVda90ahaS@P5,M*$%h)rJCVa#%"01B,"Eq@aMNTj8MjQc!'L@ej%lP'"bA9m"
m3A+$rU)1ji#)M&QM*k`30',LEXa"$#$D55&VES6fK00bc!X-ZK%$VG)jQVmX&Ad
+[(`L!XM4eLPm60IJTCI@r,#d-G,58DPKQ1*J-9r@4Drc[P+N#iHEf)Cp(R0fV2&
qEVYdNZ,6,X,$!,BV9#r2ia*PHMVZ@be9JC,%,6h!B+(HG,"TM'(kT2B"BXBh4P1
p9)1V,l1qp3Q55RN88j&A3URT[MXDj84Ceck[mV1-@e4pVbqU4$'Dr4E3Va%KBYi
Uk1F"9SiJBljLUh#lhAijQ`'#+3@%QF+ARjRYI@l8i2T9'm%@Hck"CY)09H!@lG2
94qqBI9UhSlhPCff+I+I@Q(S"BGi2ZFCK06$(R(Q@[TIX@d&BEmS-E)K$$B&SS2#
B!aDB[6U4B@e[EcajQAicaKbZ&f3K*r0%L+$JKN5*(0JLb-[HMpBk4b*Eaq5N+Hf
q6R5)Bi[V8!8%#8I9ikV&8!+NTE%!LTF2VY5UPj!!*6pJ[DVk3`('NYJ,bSSL1h2
blrJ`q@RTL(-$BH-"a0L)ch*f0a&3pUZ5EQ0)3kM(hPU#ia)9BAFCT9j6,8M!M%b
[)SI%A88lKaLle[C5'$#ImBB'X4-lMBKH4$cDZ`QcdIJRa6JJANfKVG!ckIeh%N`
R1Vm"0TmFp9!9K6i#M*dLRhA4rAk9V`PXIGcfG-4qN!"6lLm5`5k26%JJM-0f6YH
(ba[!8FC-KFhP$S'C3VG0aTKFhT!!#k#j`cbZXDY3-4QqaL["b6*)$&&`N!"fYl2
@B)VmC8&#d965SqmLiLDaf()bj)'lNCLeK*M!5l*q3eTN3rMm,3N99*Z0p8Mm$AL
Z,cTNb0MA,4-34mhE8qi&1F[4kb%Tr'E%$-V`Ud52f(m$2TD)*kEbE&@6Ep6C',D
BYVXFaFMl!+HC1ai"KprbGTqVah0eXJ,c2"C$Sf%8iMC"@4ihFD"qPalR!6UUR&1
khA$K&@MK%0cG,A2!N!$VVTRY'KU-L`N%'8mlXhkb9DMhSf!c#N4@NFR9"0ZVJ3i
QVYUV#KjVCLfi4[aBRAZc(,qcLfIY'e#T$KC$B`Qj$i+rI$'[a(+mZ8XSi2ZFLUZ
hf))6D3R%H`dV[K9K'A`RGd#PN!3"!!!`!%!!N!N"!"B!N!I1!!"4@Iq3"!#3#U@
3"!%!!$8!!,Ea6[1fm8lc!*!$cJ!")lS!N!0b!!9&@`#3$NPMEfi0!!%5,@PMEfj
038063!#3$i!!N!N"jJ#3!i!!N!32!%,"e1([a#"i(T,V1b+63jBp6KE&40bkJ6-
15jfD#UKj(*k(jm"JiedH0VMYC24mX`HVe+GMeF+dQmZ$01k[6XH0K4dq8mdCCkB
T6YB8X60cfjDl4FpQHiI,ZRhD$mE*L4*AjH@8Sa([GeP4F4lYQSHRkQ1Y`b))1"i
N"5,R8eJ!TC!%!3!!-!"!!*!*!5,6!*!(FJ!!Nh6rN!3!N!T[1!!!!3!!!D1+!!'
LLJ!!"8X!N2--!#!!#!#L!4`!J&99!*!$$!!S!#J!VJ&1!,9993#3!``!)!!)!+)
"(!##998!N!--!')!NJ$`!CJ!K999!*!$$!"'!+B!ZJ(@!)C993#3!``!+!!S!(8
"2!#(998!N!-1!#J!+!$#!D3!L&99+!S!N!--!#J!+!#8!4)#!&99!*!$$!!S!#J
!M3%A!J&993#3!``!+!!S!,B"(!3"998!N!0D!!%!N!9G!(!!F3#X"!*25`#3"dS
!93%6L$T6Eh*bH5iJ)%PZFh4KE'aKG'P[EL"MB@iJEfjXH5"LC5"`CA*QEh*YC@3
JEfiJ5%C6)(C[E(9YCA-Z!*!$@J!"!*!&A3"`!(%!V!3#6dX!N!G+!&8"%iJk9'K
P)'CTE'8JdPi`db"YBANJBQ8JC'&YB@GPC#iJ)&"XC@&cC5"eFf8JDA3JGfPdD#"
MBA9dD@pZ,J#3!e)!!3#3"@d!CJ#"!+)%!Np,!*!&"!")!'F"!iJb8fpbFRNX)'*
eG#"K)'4TFfXJFQ9XBA4PC#"PFR*[FL!SAM!T)'KKFb"[Bf0eFR*PC#i!N!0p384
$8J-!!(i08`U6K!'ME3$X#h)$Y,)b+b[M@dhH@qpUpkCZ*YH!-3"!!`#3!lUe$)!
!#@NUrZ!"94)XqdV)@`lMjA1kK9'1XMr2MrqZ)$NhV"Vi%FU'0AQ'BU0RDr#XAMm
&lZ`,`,#T"L)i6&Fq[H[,VD-C!m8F@8XE1!X!N!0-!!)!N!8a!'F!43#Y"!44G@P
d!*!&#J"3!"`"%)JD9@j6G(9QCQPZCb"hBA-JFh9MBf9cFfCeE#%!N!8)!!i!+!!
ZS!)!!3#3!p4"4%05!`!"%Je6#TXN!$Z+L)S9caE3Fka%E"$e,$pr2qcARErRlXi
-TeMBB58U@)999@,P[r%%XDS&#l*P1diJqC!!(`&8**Mk0Eb&Tph&fGe0dXKkNVe
p(bj$h-@Aak8,&[Q01&G2PI8,*$a+MT*"[ZKdYI"dDK@D)Mi&jNl(,(@,TA1"CHp
m&"bi0FV-TR9!6`FK$%aAP&QFVF'lCA-L&paq$(JIm$a!SNrM'Ub)p-`20hNS80Z
-b('VTjc&BeY4ZFc0eZQ"Uj3hhmRl$1Rr92r*E3#3"'i!!3#3"@J!HJ"m!,B%!Np
,!*!(5!"H!5@)6P0[E@8JDA4PEA-JGf9bC5"cDfP`F'9N)'*PBf&eFf8JG'KPH5"
KFQ8JEQpd)(0eF("[FR4PC#"LH5"dD'Pc)(0PE'BYCAKdFQ&MG'pb,J#3!kP"4%0
5!`!!YJe6#U-#!ZrN"*hp8l%2ccCldpY8G0M(R)VSe!Q+HRCclXET1"!2&6YXCe8
*9P@3!b(HE41VqJ%,NJpJLErjN!!"IXTN0pFP'NhFXXeN0%iKA-1K3f`f6F6Y%d@
+CqJd-B%kIc8'8cl'BkDNN[dmr5K3rf[-JcXqPd"rAJ@qC[AL9b'HI%[ErHjf82f
*dc00USVP-@0*@#ld!T-Q34*[(afX!J#3!cS!!3#3"9!!@3"N!*-%!Np,!*!&!`"
%!%J!k)JC9'KTFb"KFQ0SDACP)'Pc)'4KE@&RC@3Z)!#3"%J!!3#3"8F!@J"E!*3
%!Np,!*!&!J"&!$%!k)JR@@pe)'KKGQ8JC@jdCA*PC#"KEL"TEQ0[FR*PBh3JF'&
cFhG[FQ3Z!*!%+!!"!*!&UJ#%!,i!h!3)3fpZG'PZG@8!N!8%!!3!SJ&L`!)$k!#
3!h`!!3#3"@N!B`"p!*m%!Np,!*!(23"J!21)A&4SCA*P)'Pc)'j[G#"PEQpeCfJ
JFQp[E5"[EL$5AM$6)(4[)'0[ER4TER9P)&9Z8h4eCQCTEQFZ)#""EL"KC'4TG'P
[EQ&X)&ia)'*jG'9c)'&bC5"ZC@9NC@3Z!*!$(J"Z!)B!hJ(N!!8!N!J""3C6G'&
dGA-!N!BB!$3!&!$m!AS!!3%!!3#3"32S!*!$P!!!!4p"4%05!`!%jJe6#Z3L!0p
f!ijaTdl&mUcH4,(Q2,#(q+cH9#bRS)Kh8fIe-m%!(3BLcP*d9JmlV2,rhrHH(0l
ClA4B!JZJSh!C1CSEIBc9-`eYXf"Ff#fYQQ'1,jP&KSEYjm6pGcSAFZkN#TXV,[2
qG)1bS4Qe!@`Z(5aUJ)P9k@!e1(J5!34(NB2(LB1,(03eclf$l3L`iF+X%J6F'S0
JXl6il#@GkD58+,c`852HDVRR[`kmdL4l)`0+SX-VH`PN#LR5[Prekb$B0H1"HRl
Sb-b0H$[Lm'Y,QFJ8JNX+D&I&*,8a6r(j0cd$)jiaM1pda%d1,6c8J$XCIc6R(cV
q1QXMZ3b5Gj+JfBF@rQV*&dhfI-"IFkGepNBLP"U2&J!!"`T"4%05!`!-+!jG#kb
#*$lU$0r[lMJ*S8U(8"UT8H%%4d"jA`GQmk$CJS396f3i9T6&AQdmXj+5fTjY@'X
lmI[U3fJYC+e#"@Y1,T!!K!PlLpp[GI`qaIAlb-+J@E@NcZ`ZY40E&*)`,mQbT%Z
&%0,h1lh[a1,DFq[h"`hRjc3a!53d)c8I4Z31T3kNrfV)cfB)`E"CDAMH[$jm`Eh
R45H,`KpKrA+I2!Tf$"FqLC@*(Uk$BF5(K)QYSFSSU$L!H&mN#)-cK1H"L2N3'6Y
3bQk`+kPpM0MZ-2d6L91I[hfmJIfmqZj`[2rfCi2MVZ)rfm!hBF98HDNqhlQ5[@N
NcfG2*mq%PCmZKV,&30d!E*Nmi2Q&q#FhMHQ&iZQ(CmB$c0lDEFAR$E![5(&K*Xl
cR3X3E(iK'iRPNJXTImKA*!1$VCElqHr0a$19pHPi+$+FZc'b1,MT+Rp6+f*P&2i
&IAXASS&Qpm)&fid25YMA+1a'aNrQF4)CK$q*5pXH#[M1AJ-[LK(UcI!caDX#EP'
['B8h-8FL$H-6mEPR95lQe8qIR"PbRq3q(YjYi"ZANZ1jBMC9PTiVG[LPV9qF6mU
qf[2ET56hblPYb`4m9-'[H#Ml5L@m(VN@JXa3(i0EGcYL"VkdEc`jqF2jd'TjlVN
C61[pUBTqkSG4q!rmV"@`ANGK&a)L9,bFRJ5"$N)bpqJ#(85Ld!fVi'+bQ1GP-EF
SLrU2C"(RC#%S9*431)3++GbQkN@U9+AE!dqcj23V-9P'qjbm,*QrjKKC5UrRNV*
FIVhRX5aVhSRZ-M!rVM!`T6pd',c)l(!B")hq4$$i)$I9+Kr'#rIqa)0Dkr$Lb&p
@l["+'bE$-%Q'b60-ULlC"Vr"@f`@"MiYi[LiX![AZcA8ThZaI%12UYeN6B'P4p5
ATP%rD,851XZ(kJUZ6'pJ5@mji#J9,PpBZk!f(&dc)qPZH0'%I+L9f$k)`3lDeXb
08lTE`%P!9MEJqaDhPZkP#!kD[U)#mG$A3$*(lA!13(#D)QUEh4a$,E6LNG%-lKP
!X'+-ELY"0'I'6JrKeNV6Ij-2N6!$$Ym4V`l4(1Rl9r5$CE9*V-L-L+3pUQA8MGS
qf*T$B3djmSU(YILq*'jjFekp$jY9ElbKfi6qi85e!p9IHmc5Hi*F6*QNUPbr,TX
UZAM43D@H"Q1[rmT"2-Lq3$Id&S%1jP1LFc(Q9)HTSi+MrcmB(H,A`i*6CHpGqFI
*(D23QV[h2p!+qJ11M5Z&rKV5e(CS&-LR+'aJe+Qqp2h-p+%2"4r1LL"8,9hPrV*
2lH[lP(,eBX!TI)hdhLRYc"ae)ZZGfR'!D"DIQp@1$DY!$J"aIi2HNGPT"3[D"S"
RMc@E3FN%6JpTYpf[1*'MS-AT*L-ZRqS9UAD4HJfRf(X@lFrZbj!!N@R,5i0fYq,
UqmTRm%&Je0j#m`0hM4-CbTc9()i0peQfHDbT636,Y%h%%Sb8NX1Np@B0ikJ*FG,
aeNF1$2Q6b(,3[S)kTm,G'GXSqML[d*a5S#"qId[pqdKV9eU)B94!(J2dAK-XV(!
lp!IDJf%UKZ'Hj#)"AZ)JPJJ"`)MrZD[R32$hlJfHEfbd9EfhqZ6T4*rrrHq1rjl
pMQ[r6ApehT20I,2TBQbp)Nj$mlikI0FRmGHdE-LBA&)hTFM)GZR0h()ifF)r+SD
b+5D4N!#$ep8pZFAe50ULL115&"&q*h(4j,I4&Yl1K"jP'-Xq8r"fAjf8U*3N[`l
R!!pd5&`ZH4U#AbU'fK9QGYi8h2DiVTC[l,(P8kYM6j2pUVmR%Zq9dTdGirkJje)
TP+L1jKYS5KJ8fZ!X6P-q`q*1kqi25[iC&%Ca(9$qfU+#mcc8'P@"3p@(V(AqKU)
-M#ZarpR4bl13!'Qi*Fl685e5iNaZTXl4J)NlYXZ6q@FZjNIjl40Y9ip8pq`XAli
K6qbBEade`DPLBc!BbSBh+iemhE[5V9NMeaJF-Fhbf-+2QJr+,aIp`@$Y0K&qFN[
5IQlNr-%Kdj52,I)C&LJE+Xl1dlJ*b9p*fB"TqVI'eF'VYL%T[qQDM3BEQ,D%p+a
a1cFN"8aP!6lB51%[a#Sb-!L%[ES5RTL%8r,q#l4F!%CXlE"%VqYXchi3AE6pX%a
!J,M#G,NQdlBaJQ3B-ZbK26DkBBC`biFRiYa(Mqp'SThr!iMKH#KMQL'*3Pq292p
lheIrM8Th)pLj5EBVYED$YlQUc*k*pEIY*LU3!2h-Z$3ElGTaXkPpNaL9aCC+[ZG
D+#5%XiC8RA'*JiYI%B95k6m"PG0U3L[KP%aGST6#m)%)4bRZ"bf9LCar-F6S3P9
5kYKBpD[eb4&29fQb8$e''VK(eFIjY[abU#Qm(,-QcB&H"JQNM8!a'UT%(,Sffi%
+Xm+#`8*DS4[UbYFrIQXL&[Hp!!!"Y8&%3e)$!!,)$98,P+,%l'%%6fI9hG8KK#T
VE3N-Q,3F5@6!j!5S-MQC5!B")YqKT#8IN`iP0aaj4AiQbCRmE@$"0Yj1RfPhKB4
*-K2C*!h)*pZcBqiY3rcNHikZZ@16JTYM[DbS%!2Y$2J5,dk3!$a4j*!!l(JkrRh
pM1h!i,9"F,Lm2$iHaj!!GR6dr"bSXeJ0,5klPS2N$lpFhZ"LfR*Tm$`jcj`A2'p
jDdUD,e(Aq8A)h*DS*"k!q[rmh[,1DD4iS8D0NMVk&2$A0@ikiqNk,I%ki0iRDDc
ZjklVJ@m@h+URcc)PUA[Vqkk%$qUGTVa8%C85rTdiRP1pDFkU'96Icb!ZAZrKjD*
NJ`BULMIeM*Jce!qTH[Vf+*a56Y)@m!hC9X2,ic[H$YbNURj4`V3pV`E@q2qV0%8
LmbGHhh#SUR[SES!XCKB14DcA$CYUpi"+Lq)5-P*q8XR%"jaAG49Q3P`Qp*+$Y5N
`1bZD36AC19qB#`E$0U%8NP#CE2EU39RCCN@*i5`kKBi6MZS8p8203jaCI*lQ0B8
#KVi@GBD`3LZ-'rr!JQK"Jf8,44+h(j'i,rDm$mj(!!!"Y8&%3e)$!!,d$98,h,,
!V3m%*bHdICbfbLeFk&A8ka+IfckUi[jp4HX1LJYe1mDP$K#Aip@ViEKIhECY(k!
9)5rI5h+a8A(E"`[V-3TF*'@dADrmPp,k3UpSbrd*p580Fl3r'j6@3[Dpm8'ZDT!
!DSFB&c0GA*pH["p!'VA"SZAkqZ&KZkeGYK%E0UH0,m)rRDH[hrc(M9,MjjVG*h0
QI"2pDrb2NVYD"DCJ'h"8!5Nq!PJCG!"1*XSZ*NkCXT3`@L[8!U81Va#S"FF*Q"A
T&F04!31&UCk2IN6QaM)A#5YGV8,E(p2"`UFN3Y,fViVrHZYN5Xc*'J(T%PQrI(5
2,Uc)#(rVm5kV-5HTCAGIiTXI6q*ci5*0e6mREq*bqr4l51GXmGFP(Ym5FXjhP9'
,lp"l4Uk8La0r'rVVGrimaNGiSQKECSGIHqp3A1pp[,b(JQDCm%"S`FG)8QMGqf%
ANc4F9(%66V8RYGi[G3L+9!AQ$X@hk##B'RK$-QYRC'$DeC!!+1BT%&+HTh!4hC!
!'KaQ-Ckl&Z'!TmLDUB0j+4ENcMkMK+a))HmE(rH)EAH)@CQ3!2CFlI%8!J!!!BT
"4%05!`!#Y!e9#j`8aI94!0mNH8NDejTXll9CVF"r6Th+90rTHeCq&GJ+[!TX"3#
q9SffYEQjEqk5GGF+$"2C%3-j%-eA"ZIhc2'6(lNrGdrX5RCcE(mE+%ILk9RiqRh
e!Z5,SM15ch`Grllp(9GNV`dLYmqa@6)fpjiTl0-[c6Xd+Me[@V()DAEKh21Y#UN
qU@Ra5mjF6fS8(U(kIrlSqC5N-M`S9@U8K9kb[Y[U+J1ZCC&*ekblPqK8fl!X$AT
FZ"DR@m`PY'PVbb3IaC-8ZdQ%a#6r,Yc2&&Fa%c&!V3d!9MZ$9iYK#JXN"(GTV)9
c8ZrPD-'j@)Pq9'rN4@JI`"k$j%M3Z[)a8BYS%kSJLrD&$fq!LF&ZKA5UKXGB216
r3mG1lL"BY8BUb#KfN!!!M9A(4e4N#2B(25`c,4Qj6`M-LR[bN5S3,)YFLP13!*K
eF(&!1ShC3+&i$`YSficAp!VDL6U1dX*Y(VB3#TMRDT8""j9(BGhq$aK8c4BFHKK



5Z2k-a1[iY@Yf0!)!!!3c384$8J-!"RF093e$)K)4jPjZ%'3Y'84UmN3N#a"CUkB
Q*lFpLicJGZI)5EFc8r+CIhHrlpZ+2"[Ic,He3*,9cZc*j%RB[MZ6%C,P9Z5*V-M
[(j%rNjr*[0R@GK&*&K1b0bh*)LK!iJIr6PQ'N94%1+J,1hML*hBK,0+!l9$&S4C
f%PiIcijT$+G2[eNUFK-MbHfpC'm6p0EIcBDF5mJT4aqj[p)@X[AQGIR'*!P,+@R
BhU3A&C159eN[%2cJbH(#&ajm5X-QD0&L4-VGcEkQ`r)XP,P*,SMR)FNFrFAJLaU
$lM`9cA8P820dQ"q1j-RJ+KhQ[L68+ciKBT!!RHr$(BZ5%%MI@aB0YUmG+cH9Fc#
*FlDI2+6+KXfGMlqi[`EXLf[bq5DTS"GBJ&RSpE(k4UNSE)5VZ#(4a%4T(NC4T5D
'+#Hca)G5#DG%eC'a54-U)Z$aJ`C3q')!Y4*YQG#!*634DR+,6CR$@+QN(kF-V(@
SLpVJf!+P0U0c9&M$',E[r55!`Li$a$PLQ,KZKIc2X5Gal+,YACH#6FZ"UHV$eS-
Ujc5-Gh6@aB"d'i-,eVDeLc'L6-mKjM,F%r*FlYZBmf)r3FhBZqB8*mKFDkBmH&M
*CEjpUU5NcqMUMHZl,G$)FrP&YX*lJ%6&V")5fb&&5#AJ#$hRCZLJ)NBKdc[fS@l
c&8+41k84G`VH8bAIPL!j2GVYU6-RjVbF3lRZ&DPJc0[DAFTb'rRhYdi*$'iYhrb
A$q+6*eD"#2hXL3&E#6aS*Xkh8XD5XZL!8d`D3&(YeTiH)j,QXMTfCIrBQ',QaYK
L5NVMZKb[jqBq*1K-Xm!cl6p*FZL0,qj368Vlrpap[%LPH%SI@AC!''TAaj91(AL
#-@"3aPPimHVhYlZRfC3AeqX$cDJ8$@fJmqd&j*@%XYf`G)B2KUU3!"Si!i4'pV`
UFE3TZ%Vi1,Y29L@qKkdk$`8SRBhC9E-k+AX1V!#*JeYF)Z3(X`,GA!A9[Q0'IDa
q[E"flB1d$rZ$9epp#4ZUUbq"F")bcdZiN!#&AS+9c([M)*1*kmMQF"*$DeK5eBS
,0G(8$DlUGG,@)I*P,r@PJf6iV!k3!+U,`iQMEf'*D&FHY3@1%H!C2CVf%Lk!`1`
-EZQV3EfDc)k)alY-h[lIZ!qhTr,*MDZ6TKGp,[+bNp-`jPQCpEJ64GUkaD!DXF'
80&)2BbYeEc[GB!TTEhMfk&f2mYQTP@l1bb2j`E4mDbafS5aG4rV(QBS,DAF-pIP
CbZIRk[pq5'N+mhpAIXl%CM(qp[IPf*a9Cbj2D@i@qUC8h'a@H[,JJMDNfrH5e-h
a@AMdST,jr-qAljL($06eY9h'+bI[Gal`F%%Abe@eJpQRlELVUi0e"4+H`Fl,5pZ
Ha$lSC'#l'ZAeThN#F3DQm&#m#9iTh-1AH$!(GljqYG"C`e[Aj!i!N!--#e9Z8h4
eCQBJBA-k!*!$#!FJCQpXC'9b!*!$2!!&"#"[CL!()'PdC@ec,J46G'p`'dPdC@e
c)(*PE@&TEQPZCb"dEb"9EP0dG@CQ1JY9EP0dG@CQD@jR1J#3!be"4%05!`!!-!e
,!eYX#lGU!*!&U!&ElEm'"J2`%G[bI`KB3XQ2"YBE-CF6!*!$"J#3"3d!N!-r"J'
!!*!$"6BZ-#ia-MBZ-#ia,#"$Eh"jFQPRD(3JU5!a16N`,6)`-$%J3@aKC'4TEL"
6HA0dC@ec,#"*EQ-Z!*!$)JB"J!#3!`8f,M!Z-496G(9QCNPd)%4PE(9iCDSJ0Li
`,M%!N!--!#J!+!"r!A!%Ve99!*!$)"qT)$%j16!Y16JJ3@aKC'4TEL"6HA0dC@e
c,#"*EQ-Z!*!$0%&9Fc)!N!-"5801)`!$!*!$J!!"!)%!!J##!!-!JdC548B!!`#
3!i!!!3#"!!)!JJ!$!)-!N!-FBA9cG!#3!`&*3diM!*!&K%C548B!N!@%!*!$&`#
3"4!"5J!!!3!!C!!!!4)!N!LG384$8J-!!+J0@`TD3!*hq"a@G@ITa$j8l""l8cG
eGYLKMlFEHlVGQfq(XapX@&9L959B9@)pKKe@"3QS+DEi#q$Kbe-!CQRmTQTq!Zi
``mf2ZkL'Ld9k''%[lENXFkBX&8b2crC)HHcSaD`df)"XN!"VQK,Q&'Q)A6F&@rG
%"d@fP0"GLc#jbB*P-N%ak6ATZem5+jHST,h!2bF2)QX!N!1I384$8J-!!+S08`U
F!J,[eZ8-S,kJP[&E'CpCQD@Y&Xr+1VFhGlAHVGZca@qF!B!"!'J!B'4c@4N!!`Q
S+DEi#a6T`jXZT(iHTmIX+fkNG)fEVG@5Ne4'kQM[fe09jBc#*)clFhe!EKZmQ"@
M#m+PF)ED5!k,d6C0(9`f!!X9GM$5Aj03pe-%abL$LY'cdGq3!#CfI@,Tfflb+rV
M'-Rl$J#3!d`!!J#3"3J!0!!D!4Z)'e"XC@&cC5"TER0PFR3JC'PcDb"H-#"hDA4
S1J#3"JX!#`!V!#ZJ!J4,!*!&(3!d!#d"')J#AM%!N!-k!!%!N!8f!)F!5J$""!*
25`#3"3)!43![!6q)'9i`)'&`F'9KFR-JG'mJBQ8JC'&YB@GPC#j,!*!$'!!m!%!
!Y!'B!!%"!*!(!3F!!#J+!*!$'!!m!%!!Y!'B!!%"!*!(!3J!!#J+!*!$&3"8!'3
!L`''!!%"!*!("%X!N!3(39"36!#3"JG6C@Fb!!%!N!3(8f9R-`!#I`#3!`G6C@G
1!!2r!*!$"d&38%`!N!8"!*!$J!!Ird!!)!)J!#)%N!!!*JR)!#)6j!!L)!)!)N!
"!##(i)!K$r"!)K``)#3Cra!S'SS)-M++*#BbmM*10!Bj*QAd-K*P&#3)Cr`)"($
!%!)ri#!"!B"!!)E!J!"!!3!!)!)!!"2N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!*!
(J!!Irm!!2rrJ!$rrm!!rrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrrm$r
rrrJrrrrm2rrrrRrrN!-rrrrq(rrrr!rrrrJ(rrr`!rrri!(rrm!!rrq!!(rr!!!
rrJ!!(r`!!!ri!!!(m!!!!q!!!!(!!*!$J!#3"`%!"rrq!!J!J`!*J3+!#N)#3!L
%!L!*#!)3#p!$q!JJ!!J)3!!)#)!!#!N!!!J+!!!)$!!!#!J!!!J)!IJ)#!2m#!J
($!J)"Rr)#!DJL!J-S)J)$!')#!d"L!JCI3J)'8F)#"Rr#!JF-!J)$rJ)#!"J#!J
"X!J)!!!)#!!!#!rrrrJ(rri!$rrr!!rrri!2rrr!$rrri!rrrr!2rrri$rrrq!r
rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!r
rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!!
!!3!(rri!#!#$!!Z"!S!)3J*!#B3#)!K)!K!,N!!$q!JJ!!J)3!!)#)!!#!N!!!J
+!!!)$!!!#!J!!!J)!IJ)#!2m#!J($!J)"Rr)#!DJL!J-S)J)$!')#!d"L!JCI3J
)'8F)#"Rr#!JF-!J)$rJ)#!"J#!J"X!J)!!!)#!!!#!rrrrJ(rri!$rrr!!rrri!
2rrr!$rrri!rrrr!2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ
2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ
2rrri$rrrq!rrrrJ2rrri$rrrq!!!!3!(rri!#!#$!!Z"!S!+3J*!#N3#)!T)!K!
+8!2i##!!#!K!!!J)J!!)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F-#!J'ImJ
)"U#)#!bJL!J-!BJ)$3')#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!'`#!J!!!J
)!!!)$rrrq!IrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rrrq!rrrrJ
2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ
2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!!"!*!$J!!
!!8!!!!)J!!!%N!!!!!R)!!!6j!!!)!)!!%!"!!#(i)!"$r"!!K``)!3Cra!)'SS
)%M++*#BbmM*10!Bj*QAd-K*P&#3)Cr`)"($!%!)ri#!"!B"!!)E!J!"!!3!!)!)
!!"2N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!*!(J!!!!F!!!!2J!!!(m!!!$rJ!!"r
m!!!rrJ!!Irm!!2rrJ!(rrm!$rrrJ"rrrm!rrrrJIrrrm2rrrrRrrN!-rrrrq(rr
rr!rrrrJ(rrr`!rrri!(rrm!!rrq!!(rr!!!rrJ!!(r`!!!ri!!!(m!!!!q!!!!(
!!*!$J!#3#(G"4%05!`!!J!e6#eXJ!`1QB-1UDV-`X!%LBQ!h5l(E@C@J)',$(ZV
C`*K9-3YM+VVhTe1X#JZ*BmLfiRI@!&)SrH'p`)*+Z-9!Tf0)-Sk[fIFQ)JkrkFE
qqpLI1PG2++D4"4f4ZS)CZ+2&'UkSDLHN6c)+ldA1"3#3!eG"4%05!`!"!3e6!Yc
@"T2hdNE0440Y!,6j0bkmfddECX*X[UX,hi6GX0[NhAE9eA9K!!NiTBMrG!Ak'M5
Q0Klla*eVf8k#LE$6%2V!XqJ!D*!!aElq",i'!*!'!5*"4%05!`!$LJe6#TXN!(q
'4E$G16N6X-81A8Y16ahE!48$fl(kf!a@pFiq++KBI@c"EUcUaX!rBhp8p,rrEir
cGPBCaZS!#jNe$9a@MI6"MNEhVP-Dl!5cmbJ8h-AL-N+fe,NJbA-,N!$IEi*fJZR
44(62+AQc%pfmbHiVKB3cc%YDkTT5LKd,2KqEdhm%m(Vq1HV+dqTUrjpIEXHVRre
$rrZ4PL8#Z$0USi*Y9X&)*Va&Ufb-9E9H@cjLQlH&l@%9IG`AaY*D6+58Y!*a(da
qM-2AVK[QKkBCkP2EpNhG$lS3D&U!*`6)!*`!6,hk,3$qkJN$%Am!m+*bi3)3()+
!!B*LB#diLj&"M0m-3Z351Z,UBj,-[5Ka(dcIG2P&a#YXbaJ!N!-`!*!("!!!rj!
'!!%!N!F#!*!(!`#3"`6rN!B!N!-'!*!&$`!!"!#3%B%!N"k"!2m!N"b"!&3Vr`#
3'S%!92p8+rm!N"L"!&6rN!08+rm!N"D"!&6rN!98+rm!N"5"!2AfN!08pT!%+rm
!N"+"!2AfN!6ipT!&+rm!N"#"!2AfpS'3"PEhp[BVr`#3$S%!pIEfrIq3"[a@pT!
$+rm!N!b"!2AfpPErIrH3")(rprD3"#[r!*!+J3$epT!$r2hh9Rq3"DZ3!hrfpL[
r!*!)J3"8pT!%rhrfIbTr!*!$9&4r9L[f9#[r!*!'J3"8rrD3!eErq2Gr+Rm!N!0
89+[h+rEr9#[r!*!%J3"8rrrfN!2mrIG@9#T8N!9rUrIfp[rr9#[r!!#"!&6rN!0
8q2ErIrCr+T!&9&4rIrIi92q3!e6ir`!!rbY8rrrfpPErprGr+S'3"+a8UeEfN!2
rre6ir`#3"2mV92rfp[cppPDV+S(fN!1"IrrhpT!$re6ir`#3"[mV92EfrIhh9UZ
Vrj!'IrIfN!08q2m!N!Mr+rEf9[jrpj!%ri(hN!6fN!2hq2m!N!Vr+rEf9[hrN!D
"pT!&prMr!*!-rb[fN!ErJIH3!rD3!rIir`#3$[mVpT!$rrrirrripT!$prMr!*!
3rb[fN!2hprMhN!2fprMr!*!5rb[fN!48pT!$prMr!*!8rbY8rj!&92Mr!*!@rbY
8rj!$92Mr!*!BrbY8re6ir`#3'[mV92Mr!*!FrrMr!*!Hr`#3-9Xj384$8J-![YB
393e94")!)@,Z9Xpp[MQ2i`K(#'NU`Eb%N!!Hd55Rf%a'SLBA$HH4*XFP5Q3X16r
Ih#NNm6B'59hrR&1L""%3F4R(-M39"T+!)9L@C9bA#BcY@0CPa&,'8TCD5kPPaE(
@X6E'h2IhHjlhlVdB46UG[rr2!"UPTb6+J5")JL!))J-!AC2rFGAj9c@L-`Kmhd+
'[J6(q1Z+$jQDR`!TmAH2rm!G0q9pqYpU+dC[8UlHIaY@h2#0fJUk5X4"[[S'%EA
9"aehkAlc'3AN81hq9hXVl%r[hIRZl*(IJGKC2&,llQa-X$%q$eVkhrf$%d5U$`F
k8Nk3!(ZI'2MdTf(E4b"C[[Z(82+ADja$cFXr(0KVI[Ff6(r2daQBVZ6TrI4kY#*
qj[0Rk29S4D+0TbY"&+llr*Q#I`))2NLIY"-J))jBqjHF#mFYBD!#0Ckjr+VP`i*
r!KdT$d6Ql1D9LZJl5,kIcbmrTE+`4+9Zh[2RSVp35Ic%mC0S1kAdAre$f8IQPj`
*%+ZLiF*iVrVRcPpNpPTlUaHlEq(QXA!K6cB'aXaj[mTccq+Z(VCKF&'JGpp(EMR
!&!E"6Pele0lj(E("jmk%!a&3*il2'R-qTf)&8d'3!(3VQmT5Kj5PDNTRRph12lr
Sr!8Pc%66,d6$9qJfifGjaK4U#NcKjJbY16"&$K8[KMB1U@ZE[a(Bl0LX%VA+AU`
r8TA2*)0A1Y,1jiqF8SiprePd(SXrMm@I9iR5Er8SGflh0de*AVTMHY+80%I0HIG
(hDip4fJS[aS,1jcIqS0jlKLr+Y5ZYhhV$e2Q6Y02)A2T8*hhY,Y8jL6VT-TfI@G
9IQN4%8hEGREFe@'MU""lY+2rhGQLdi1*R&*d5KX45ZAJcImUAJ4SZ+HlZF2Qk64
S9rjIKA,jiK3GU,*,Mb+a8I[ZE9BXd4I"G!BL'@fj2he5CH5$")arL*DVd&m[H+A
hKdTe,mcV8kD("e2,#ek"b*,BpV1-I2-ICmrHpEiU"N)8krh[hK+fk@-E333[@*V
aURqal4201e%MH5KI'BBY3H3(41iGkVlAfR$RJR"%(aXrVVmarVaHS[[ee2JZN!$
p8diD0-pqFF4mcbU&a660eNY'I[Ic95S#XR0m*19f[(bP!!cq[&R&r@mpYXLqa!U
[4*%N[eb$`fihXT6ldpflV3h*rR#mfFl,S1ai(D*bE&K!b[%9EH3lkJ!"Am9UFaj
I*!k2Al#-50@VlJ"P$"kf6X2,qfXbeVaFU8FpM'&TTFLBGJBaZ-l)B&Y*hBp4%,a
51RaGK,`[!Z9qpXM,+D#NjkD!JTG'i,Xlp`EHAE&ab'l[3!5%MJL)JU@AmpYUhef
Kfh`h8h#ErqK82I'#U52+EFY0+L*[1`THD90QbrbVbj2QhKrNhGpVYPJXH9I2QLC
I"PdCp9a*@LaQLbqV%8NpmeJi&Vhk!$Ca*QLLaq@J!rc5E#P2jPalrl4lSZd[e8H
@[K5)2rB0,&d-+[LKh9lK*$*F4i+L&C01[H5H2RY69)hhMamE[HRG#Q5@elG@YMC
e)($XGSUJD1jZGMB[4#6(rfReReEMMB'A3"51eUl3Kd)jTiiKBUE[Pc0("KZ9cd3
&%3LldA!X&2mJkNX4QMB[FMX+jS9[4`C-Nh@Hb)09(BQpY62pAIILNp&eDm(-aAN
JjMNX(q,D),,"ZCIc3mP4!0lM5cqUY2pEecmm"q#lDiBqj$ZRkpUaeM&I+K62!d&
2LmllD+cV2QGre`acRJ-4!E[9jEc0#Sdr2keNjNl4RFMHCb*lAfGI"D,rd-P3+%I
Ed*bR44Q!'85RdYEKq1RN4ldcVmI4PFGcYR[dVr5KFch(I8'$NM8'65qBqF-ccef
j6R9G`jqmjklBl9hc,E9Gecph46Qk&KA-r*SEiSLDKq-+Nk@iB$)2Sd#SEHr"6kK
JhMI(R%8NA%5&Gq*9r-QI*K!jHHF#$&q%U%j0a#Xk+'S'J!b5,488M@UZ[H'VjYF
l1,T2fCUr4p&bbJCf9i`r0a+P&bJk[bHZ0`%8FQS%p3BB(U`*N!"hA!V2#I#Yb3T
59ALIm`&cAUPblP84Fpl55EPA8T4Va@C0FKqJ9iHd9j0(e1bhk'rG@p1MFimidGL
QCNqK[h96lSr1"5JhIE)cf8JAiZDm1J9JVBNfU(&aViTKZcG,eHcAk@rGkrG'jdj
DIH6H0`qJ'*beqHXSXVkq3m@GDHDm@C24MD%B-C!!`bQD%5"#E[ic%%ZUHE`0N9r
)m+cMcjF(L1(pa1jh9NFEdXcc$d81pXrdQkmqd$mc`hc0fL0VXehaf42SEpf%'G2
QCZIBCKcC6qaqjb#aGI@b5HDVkj,lqfF'c0r"T8Zi0'RYNG+iKp9TFbFeCY25Cdh
@!iI"+MiDXfpb8icCfjQ4U`FfZP4hmhKr#8HApieE+IU*SXV+EJFJeGre$f'A+d$
4a-S'BP(r0BH+$LREaN-+dF%Jf5*#NJ+cjC(b%VHV[&X-60"![4FaE6CX(c5dqIm
[*e'8kSpi3@&%!0U)SG(F3%C0F4(bQH&j1lS"b0kR@e'ifC!!h8P"9p"`C0Sh`+Y
aKij[RVbPa0k%a95-Pe,JeKLm,'M`QpXGl!XD2#RG`8X)p9[2'6c!%SkkVE3[ERk
G2Ke$pMjlAfXcXVQ%5V6q@6BUNc+eYQ159-R@2hXfJr$J%5LLUVYFI5mD0S95b0j
Fm!k&&%85hJ0MRhKlPdVj1NNd1,+c3c*lfTr[2K0+F*DBKNZADDL-S#aA1AFK!L0
'VhfE"DZGJY8qBVIjG3Tmh3q`hD9ZG2!e4(2#icQl9+IhQ,kb82*b[SbBp36$BLF
#f*`(m(daAddl-H4m,Li"ZF[+JEm$p)0%ZSQ3!%bCp[UlEYi,3,Q,!2mqIe3I3p0
kEPVZGKA9UAdiVUa)(Q[#mB9kEIX-CLjM)f98bi%'*Q[rqr@q0NVmK)[2BpQC%*H
ld&cEY4ir0f2B+RmqJG4G2r1J'3+)&N)$D#!+LTJA"9Rd+&K8jbe[Clj8Zip"-(%
&'D2ZRj,j%KeFIBYhm44e6HK0#,*4$Pc6U!K*ICY0r9h(Fd`)Y1k1rUl6%U@5TNB
&!ETfj@YS4GGKp('9XqL#aNmDLj`*,BXP),f))m""[,GG6!iRRp[FG@,[MUl6cr9
fA4kpkAhIAR0AeHK0A31KkqDi84`SYGV$`SZ(`%*(M+212l#1AFi2Aj&GYGaFqlk
21c0r1)iSQ64U`1'EQ#&23qGd&!-3r3r0eM%53RKDB20&31Rf+mCKAkCUA(YkU!J
4'P8EBh6e)U,Z-[*abHcF$4$"krN6Tj9(J22XCFaJJEG*j6+6AK'2Xk$kZeV%-FX
m`[-fMML,'T9NQ4J1&Q5@fLq0VQb@Q9*SFcUrQ0PefVF2aER2R(F`cAceJUM2`FA
PC4S`rQ9(C'-DYQZP!!`Adc*ac)#cb2M#YmTS8J"!%dAD3d!U4!kh`1bRNVb"EJd
p0-GY3#!H4J2)D`!FaZFK[p)j+c89c,Yfe8-PUZe,X+,kj4B2A3QGI+9D0@#VND#
YlT5Em9AbY-@Y4FKXl``hm2D2M$rr8#C[M%LSDjIaYTAUBmqfa+MB&)0,B5Vb4&Y
*HBP"E"b9bP&(B+f4XT!!B@4"LBkKREd&$m0S+SdMrdi6Q%$0Cip9(r!dZp'F%-d
0RQBVQL1bqCahL`0S6K20hLhfS$NQQVeE8(4L0U*229'q3+IE21"A(kD[INMJ9ap
!Ec+Ud1HiJ4LpUT-4SJGJp+@*'L'Q8,IfVT[BK)bQ1a#G8hG&@EVXKIMTh)+VpZ,
4G40[aUBMS@*NGH8!&q-K*fdAMMN6EKA2dHXQhN)CVNRj%'Q2*MHZ01'+f!!CS-e
qd&*Thm1AVc0FEJ5KC-4q%8"Y13jm%$p2mk9a,SbRB+(P@dSQpPNV*rEj9$a#Jm6
Q6f2$Td!DZ`'E6JPpHikEMjQ(TQQ8TFRV%h2-`dNNImEQimS5-[[bC$8f@)-P@rG
Y+@PUSQRcRjee63#(+,)("-De-2%DXK4XcQfp#i@IfN)Q99G3q#N*mUTNV8TH1Lm
')F,S#Nc)5R$)C$Eb!r(@2TP3fMkjcGmIX%pcY"#US2!UGPRp%jb(#'$l`f#1EIU
%k9&%B[HjLh@VIj!!!mlPH6Ni2HSDa6)V%!hG"q*%&adi%0JaS1mJi+)9QE&Z!rP
PDAQJlJ'BPhhY0!aJ'V#jHi5!b)-%D&eYcS0a@#'EK(eY5mq"P(fafe3e*G",3"+
Clbb)RTTZaH9`+@e2E')jLmAQCG6Tf!h`CCS8D"m93)8hG0N[KSZG-5'-X@S(PVT
Na2r`QmG9B+"U%SLb&95X3Q!9"edD'kH8IB`&8iS0*cFrJ@%NdLX(5DaL5&-AALl
a(MKeaNB%5r0U0Uc%)H-21qXQpKP)L8fF!4CZe)UVHBjl#9MC#0-#eFf)RLUiY13
Lc%fGPUkTeaa9`dPT+1J052@CZE)[Bf1NpGV656,pkmXJ8d($J1KjEYkBD#eX+qQ
`JE8QA$(Kjd"cUk1,J,Hq$0mQ#8lcY6GV#`hGYdpPHEYT!l@GKQjPCBb0"b-!qDb
"AL-$)RK3i'JX(ia`Nl,l,3!"X26qpTk1r[D3!(Ri1K-K-3%,5&U133`hHiZYM2`
`HmYB06,p#KTd')NFCAN5b4be'4Fb!$,-S"H@9R@F%N%S6LU`m3bmQ#@+[G64C1M
ihV'ZLR3(1(`UEDjSQXeEZC+2!QMCa@!B$"c$HbcITUYJ+@99Eh"bmIhkbi+eY1R
@0#$bXPhjG"R)2BC%P"rQTpFlLd,((jpjJhm['VT@p)mYqF!lL-"!%26Q6D``,KD
X9"NfUPcb!3T'C!'fXKV$$Mk(&ee0q-5l9MVlhipV34iZ41*`%GJbKHalafl`$k[
bL!6$('F!Y,lS'm%f,J4r&5C1+RE4qD4JhMXI(%f5-1"92cLUq!8#"Lm3bH2S9j(
hIIlmBjH3!-Rf[qpl)dU!bcej[H[k$J6H#NA'kq"&)hd(+0[V1c"kd`dCCVrPfd9
-J,SZ$Q2'ICjA,hTIT9E"4#jb(KZ5jmh-#1JEKq**5N63B%Si[$1#!q[k$Z38,BX
H5XV$firimdp&2KTJaJp)X1'G1Mm1@$+[B0iEYa"V[HZ@c1[p8m3QVe#K!,0-"#!
CCbkCCkkXZ+CMD#2qb3qZ$CSVTrk!LN9kLBBm+`'$Km+(4-2iFaM3AVQhFZULpUp
'edhp`H9",,k6f*ZkN!!1U-ThGiV"235m[Pq2*T@B8$![--"J%#8LSK$(FFRb)cG
3`[Sk8brBa6B0ejPS'rPbb#@Z42M+3GPXZ5LDdlJj5cD2@[I@YRr9$Q%XH3d#k5b
BGhEG+)+&J-VRDYXVZbk$D(!#blX'Vad!RJF+jM@X#pREJCC%EUc1)1(['!jPN[P
f@`Pe#ekT(D"Z1@@L*MhJ-XhSkR0NCZG@MNAkB$!BlY3c$rV*V(Y60`N0%jZINEE
FT5i"JD*'&,2#!jfU4L(lqDbZTLpQd9E4h%UPqK`c%!%bX3A0'qkMk5I`EQ-Q"63
H!i'[6'c3B-kVbLG$ibfI3k4Pb%"I)fmjTR`fHIL@ekVbMBG9VV@q&&Ea`Lq3!'%
Hfk4(PQ+5@dF(GLJTY0e2DkM$*"2m0,p0*+8)Y[[pF4Pm!2C9mRVV$TqEa)V-i5Y
N9j@861!X`qBE#ASalpGGe'cdSXN*R-99dL!D$,,-9`Li@,"(6[T)@*B2+5YilLN
Uq*Gd)4XDmqI$P$U#(bapIb-#HZ'1GAe9PkG3GJE@BYBGiCLPIm'VlQjQ"#"9H!@
a[Z"9mJS9m!UM%%C(AF80q*QR#4SLU&`b'3FdH!p!dd8d+34HT'B`i,K1hclM8S@
SUkJJG@p,1+jJi5aC&LbFF%S+fAfQSflLCaee66p)j`K#cc)@b-8,"(+PB0lQqrc
jR*!!l0B#[eaam+ZQ@cVUPLc!6aH'"L#)@rhj32SA[GNUR"Pd1BX+jK@mLkcb#pj
'NK6I,*Mh,aY!8J4"e6&X-04P!$U8,#p0a[*H#X1BaP5DQ#36fll,S43D1iY,ilA
)+#-UiV2b*-eR`D48lBjAKaY#6Xr&E('a,45KLf@PbEr!`!3ZG[-NM8cKk@)5@E@
eIm%%`Gb4JRRV&Ph1Pk,MS*iJ$Dd"4,0KVh8irYSl)miKYI5*J4%c*J#PIlXSE+*
S0L4hVKYIZK%%TB*A%+N"XV9+MTMGXF3$Gm+p$EUQZ@1CBjBU%-$l$Qj3F6JSkRV
j#S#3!,M$"EZfkm)@+d#f5[eP5Xl%q5MRbq5`#Cdl4ljU3bF1Z$R,FTD[a$%BK5k
D)fL1BC*3FEb-1"T820P4D6-e*$X#B`q-UGfm@@'U38AZ(!R((U"08ilKMIEiDbG
NpcT63h`2SMMqiL!ba(EpM@mJ8RIdj9&PXcE%(hqRZ,XK149VZ0B"FSc2"XC[Hq!
-+,Th[6`F0kP#kh"L4HeQ(&f)kd1@--MFIAVqi@&EP5S1THDiI@f(ci$)86CRYfr
INfI8LmVjj*8GJCf2U+a3%UpM,jp4CDS3U(K8hcN#Sr"0'fl2,VL(d)+LHQ8d)%h
(Ch*%B#&-2"dJkJ*G4JEGjBM@Dh31hIiB6$dG#pD%BpBei@lhLYi+TIpm&L)hD9L
8c4C-C,,JIl9J&SB(h1Y1eqHF!j+iDdmH1i2*mA2I2hFDNd%LT@1bc"Gk"FB*kYR
rI9bRbDTh6Kc(*,R[C%re1jKBDQYT32*icXPDQJa@BdB6*Ii"FDD0))K$%FGCp3U
FS(8lcXC2!lb2"-EF-91$ilHA+6,I$@*@3r*&6+RBjb"$aiT!M#3l`JdLd!lSq8Z
!dVrqY[0EG@E(@&&aZ-`aYV%iE-+R)9b)TJDBE#Kh)BkeKB!1S35K,EC5-U!VXf5
bVie&q9lL``'14PHI$ITLZ+,F-6CIT)MkUb3bU,)4FhGa@$90Ak"m+alrKTl#b`@
-c,(GNE68G6"CC[3S#d+2&+%(`,VG'*iY8E'fM*EQq04"J*-$Rd4Y*(0--YMN0M*
'b9'p)CRkE""1V9k&KbaVI98[`V$pGab0$5rR3!3Pa'!U0SqC[QRYJ+1p3RaLiFK
63fl6q*!!fb'lR`mKNR[)"RD+J"CXaZ*J*cKA!@f"-(!k!`-+C51%b3$#2(De1qk
r@JjiNJESKiNF8!cNFMcjQ'UcR&'(!"EA@C1qb(MF(4p2i(Sh[4jTK5(5*b0dK)e
3fTl(@pK80ap80[iPKKE5N!$,Vr)!bB)$,0a)VaKp@e9@ZN1+$82U,KK5U)Tji#&
QZ@jmXr3#)q3&5&J44,QQ%-Q`$Ti#cM!Ji++k+#*KaL"!NcYL@U@5b+JU,#Bah0r
m%iJh-M+)$#l&8A2`S!+NI*L-1TV(DFQ@'r@Lm!K&"cU,BBLH#TFY'$Z"6$Gc0"`
c&Gq6jejK-JA'aZXdc`L'&hBNQ2Kj+a,T#qGd0LU3!#)F--1Ibmik%'AM*)%b5F)
3@!YaUG"q+`J"$[[FIL)(p2%'*0*Z-G6'3l-l%KK@CPq0BGhfcrMLJdJ+2rXaAIi
aQeq-ih*fD"m4(HKB(2md(e[X1GCdpcDEBlZMV9$NU5eN(VHDL+SJ5Ac'BZ$YH![
iICq,c3RPP["02L+61-M!&`XQ`XCRr1SZ1#1)i*!!I5#`&BYMZJd-Gc,$*Ml#3F3
4,$DQ,4BLrSaC,21`+"fNC@qK5k[jdQGmT*Hjkbi8mhD'MpkYiCB,KLpNFXpF#Z"
3I)lEicRc036L4FjPBGh#JF$)&0SY&JNb2F`*b3P3&j2BDG'VdPhdHL)#)*V0"L*
H)FLJhCS61XGB608f8QEeb`(TF+YeRh4#0E9(1YaLXQFD5'ph&P'8acjR%D%YR2)
XZQ)h[L*(KdL3!(l@@14c%''#ZP1c'iYJ9T4bp0Vr(U6T+EZN!lGeC13)JXTY'0c
$JpGTN5Fb%XSHakXAD6JGJ+'Vd!"'p$[(GhA!84XGf$ar#!6Jj[FELaaG+*ILpX@
q6Vk#lB6cJJ804Hj#V4(X9$@!(9qm%F6(`cqeZCda@SS%e`aHF$fCaE"6$1Pma"3
NV0)JBAdNK99K&X*b5)'dIS5%6*iQ(L6r@6KpDic#U6J$eR[Y[r*eH`Bb)0qhJB6
Q1aSXV+RYZ1a,6eJ6lm1VA+q`TQ)$R`f%h%qh,jkTDi2&8l%r@$c53BdAA6PEC$*
6aEX`hNJ4f$JjG2$BZCiF4DD,&A2)-4d%e`f!Yq`d14PZ)`I$PQ@@4e&m+h@lG@E
lF*K)dIhY`a6CJD6'A%3e(h5"iI+ZLP9YA4AV6bHYABS)HfZYj$`BbG++16*L*0P
N9IlmF%"EZRL&a%XbKa2FTV#M("kKVFZqq(65l4N)XS(El"G$c@,S!F039lT$piL
K0Zp3Q(!&X#5(C4QB+lBmLX[GQ"D@EmMB8CA4YX(I@j9a1QP+5'H!XLJ"10j&C!)
!5)9L#N-F#+6Fd8AAj)[MTmkG&#m+V460Pm,(!FH+5@fMmrP)!JkM@0UC8BmSL$L
+SjJ&!R8h5S(#@6f4Q1Ce2UXAqETPSb58P*N!DTKN%`EXei[S)LIF$fCmR`hC214
q$U*LEI#hU[3Lcd8F5F%23cC[e!"l%cec[iQFDQNNT'Sb4$$$'!*0TcB0UlE-Amh
2Q-*4DK#XZSD$XC1b,le&a6$Ta!5'%1l1N!"T4K6%f650r&FlRa06"XHDMQ)A!3E
)mSC9FHH"#"&b6af(N!!2U$TGq3,11"N,%+P`@64`T2[)F,)mpaqq%hMElA*ZENX
pm*lG2UMf(AC4X+5TNr@&2$Pk)KBj$'H5+["fB$2!K"X&UA%K!CfC&YUdmQPLTGM
TLA5*%)"#@@ma'80'!KDk5+S)&N6C['2%'Fqd`1baQ-!f[2LQH''6,hbV3NQA*fV
+e0rqJKD4B3Ph$2P194qAR[[ApeY,L*`8YUAUb&MQdY9jbFd+6NhCqcfqXhHAHI6
5MS'G"CX(mR-hl`L`#6&[FV,kl$QabG,YEI+Sf'3dGqGSjZp'#dDIdEDKj9NS@5m
RD@)5imNCZIb3!)+5#TYi95KH&BJ'2dAp%qNDdH0R&",6$cLPZB&bM+j5bj!!P#N
2THNrSQ5Mmh%UhN45"XAIi-lH3'E'D#"$UAh&[6Re*h[Up@1R+ReR`krNR1b"aE4
qmYaqBV1TBcH@bpP5l"!4"#pHjBjERR(ZTSKTjDL$N!!*U(Z60mchmp*HSk)5*LN
9)c-1,S@*EJ9!$SM+IS-%FlBJQ@T[JBHUa0!5LV$C&#8#0'dSYjY`#H,D[(PR)01
rSjFc2rZ8MYhBYM"SfcQml3BklM*&Ecc,3&dVEce"fhT6NHm6!9$0SFQ6b1j9(%%
9XEGFbKY"T-4SD!'-f#pG(8@bi',5l566hUCp@'bjA$TjFfcj0N8DK"bY$fmUZT3
AVE1r$I2%C$Kq-ERP'G9Gaq$!VAf8PEmeN!#r#`Lc-hF(Xll%r-IG$*TUc1[5LjP
!T2b6#S5ZP8(%E&GS`VBA!URqG[0ZdfjIhC8NA5(8N!#$0XENS+EE5@bPL"3**GX
RKHqe6U)V(cp$4DkD,4K#N6XPXhHd3-0IGT!!cSK65!XVNXB1)RV$00*I)N%SZ44
iJ!!KIfpq`F$1Cca,ZYhmab5CckG)9(h[3P4l1SBSEqU!19QpMcEYF*LV&4*U*#k
h#f641*'bU"KFYaK"8QB*Se$XNm2`!UCP+d+ELL"+4qj269&LS3TSqKUGlNHFP)&
pqqH)9Z6MbI(T4F9HMaabGi-)iLI2Kd#jb[SQ[pKMhIbpUj'mkV4Z[R5004iZ,(H
mmAIc%p2L0BHp34I,i069C%0L0#q*jK4XQ!TTQ'9!'rM&`#Fmd2+K-hCe(db'HUK
)Q&KB9d61Mke[SN#p`6*J5F2![1idZ9ABbB(DlEf#"Aq1DlIX+j+0C#$A#h0Kr8I
1al(40DBd5Q,L`!D`B!SIj'"IJJ#I6!&HThbkh&)BQY"QUrF9m6EVB#D)EH3@[)!
4H*AepXrK9H"SKX5%3HmLH`$LMF`Ja$ZD0+AjBR8`J*ci#CCJBZ6SPKXA$YB9X@M
IT%L9'd'JkRq'&&#B&JXN!I#l"NMbc)k#(B(4h*Ui3X'e!XK5V$QN[kLXKj4ILYi
hY#A6[U,r(3+G'""E!C!!DAiG)L2dA2rJ#&3[D&RA0iR3P'BjT'+5N@p+4N`S-+*
DKVD@-L$N&MX(cYGJ3A&L"CQK-a4*2c0FKXZEG`b-lXV0S'X&Slr$eE,1RC8pp6Q
9p6fk(dKGRe0IHDcq('pS)Q!mQJN66[cBh#D+[S8M"-F@)U6Ch"&,T6HC-F'r)r#
lM2b"6*SB'#*NK@(K9C6TJHLL[*RIflhQ(Ef2l#c)h,PCHMFB[598PXcS8aC#pF)
0Z2j'ANjm!8fZlNPq&R[MQQ[LR)%Tpb%D`JGN#Bm1mpZlUMNS8e+%F,!MJl`HJZa
'GT(RpI4[$q3(HRGi'C!!#`j,a!#!8IJ8-SP#`A5KTScKpF#1h"fMQ8%A1mJTE)U
#r&)H&iJ1Dl8U#*14@d(cDJXk#&5rUd4EH'iq0KM)pqmSi)8[0[ra@N)Efci`)&(
R8Tiel3h+U#8+T8b)M[E&,rk#[4k+&$DIJaNGXT9#*',5i'RmcL*+3#cjC+J)S0M
ldJZ&IY813H6mD-'E[&fP+Fd6S#Qhfc)!-EiB[&d(&a6b8c"[qG'')Z0V!!'Pk4d
rFESmr[HcMFH$AFGI$DL#Eqj!%Aj)T6Ph4mEXeiGMIc%@MSZ!1BQ!JE),dh*0`&4
J@hBmXl0!HUX+$JjNf42EUFMALSfQ+4qAf+G5XDLKdf4Fh&'`QDmeNG-RpSb@ZUE
&Kak!X9Q8`-53!&f2KT4VM$FYPX9Gdjq`HACGd4Yjj&$-#U#$XdM*RSmc4"L`FAC
,MRF3ZGDdQ%"0baL4DFaj(8S[)Y,ER$SHM!2IZ0SkqA[A%0Kp+5J,4Y!p"H%JX84
()3+JS(Q09eKi24Q-3I!"2ah5UVY+[+peKmr$%JU9$cYJRVcH9&S8LV421L9I(FH
V6AVDq5J@Qd(&lXK5CL,2qLLc2l,KdHS8$chKMKpk31qXLRC)JlDBYS50NHBeZL-
F)38[3NKe*+#qQb(ma6JJ8JG$"J4C&V)N,@[X4-(,@@-'&@"+mmULi%4#9#rkj8M
GS1[(P[#Q,q+k@'iC(m$QHF`%)JaY[VSLajZd5&pR4bGG"%'c63+(H[5L`X(&@U'
*Jd%N@ZSpf$`+!a+4&4-J`XGI*-&"q!b1VH3Jq&`H,%#GAb-V4YB2Y(,JX,0lSPP
&',B[Q$QT5!G4CTr8dHXp2,L8R6f[P%`DPiBK1Jpj[ZB5a6E&G88GMU+BLDjq*GL
TBeBZPY)"mESdRB,Y63ifQ-aUSK!#Q1d9J!Df'#8JMD&Cr#5i$*-TE`0&p!5LQe3
('f%551Y&@qVHXeB6,"86VrIQqmq$CVQci*RmA4NHNC+(kS6aPXRbM(iRJ3NqPr9
4bPCmZRA5pfK5h%%!&ic$rR4k"!Ui[RGN!EpJp(r'&h$Yq0(2aB",KiT)J'!ajQ@
&JlUXrBb+Ak,YpibB5@h1JXFqSFfT1(!F0*Q[hR#%0ieX'V)rJff4X*GE-8R843E
C`9[+aPN6J!*,'*!!3&3+-T!!HkNM%a4*DVMHfa#RKRRHKJ3eY(JE)Y5`QMH(fLJ
i3eZbE-,5)d`dLflK3#Sf"0,EZ`VmSlf2l#M)#*cAK(NY#G0%4+&dK*NG,-a9T8+
Bf8(#h+`*Fj@Y9!Sc981BUHd+-dA#R"FXc!'j%5FL,K5PD$bNET[3%5-a!Vd'[1M
P(Eb&!I2Lj9l!I-,!D'B'I+U3!)*@f*-BZ1Ld%&U0Q4k`M(Ch,KLV(0Bk5dH(!24
I6++KXrfCfJ#FS)fCARE$,00CK%L5Nr9+&@,bIq$N-"B"[,%TbN-1K,Bca&R8AN,
&$j`"2Z2qA'lp29PX%k#9ThQ$ehCQJULb!m9mIX'P83'5SkK1T)6D#`GP,aaijGD
e((KlN!$adk5-!`pCp#f9&(J,*TGiLr*LbQ`k1'&$a#*NVR0NaL'mGjiAG9k6fG[
[4[eH`69Tk-2+0e#mp9(#B141cLb+1qj%dG&(iJXZQJ5MhB*4'iUT2J0i8@dC1+U
BX644f,jS,I&GBM"X$"&9C4['[NI*JJCU5L%KVllN3Y*&"&3kNPi)MeAHM5AMT36
L"V*`hCA'k!22FQr8[8BN-3UY!m%&VDp6C*LX2%mQ`qZ+T&Jmb!5ar&q)4FKNjij
-,ab,i&Q**$aYBS+Ma3b0Y)P)pY-!YRAjUS--m6c*`$4NkG5%l29K(0AT5G`kT2K
aN!$hK06Zhm(acGR+-"dP%!&CV#Y+4**MSFSHQF(2VBE`D$&$P#e,3#VdC'ZTkmI
@Y6i8`&%9"D%3!cJcCZ-D%*&D5qZJdJYEGBC5VD@%%SF8E5l"Ie1HJCc4+mJC'N,
+4#jYKD53!0a+JNRHVEKBLI9cST0!B%()k283-V3#fd'-BjpP+,6hA&"S`hK*cqK
)#4#X!L`ADJY"FVHBLNF8@*d3Cj'"H8r"JL-&ldB3`EU@R&%4!'"heK@jEG,VV!Y
4-8PEpAZ5bJ,-NeaV#Ba#++4%i0+d`k3Pm,')'#I+5bQCljE!KX'im9pZ#8lq!j!
!5#G*a`Gdi`!A(p$GB8*N!Id8'JkbU6hLS$,h(TQNV$N-B23"'Z"05[lVcYjYT#6
&X3iFQmA(1MT-(N4*L+0-lQj*%*2ErckE'M8aJ`bA6[T`Za[IZBf0Zi`E!pLi)1d
SYV9jYV@aN!"56!C*%pX@LQeY4EcYVdh8U)(l3!S"lB[0LMd#,fB@[3#8h0LNBQ,
M,#(`iTV$F%J6$I!#U'q4`!9m+JlUa%&YI&!R(f3ma+(Da#(&lKV!S$cJhjkQPd'
!D%diE1X1fVIpJeCq%(c3Ujk&H-%pNFaH'LlQBe)iKV)#QpMDi5l8NP",&P#$p%L
6G[CbDNPXB2*i)e1(N89%p)Z01S8h-V"Am4Upm'DCVqrX$FSaYdS%@GXA`3m,Jd@
`PJqj)2IIZX-kYhrBBMhiX0GCh0lb9cLKF8+PKS1-r5Q"H9S0Uk1+J1K6Tl13!0"
da03rRdM"XAK[)0YG"C*pM+-bCKd[KkP'R!#fkrCh4Z(3`d&1bM1b-hU2fYh1`*4
!GXEE'EeZ'TEJBCdmV&!k2Eq8IBN'TQMJTEF[pG+")Q*M#Q90HVBccHYiN!$Bh1-
F-V!jV"#*%S(DZjJd%+p@UDIfJ9e6@S30LjR*Ick"NCUc+e$d#T0CbG*N3h)JQC%
mN3`P,bBR*&FR@j-I*1FRTbGR*pFPqq+fH('m2(iJESRlijr%Uq0(ii2a"q02a4I
%mq,6il2Mkq*p#9XL+e'DD%J-*$)5[N42BPTLE@*1SMea6@*@BQjLC53H-89')JF
L!j'-L#r5%jN@@4Tj0[*ZC&jN8H5qb+V)LV48fVid9eTMQMRY8YVaY*bdD0TVD8q
RGDAPT8e2ZcPY45`9+iZjBSfacE&,X61aSl%*X@GMlE&VBV0LFf-VGmGfGqiHfHh
F[@PhlZiAGjrCIAThpZjPZmGh,pLGYrZUhEIY[RhhLP3m9CMDPbT2(8aY5PP6Pe)
R1[[8hq%R1q-PYpVY%pe*h+d5h6HjDaAGYlJl*,U2FlG1G"rNVLkk6h1h@h4rbGf
)k)j60lC#G1G`GjAS2XAGHdAh#HiZ&0erjqi0S[XKGpY&YjQlFd5hPEYV4EH&Zj0
&pchZ$S[Z61jq*EV[F[Hbk(CaYd"dhqIZQ1KqbYf$S[YElVD*lJ,ZPSRZCpa0LHi
(e%fV%0hr`GheSMZ2ZlH+lMpaGjESrMrZAL1k'lMl'DCcm4-PS9kL*K)!$@VR!@Y
&Pd@F0PPd@DKT`k,,BNclbV$9(0kU5Jb3!!aV#2"MlJk*PbbJY$V4j5")dm9@fCk
Y#X8!&N5D%Pd1SXJ5-I`YE3Q4fH+Sb6aJZZLZiHjm-A`32mrbm!9L1`k1b&1'lCl
L!FX-6Ir169&aKC%TNL1k("#4iiB$T[(`J+(TF@iD-c5pbNdNJ,mRiI%QZQ(!Hca
!%`#MB836!!GfJJ4`P5Dma-eLZCpcpcl4rB+lLm6&Iq6Z20&PMj9i9h3CI422'PK
B65`N*Q$k!r`Xi`%A$8)Cj!(9KLZ6ZHP&X59lPN5Zk$)5*MBCN!$PFajq5!aJMjh
B)aKRJ54-S[X5Gq1LqhqT'eq*kAFdaZ+hL1kMh*eK11C41LEq!d26@QibHS#RZ@Q
1SHNrZ'QTS@N00edd02dR0e8,Y[iA(rf*'2#[q*R#!h,&!"CqI*0JP!-QlK6$Ma$
5mh!5`,m3qQY)(AFBM[`RDNT@'*VQFG-UFBd#m`Jhh@GSBR4-cMGFqb8hD4k!@8m
qC4M!3CpFCQKL,j1-'TVDZDP5,'mDEq)@h5RF$BMZ%HjZ&YfhZGXSZS2FGBRZkpc
G*lU[FGFKZUp59c@*lJ6Z,KGG$RCQMETVZAZr%-%6*(aL9QNC)+1-qNad9h2hFp(
p-hIAL1jrFKHUF04mN9&F`H4rLL`Q*$T8A"dA`U5-[NUmS)`R9h4SUc(4S5-2L!Z
%##laiMr3b4)GBX3N1P5-4MUr%hJTm,B44+P9Ah-cD!09#8BMH1()1Z8NKr,56#6
Z8j',j155JCPVZ2'Z%mLd2%l)Xf"*Nj'S6$`9H9(q*@lJ5AQ%6$P,9C+[M[29)LM
LQq'jqS&k9TQ9Aed&,D&AU8ZU4je4%e5,HJVG%qSD1%diLZP9UP*0KN2e4@S$1XY
81cGHTGD8$DPINT!!-CQ$b64-RR!IaHFTG`mqRlXVm@PeRm'RfAd#RrIFPr&jehd
*RdrGIR`qFe[aq4rZcIMm2rFQI$Di'r$*Far%jfVh)AbZFCIMmlGZ(Cp&lRhiA1r
Za+I2ABM2BRF+RjqiB9PYJP24Y"c$SLASYr'%LVXmS0rRb9N!mGl&NJGKUVddHCY
DNl`qH9pbCA*ZFP9bAAb2'Sr(NK9aH$,9'Yq6A!SJd"([9Zha2HK'9Clk!U+BS@D
TfFNeDT9DV*B$R%`PLk(R5%qk--LC(!0JD8j@*Ih*,j,Mb60*0`$-BGlJ"M!,Sqr
NDNb1N!"(a@3D*L4%mM)Na'a-5)b6--R"C$)QAf(b*LBNaN&-AX6N,I+SQ%c"K-6
i0LB@6+$@-,NINpFa)6'qKNNT*UpL-S,*8[+SQ$b156FQbc#aBI)S*R&-eL)`+c$
j[jJX`H4"-NR$j&r*Sf+b"T0l-B'D6c8GNp@BA)r*RmQMB[)d*[-`q3p-&Q$b,#B
YQ2`BNcQBI)J*#D!,%a,!q`+*EK")p)q-42q6N@JK)p&rBb5kMj&S"L24(aL*EQ%
NqL-Md5T'SMma%Yh1526I'BR@-a,Ga%LdMT(SAaL*IXp)Y)54k0H-4#Xe*%V8554
Lp2R8&c-0UAq6aZU*6J0k,3XANNS&lM`8"L%!Qec&'ripErJMEF2iVBB0Pr''mq@
'mIQ'$5H(4l#KQ6XhFUF02qAiUF-2R(1&GEF6'krJ*Af0Pr4$AP)&,fNU,fNLXp$
%,0Jp,&`fX0$-,2`A`B,&m#V+Vrj*[(,aCm53!"R"d$"Z+L2eJJPZQ!Z(9H03SBd
0I[)fEa5(%l-%,5(k+"`iPfC5T5LPjqR6Q1RpC1bL6h'Qpf1Q*V@81dlkU!Pd6Fe
p,-U$kak,mXZ8r,#3!+iRGA3d6H`*(qI*E$4Pmm@Rj!@9MH[$@JH[FKq,rN8dR--
Er0I`DCi8Kq[`DMm'ED+'Zrj!4T9NPJS4MJYNrRH"c#d#Q@F+C'iAb,a!)20["6*
r)*!!qAma-Rr"b$b2NIR['*Qr`mMm!dEQEc!bcf*N[SH4H6SMmmmCQHpRC2i9)r-
rF0$Ibd&r'`IpIq@JRme"2jH$rQFFp$H,S$rK#DarmIPV"TAM*DAHR4Bqa"1S6U(
*%rmBYY&NcMLLd)ZaeA,Hr"HmqDfmq8r&jM&@Sf48G0,($ZVl"1'"9&2XB@8I$Tp
$'%Z4J`LR9pR%a-QDfS6qVf"1[fE,9c#Y*bIlFh6VR0f0&'em'p3GEGjIUS#SF+k
qLBfiSpbTBp2)+"clVi'bpDHKkK2Qia-R`i$XFe*m(9If&RD3!,q!ZK(&T[+6aq1
mE6D)'CAQ[8eahp%lhJ$(e69&b((Ma093[9JhF8l'NClVrY$-M[)pfiBM8&93"iH
6Nk9h-Hm04djIjGlh81A%,Z@8aZF62f#QZbBZ)#&5iHp4c&$4B4[23M4Ha9+BYF,
CU+qb(!+m&C%*RG+FQ"b8Ji$bF5X8SlP*bAhUhdIDc1i86Aq*U@ie+Xd3jQHYH''
$`fU6jGY-+)*MAhCSC6-10rqa-0@*3#1$f[#*%D(%)JXPRc[52Cm8mX&T8@,NZQZ
L[ZA&-AFXFp)$f98U9*3hbEF5,jd`-BhVNCm-$NEeL(R--SE*6YI1(hhRY`Z2GqV
cJrmqA9Lr(J6[N!#fE(hSP%'&'-ch+majF'!'Sc+U-NG6eH9G'!a[Xm-(B'UEhI`
5c(1cmA-&2h"mhpc'bJK58Q9$FjDeIqEef+UfIB0q*QQ$SVQClA"8K+Z$V6r#P8%
dE!McJ(%bp0f!9e$[hEm!DPVk,2hYViG89Ej"T2dB`N,YAd((XiR[2Ufk#pU'RGR
Frb3jZCP"KJ&He6L,RD```P4Y*UE#KkcplHrlbXPaBI[lZmKX1%S1$k'iSr*i26Z
1VQer(ii&Ze[11BXm+RNUDDZ[,@DRidlHU*3f!N'`rikh)3CKF(SE1l4Bc)iZqY`
k1BdRP9-85F5456-A&p23!)CbG3-INR2Z+*cZ3UQHGq"b$06*bDV(UHM-a5kT!-$
h,V1f56,8I)+L9XJa,&mb1#l9Y[0HjD#*`TL`UEPH%fY(`L2BK5cB@IeRe2eB`"N
e!aZie!cmh)qI@IKCk"Ad+C1mD&p-&f&%-i[C'U"Q422HCXlEU,4VJVRL4M,BP30
ZeFL2*)5`L4P,0"qMeiGleDdHP@ih5`E*!pl6UZC$k%qfRQ#d+qk[[@(BI[1@fKZ
ZX2,pfe[f849J,9r#L3XMLl99,DSY(M'A2km@2BM,eTGUT6)51$HihSH!JG(4MIZ
JLT'mrI,Q9hRE''rej6BB@&5$JB[-`,5lcm!hET%-Q&EI!32V@E@6*%$hYbr$cfY
!ZYI)N6-G!Z2%KD6%fc2)'rMVY8&E&D!0&`BSHc"aU#(J-lkE!Be-i6Am,2-U4[)
5dqea1'rI)&mdV8H8,JF&)SQINJ1HRdkNEUJ4ZL5&f,5NH5Pp0$0NkH$JErfQ)T!
!`C@kT8EJC6HY4q!00LdRX``+[+Ee,9q5&jAE&RDK5UbQ"f&#$29c2iGkM(*5Yk5
a3"'fde,ffDhrSk%SI)B-riA#LXZlmZ&`BiVChcUKSBLGDI1&eJR1)K)%UeCTH(!
cLK5mbR5TTp)I9$PEEU1pa(+,rIQ#04mY@(YP3*`PK$LD)6mCX'8T-Hbi&*PVR+)
3X%@E%0Nk&YQkB*(pB)m3fA5+MQiPY5ECVHGUL1qeTP83hl+Qp@5Sc1*Ej4%IMVJ
V"+AF&3eT,-3G'KZda&N3DB#FN!!el9HVd9RGDlK@j3f!ZqTq)C8i,Qjf'CSEfCL
p#B!%[fap3P`0')4bA!U&(0fcB0DeI%Q'9P69Q+BB5iL(!#CFJQQj(KU$N3-k!&V
JV"l+jf-hAS%0#'AJF-EN@1)9'DRrU#QdqEG$-BJ8fETYL'`YLf`0Lfa*$C(4%C[
5%CQqAC(4YA,43@CbCpm&)N1c)j+1b1LUEK#CAN0N5eKNki`L8ia-`L(X`SI2)(%
H-460f6#LV3c[Bk$K5ri8dDGJhVF,Le4cPMXQ'`PdhBD!9YZA3d$2XXR&#Xj-PlI
`9V3pXTILjQ%*E[#!,`&N6DGAB0r86'U-qPV2H44j!Sb6acZkK0H-N!"D9(18-jk
aC*cC'8%QBq(T`jS534D4B0"+TVbXhU'p#iE+rHeG-Z[MJMHEPS+L2dj&2mahf1b
A+bZNjYh8l#lh0+5iSFc$X-YYmhDSN!$f-#q,d8)%%Jb4EFq5UVViD5%`+$-9,lS
KUQT8iY*r3c8bf2iE3Z6%U)2-%HF5%-!Q'#EPcIj[jqarRCEpHl,c2DFUF6b860M
RNR)Z4([LLL%l[aG$68B`4)!`+6Qm3cVIZah0dfX1V3(dd%XA$)8rp&ic!#El06C
U--#(D4I5h6+&T-9L#cNiT5,h6$+1K1@',9F+G2X+rUcNca)),kHPNd6BqNXf+*8
("B[$9!hK*UhZ&k@h5%EN&D%HXePM3)UG3DlT`5#A%*QL6!AU&Q**p4`q'%i(cb(
aX1IUI!l"Gd1)UZ!*M$dhTJdJC6154H1ah26%pTN'q@McEmaHb-!HHdPmpV3Hdlb
p9l@`5G@k'$e(4!@2-pXIV#mMj!5+1eV1bHE,dEeMl3pkNMh$T$j38h"Tcb2LUpl
I[KV9)U53!"$,%eYefI2U95*'hEdPlD[j'*IRQ'IV9IcfG!m#f5XqUkEhL+dd#V!
4!U%U(B1m#B2+*0$RcL69$G8NA[BSUpLMV%r(Si!8SRNV8@(B+J03&0+U1NMA'pe
rKpk)0d6c`Uhb4LTj5$Y`'ak'0dcrXPSZ2''0493VGCA--*+&aS#"PSi&jr0ECj!
!ZVA@Smre#R6p2a,!5hE2'XYC2VehqYKcShL&i1E0Q6PR8L$L`JX3N85LDSKN2M9
+P*6,5YViU"8iq2[iqC&fT$N[%)ALC5JA9kR$SmPZB[86cYUI(%X@5U9#DTk@-@M
X'**$@V!jB2brR**UpTAm8RUJK'"lrJ9X,`aQ%DJ9!N2+!1*fKXF1pk,HCc0R4AX
imlQ&2cIcCbkfZDhPQj44LqaSMLIML[(,cL#eVV)J)[A(-CQ&'CA&5T!!+(,8Qj6
EQU6(IkQ@J%(%BP#F[3!&m,Kp0SU9Te$G@Zd0Rp[[4DI&ILXPdPQ&5HF[pq`eYfm
!NBQlrmjG6[,L!2`X`Xp#r-c#crhiJGSjJ-NQI)lM4iHhM($a28)1eG@djJe3UBr
V$jZ60RfRj8bbfp+D,'3LJTA)$b##1SMFJ1bJKG!2Nd%Q,UK%0ff46+0NXphHI!@
[X[P+SCIXJ'aK2CBaaQS2qbMlJL0+ZbmNc5[h%+#AMF3*8!NQc@@8,9"9PZBm9&e
8!6A@dE9(jNlEBV%hEIVLcKC+AY-&$)@jm`%AXNNSakC+FXeA)`YEi#3[PVIdb0*
T(QAJAIB&!0Ik-[*hj@YE(#4'VZjC2hhDJQKeQIBLKNTqD#K)B*d5C+(%16RfJhV
-McJE(++-A'CXm5`"H%a(iZ#hCRm4+pe$TZ3R4iV0'4"&P)CB`XkK4+6PM,1)RIU
6QITXcJlM(814JNJZ2VN49!IbdDh)3VmJS#pX388Hma#NRc%63d`)Qi@I$D3U!!V
8460AaYEIrKNh[dBI5G$*JXSkE0'1,GV&i1[`'UU`l&rJCj&RLqZ`a3r3DHIQef5
P$XN(FI%+)j0,c6jmj@mENK(qa!l$m@XbPF&**!mb288)&E,$UDmE2al%'c%c8$U
IXN-!9[GV@6b4C'JM4FMm[VHB8&G484NB%b#KBN#29'9r)%((H-qf38Gi5K4J,,S
k0&aK3P8*HcdX`8I!lTAQ0`4`29XQ[MjUJfVXBQe3@!kUdTEY!B2IYHI"klAEji1
9@aJ-cT0JF21ARS6H,D*T*!KiVC!!##5*Q16dPG@&[qj4kPhM0B%L)Q"B&6F3X%j
FHLfG5a9#5IF5UD4Ebh6B8aieJ[@)bNLKX2e-*Q6$Hd#ZQ#18+PmQ,dS0V6pp$JQ
*'cklR1pCq!F-rXql%2bR5`,dMdR3RlDS!I+,4*@QRTQZ%hSDe*mcSRl6*a-hV)`
daNZ--)&&ZlC#1"2&0ICq)!Zc1JD3!2S!I"5fp%"jJ4r#UT!!hVjFb3aQk8["D[Z
R[l3afISS#981G'N$XfX-c-E!ad@LAE+dR04@D*83$1Z@6-VqT5TI0Dpa!cXj@Jj
KfeV2JB5rdL+CAYP+)-MbeR0EU$"E6*9j8eAH1(EPV+p8*f8bU#i!K(p+4Tl2EhQ
HbEJq9Zbl@!m!68Hi1'U"mq609+%k2-PG,H5%[9&dVq@Z5`qJb[-bh3m5Mdk[,'&
kiBYE-Ve+E+[M$DKUSm2@XTH1mDef4S`U+))R9-'BM*`iV8MG2%FLhBS)TG2ib8%
hJ)PH3K&5Rcd'T38!IQkPJe&jpdHY8#-+T4FUZ4!9NF3r[BQ+M@5H3%1KUTiF8ql
-BdH0)kH6P*a+2QXB[N`1Kk(bpEc90"HTUmmQjbLd"5PR6%,&KLQb8fB'GH&#6qF
ME"#3!"9qN!"RjUQXB)+FmbrR#LE`JLUBN!#+l[J)%PZTSN4XAr1Kr8@NAJ,9m84
pqmlcLqBYF#DhR#SZ)kHRC46XkmM$5BE9A)RfSFJA8Cm6"[58[H,4!,jeQF%AZI'
UjSFX+2c`Bd'JMVA##@E6)0409SB5Z(B'h@Q)#,+*a1lrjN6UBYU!9I"AHp6YfR`
0r*,!*cJkEMjMH,@(+qaIfIbLAN40hpi(96-X#VP8(&+'j4jNjAmSH(`%c,IT*Eb
-,#Pd9"253Nk,Y!"D2Sd#b15*VY%G1bY8c*9KU"CSJNcH@rp+U5Grlf[EP8p95Ee
`"BKC,$Z[0*)k)(Z6,r9!(`l'-)mU%Ei8YSQ"T$*43d3de$S4"B5%Z0,aNj@Z36L
'93iKbmpbPaN'mL"qZ5CBPETRfd*#9qVQ2!853+-Pm(8UM',m59N3C*E5*(lLq%R
J*i+I0*ZP*8BrK3m41Yd-C`M*)a"@+-kI#(pqHM9prT%qm4C!0rmX*def1CPS*mF
,04@mAmK@ccMB)S@fAbQU%$p#RXVDJL4j$0l%02k`*pU4)JUN8q`i4aL&3,L86RC
LNK35f8fA%I&R)m@"9#Af+9DpiKh)`N4P0ZGdSH*Q*6Zd'9B$P+NjKd`fXB9$%f[
YTDTm!XM*-aK)a&$96`(DI6dYa)-%F9*fS`eV@ZXam`'B9je"e9#F+V"#&EF2bQ#
J!J+##fq#ikHe5#4!m9I6@SU5C'8ElI!HFI[m,3&l#k)GedS9kElZKiJd(UHK)pE
,Ed'&Hjd49)H$*jqKmjU"R,eYT*Sh-@SB5!ej`3e0!iB'`m@QN!!h-TJ%m)j,&X(
NBIN`cGP$FBG8X8iAG4TkcXmLlZDK*UU#$8J3S8DCYALMMHfY8%lS-[[aD62$1E'
pP4)1cEH,D0*@4[[l3jb4+hARjRSIkJ2S+6KC@bmG&CPB(3p9)f)*I*QTiPqq!bq
C!-T(m*2fpAG8,L+rJ'Vik86!a--R52N6rViYNA&h6+#$PG5r%pVSMc#k5B4Cl"a
+255'Z#3#Xb0E[)KG*er)iXf$eVeK1KV93MP5BSP"Mbd!pA#Qd0S'H[L!4r"i&&"
`L%qNl59XSXLF2RiCDS%ImCY"0(d%$J-Fr))Udq"SZJBmB)Af8!+V5dU1pC58($k
BqIhD%kHUFdqGHZH9d'ErVQ1lUTAh%4GB@G%M5+UP`[#!EBp8@EQJME5m#)$h%B#
a80,DFPjlV)8(5dU1AlMTDBp$5*-(D*!!&GaEaU#5l4&p!kPiSSKH10JFJZV0Npl
+Uj`*hb&@aSA(Ni#RaH$DaSChh-9#3CGS$,d31ZD10%+9*a[4XHLLccp6hj2jrA-
ppE@M1FI1R1fT2pEc5Njp1NZ@#fk#8lFXMk$KC,@cR&99prFfVD5Up"d[8GHh4iJ
q!Y,i5Uj@SGbI[ep"E9%%kYdqGh34JddVI5QSjcEC*lV,(&h%RQK+SLQb(ibb8#1
q8U!0d,jTC5J*4ib29*NjQQda1BZRSUVP4ASm$5XT%E"+*d1qX9e5m"(KJHL"3UM
DU$62i"5VF5KfPjh2Eb2(4GdG%6LlRKK5,HIeSVBS1D$)iX)VZVIh9'8Pj**a+[I
XLCb61Gp2$amb$ZqUp[Z2HCcK+Fr$($$)#K%d)G%J&di+dq!9,lR-)ir)DLe*aED
E'J089B'a@AZdNqM$#+L"R*2Kf[T+pTRTF3%Um9d&*dqI$E-L)l!,ij`D$3)XCIC
#Dj&9N!$MS0P`)$NX&1Gp3"(Qb#bAPjYGCQLZ5Qf12KlG(%9"8dE0a#!91!!G8`9
,b@ZL#PNP,Lp"&Np+&4h5qdK90UX,4Lr"hBa`,,CjjbJUX-VhCm!CEDC5@I[!)*B
QXTc0Cdp@R`VRKiMIFjiUDlA(@5((jQ#m%f)PC9eCSE9$Y)"VlE5!+a*mQVT#,'!
99C1-Rm9"LfJ6VrSidi6$I+VLT#10)b6&NSD8-lC*bHhkG#aT0jE8CULq0`X+$V!
Srki-kCE1BF-Lr+rd$*bYVKF#cQ+QZGSPC%-Nj!3a@5N8lJ@f+H4LSj!![8b4XXV
p3Xa6*i#TY#hX2$QV3A11pbTBkXhrR6mAVUScSA4,G9m,YUK@i1VkR[V-NkIVYa2
ieA,VLRQrHH"AV%J[m)QYc6XcrG"[%YMKccd[fGTmpPcSe,Rk3(fSq[[5S5ka45b
&S'%9$&f@a*f+8X(3bMCcH6"$hG6X)S#N*M0dm5["6%V,aYm%)lRjSjZ9E6FBb$e
emRLk"hmL0rMKJYrXi"mZUAR`@cKi9`%IlEJ14qqUV0B1KbT)%am13YrkN!#*'4!
)mX1$@N"F`%!R0AXC-"AK83$@im%0eY1MLiMVe9Ajp)JU(dY'T$Sh-))`Z!4AIU3
5+l#V3(AH#)Bbkh01Ri9fRpk6PB&A+Md&N!!Hr1JNBAj`%S[b2"j*,P@lZY[HU16
MQG$MT"6-qh#mjZ1CI2LDH$b6P&#8c!U6)qTJiN$5I%hlY-U)4ERV[!p5mZ%RfKE
DSjCmQ#Zfm$cX$*)8[+6A-h*1KNC2RcaEII*%GEe36XG9!lDm5"@@CY#M[d!K*M,
HY5bQ2NdSG(fY35#MPdChjSjD2)idYF`E@3`jV-m#J@j$fb!U0Y,9f0I*U-EeG9)
9A2Te8QKm#*pZ9BG2Th,L8kB1IMe$(IJkP(ZT4R`LUZ(VQ@Sr3+5i'X)RJJFHD3(
Be-)90$N)D+,#)AD[EU9+Bcf2mG-RJA`Nl!p*"QKBr$M!f6Cl(mc6BPbahX25e23
86,K!)[0Aj3FEUAN"#6$4b8b8-42&q-682XYA+JXrHkKL`U9iM5S(4kM+`k@CQ1S
`H4cM#Z)kNA`HqB1CAjFURDFk%KB4Ab8$Da%8V$SQR9UP"93&%i+k$%Uc2fk%DZ2
dKb&Ua61)!6TX@Bk"U-DKl(ZS8NSRTmMIHZpMRL6IqpK%LCQ81$3PYX[DlU%A$%[
Rd"316@hh8)Fie,&9KcUfiP!($R9Xpe#6106%P4AHdD%A$%[R8"-10@hl8#mSlDh
f5`4(frQD9q,[I3`#4B3lNIFq&N'AfXlJP'&`5Lar@i-GKX%1`IDf"TX-JdhHbXA
XT*,*dHpR8kN)Cif,+BUKYCA"-9Rai'eLm#e8B,F*TCZiY)i[,@%&ZGUPGH3"qeS
)"D&LY*[32q`Jj)$bI!SZ)QC9#+,Ml6SjP%jllf-Q!cNdYPdPh'$5'XU,Z#(L'5!
E8Ti"*6$Z2@#[`+F4d3TIU3BBMD#f8VTNZ0V0!NQTf(XISqU04Nq&X,H)+PcEZ!V
A@m*Cb&M6#$NTUS'0(8!!*3rCqJ49e@'[!$'@Zc,+Q&Ja-'3iaKLaV'p'mZN"pYD
8QE#Lf0EeY'c$iVGaQDkd2J&`iSd4rmKC%!NHGk8k)YbmJJ4P%0GfYd$PaiHD0lL
+$*HhJR@STHJ9c'GT2khI3X*j"CNRT([P!Cd#'#TdD$!VJK),eT)+4,LRBTf3!1R
#`(-KmiBbVFlb$#ESNb,JdXDAie"Ckfi--9'C6+AY&G1Mh'fDG84%3L@S',EEL6M
hcrCMXFC542e'm#QPST-Lhl4LAS)d*NkHYEf$ifaKU[lUBBlQDrrPb,I0D-3,Pjm
U00ZBB,)0NX2*6SifV3$"HE'pDHZC)E2SBl%$la&$q*4Q6!Qm4+E`DNEY(#p6hU)
)60IKJ@YD9*ZlR*3%jrCQ@,#%FDSiX*c%FbHL8ZjXAZC1FC,a)&HMlYP'+[jbQR+
(C03Fb1p(eKdK![cdk1`MXirmA4qTD5#P40S390)lEGddUUEhrZMXDE1RI3FU*qm
Ij8'4E@dchH*-HL*K%NkU[M1PTm6bfmajC+kY43k5mE@H%0(AEEPALQP#$YC',D0
D&ipRdZFCG1(,TPMPPl[X&IcTidq68,THFCLU@SXB5'98VC!!"3@p@CLS1iX-a#K
%HR4[&&@ENU+4M5)LK%6jYG)fUV*bRfic%K(CH(fI!$1kfE4CmibTJXF['dbjH@L
h4V)5Ja`&M`F0F"J83AK*BAH1#"#Nr%G"Iir,i(5B90'aL'Q$+[*@#kNjI-L"`ZS
!*B400hjD$(N&MT!!)Q3S6llGD`T2&Bh8-)ARaa)L0)e698'J8e8(QF3$Y%,a4Pi
%+,C"1KCS+8AN4U#m9Bemqi`U4c9rR8c5TiHmk%1c#FfG+U*&p0k6D5KSeM&K#Y9
@G9!8rPqe[NS9Ke*"J1lIH,Y#fESGc9ZSQDVRXRXHZ!N'Cik`%"iH6b$I,4`M**'
3!!NTlh+0&AL,j8+TMl'#EM&iGJFrd"482"@+VA5Up!XHr8VP+pA95"KIqGeSEkC
p0T(McTd09r+MPJd6Z3B2lXA%1#Kk2mM%1Kb+cbXK8KZpRLU,PqV[R%0hGY)`AZ"
k,f%1%4YGC+Ua5h1#d3He3`pM1bH$V-r6TU4!QVSG*Sjk!1MrjdYNEUdGc80,X9N
jElqbBkJIrq53!*L*$Z)A0hZ1T@V1"8JXV`K!D*3"Sf&L'STVKqlkPZIb5ZfbKd5
DS4'CG5Y9S@E2B%Fr-5,#)0'9`54PN!#4"8'CLFYHNM)UhHa&C5q(3)cZXXp(F0M
G1Pl2eVq)1a#Yepj2@HYm[Q#M#c6F5(+'SP%(4Cm8DF6Mfi1*rI#LjD2d%!@TYN&
bXN'G'fp['a3*!"Y&!0MY0C-!l$&e19K@r5-ZL'J3FD95*STiB)@Bc%l[q"XclXl
a2-aDde[VMq-"p!#bi406X5H4f8!ap9QUdKP0U-!DR@j8pA)@i'XC2X@Uq-DcDTr
DKmp(kL1mcP*CH+%V(Cd40D+Rr[+1Z*'2`1GKpE"q)AL-`pSHj349K"08XBIHSF2
``@&S`Q(Si$"dbMMT9Fa*,abQ2`*Mrk`4+ib9XqLad16I`4Q849qB&GkG*6h*5cV
-bd"RMpSM"B@QFP@1MdZjm!(iJ-mKG3LI1P@(38j8-A8@98iG3&1$DN"R[pU2cLB
i)IXZ#eQbGb1cKdq4+RT5#p)f2*EJGTNmc%bLdkJDM8bLJdHQ`'HcfSb2@CRab9@
jIcN)BQ6i5BeKX2SNXaTm+-#0e!AH@4qpDGETYN%i28$5IHSCkC8ZjkHIP*IA4$8
(-kHkj@@ZAKRCP6qrjP"j`0m[paaJ[PX(M-R,GhM!jhq0!clILJ-fD3G-,0kU!fL
S59lN#UJM4&4*Ir1V&SR0jeA-Z)20CE(F5CGN*UTPQ*c*hD4PVFCQDN*&AmqVPR$
ab22UFcfjY&R0HAK8cG&h`Z2[HGLXRVf!,4"kVJUd$G)(JpV`8)LGF[N9blI()TR
kD-lQ+PE4GFQ3!,B4GA&JTk`!!#,IaiSB@p8F-IQF*MH5)Zm@QK+$iY+cI)QLVD0
bZ*Q)MM2lSK3Y6kC(SR%1)PUH"8&b(a&%b9$'-*J&`qCFFq44JZhEYH)@dB8YB4X
5dA0m&+AA`JfGL,"q0Y#LR[hBElGRYV#bK(%-fZGM&+TB61#-@K1L4cPE5B3H`9D
Ip[!""'aK%l$85#ceL8'$ePiNhc1)Y-PQK$m+Qk8+IY@++LP6L)$*jHK4'*C@&*Y
VTik,b'di[jUkaLq(S!*C1#ZF6D#3!"K+aVKl#+!6MdBJ#RC8,A&FVmr*1C@MRkh
8G`ac"-(1bY!V2CNpH&QlIcm0F6d2B`BmGFAqrIA$aqSjjZ2**hGijc[c$6f2HMH
2Jc)K4J+jdK9PSha%J[*50HF$$+VQ"e%LmA*@#0(!S3`qpd$B0(PF#RXH#l[-%e&
0hPD*+RMRN!!5D4Mf2)L*L4kQ84jK#)B+cF5-eI"kJk&LZm'!DS[X)b)B"MJB9KL
#J8&S3c#m'"3-+l4JS%AFc3!iGZCN6ZNKrGcCSr8P2FrIVF!J-*H0qFN,dd2D,+8
+)I!)MXYNp5K6mm5#6**GVJB+V&e`b+jcp6R'[C8d"`Jb&*JjYDUF!b&-+V"6)&+
KqMDU8)FG+MYJ%L`*Ih6d8LL)pNEq9r"@Y)@rA)AX(e#ed3FqlS8Ad6DU)!)E'jM
Df5'XYP8&E99'U%h*HVYKdffc4mQ'K%FS+8dS&4HP8#VH&8,Tp!T&frKZ#+E'FJ$
8$j-"l3A(TX5aMArGB`e#Km%89r3K&fmb#Ti8C,,(k+`KRQ%Ym)9$#TMq"5@R6Gl
N0&fME0jV'Nk1LHRa8ib2&L'+$4H-B5+NE*R)E84Q*a8#XX#J)lGCU!8G)3Uj$#X
FF2YXQL)#Q66)E1A(4%cjU(+HP$[qq#)0"E`LS3&)J&&PqK4*3mA'Q!S#JQJ)*A$
5"B5@D)@abYUDJKlAR,Mf@GXJL8DhLXFM+THEr$Te4mZAb5)K9LSfGFqa0Z(mh*!
!,!TfaNU!`+`P&aEjm[AAeK&MmV933Ci5l0PUESM'&`04VN"kjZ)U3Nr"MXY`A#Q
pU(RG!mLQ6$rbiH%bJ`6Y0hC$8-0Y,IC9'"Xlb!P2ZGJBbN'mKNjHp2)q#L4GU4S
-AUCp6MU#B4ALPU8e'G8-3`fL+%2KlH$SpCPIQi&18ihY'i-DCLjf'`Q!*0cZTHN
E8RNAS&@J"H-e8ilHIU3q![1+3RSNQT(VZQI!3,0LC&6I'55i-el['4`&*aqC3Ph
X&q!&"kb'G2Y$56)[J[FAhP"i`@k!E`jqX*5X#lbG16fd)L8AM$ME%#%#*C%(a%@
&[DP,4jC&pD44,*i1Y[c6)+-8(a0l(mAVHV"8XH)eEqGVLlbGIlYBdf2GXcr)Bk&
JP4lVApUhll%B%#89YEI6*Y)6%*!!#'q45qMQ3B'C&IilmK`e!e55F!b!EM$5Zb)
4'cX+-6E,c9-[eN6qTX+D642l,QMbN!"Ij#2'',2b#VIR!B"%9MNeLc*1HZ`fP3U
d5RAjEM0Akjq8AVhT1"0J(IhjM%!Tq4!Sj-%CU0V(3dAM$j[J-9B*$l,F)1#E1fb
XKS)HIp%KRH)eJ5+Y8i68L0MD*,044#QBq'&SdCeB4aYk%eQ5!1SPB(3mJ%(M'RU
Ehk&NNa6Ha-[TSrI%!icHh9cXl)9J5SRa[K!M[-Y)`$"QmrFXm#5j'Zm`bD84NMq
RLaGQYc+Vddd'Xh0TEN82%Y,p3IEaH(Q%5+"pLmS9(MXimX'NU[cM!4)546eL33R
[F[TmKZAF+4Fcp5P2XAUR(,EiqSGk9B3H5m$Ye`,(2I$"T'-@ei9EGKUf&1+C'["
X+BVTaF2DPYlS)dpKU6R'RU9&ji#`q*j+eFId4bJTj%%Z)%&IbSYFj6D1*%$ce&Y
F%MA+m8+L$)+@&+P2,@HN+`3B49f64)p-E'qPKr8GSbS$++1U-1Yim!1!fiC!VTM
3pQJ0P$@4"`p'@@28MbkCKlI)-"Er@j&a)f'bdiJ5B)XbiQiU-U9AY#m11JB4"4G
ipLk$!Q4&963F9DH6`mSkqG3H!r"9A2!i9G!IMNpjk@G["l+rQ&`l9iIjRc*@Y-m
QRLb+[EJ`,lR#T4$&PLS(Z[Rc6k5UTYbhl)2XBiYj5%*2,&h'JLZQ`VEFpL$%Hr0
,%2QGAR"26d#8a8E(&'#5(8rJBCP6TE(F1VJ%Fm!*J`Q*0mHD55382+42jr&#-Qj
p%)Q`h*J642m(*qRGZk*(NcqCqF'N%hYqpMC($(ZLD%BLH2$4U#Y*AZ$BA+#F!`m
+$-1ab("`-FG'e("%+31@f2ERXe'rJapJ&bc-(84Qi%"Lh%5!RLFld4i[#"@GUmR
"KjFV*1&6%N6hQ@9&EVmI%i"i*5IaqJa*2%ki'j*iA`8PmISm5Eb%6'D2hR5['j9
I1P'c1)6dNqDA`+bIf#YP36R`)'Bj@P,`,+AkG"r5IhTpjI&cqLZ9pF-K@(6@(bF
$Y,ZAr"DC'N4#M`S"JBjaej6l&6N@kH"#1$0+M`@KE%E5&LQG)FD1afL+aa+Td`T
ZqbS'5IGi`,0$-S1XZJ!J64p`NNU*1'Rp49"'dL@,fHr1-Abp8c[-'&(iPhHSB@Q
cYRd-26B!GI1@'T-Bk6@1h[3VFh"aiJ'&EUTBl1e-9BBAbqA9qmcE"2[R"'meYGM
3d3dGTk&MdU*pJN4P5*C-cGY@XL4pBE'3!&hX3-'3!&3NKq1H4#K9JSK#BGXE!(b
*'"I)6-%!lVlbS1LME5564()a3J9BcH4LqS$GKBhdB,2+m3GkE,mqmFUKqqpCC`m
#d[b$GfpEH[L`Aee[%-@X'NRIf,BDJJ[NQSQXV6hqVlr3#`kQT0*fNRi`J8m&CRl
aQNirRS+ab-0)%XB9C'#Ch%q6'XbYP*RFPd4%2`K5B*Z2+d`&i(+3!+Uj[Tb2Tep
q'6r8l@EJYif-L$f15f!+Uji5fIJK,m&&C-DRcT@F1(QZA[I"GK0%1L,1(DZZ2jP
cB8E-$GU&rI[&MH#-Q"-Y[kS)*JBXhbG"cEPp@d%+`G*A0G)Qk5AFP`GUSMLU2cV
SVB$Ea!rdL-T68p1LTQ4k,kia["!E[+`K3C%iV!LC)d85-c'&"N9V(JZbr-(Y)ZN
C20"R6E!lPaa(FXEE`k5G3aZ(%'ZP08)8p$#4bQNG)h@()"HM)LJ8iA&iN!![B-L
m(G05-JVL"jRN"6U60D+l2&9C#j9+p'#6d`R4H,%N3&5hCPAHV*N58dc'lJEK1XQ
40h%#D$h-hX*S9Z"Tq)'HUXVRD!,Cm!%60*Ka6q-#[T6UK$0E!#F6L"(YCGp+2%6
,F&!6(YI1l6-f0CQN&fPbX[#iFNM2bkmN!D9Tk,,R`)QcHBRDN!"ZHAhL%QBMNRk
LcK0i"fU!XK#50IT'--LX&ETCAP*K5&e)X[%@QP0RA%Kq@EGQqq5ALQHeM%3mp!%
b2f-f9A%a1*Z5"Ea@#DG'HY`f+HhZA[!JXi@6MXUk&1)XCa!9NAXGR1$piHhD9*d
3K+dpmM%kYih#fb#"EVFJq)d'X`Gh5G+9kG1&afdM5kX'Upk#8Xm982PT"!p4((K
*0pj+C(A2j@1aKr92&jkS-&i8KkHmQIcGB8mDGQfl@#H!CHTL!PMkG%2(CHJ8'dP
c`H5Vh`JjXZ6,L@2E!K@0dCj-B*Sj8IGlb+F6UlC&3!YQaljdqq`%(H#ki`2BU,K
64KGb3[@52eqSkqN69rQKd635iME!JjU%hR6%UMN#a5)d!qBqcc%J*IVc[BGi5E9
D&P$cm26!DB25aU1'*4U1XAF&(E2`JUXc*cCX$b$b,1fahmib&!0pQXNB48D)5pd
'NG8!H)6kZXMf2+FFQKl!f24XqSX,&Q'6Z`D!,B6I0$qG4IZh)FE#G"CB+PiH0#b
`E&X!RX'4mDTY"-NR3@c[[b2fM%&3Sk!a%U8GfbG+ema'QB$cf*25q)*0E8Dk1'V
!p141,a!GFT!!BQJF&*6G"3AEd$rA)1IUTZdMclD43PE[D$$lAh+Kep`@ZJ3(q[D
pcEE&jI9ip[RT#,V-Fa8QB0X6pGC'&KJVY,4rd9rlf`SiJkMpEC-SdQIqYZ**G)-
pMPHX-0@)b*HXI"bQ8L2H#*GB"eAGLFH5+18(i5'5fNKmqU5j4cDdCkRk5"ZFLC8
QpE5Pda$*FSXH,bdk9"38EA9'AD+L$U$MBC[kb9YSF1%4*`kR92B429jMU)Z'2Y#
P(NK4m@LD28MAkB'&ASlZ8qN*5HY%YjbVlcRaLUqNj,'$,b-4FH!`%K"RMj@FifK
rH[1#H(Ai!-AqPr6NR$cEF`l0*32q&kS09G9[hAE(dYhZ''eh6'i(!2G1$bJc2(V
6c8q6SFqI$T,4qrpD&0i$m0k254NeSM11MM#UY$Y4,0R#"h'T%mDA9M)Ea)23MAL
51eNdE#S+-MbQ)S&ek%V!,RhM6%QFMrk0G)%Z'ArjVq55L%#fII'F6RFj2hY`DjI
60&YEcXrq2e[1YS2RY!KU`h,`i)Ccmd#qMp$%2eJe1")B'5`2d#2N2IiriAaL2ai
Ee)(($8B$'#r'-$Ipah[J2i6"bJC2B'iL(SAUlV0l5Z,6(3SrL&dm4Z*F-c&!Nf"
fUi`-MmJQ!mX1`E,M0fIjl'r#-J6mNl95`$pCZc8#rXRqlkk!laBk3-!r'C%#rXR
)eJUB@IiZ#RJV@0BBEU2M463E(f`!FLm`dBkq((6Xem@aTmlGc52RZ[rk4fj&PU-
GZIQlPAN`5hpPC1RZC1hT-IEGbD+hKV%lpR4%@MDcFFI6adq9[($fH(fPYPr$XCl
[KqSa[(IJQ-I*Xe3+J)8-)%)cATj4YPFG,%lNT#dkBShip-Dp9!8*4EcST$T$)aB
aHMFYV8SA[68Rm0&0BM%[hkd-Vr%Fp&cNI*p@C#"KX,-l&QLVr`+"DUB3dD&`I8r
eU@1r3F$frZ8FZ-ePLJ-&5FdK(m#Y2SEJ+m6MC09"H`F1H"C"@(N5KS`[T"1',`L
9)dhH,C+U2NBGGjPXr"Q+jh8j@d)Ta5VXQV40Hdj9RhUK2LHpAEGUdqATE[T++,6
G66I+4e[Pc0`HJX0m1j0,(83ZYGZ[LAi-4h'QT!ED4jhBpHbjG$D8#(AB+CZ)4(b
JpZ5jGekSN8@0M0ldKfafYK+ML)cY19Vj9k1[maa&3832m`@2[9mh24DpjhdNCH#
djId&aZEcRKIYl[5'IpUGr["2mfUbZqVbeV%ErED4hi-[Pca6AeQI!l`lGZTirE(
62H!GZ@XkQ6B1q@2fGqQ3!'2"Ke$L!)mp$p-d*"iiBE00mbXLNp!4$fd,ZimKN!$
p[FI`rc(r-81fYPd[3EH1(8Z2RFkYBZIKEH5@AQid&6pp-S[P4p6Y#d6Cb9HhG0B
hHY2Y143e$4D5frGXacbCm2Bhr1rTE*LH4cYQb05PBm#S#k0V6`kA90GAKR[1P(K
cSU!Je$)qUZLQQ"h2Gd*d*P,iBYBH"SXmE+Y-L%IVX1dGE4RS25YP4TUM$#cYaH@
6e5qFr2kjNXT6H2#Ldp[PbRLe(&Ia,$+RMZ1C#qjJ+@3`ajIkFHQ9bR0Rc[TkYX2
V@6p#0Z!hS%ka,NNAECKNLFd18QC8ZGepH-8"4K5aihBfI"NERRUPjflZU'Sk'rR
M1[E1TUhhf-mDrAA0FfZ+rBj3k)8l3L&kR1,f`HSB(&8ZGNI)!DYqiafLd3[E4#1
eY@Md3NddLQm&'Ve`pp(SK@fJN6'3!&CGV`A5eQE`f`LN&bl)FS0)89're&Ihf-Z
(REqVlmQKA1HGFhpc[,i(XDIR$[b0pYq&8(qm*(6bE%l*fGU3!(E'bbHV!F@Fl$Q
98l+VZS4q$TF-N!$B!3!!,Sa"4%05!`"6E!p9$88d!J"M4Zicljdl$#-L-T-4%H'
JU%LN4'CN,Vhh$YI8h%pQCUk@SSKLXG#&D&DQlldcXKp489$4h%pQlKq5QC!%$5k
Abe9QDQUZ9-4pd8c0c!M(iIHq-q#iRrlUrc[RlrXrhpR2Gmi"'ef""-%6j*+8d*a
[HcSaFBEbJ2aiM&9qR&[p5IHR1eZX@4l"%8*hFfIEHT'kK-!kT**9I*A8-*EUY5h
@MUdG+eT,aUk3!+qZ&1@AfiRdT%"YrX*%@92qSqRiIM9*R+CjE#Rd(f)brfrKC0Q
Tc09LE9hS9q)arRhKE$P15H0I&RiKVeIqU5fcZHKmFD"@CRZ#rN9mKJmUr&BZ9NT
jIZ%%qEBb9R[59Nd(Lp[jN!$#SI)$bRIDIECb1P`FSGPYpp-I4#ZI96K2,P)@D!f
f0a2Tdq)Er*(#UA+GFT(2,(a3IP&j@([*GSC1%FpaBf&c'3P"@fYE4`eLJREHpJ*
Y)cl2(bp-NUZ8'TjEf&mHS$bPI@kVTm2%K9S,@`qk52bD2eXi4kj34QNPYNCdM0L
+MbYF,$G6f[,4K52PMXTiVGEQThPLHbh'YMZ4[Lk'mpF+ZmUVPD@m8f&[HBRbYKC
U@d8lL&'mS2"(qGr+(pSQ@c4Y,'CTRpNqTVh%jEaRB4mj6,R+@aIq+RqSr+DpE(Z
96K4RD#GY4qNhiL[mpm,TmLQPR4CKfdar%MrL2aHfP+mTNEa*i5rb'Z92l9qfME5
TZ)9R&pjp@RjIbG%qX'fM9m6,fJ(E1r5kq#kr9*JTleHkDjrBrNElLRYiYm,1mPl
P)1pAq*Em9q@`pTlY%-d3Jl@9YK8d3(b1hbX-NIFT1rQ4`K[b9Z@XYXZfJkD,PGa
5H%'@P#$Y8pX''LLUQQ!c8BGI9"ab)CApLJ0e$dh)dVM18rJaITZ[j8GjSTDS*kB
N(NZmREJfNEZFXHBd6jbf,,Q,[MlPQ+JQ$e`[bBGFNUc!f&`E+1,9&%Rqh#2*fj-
P14DQ'ZBCQ29!&Q(Lak3+3Q8`!jG9UZX(aPDU'NfV9$edID@U%hZ-!TP#V*-#"-'
Cf5d42NCX#V(,'1r!@%Pf3V0QP[aQ58l4*9Ph5V)V@G%QI8klq0m1fKDk*M6b@ZJ
UrpZ+qN(%C[r5`"84rTV`!@rkReGIr"V"8Z8AShEl9eeC(Zhri--e%D(rAP2KAa%
GhU,#(qD2N!!hR[IhU2h)d@)h%8TI(VhQ`c8Yd1IeB-T#9N6dk**@c,Ym'KAUM`l
dLj[A4#b2r[m%D@S2T8H2R[4Ve#P46I4VIUGI8e3Rad`Jd53lZ9pMeZm8(8lbf*I
)b%j0SNl4l`c81-%k49Pc3Mq4K"iX)BJ8bjeB`&LBP!3N(K3lU@EbJ41SNh%3B!,
9+KNS4S(JJ$C0""6U0+P1TT!!-J)a8k%Y(JaP8URA&'qQU@4*&pM-@3QY38k+ETa
b+P!U@M$R4C8"IPV%#G*24E+Ja%"%K49T8@83%q"&9!cd#CSSVI3TS%@#Jk"&kUq
8LkJ3j'-[-XP!"6-4`LeHB"#+4"AhJS1)L!5#+CL"K(Ur32d-9fPK5J"ET)3NRNT
H%&Y!Z&,e8SL(qb'-HUm1JCVp,Vqj8R@CZGqP80,8X)NS%ib)rkU,Qp(GqXd1c)#
NCK2KNJJMq%@r@C&GCY%#&5l1f&8cQBQi*$`ZJBK5D)+%3$3Te'8L+p&KMPHZ%$!
EiZ(ke%!%I$59[(KjTJ94*R#BK8U4N!$QK5J5!UPCB&*qPm0,'9a&0Ym[%b1N-`I
K'j8-3r$)4A#Rc&`+!5TA"T*lbR)B0JZZ*Il6f#kE`#"Hm#SJppijf9-aN!$TKBT
l-[GTi+HeVJ3%)F!VcVJYj2SdA4B[-j9p8&9#AB"ILkH@8#Skr,l0p&(MeBrGeR"
kBN49))N!EYDi)XJ%SlJ)4MaV"MeBF%K``58iA%3%cN*2*j,HlUl#EVc'c"EJjPS
P&33,8bp3`54le4%iJXU3!&iikB*22i-Mb1!1*&c!H38*5S9ZN8!@K!X-$1YR4HJ
0L'GPj$0d-1-R$BLSiTh""',mISA-NAVBP#ZLkSIe,H#0!%c`bJ#,*+B893CkPdJ
G4%aaN!#&%!`GR*P+[m*d#DU#P+%Se-qX305D,M#CH$`"!4U+#$8!C[%#B4LQ3fD
LD#%&Rp*+"q%AN!!b(4!PH-VSL+I*j)0Q#[CKF0!JTjqERGaPPR*FR%b3!2R06Mm
@IV)J,5MC-E06F""4N[3J*YjMei`9$DX+&P%&#k%5#a253M$63r5C`'jb%*h)bLl
LY"X%%M0-(RYe`DZ101K-K'JM1RcN#%L96Qb[Nkd&k2R8`PD9&SBbUB31"e'+"#X
'3PN4,e*B)q9%5qJX8PK,@)4m!NHJU9H+R'))ZH"1i*eSlTb-JAMF+6)IiN+`-!N
aJ(%38b5J@[#TKDfm3ZJiL*6JMGJX*pN$Ni9a%&8A#(L1*KFX6,fAh365'%fQB#m
K2&iJ#'M1VJ*p*++$BT!!dFCl*38#4k5D98i+JpQ)Y&fl*Q+9rlaPpHj9HhElSp4
0iEALMGTGZm0AE*@ZKSGZM-"RK9VaapTh8BXlMH'eEJ[TDX5'j9'K+k)hESli)#)
bG2HraAYZ+fk9[mSc1BL-L2N8did6a)R%()&Z4d``DE209RQfh3fRc@jQdVkD#h3
,Q(f5(0*JPBd+c%UB,D+F(Sd*hX+-B86!6ZH)FQBIQ'bBlU,PAJdlBR"S2-NJBrB
4dpRMMJ3LCRF'p%kBY)1a5A*!2c((-NhB(IlaNXK0Qk0Al9L1ZQPdD+3BP$U&j"c
6$6%m,'*cp**i00%e%lS-9[Rl1,,3[Lr'HL$@E@%Z3[8kXHICKC@l)hE$&4'KNHl
1Z"P&I'(5[Pm&jQYNSAf[BVd6ka#BcT)FR#r+4c,&S#2lYN4Z@K)CkPpcppCU[+`
6`6B%*KHX*dAjaQVaqT(Fdp4Xh4cKYT((,Dhb['V6h9[)iDEHT-fV`f3$@@McYQ(
Ya2`J6$3JPBTbGJQJ$E4DfL5a$3Q-fV4NHILH8(qN[)Qj%[kIG`6bl@%+*2RZ*k)
PTjc*"N@&4Lq*##2#kLEQi-lD[!,)6iEXF*KKN!"[*XSjjD*kmfE2FTS#h$GkeRD
60UXDNfB`GC+Ff8k8,eP%abe5JRT,8TQ'[9E,V)hX2Rh6jSJpQjEZLG`G[558!G"
QRB+)"I2,-&Q5I$e@$-STMpqH(1PDD(6%ZFh4DjB[LFD,8G5Qk#AVL1**fU`m,D(
+G%5-A"-D[6`mrYZHIdd`cQhb,HjZLQ3D+TH[fEJl)Mb-CEN4XGS)T*0C5CJMRB`
iVb9XY-S*f6"ABDL@%#`,H'&k+c3bG*9laMJqNibiCVTPjKQ"R$-#q@e%Gl,34[6
"HMAQ6@%QD`RBXi3q9NG#8`,M"S(aQ0PSa-`lC+-IR#EYKeK-r'5Kr9!"1(QBRi&
CU5AB!'FHc%$Vk`RcRfhYm*rBNKa2p3qR8TZG(l+e(i*CJr,$CF#)`U3c6"-YBB&
lBf+9fr$6MFN269KMd[G,Q#B`-kah%j+)aXFmh4"A+YJKTGU3!()'GNJ*`-l%T!*
'dGS8(3r@H!LJ'laJKbJ-E'Gdeje4hqQm(D#0Z)G2fY4BZl8TZhQ$MMrhN!#ZfT!
!aLCY#$Cr5%ZB59SE`'QcaCV6jY"$510$TQT$1IMcVI*3&mafV3h)DS2Xe1DUp@b
ET11K$6fM$F@"U0BQq)KEPm&[6SG$`ij2Kd1[QV5K&*-3XY#'BQ1'IS)j0QCS%ke
0Hj)U6Gi8',4mdjSpUhH[#89LA,TlHG6Q51*HTQ%f*SYKTNVbkf'LT8-QilJ3Y5P
m0li)R,FXh4dH'J(Ti@RDm&,TE1Hj*aahH*df(!I)eGSJ*l4*%ZK#J4i3+'Er%@K
IJAB6D'1"9JMd4i&q*G!5KZf%ecU"PJRd9i'q,P"9S*X&fTp*[b[3T3,p6+#"![f
A3!F,e-)dAQEKGEDq+Y#I"9V(j(5"ML4e@fTP5P%2U45S3b5[N5Cf9bh3"8`GT$m
@k$('mc9$h5I3Pe&R%1K-[2Fa[Dmb'1-&ZNLJkH`L5+$2#E5h3%F,p#1"*JLd0DZ
j,f4V'c[2!)'mTV9L&0X&QXFJc4,S+B'Q#64!S+m`4C-CLB8#I91JI`LdLT%5*Y"
R"(T0S"m+G+e!"`Rd(`aeN4%(U1(am',CiKiM&-cA"IU@3,m6k!f"MKAS9)'qaQK
+CkjrRY(d#b2)+Y!iGPU"R41E-9QJ9`6kRN$R-j!!#U0JP8$EX3dS&QKRJ4S%ZNH
J(S'H%kM)2$*%S&N#c@!(aPlHCRl[`mif3U$Y"CV$VKFa@Z(pCjPh*JRd+AD'rJa
'4hEQ8S%f%ZJl!XdAD$q"ILr3S`)G)p#*$0J`p[mL)k@'Z3D(fFYbc%lQeL-#2F4
f#m$Z-MS!qlIi,,+#HI"$GXK(Q1K@J@i6D(FQqK(cIMec(%6R#I5`3(H"G,Bp-G$
&FXpQYNqcQC!!RkPqKqh(``*Y*Y$2"4SLd'rB!D$#)G!c!TdL*0l(U@,cYir*+mV
H-UqKkFB&VZ#9mf[kK1@@C4`D@0AkDT,68MQjT-1U8GXcp`mjdbjL5QckMVN9"9&
cUVYr-[MFp&0'XbT-DYYep@MlP@dMkTT%6Nd,fIGPIGCR`iVl(Icfr-4A%cb"'kB
ekl4dFIRP!m-[YV`f-ql)cYNY'NF[,1fm0hrGM*1*"Nd@#fYIhchHH[Ip@@rqqDq
RP`@Xq1H!RX[l2h(i[EmmrqZ(MbGIN!$qfqMYd$%2A(Thk%XrEAkibpPGAhhpilq
IIE,[hmEqrIGAQZX1dhmk[KBqm[kF$hjiijFeMkbrpp`ARrIkq+PRh[VVS"GqHlP
05Y#RrfM9HmQiqkkrmpf,2hrdi,%E@lr[mFHQ4EHllCQ`pTZM4@H&j4'28C-GY2(
@(H3Jp2L$d1-2ZN`@fU#Z@+-E'C3&-d-cSL([ea50pb(60Y-EGHjY%$qK34Sdj`j
pib$8M3HEV8'$bjN5!"eFV`e+3"8IVI6JYVj*!`"rLdN9c(jYm(l5U)PbTebBH6#
$#3,p6"Q-hhV"@12VU3B(Di12D-DUQlXPG)ECaV#E+L3CQb,KU9fE9S9'mB1KNCZ
f4Ui+M@4VSQli,DS`JCY1#bc'@4CDjE'%j-AD@05R"U0@1KD9XV%0QM%$B(0K50F
-kJm2%E-2Alkc`V-h%6!f8KZ,#XYBd$m@[F[BbjUacde+EabqI$2R$'hXE-fBPbT
p&Y,HfMfVFK'CKGTBSpEFGIh%@VrE5d'qAmY(I6JI[A`qkX6jkl6QCFqj[cANlpA
b`l6QB9GmapU`Hdh%SkMXj@IH`X(HQR%qH[jmp2VjAj+&PMmFke0@2cVcr+PDFeq
9X$QV%Q*#VCN*`6j9(d4YqZK4%$'KlSj%60KKdLBJkdd))`YY3J6@aCLIJXR@QQI
lU-M`8G(HHL-Kq2JAcPY9ibI-2llq-'%Jp1CCcdiBjPl[)"ID",aq6F$V9ekDEkh
PP3,9'LM8qI-%VAP6dA,*iJ85AlF!Epj",3rl-Ym,rM,3U2CMfdJ52"FHYMZb`Xq
ZET!!aCk)b0h,)pD`#rqkH*,Ge6Af99qZq$4Y@[-rD3(AG*1@KpHD[+PNJDi)%9e
CV*B(pihh`"4,mTmf-V(M-B,FZTT)5*BQNHj%EhTS4(YKZ,``A0Ti[,Z04piBR`i
BGM+adb64dYV$0"`qhKmIH4Ake&pa9qql5rA+TG-1H%KXAMH-(f@94jHPZQ&d#A(
$q!*-8BFHV8KbdaJbB@liH5'4J"Y'ZG1kkG(3QZS-!XQPMFBV`ZJ1-+dPqBmQC-+
FmI0!TL6$#m%,B2AQTIqcTdF2e%EL5GN["kbbS8D8Ijb2#G+()8D81`#@!C9r!pS
V!jTJ!jTJ!jTJ`aDm+mphhpHPD+dI%VL4X5CY*&V`N5V-%8PZ$'FDN!$JQU0C-q#
GcB$fd)#A0X0!(ebm94N)66B[A%0VT[fY%mrj%&djFS3fLT`@fp*m!8ll+Y3'`j!
!j)lZai$8B8"'-m$G"M55"QbcB52!qYfh,rkd$a(S+*aj&-im#T!!4QALc1A3L[-
fcl-6Ka+i#qbdKS#f8lqGPYNTJEh4hYQ9qREKHlI`icPNH&6SlNKHHd)lj+qpi`Z
*[lE5HhNh21,$MD(aa+hc[JQ&-'amdc$QM+pTZ2NpCF`1E8`PbiKMBNcD',cdM8%
q'A0+NRm14%B(j99fLPb2`J-YjpST[Rkea)%1LA+l3$Y&EQTjd@i*UqFQhNVVD'l
!%k1[A680M9`PlHYSLDXNTNjTkk,DdD2U,FKD22Q1C#dHE(*RB6Q0H(ha%%EViJ8
QEA'5e6)ZM8Qehr-TkHL`LH(S@-1[4IKbV$FXMik)EaR5I3,a*)cEUBf,598j$Sh
e1*aq(%lI1Z1[ATk-1qNNr2(-fMK8amDKV4L(ER$FBNQH[P58Tq0&qVI*--%`qf'
+4ARL$0%b-CKTlR!6eDNjlpC36&SZmPJZFPIZIP"iaNGK[mIJ&pf*c0d2&DJbjZ+
6BqiN5Ck4CUFCGSVhhYpR`r5$L4(Tli)mRCbL9%ZN)"Ll$rTrcE96I0cXA)&j#-`
Rk!L-'mKVbhEfLPTTNY2SqpV[I[)8d5VrlYqU*HEC+GJ@D2e9215`ihUklhVkFGF
M"09FK1[II0HrZ9m2DhYd5k*QeTh*RK6AXV6eX9hLMK9ClIG[Ik$m[V)RLTqTIV,
dYVqfEFH54XeDe3bSrlcLkaBp'YkXHq2-5aGIV(Vqr![RrVjZVE*lGILUd+9,`TC
rpR(8[k-hEI`AZUl0eckkqZ'VIrhNEh[ha0aCi196Vj`m'M)hrHb4brfk"38(K0c
$r%Efh5XjQCFZAmmih1qYlRdlGf[rHYIA1VcGUAHIRPQp#RkFm8h62j[mdZkRPMq
hrRALEp0rRr'0VA$5IbErGpSrj[rcbq"lErQr$jShDm323iB1rmir-2(E3B2(jNr
)'cpkj+L!l+#l0kjNAXUjIRK"4[I1I4qHq@$5i`PYM-d0LIcrV3p%`93TEIKdjBT
pcqhBYA2VP[HhIE$rh32[((V[NB0H*pa4iL"c!T99Kq9#i,J[aY#jQ2GIR$[XfDI
Q@"Bq[HM#9e1R2"*i[!mDrh'm$aVriHD$,qCqjCppfJGrFII"Q-AMF[X2HfV1X`X
A,AKkkL06M[2"66pckNpl#$rb!1L@2bA41fZiaHpifICZ2rS3Iqi+BYaqLYX[8H&
hrX9cDbGS9KlelrM6Z#2JJK1*GGdNVpcKkM4&0c241bJid8eGilee+lrjIT@*C-p
el'3bpk$-NSX[ifPm2BrPAAJF5M!9F5[',0b2-9%2m(*q(brM6r"LrJb[jNrb8T4
[m[0DhTChj#@m%@r'@r%D2S$Ammpj"ImDB`4kB,[I4-'j0c!DjL@-X(U49r(RqAR
q!NV%rTf[3qNSE04Z[TU(SfaG+&r+Pr!`[TaraMrQ8IcI2*T[`R#aIr&)[SC(m-h
m'[q)Aq8ImPIjArNRr'pm,pq$AIqr8I!b2m9Ii5G41#Z%*kEcXr`)[mclm@imL!I
c!'$[F5rk"XrQGrN9RX-cq58)AHFCr$"%hq,GH9rH'5cYqHZm+hq0Gq"[mdkm0qr
$Hr)XhSXAm"rj$2i0EmVrj%hi,l`GriQhj$rce[aA2T(raUIchjQ!$8@)q#6q(ck
CrjG2irrJmrNrqCHJiakJI)rI2$k,Mq!rm#&m+"r1[q-$mIZ@$q+$q9LHcbI`2$k
HMqBMq5K3RSd6h!A99aLp1D$h-&m!QVZ$eVlmB6k62mL6q1-mJEIK4YkF'hLLm2p
m&K"44-$%+lR%0r"2q8UqJZrMcr%GI"IIbEIb,Iap[Ser`2IcGrN"rJira0rM"ir
,![mh#NjR!3`GNVR+(Gc#,r"!2Sjr`FF!1jGldIhjBTl,Kr&Rq90m$S3@mUIj)SK
qaDIb+I`4X$a@&QM-rhM-,%!%E$ca9PRJ#p$`&Cq0hiPCi#rih6S,M!'eid"[Ie"
-k(d@p#j#&RJDe$i#HQqC"ELfNciZ1P*fl%4`(54Kf53@&T+3!(D&K28V@9K!3Q`
P#FH'N!"3j#,"rL8*a9%NP'Dcd*Q&*La-*H&f,!Y&,%5`F*Q&eLcNNq"R3[kf,-`
RSABl#hYCQ%a#faBN0+TLi4!*c4MJCZe)D&9-`PT'U-)![-qZhbdPi3!,lm5ad)b
%JqbSRc$8ANEdhX%NV'D+9V0MKc&(K-eN`8##c"KNJ36,44)ZP,(`+JZM53KN$Je
N"`[U4d)`B`YQ4!6[Cq%N#icdB#BD`!iFX)i&jUB!aK``Mi33*`X0,%55N!#qQS4
X4NVf0KDBZZaK*0beXm#1HTGYf*AZ,-aQJ4hebK`5F[Da`,BrKlNXam)#fm)FjUB
FYXfC'eNia3)$PTP!`U9S&V*BQ-i#!h1*NA+GEHee4ZMe95b`if@3!+25$$r,JiH
CK`kAX(#1"HDR`ib@lQGB#'5"HD8lJpbAXI@0BB&Tl4[-!MYVhq%XX&0fCRQY-f2
VaRDX'f2VaQM[eTJ&4R8hYK[G'&[l!b``UYXc!1e9&KL!VQa2ZPDc8-%#fiHZE'H
k-Y(A@"lT`"4eZ-B#CB%4e)(jY32,C@phBU%P#b`IG@,(km48G'+le)Q4fkQ!K5N
Np%jM)Bb&G"Bb@'"TU$Fl4ZmN%[S`&AhB-IU`p0'((E[2Yb`B5HM*dQK2YJdpf6E
dC)I[bA*Vcb-XX,65Na(DFb!,,-ePXIBJLlNMLl86@@`,XeLHbQ,-@Hb3!&Nc@'$
%C6(![9Lklm95GLrQa&jXHhTGCB'e3leBcZSeP`9fT!,QS!+@a`ZBL`YBGLPJa"@
`22iMfq`I5Hk6Iic@HDaCjpeK@TTec@2@c6YJSXbk6Q&'i,8Jbk`R3bLj`U`[ffr
@ddV-HTG!Xhl-DGC,QTMe9MDB*,0H)m"%``6$6$EVpABBA(`1KXm9Q&8`+X`9Q+B
`8mak45P-!``Z+V*K*TVe&VPQ[8Fa6$h-1TLG-(YKS,`(P*[6G0fm@0FpJUkA$G2
eQ[QkAM&6ee[8k,TBVZZQ8ESZ3@!&&[YQk2TcKh4p9aP-LDl[2+$V@qYeIFY&Q-k
krKiZpN*S,aK@fA9pD3ZB[6!C-&0dI8Q5VSH9`Qc3pHSV6VdKd+Qr81R8rhlHUDr
&C'f"8krFkp5PE+Iq$SI""Bp0eRPaXUj[K,%Pkmi#Q+R*HR*#-SL'`88+&Li)ZDB
PkmX@*qYG`04PIV)HecCC2jD4V0ZMNrAlCb6VjFCN[H`F6'kbrN3*6*pN[AK1X[j
-"-aPQ-R*HR9&X[kN#M-T@5re`ab!!D*d@,*qHbF-%,HKm$BBEMH''3i$aIikQ"d
`Z24R`R`*!d#eD6"9-)%`B+LGPkbhpF#d50BlVS-"`58!@J+KNLE*HLX+!m*D3A&
018`T$"!eqFRkJ*8`10!!%$F!31XrJc%NkaA9bAU,SQ5p"i!eJ1R0kFPkA43-'1X
Jq!BFmJB1mmEFC2f-'@B[$)KmD@+brM`BRYm(%jbXRhI#`"RRXf$bN[8A0X#%`A5
#'3)$ajq,JB(bFeH6pA9JA,XD"KZJJ'!4!!8i4S#`U3B'"*T!l+IBZ*9a-&YJ)23
F$V1M!@BT0VIFSr-k$h+K4drK(Yh9!*-1Nq[4PmA!p)'CiY(6"*M*(Rfp(3BAk`G
kp0J5Q)d`FcakPbU2(PIKdBm9`f4kp+)bMfiYmZKf$`cek19C(VdB5TmCiY'V6hR
d*aGlp0Xc2(TE-(F%N!"'X4kpe3L2AP2[dHXM22VR!&)4jp'r2ZR4Hi4jp$G!f*N
dMrj5L%H[!V*UY%II!D@l32bZGKjp*`MB#F6@DTJS'!"k[j0(h`D#YS&Kfc#2rX%
"MliIK,dEkG%26I6Slef&kHV49q-b()V#MhMdjC-mqQGJqQbT4imfHc$k(G9HBK@
,hlb"P$5R+D3JSYaKB@9`6&NcRPE+8dLCDkYGcD9&'r$e,bLAqf2EmLjaSQ-lGp8
*-XAR((amDf1MD5MELdFH59[%'qIUZEf)Tj9"N!$lLrL6!P'4af64MeAaqbYTJcZ
'h-qR3#qe"mhRLja422NLbZek93BRE6N4&`$FlJ19["CP3BZ9'qrZjh&PI'84AeI
1hbcLV85LH3V6(-X1p-[#5TTLTk3FL`hR!D49GM@,!q`N0j(l6E,Q14i(N@rG45T
TRMZ+qHCH&PlDk@LHCZFTc36Q,4X4(@DrCq0VLqP#RPE%8lClVaD6UbRfHi[aGqI
8(BbTfR[9MK"JhQm2DFF6bdSCdlTihi1Ta"k5biq@9E)E[pX05KcQLJ&PjG`9KeH
K9(ba251Alpj@c"q)`pr8i&ffmfH+H,fGPa6a@P%qc[@0#81TEl,8VZB6l$5b#LB
6Ucdirp'jqm$rk1i$0l[l`2(Z2R#6Z`qNZVZ5IZ[ZlZP%G,6phR3iL&bGGRHZ9mQ
pA1*Z*f-UGRGhl2q*lJk!Zp2#H&S*6aC2XlTBkCaB8@ib5NM(9aUD[S2rR8lMjp2
%R"Dmf8jHPmCVD6B[2X2[,qHe1pJHi(PcJVq5aQ)h40Q5EQ+Nc"6pl9$%'Q1QBZc
U[0-SUpZ5REJe5I1Gl!'Y(jZJ5#(!"C&VMd9b31aMLd55H#ZrhX(Gk@L(bPUFJ+p
l$(a-fDS6m'&h`VG%GT'hbd[jRPMq53Pr0jBr@F,2ar)A5hK$,)D%mTfar,N5AKR
,a4+q0*EAPr#1XGbrejY0ZP1Ve@'B3KbXHpJ8f#*L9c'R'mR-D[G6YTa,CVLX)%Y
c*c,$FL9EA[20Y1j-,GX3,+0m-r0`HhB4McQcNeHAF5ZDff,HFI[TP-I56k$G-CH
60R1peC'dKHaR2lXk#NRaCRc)+$kbl!"TY&2Lh$,m+RX!8S,&T5lNRR1NZ@G&1!+
DZrK4Tf-brUUD0e-CVHR!aG63$,,*+E(H9*C(G,HdBcbBSrSmkemJLdGb[G0%Il9
#h6!C'!$9i0B$pFkS$26(bDHiTcJH`Z%%-NVR2(qaQ$F8m`(&[#dqja6cl4Km*c!
f&*RS)kKpq1P&ZYYLSpYL[pZLbQe4RDT)XX3T2,PBm!%2"[$DNS1m5lASf-pGeGk
,+5Kb@Z6Y!!1)a(CUiCjUNkp2C%a&B6bj1Pj0#&#D(!BRa8&4*9p@lI@SSBPA%kB
YI9+(U!TG[RYXD!*+lC[ASEKq2)PA-EE!YdK!%6`R'BP"r1GY,$X95!&P4G`9kjk
eYpZ$FhPYk6THG*k-&*,A9j[)j@K#A3*jjH2BVT@TQ(4Jr'ASSfKhRZ)56YF#3T!
!+J@eQ4Xm5hVPK9Tmd%SZ6qfL56f!d9$N6N0CDS*Zkij[B(MlIKk,jVBB3lfp$L0
HL@9RE"-Q2HEp5Tahq`PD@hL"hBcr-CH2Xm68m!SAEeA'2kVQEDYjH!R(heXX+qC
2dMjm(j,mD[iQ9Jfm)YE%-[eF!Sq6D6[b&XqQVFNl2*Z1XMU-C8a`(UBZKTcqU&P
XB+Pk5#`@X+3Qi%FPk(jp!pH*43+2UqI,k&`H&eXCRkfV@-,%if[A,9f)@Q"Yh!'
h"()@4edNPpCcr#PIkaP8%C9!Db8[,qBS2%Qbm'+[8Na(NqmKh*ZYih2pD0(5rBa
EEDp9p8VHTCL-"R)9apF`I8Q0T39"M8M0I5#b3F&I-l-Vpak`mrA92)jQmBiZ9TP
S5TkacpU"4iRIJRC1@Xqb%p%3c-lPiaX1mHefRPB2`,bYPhfH9a!&(aRh"VVh"#5
Ni)PaC3*2VJ+G[UY)qi9FRPIh#IIE&BZVJJ`N)ZTQa`Z%q05Y2J%*+G*p9D2lXUH
k'i*eT#VL,e[*QQCADQAFblQ6C2*!F`Z500#cTMB)'$QGQM52M'rB`NjAcVZd11j
dAk'`kf8I23G13%)UK252*6bYfKh`"RV4Ql"ZEPj)Xh!aY4%R9Bm0*cB6J@JNCkB
fkM1pl@BjECQ+5r+eGGIFGMKKJ@+@peBSYPH,q1BL[P(J+hI`Sq9mC4crV5eIHBD
El(aG'RmqPTmTiMhX[,k-0fT'`TPBJPeAb4mmb$pHacHAQ3L-bFK-0SlCB2*0Nmb
bV)if4@4f$DRM+TQp#U(fC(D&I1XNXmlN3bFR(QU+mCF9c'eBfE#ULPpeaXS5[dV
(UVX[hjRENaR*kc2)9e!fl432,*Tm0Q8*S5X5l(cZ63JN`Ij[J9[r[`,1!A$@KbJ
FD*c['`FME`SAC1XU5EDJ@-+&0&'fSZL"03VQkJVC5Ndh&G96MaY'!rliN68hPk0
aNr,ABSbc`"UlZ10lV)$F9%C"YPH!NR6aL'8DiA@r+F-0LX0BCSLb[4)'"4MX&5Y
NqjNlNCKq[!T,(Tj+1F9l&(q-$a@kY$LHmSPEULZf@h,[G)lM9H%S[K1IH#%@16a
eC+JIY@XEj"R$4IRqFk,X`9#cZTfLr)44S"L5YEaXPhbSI*HmSi-S&ip#X9iUb4X
M4IRf+Qakm(X1baB-a)36*)GP0TPH5*13!)``aC-"&Nkbd)k&I")#YV1`MS8)&[S
4eS"j%M)"QBB!`,%b8Ek(SQR(-,`jIE@%3A@L($G(Y*aG5-NJa52lU%CL*Y8mL,P
XH@1e0`iN-QTf#Df8X`9*cGj'+ahC5iRUl!jBYb-A`b6eEPH-m,il"-Zl-k%G$VL
#)@&a0P'pXKVB+kp+kT9Jb&cT6TDYX4a-PR1`c%Q6b1JZ1Dk$U1DF*jKpNTS6KIX
F#eNfN5`jAe)bX$qc'0M-HQ!cGdKUjLNbbjE``)(3NiRbdR&f8EfN31V5IPaHLTE
85d6(T3c-XXKX1QDcb@bB+(G"jIMb38a'L*E,A@Q-8m"B,NR&i)9+q6T5aI8)A-*
NV*2N$1aLPhS8,Sk6e-0`KRVi(,%%c1%)bA(i-MeQFK`H3X00MRlRD3q6T9p63V,
F$d"L0iL1Yr))MGf4NlZI!DTH9,Y(JVPl)$!S$T3f'*L""*-JbAhMJ)(RqZi!TQq
-T2BPEZTVP1619EK#JE$19l&!@Ne$(ZX-ChBV!cAG+M!-[jY#pN[Z"VCZd35V%RZ
Cf-E%cS#UEV0a#jdUbPE!EJGIqaV'ehkPT,CI"CRf%CKe*cH6U4m[(+q(B3K1Bd#
dLr,VJbA8CmPjZSk5j0FZL[)bR,*$#dRYF!#m(D)NfX&2CTQikSiV82Kf+E,0fcX
*epZGX'i*b'p2Jp6E`l%F6CC6XHaNPY41&mN-@D!6$N!l3CAD+C[JfNYUlc3XHb1
2@(U(86+BZhFkX"N%-Gq,Q#0CHLHK8!2H9HV!e@HIC1N6`E*`RmX%d4L)Eld))a!
pLb4,ch2Xm$eA5@V2N`4j"-L@AZ4!)"F!QH@5e+`MC!EbXiJAXr)NY9GEc(T95CC
H9`K-Z4Hb9d%FD#aSKTX#(++!Z+6J+LQbL0DJ384T68bfLiirQY!BNk0T$!PrfPQ
`NG!NNL6L*U1)Uhij)-V*5H46'#D$56&!LA`m''Q5Im+9%pRNTfPS1%Ka`BZ5j@F
rFB(Mjd$#qr0!bG(k$0(91J0"E8e1qqXRN[TV#*RP5TD*-aM0[a9,MZNX18rr8R,
-5#26'G'l,09&0"%Erq4+bI(NCh5h55j9*8IT**TSNQpMr+BIKHcX0Y&5JNXiUJ3
Mk1bV4EN4LZif!R(f3k+P84-kXND3!&[C*,@'*0ND3E)-f%i6Y`Z1HMZ"8jmN16j
[5QY0mZFSjQZG,+S9b#Cb4B0N`6!JXNF9*2G@C"2EQGJ#FMpa*dAT[Q-Y4)ZqND3
aLfkM'JC#1pY,$QF"R#JlTk)P81%dp"9a5$,*#C,&Xj'1Ke6+![ce'["h5FHJp@Q
d)mkiE$%5*!ECGN'TeLiNFFiA(9hQ%`VM-2!L&NheX3a-d&$Bd@c'SZTd2rUK0'a
-1C,NI@MPd[U*MV*ca0YPTfK(K&bbH++%YM,*6r54j#F`1L-Y!Nr#jj!!LfFU)+3
q%i%8mFaPKTN-M&aG)9QUpp0`E%Ve&(LGT$$(Nj-3,+AB@SqJPT,-a2BKLeb@$L0
%hYiTUEGaSpiQbIdfbH5h'dZ1fm1*c'dMfA`r8S,U4f2Lm%F6Y$q6SEmNk&``e++
AUDdLe0B'5QSYfJP(l6bL[#hqR&$E&L#q"XrATp(a*VRM1U4T[!eeA%`FA9)K18U
UL-i5E,E*dBKd3fSMG!Q@4R0T)M*'+c3SVF)!T"@9(+f'Ni2@P%Z1QUZ%UkB2J9+
6,mN$20!E+$S'V#3D"L""U`-QJ@d!2&`2$bpE,6VU2b1Ap@Jjj(S$F(M(U+M'"#1
$@f!Sr$+d6$e3Jh(K@e`$%TYVS#Lr14d6P!UYLj,8ZMa`eKNPp3eN*FFEF`RX-fE
*FDDHd(*Q,d1JD2%C`V45G,`dND!ZEX1b6V489E,@[!T0I98`18E99-RaI!'C2Qq
8(1FVL24j0*S[S!Gd[$#9V-qK`h@"a(-aNZAFG0BQR9X-+XkKRh+"e,qM0'J+LTf
[fdGMbJ6,fY8d"RpDB'd#p51M+ZK!8iD,&K&13VXQ)NX)R$KGZ#`j6'C#Y+Q'KFr
)cTNQ34j9bNpYNZ06P[e@aV'`K9b[a(MjP#a4ILjIFZc`N!#,(DaUX'2T6PU(1i`
@JpY5QSN1E3l0-mNkUJQH(D+DJ[j"GM8Jb@#)86,d,iZ4("JdL#5E0KPrG3T&NT1
42YDMXBRG50#aD(kl90&a5*9a&A3NA(DX@,)8P6'8YBLKl-K9pb-9*@0dqRB&%r4
R$jc#"+58JdSRc"-6-E'JMJ6!cRV4mF`3G+Pb0F4dY)92)XAUU,$H4MV8'b0[cN'
h+hI%+I8MD)2`a90(5Qde!KQYRP`0!$JcK1[4PjYALBl2BiLk#V5ICZc4eb!%IcG
%lK''PpCFdI&'!ef#[)!GdZD,mNXSJUY"GG9*E2eSSZjjM"R%"pBAkNK5If%+JZ9
F%lS)4eZ(dCaShYI#Rr0%Lj*%&fdA,%)P65`A,+E@G"'L&%XAZ36,KRTfqHQVl(,
P&(DjEbHjP*q,`M"58Gi"4mH)MKeC5(H1AA@NBV'V(5&JCjANf"T&pQRV%-QaVCM
Xj$D3!2I"!9)&f9p'Ej[8rFKSkVZS$mM[4NVb!3bK4+RXGe"jNYpTL9',SZ03#p+
0(*TS`[-Tmkk)AXB#r,)($P5fqFcqJ31R'Bh'+BB%Jf'UaI+$`6#6@-b(NRR5H0K
&8ip'3-KS-#3aj05M6B)0"N-Q--D3!+5&"N2#D%2m2f1#mBX6EXIiVXKPAJ*4m@d
#L`Q'K-PX0MB9-5EID(cBb!LB#46SHR#8aC*JX8ce58`GG2akM0(i#"J5M%mEM8q
VUMV61)F%JTVJR6("4B09pQq"m8',`6M6#f*+'fJBCNRb#6hbbQF@+(M%5+KHD25
K(jaM56*1Y4JX6'Pr#r&8JR&@b"@$C43d@Y5&c#Q2$`r1(NE@mBKF,iqAc&c'j`A
$f+B5,5#q2d%rcCb8m1!LXRS+diG618H5f4MIFT4[-U8r%FU,"qGceS,(jaTH2A#
bb'$!CVp`S@P)0f@NXNKmUI[6IpllGIVMl&r,+ffb3h,DC!F%+ArVFq()"@ArZ#B
rcMRmp*aaij5$,)4Ib,JE%R+PcC(ATribY@rlUAmHk6hepial!38K)BSkqC[*Nj@
MEUC$rmN)3a'8bb%'5q#[0dM!Rkf-I,PamrqrrAYj'mR'aL55Qa2qqCd[ahpaY0a
)X%I6EFE#IbBBK`Gq15A`D2[!Va#b6cBaI'miHX4L12VR+bhQ'%BII3ICiZJ[&X2
*A(@5qUdkhS$0,63B*KJ-X`hr9Er)cVeL-9bY99A1PbfppT-L22bESM`bmj(q5Y2
'mE1hJejr+fP+Rk"dr-5A!J+8R`UQG&*QB21H)cZB092j6MQSE-ZmS2a-0ZB`XGe
8CB9k9ZAHImmV9)c$8aIq8Z0RqbQjcq8%"Ta0$lEF#``)fGmq*bK%-4'l-d$C%Z!
0[`3d$@JG&2)Ed*m%0!Rk-dMTS)M+1dh%1#9I'3'9pbR4MK!SE"qB'Cac*#4)U3a
5YQBUp&*)AmlrqR$k[A3#'!!!(4p"4%05!`!bcJp9$@8e%3!LBqj6[lB[cD1mLFp
5XjQB54kC8TiP55XAf"aJT'N+2TVHT$B4ScF(Hc@d,*0!0i1j(#p('r,j'J)kNA&
RF-kXLqlX$M)N4'DAJbc(@aLFpDTR0M#SM)IVB(!9hFK`@!iEQ3cpr[hHDp0'CSk
lGqrR(aZQ*`9"N!!%34!%J'Kr&qBMd5KHI-XX-d'j'GLAr1[B$UhpR'Nl,c%TLHm
bCj`j9k(LF*Sr(%YT1hcY*h6IXJ)N'MLQ#TBa`45ImhY1Q1QM8[jJ@cNZINJ%lL-
#6pr1+JYl6MaGLBpLqH0aqH-Z'-4N`ijNmNPib-38i*Fc&TkHLSa6@N%RS`Y%q+A
#D+"L4,XR0IiFRrlYX12[faaYC*6UZH1MiLfjDDjYLMN1GcV)9"MpIZGSS'SK$FY
eaJB@Y*5CHiHedpbMRB604rjjljETCqGAmN1c6@GK&TRT)l0Fp@9Sq,'%VikV,Zq
`S,DYAa%DpBV(H,KIEF2h%+[i-4'bA'%9F`a!%EKD4bmdmd4UM#5,R&a&fUCNQRe
-Zj,X`cKLX)q[[HSiaNFlAD,2i9dS1+`[Ea+UM@&L%61%iBJ[2cjXa!aLL!X!@$c
[pl@jZT02-B*Z,da"US0rc5['%q'il$55"IaVF)M*6I(%D+HA"(4$1+5IDDcMFIp
[L[6XXD'@bH")$&QRfkRqkh"+dpe)9J@G#56Y$0fAhP"QLTK#F`Y'(!+@eq2m2A"
[2LT)Kr!RL&3qT"p%j9cXB'S80[S%PP'T`CJS9lJcZLk!3Zb'Q0@Z*'%3h$*VY)2
3Ua+KEGe)eUeldHYdRLPqmIEkmRKaQm,eL5@TYrZHAqI3j`biY(4L"eeVJ6laB4k
GB)&V5d5FEITR[k**E)0pAPeAAC-`I"r%GUr5"j!!`KT%!QYLb4pL+N18QljHVeZ
rRJSjhFZfFK(9%8Sr"VGbBcLj2M#QkPH3!1C,"LqYar9UKA!Y((YQeE!((h$PE08
+%%!6)cB'%-2V34T-$@pKL$5526i$0,F$J'3+(3lPhje9(5d$-)EUY[b!-["05FB
BbC4TSah"B6Z#lLa"`CU8GRXTaiDTE)[+*EEKMir"M)9%'4+YSf3-HJ9)G6RQZ,p
YY,2X*IhGLkSM3*IUjUX#AP%I$kpFp@+*1$`H&P2M`82rdACNB9M"N!"8HNMhZaH
&95mbeQ3$eU[1+-c6Kqh0dp4`,d3kbA@&NMCFIHrIP)(8D$jjqbeXd$[V@PaZGNL
EdlCpQ$j02p0p+-cNFQ`I4MTJ0k9UhS)UD5ENL!Nfb8`Y,9(1`%B#+4e9rpJP$Vp
EDqL*kLZ-8DV6d2e,rZ+RMq)++U')-T!!&aqqTG[mP*lQ%&,FM@dalR5[$8JT,hf
mZ'8%0Q3JT9VFKX%b5ZB'[%*U82F0qd,AqUrTiJIGH6q10TdD6E@X[m+43Y@he)S
51)1"p95B*U5%8[Bk(0fQ)58B#'&`R3hj!5N&NAD-$1cXm"V-E-'"JQ5Di!V2M8Y
*KR5+B3kRa)0+TRa+*P`[MHE'Y8alDi@i&'N%N!!F(l!4188Lrqr9bkeV)F@-M6U
C,ZD%IN`T05+*e`3P-HMMJhfZ5AhPU2m[R%JX&AcB0&c[-hXCiU&$+bK-$24#24(
L(H-LL&4'E""RM@LPK-LZD8T+DLGYGd03VCaY*!(P-Y[%8*pJUdk2B*!!1eU!)@l
AY!qJFFR(Ld#*fql%i!*U4+6Chqk$Q)+%(LHNUD8Mk4AYji!ZCLJ%%@PhQ*fK@$D
3!2YGA)HE9Q!"ER'@N!!"%m-9ML3R6jKq"P#dBcZRhqiMCTTJ&klBc6'e%+6Le90
`r6ih!0+RFd1l(9Z'kZCVQ`$U0Um!"iGMYH4Bi+$0GNY8I"6#a'&-P,cFp&')*KU
EkKBhSY[HBDjES`pp&&S'Kc1,[T'$P*lUASA8i1AmNkNrFJF8p@3118!BN`hj'Ki
iCX0'+ULl[6#ITCl-@kP[PJldpce$S(Y[53V*V#8Pq(NR(mcYdM*,Gh"4ZqFR!8+
H%4bQ+D4YQKTU'Y6f,QTE&2$[dd3JQ-IT2KF!Ud1lCmX1G,1E,R9UQlS65iHDJYS
pQiHD,QXE[ZMmSJeGpN[dGrbPq`q9GFjTcBPDTVK$$lk,-!fmVR-(,92m)R0jf-@
1$[Ve))#6I'r*d*-Xm9f`a%H**'amdpP+L%4$G3qk&#A)P)FECTmKP)m4lMir`K#
KPP+,%"N,YNlNR``VqD6-D#0'[4Fj-cI)@l'qplrb")3B+jTCTHkVD,rUbZH'fUp
Z'@Sr*QpSXkQTVRmjTZTQHZkSZl,NcpLV9JE[B8VY,CA#)"K#4X6cil00MbhbQ9Q
R0jPeV[fkaFHCiMD!U#m!a3H"l%QA[c#a[,IZp4f@ZX,Pel()mHMK(9TG2bhM220
"'!8Z*Jc9PC3,Q6E[*)8U513+&MFJj`RfKRID*`DM'k"UG!E)$4J`0Mf`Mr['A@3
d)dG`N[IhBI!A$4'@ULB8*pr3lL-)XjNAV+LEcd)N6Ti4-'"*MT!!AeBkSElp@Ji
-%3-X2`5"Xp6*4(piFQb4QEBHBMG#%IBJ*ISG'10llXJ8Db%L"N,r5825&4a&-'f
N+Lf2&,S&&c+K#I)P1kBU(62-%aD*$D+&bFGRqR$",6L8i20)"c0YK+'`ELCp**!
!50`VU6(D4R)[2me0ePXC(U0*8JN!5q0bXrAdB&rkSY9#TABb'U92*0FR-1LA+5h
Lh[jMK"#ddCCJqmd)"e$KD(N+RF[Z)q&#U*f9')6`#b6(-A4l'+R4Hp%mJ+(bbB$
hF39Q(&h8c&S''jkM*PU"C`iRj5B[lD$8mGFE'6KUAE9%R%#b[,IpDVL)S@K[Jf2
ak%Q!*JR3N!"*G!06r@[AA*VT3m)QVI3ATe1`4HKdddT'H9*IkGeI93+9[eK@q3J
kbY4&&kG$3CTjUSUTS3Zq8eac[6iJ4Jkb5d)*iHThfQmD802RXlQH"`J`(9PCFZ6
(If5EZ"SrDjamqaqJJR8LJ@ZZJH&f08KXEd"#8QbA#,h6+Gc9(GVY3Xj8&lh8Fha
e"d6$4EqLVZHATJ[4$e#)1MiS4B10,Ka#N!$#AI,KM+`#RB,#p'JC5Rr[#AK6cE(
Se`AE83QY%C!!PUeSALRjQVl%AA3*05Xk8k(iDS0$h)fL%,"UT!$!QP19a@rZq8S
+R!3qcUmU%bP,rme2pTCd#lZd3(0FDrQjQEVi#f-39q1j%Hj!!a0+Q-5!D,5pVF4
$l%IQ[9Ec$iqqZTN05UB(9D3`D"S(E6"S&&h`dF`&$`ekrI&2(LNamR(P8USPh2%
2MhV&rP[K`IbZ2"bkVlpqf2,GZr3cCB($pI6A99pmlBQ!lR[jd@'MV1h`0IVVZMD
[rSQf2B%U)H)QN6mDbr[kEiAk`P"l'N*0i#T5h$!"@Pjqe#QqRhQG4bHVYa&0@+N
aD)cfj"+iY'TDC&SN9DVQTjR1Vc4iC+Kp2SMp(QQiIIDL&*chS@$[IIq1pS`A#21
B8mZ%9A)&QpVh3Kd*5lQNb[JDUB-lJF5ZM"bLdmKdc!%4FIAjP3)YJM#,k#Pj`8T
8,TSUfKmf0E9hq5`-*Ih1j+DpHGjcarYk*'IJDSNHDGK"AA*1LH6%"3UddfC1580
j`MLIQe)PXZlj)$B@[JKM4DUDK1'MBF2ikEhEc%RN-r-2ZY&SeHfBmYENM@CQb"P
('%DTaib16Vji+5`m1`$@pM+JQpY1c&Y$iJ!4S'BqLXdD"C9#MNl[B9QT&e9C[M9
!)BB#+,SiE"cB(J"SGTMEZd*`f41T@$8be0lPk1$mdbM3ck-NN!#Dh6cTb(PN&[9
#dG,0ITklSS-4k,5%b2`,b)3[NUYFP9aL"9IE(pjmc)qdcqheUBVf'`pP`L034eM
B48+2L'!FS,L@ZEdHPlba,)0Q,!L8"@Mi+!K1*DNM8J13!-DMVKmZaEDVea1mT&Z
h"9X`j-6(R3CA@kKS9#3M%*BI+rTT8hYCIem&Gj39FJ)26&pP%JSjLK@QY%$Lq4,
he,M(%V@Kf0EppB02@X3lTK!B@k'kSJ`XlLaBh!"9MV'C[DTdmIkq-(GdTiFm,3h
j0$[NdrD(24EHmkHjE%bkl2LICUYM*)jABVYc9YXpr5[R$)qZAX#'Phae`l(4P9[
+ClKqjLqhk8Z69066QijdrfU)2ZKbB+))2)mZC[5CIBP[ArMV"dAZQCM4HdGQBHl
G'UjPk-)hcA5e1pRKrTd'H),Sj,YjHmYq35pYE0%bC&++4Rm5#)XafdpH*'3GCUj
,JC(%fVBUF@G(aI2kH,#6N!"e'%JlV1eU0hK4'QN&+k6Y,Z4U*jY`2-G(,GiIKRP
"(L!mmG#2mRJpH%r1FQppr(pLDJfQ9([KGcP%PFbmBiQFDGJJX*UFBb*q(1qZLNE
(Z*ki[AjCaQQBR)C)&3R`c1'J#Q-cC$DK!CYJa5E)E%80f)UXf)TN0Vd"Qfl&TXY
X5J-faBT0NGPb$GKb9Q`jQ@fU!GZ8&GY8b*4c5&[Z+DMJUqHPUk9L9@V"`!ZDUTN
UVPChAJ-j%J"Kj##aS(CflGmYI)l[iiAm*!@be8U6H61kdX(l1mD53ZP4@9aaM6@
ADLe5`jp3h#[Ziq'4A+p6EkcIPhLJMUEf6d,FJY!B391"jr[l)QR4SjJkM2kDS)9
3VIe@a5mJcP6DGkJ8dRhbdlYD)+bI,FTTr1MHICm1fdjFfp#4c"AaSjY'a,YIZ0V
f(*b(VfhSP*`acpd[hGpf%XjMkK2[E@L9h-Vih6I2-9C6MpD6C4Dcc2%&-4mVJYZ
+@EHGR$baA8"hHc6$'!1kD'qi5+FLb(`+S!PCTC0l,J(a3MK3J3kZ9eH,ka8q&d&
'+VqYMRrXGpal2@dm%AM&I@3b8&3SSQh2cVm24PKG*B'*+6@HldPZQA4)aQQ9AM!
0h,D+$kabc"R+S)'8Q6HhC4A%L6PE9R%j9A!+#U[9eChVM4RSdQrmkXpI%+1VIAK
"K8%&K@%fN!#'-Y3+A"6RX%dF5E-lB"$"Ll%A0'5ri*M$bfj+5hPrcT`if"aZAk!
*,%#PL[El#KNUD4R&R$HM#G9STl5%+[0R9haY69p4HN*&KK5F"#SBbbVDjcqI8cR
-qENU4qkk[E,rlk5B5l9lp('4KJi`!Z0)2Tr),AGiCVm"1aF#TrNdE&SPI%R33SQ
HfeT9-ZA-'l@[lQ89&#e@h5Ph$$$2"RYTXfjVRH4TGZYZ!Hcecj8q![E"6TTkQ%f
p48G#Q$Nf,@j24(*kZl*,qjil6i2,h8"*$1pL`rrVCafZ3SN(-'fl,6$*+6P9Y-A
2YGCJ,l'J)2,9Tf!dZlQImeC&ID29DAb5fIp+h[FR[6#Bf),QF[&2!NAi($5A'p,
RCA1j+RhfQmX&kI-9FhPFqT`aPaG*RaI0jC2dqFcIF$dN,GGDXCf&DYERI3pQ&$9
Xd$,pYi,Tk4X4prQXbINEJp5SY6*pZmP8H2f169!``""4#d$X6%S#HS%c9%1%e&k
qRP60ND[jJHV%%)`P8baCb0"58R%a#TMQr&jPR)kpPLVE8rkjZ&,mqcNZ(AiZ1dV
3I0Z2J65L")Dj-N#Bdj!!!$*A"JecUK*SjXT!BNj"!Y*F'9c-'CI!09F'((-@5B#
E+i13!$NRVpp*)#5P!5$ak-A0[EVl(qY6rSHJPX*UqXT3VQQQ,TC3P3'j4T8"bF`
c%A&i2j*222jER6A-H-$9l64R$VQ3!%`5IR[br&f((VKC(k"+5RbJTKALJI2mAZB
BGMa`l9!JPG$hSq&d5$m+XcqT`IP8i"8jj@lk`V30dq+5Ya9qr6(1NiqMi)[j)%[
59+klGB6cXrV%XKqYUkF#k0[+9B#pLjTSh8BqaP@BaEp@M,3)$+D9ch(&pREV5'P
qr0l@-TM,d6(#Q#Xp[*,A9M8HU9he!fiJ25r%E-(1X+MB4P[AYVjDr00(XCc(p`-
ZHX8`23S6A2EVGr!!dTIIeAG3-$LG'ZQQLIjkT6jXB%'`+J'Y#QE#34Kc(E1IF2l
8KK4DeB8m9KTLjN!%D-TZ(mc2S6jA-p+l"HXkAkp&X1Md!a-!d(5(1E`3$5[U3'd
(k[A"C4NXUk)*,cb8`H&%,epGQ8ERerS!4U0l1i!&jF1DqQlpVC`JKFE$2#DMVF$
#Jr1R+&6FTFlCPE0*U8eA$URA8dLF)lbGVMBTq#k&qV`'(T@+iY!,DA*pL!X%BPF
'VR9d,DEkGJ(d[bJfjjCc5INY)ZXqAP0Sp@Nma2ZKh8kMM)6JT,q6@'m4lf#T+c9
m`9R,2Vbbik)cb6iZbaqc-X-9fI'mXjPpc*%(G-X-HIPME)CH3,iF$!Arb")HE-,
$MN+(9!%@K2URM4m!R*L,F#06)"hJV+$af6Ia#Y$V++XFC48IUrKBCB*9*J,9A93
h8&Cr4MR0Th4+ISEQ#%$4294*qIrU"+H3!'FE*"Q!c(EBe6f&Kbm+2IPRS-b+4LK
FAFadZ'$)f"MNqQZh4R[,r0PdL+2UX(-JdqQ+&3SR5pQ3!%Nfa)BKiQXeq8XBB#Q
EN!!DKaKJUbV6@A*P*ECeDUA1#dZc5`K[e,a@!f'+SGrBSCNqUkA%UR2k-bX'F34
rU(liQ6pSI+810%iM'DR,I!3#"C!!"Y)D9aRUHepaY"#518Yh"LkS1T3a&HKPQ6!
Bh`LNUcdRZ*l5!1LiPRNli%VLCaSUekB&Y!a6V'rQm!L2ENJ925PpT$!iGBT22I5
Ml&!"2me#dQjJX1'`Y('!c&&!Gr8lriIc&6HLd9dX9'$&$BA3ArAQQCQ(!,&"JGN
6U63CmFQ%klfIUL0IKZF"G2&Z,K@N0-,EDUS4h[BX%0k29`eIPH#*Ma)&MU"MMq0
`iT!!l9RfPlGYaXZE9mP`U[F1rj&2rIS%Gd61i1%TcfbMK-J`MR#ELCL3!!6U46(
d5*FEf1D68U4&#aMZRQfFkC-4RpY%D3Q3!"!C#8HD""')F,fhiB+1HBUU@a53!2`
G5)jJd6`5$$%&!HrM`cBD,-llAFEAXMrjq6e%'SmiACPY('fCkEY`A#k1h2'#SV)
P,IC,+ZDX-hZ3!$c21YeTjdLeXcEYM((VjA&pj9YH3FfVH+bUG`J!JGN9"1f[STZ
A(BqZB5!`XL#S6B-J8CcHPVr8m%YX`a`,h,#FI+RDcd"@fNMj3)Q9Y#hIkN++TP[
NlDV&GL@r!M$h!J%Q+8kBC[2UCd-5-X2`1MZNG$Fij2$rLe"r'MfpRaa(Z[kBA1h
AJA6,ZVJM$`"!C4S)GbK5K(8rJ*(DXp(2r@%hZliiqm9-(e2SH8CJ-`VML*9DVpe
e(*S)K9SUVRUTh*haJNN61fj"h2Va')%5q'SK6df%KeP((*2&'L*`6ME@8p*@J2M
6)R8M1`-9#qf0jAL!J#@18kF4YYq(e"i0hKBq$59#$eHJQMVP#k"6pe"P)ak&l5(
4CDX@XT[-NI2M1b&m2-'Q$IV8S+TD+DdN19ZP)4XcG#d+VkHUBT)1+`QMe(f4!1B
r`5ZjkMq"@(aPGPRkS@Mj!4D"`XYC'!Z'kS0)(%`pe)8$!1$VrmJYA-6,c`dm$"Y
RR4Hf"0XM4JaTb(T+!-EY(TJq4mCq%L4`UDX!S9P@RAA4Ua!D20)&)5TBB+Vq*B,
2VL+8&XQIk!d@L$BI5BfZ8$h%*Be#bD4UU&iap+emLKk9*3,IdHBJU@FRC%bqCDl
3AFdL6--94DLSVZ5Sf6@'(dIBN!#9YC!!(Ak+KSFcqQ$HNKpp%1S04a5jCIdSei!
Br[862"3@m4Qb[akZFT8Z-K5U[Q5HAA))R4$3jjYG,S`,PEKHBCHE35ANFZ0L3Ia
F#Br4ipMk+#XN-@ka4c5[+G`GfC9f5iL"01XZ"PE@4Dqr6)cC!bBE(*!!4rFTSa'
eHJ!1M+Xqf-AGqDeFfhL+0KF[E#i%(i3V8VI*,KeM&jM@*`Md'b&@JN'MKb#Ljr!
SYK"Q$LLEFfc5SSH!%"iJK(3YQ(,5LBm[#rLJpQdm,F1eEdIT-FAG)&r#9dEfmd&
ZaUZI@r#Di4THBHk2I-T)l&RJ`2ld300ZEX'2KTrX%#Pp!Q80a)X)K+5cMC*B!M(
"!,Ta9a`[Je++V+$%q[Z`a4b"8A'%#Ec9ECiYTZ,Lj)flZBV!-(`13r"lZ8d25!9
*Mh#eH$H2db3U"UD&C9E6M3fQTF%S$T!!EmZj%Z'6#*k"U%*L8YR0%NraS9qhq&T
GRS@((Q`*(`G$N5Y*$*J8jah#P(LJ*Rb@4#4'YJh'S#*@a,TB)`L&dIH&er"Y`lq
&i2``'G6Sq#-#9)mi0)J#"I%Xf[8Xc"3rII6!,6hG')%#k`JFZ+PlUKheJ3-[k1j
Uamf!lMj3Rc)Iq"i*LfRh#i%$,qe%k1MV+VfmTR9iK1V)5QHL*N"K[bJ8PIhe,*5
q06)#"6&#3AK3SJKme5JXKX$qRr4J'aT@ma@"e%E`PY2mhc*SC,k1S"L""AS*qSX
VVL0SVBlqd3%FFEePKD9Dc*3DjU4H+'LXkKJ,jb@c$m$"PVK!3`Q"UlSa8B5I1#E
MdL5P,L0ZFU3([%2-NqM+1KBdLH)RiSI,5(1"-Ep#5e5Yr'cN&d"##4GpNiX)k@"
%3LG#[me!&BH*R`qlbqV,VT@)4SB2[2%)3!b8Nj!!SKVp-RESKiV!8$2#aABJY-Y
c4%#J$6N-1"!D9h)$MbHrL5$40i&b"M&L3I@,hB5f,U0#*(CLB8ZK#&'"X%0fJjB
bb%$SF8CT3TT1Qdh)Z1Te&#,3ErB60!EZ3Z,#k1rc6[Y`e"9GANPPQG$J)Z'lDlB
aI+rZUcDJ4%q`S#Ujk`@"BULcfR3APpU$kQUV-%qiGl4ra68rhE(lrJFkd`efR@S
"qabN6pDTrTikHqCFBYqTTNQb5kbVVT+kc5Dp+rjr3&)eFV99UM+c4G1fa4,`m"+
jX82EYTJ!b*6#&"9iC6mH,Y[2G9-M3ZY8#MpJU[20P%@)Cp9ab2Y+m"DP['9(VpG
KjEMF`&(S9A4,Xb$BUNQiDZfUXHU&X+bXq*QaFS8,rrJ&3C-`C#55`P-dNCc@fTJ
ahT!!Ja,H&*,*TmK*d`M)ZL*-CdQ[m#+9'#l5EH9Z5H58KXm,1)[R"I)*U@%QXpj
2"pGEdPHa)R2@ZZT,HV2,jrh"@p5e"@XD!#9T4jj!")EQT0faHkZ*@!(2RZQb00#
1e1AUB9ENV%%Dp+BNSNQE$#lmVi#`i,09JeUqN!!efheTiZR`0qGP#Ph2qa#iiDD
(G'h0HDfrEmI%qc`GNPNGm)BK3qmM0FkhfU1ql0c@J'PR!mGG$4b2T"e5f)iGU8`
@ZH&JB9j-iE*JACNT3FRjC$Jl+BF'TdP8dV4pN!!)(VUeCGV+cacBRRBlEAK%@Me
f"LN4&V!YY0N2J*N-i4A,GP,PB`TLGCJ8EV0RBHk%9F#j`Uh#BUQT6m)Z6)Gar21
N90k$IjqNjkqMf)R+GF86XkeVHG@KM#-i@594R8bC#@1D4$("*8,ie4&'Ce[*@4$
@&DrkmpB(pkl[j5N)LcUF"TbLVqA#ZTc(1J4@B!'je+c`88Lb0q@(HE8jPd5SbaT
I%'Q2*$UI4C'$ZTp#qK%'9'aAHF5ZXYHZmT&GCCeGC8rH2h-,9mlPGr$8cMVHA))
(FRJcMY2-([%q#$2'@VkPQB*@NqaS48$5@M5ik-%UHQLpqB2ZMIM%F5Gq3@(JKRd
!6rUI+CcNc8PIM#GF96#!fr"4JUS$)DdfEl-*Ra%XMappGZdr(EV0c'fK2M"3B5"
fKhF1GICHG3M,FJ'[&)r$c+!6qZMqCFGj(++N+SA8r&-a"-l8b34G9K$Y`fNN)B!
&6i1a@%#i)`V-err$G!U(TFqpl(9@pj'J)A8Y++SIcrkCjH#ccGm`pG4de[5qrEh
+ccpSlDajLF)qhrLhTdp[kPREZp@m$AAcl,2repa[2QYZlHLjlpPhHKEpmpfr2[$
YKarihH,&Lrrf0cdl[rbVXadI[YMb,jprepcqG12IQLmm[FIm[DFEcAfhDKCprm2
22cIr[6P`r,mF2QZHqC[IR$ArlerHZ[CP)`!!2!j"4%05!`"T*""9#fbR!0&FPrq
lchZcE(EL'YFdK$5j,-YfLFPQ#C***@MFa,LZ'C1ZU3hLb0E4A5Y*h#1HR05[aqi
Q8D0BQSUePZ%`iM!d#JP*B#b61XjL-b"L14'XckF1Y5!JSZ)%+kPSp[hmllhl[&%
kc$RIj`FET+FS*i)JH",C*9lHkAEMaIr8,"L!IRNAP+YiD6$'BC)XHl$ICfd#UP5
D&SL,dEm,ie-9N`$CYNRl*lf8XSLR5Pm4Lm46NV&(0Q3PEC83aY54`HEL&[Imjf-
qkhI6,RcS&`hY!DGSJBJQH6!B8[$MKc$$0ZP0Q-!NFTK,`S!1-d21Nk6mqDVb08d
4dA1`#)VR"GY!b+bTiqTTli"bqY1#B%!NBppcGh-ra#1+H%kFa4A4&)V'CJ&8U%D
ZK[AeIr4+e`-6U,18VBNhV`K%IDH-[TqX#MPYdC!!"YfDa%2FAck,qrIlIDIdp@Z
pPL*pC%D`DJd5"fhS0Q4k+XekP#[(bllA*EDl%)AST"bG423k&TedBAKSq&d$5"T
49CJ`4lJI'aE@h1fHqe5D4MRY*FCqVb69$Y1Uar9VekrPj"+pQa4MA#5MTl5B9f`
2a@Nj''jb(%Qdi%3NG5jjD$33A2$Yk1DUFcTA[a16*!1e`i`QMR"$6Al88T8IYBf
5i)UQ`@R!Qf2YL(MQG4L8mpX3fBdXGFFKDlj'M)-i"S3$YRTMh&@@Vc'10%@)iI,
4GES'(+`4KQJrQSGa*@iG83!UPYp%Th(@DEeZTj*"NlFfM"AlH6ch(m6fedIcGl$
)!De)Tkdi"-!%Be`8"J8GSQc`(-5dD(T@EaERVdV0c+L,*PZ6h`C%CUm0!`NP'fV
b)C4C2PLD4J0$T#Cd3iX3ZrrIb8*RfKPB5!1er`jL@'NDYQpaB5"NlK8b"#b2c1L
T+M"kMR*qhY[,GDG%TQ"NYL3'L%#26-FQ-XDfhE!B2[)Vajq!8GZ'I`e[i6jS,82
FCD[lHe[J5"-h'Y!m&DK$-i9QId"%X`20r`LdSMQ!j['!#FdiQQN"Ia2!THl!l%5
M!FL!Z@-a''8+e68j8eAj*YmTQ12k!1LFiN$j'r[p+GZjMCiC8Q4J-4&NkQmBd)J
[eG%cV+2q*LGBET+l15*#e!#8,"lS004"G803BIh8kS@SSjl%[Z@9[$i36GQ-*Te
PeSZe)@A*5c8c)adPq[lQ15!@2)VA!)pr!'-!c%ffp-,d3L"#VBBa[NAFqUf*l[Q
'V3$PGE`eaJI(Z([UU"Le"&1fYGi$pf+E0-LNkh9jk6Qk`&#r@(GK-MYJFC0YPTS
-Y6E8UFQ'3qVEam[ZldRap,43p,Nq0BR%HTCB[e4L24)(@1,!8SN$BTe%*KTZBX3
5D%R9UHG$cJD2X$NQEHj9cpZ(#&%I-dla*)",0KVe#,T"rNi&+[Yb'dHJ14#))bM
2YRT$FX1SL'0ZGpIp$P+N)*r-hjLHp362SFDe'"r&F8jbE)U5'"KQ1C-a,Tkfl(*
T$ZECmS#!HX*26`J'&XImQiV&k-&LC+pkmA6T,PH2p"QSd(Z'Jk)IfeN5AC8q!a8
a35b56H3M-0FkiRQ@'H"fklRT%'rRr[3dQ0[rD15Hm`31+60qF!@fm8jkFBK!0!$
q(d$i,jl++3cE,Zf5SLc"+HEi)Gl'ID%iR`8E#eH9eKASe-2&8!YV["8Dd(GeH53
"#-YkkSd`0SrUE(i,Nk6'e`(U"K5Q+RT#)PDN9%bm*HlKE3%RLcV%94DT8#4E9+5
1A$JB1K`!A9%m"3ElMfHmeN&(!46K%!r6mQjhHB,3'fQ4S2De,$+i0@pdA-PDqXS
SVKJ1F4mP,@06HAU[P#3L5E2LkLK%Qkd8`B-X`SJ)46qDQ+8Um48BVU+2d`FBTdU
EpD)M3YUXBCZ*S5SqSr6jh%1m88hL0DM@ih9,(F#VAfh&+eeYJ81'SK*BIK84&p6
cH*@Uar%bUTB2(J)qG"f[AR8-Vi"k!DrpkLKH0R83QlV9)Ea5UKQ[1V84R898%VQ
2XX-pHV8CaZTCUSYp2Q3GGBdk2M0KVKBqUKa0maqXLD1UPAdd802)q9`f-&V)a4E
U9KZP!FM,$3+T5&P(VGi24YN!BqSSSZVN+"HLUYAH(659EM$I!2QMHmHSHJ"GjIL
0)4FDPrclD@,q%jS9IZjHYQ28RmNkE`Ze-,E(FEh+Af98GPcKIRm92Nri(p,V#HP
rEY5I*E%XC(-`,D#HTb141P1[bjeeb-G#h6fN2L"eTck!ccqT6dRGGFhblhpZ9,d
%3+RaA%9A@CiQ[-+H%4)J#X$9rDU-c!pFi4"a[qZUG+mbee$3,QA**dS!'PTFQNq
3!&AGMepFj,jM8[-J!5A&i$(#emDf*q#8d)$IA6B6#U$SCb1"%1MjlKP`$dQZ!kJ
(-Mk"A9jjL`Gifb`JiaY"lTZNEQX1Z"H4596KlST252JpMj!!G`aP@`a)ZaJ&bPp
4AR3X+ATkLS&Z99a4@@Iq@l6-)[F,F**B&$YeHM%2LkFZEZ(K@(cb+qLL(%ZcjE&
FaG4+GlRY("BhBrX,TMIq$RmKj5C!6&Z(l4#2K1+haVVJ400@c`JQ#N6AL4m0INc
iSH6lM9aCL+#l0H3#k'a&0M930Yh45jm!+TAZ13hF#Z)!iRq)+eHlZK)0A'r!B56
a8`ma!`261biM%iFrH3L+rqFZ[+cd)hIQ,+(2IdGR-55,!"%`GHU!L$!Em1m`i&'
T!jKIjQ3Tc,(JAHH,2!T#L3#N2X6MUS+A!X#+&rH$l*)X-pHV,AJ0X+cHbV*k#l*
kPRX#)k91!0ikA33(!Fr%d&J0b-ZGUhHA[mM$JD3!1Sh0Z*M,J%'+!B-k4YKQpAV
k[N[lp2AVJP1$aKY)#,2N&%Y'-,L$-PXTAMAU8c[B"E`De!HqIe3YGImDSQaff2V
kVN+)r'eppkP'(*hCrHXTCJVieG+Vp9f*e1K@%JG-@II+e&GX)1p!bUB%`N")J%D
@&e8e%k%*a"6JNB%B5!RN-XF!j)@FI#SQ`D#cUM3Y9%p4BPcXKl&Re43cIDDX@bF
k1JkMidk)JB-haR8DR5CdLUcV3GDpUPI$TJP!VhGF8N@Q-)XlhSkVq!bccc"p'M9
LImkq$p+a4@U%5iZI+K+M26KmC'UIlDJD$S&8$A@Uf$9,p5%baMl$)!C%hKj-AB4
`lCeeLDeh68f`T%jNRBa`p%bPH`+5TK8%Ma'4c$(bD!H8f'NJNBc-863cHLVGde+
MB0ZV0,fYGiQe'ikUR@bD)UECB5[+'MG*ccCKNR6SAKbkR)%V0!1R[FJqV3I*#HX
CpLUKPppQj2jA-@'J2Pi%+bD'"!ALZ)3KJE$NB)b1be3%YM6HD"QhD%"B&-`bBG#
,IS[,!!Kch"8bLddiV[k$Zd62&22"IDPqf`SKNh[U-*f*J4B@e%&m'p*)!FE94ZC
+8f&8p$jU%1#B`E)16$KcM-V0V4MFSN%J'XLiIQ422d`9FbMMVT3bQKrXpa3%+C!
!&V+JIeU6UXq@8!8J#XebaN&Q$FQ1)N#,J+V[k&1VSCJA-P)fNa-2r6-LGl,)#d)
N'caA,cQ'cp9dC"bIhiKAM!8reIi6P'Am4bR,q"qL!-ZILGIArUV@1[p4A1PNA6G
5erkVQ$kB"08lrR&(`KI486!#lk#$d%H*3IEM80I4F4L6,'%1*B,jk0bc9aqPVRR
PahBpQh8Y1VS@ah9p@1jDA+TV%9hR,0@a`MSHBph@1lUY(pGY61kfINRG-L$IE%0
()8+c@pNaQijR,,XZ'mj+0X"jLKd%9%S%r'%!",pBjlRD98L"1&$qik%1XFkI*36
#aRVG,HSP"N$)I49%(VK#f84#4301J+jZKT`Ld+'2deiL%J$B,jSjJUj9&%"EMkS
+%-99e`$)'QV4r1*iaSV99Qq+%c%ZDV4hL!'h"MS!&Vq!q59+jTG3r3jF8,XT@0F
!YDEXaGh(&"+@FMG-bU[#YV-XdqcSJfU-jD"FQpfVMQFXf!C(0bMAJAK$'clAPkC
*`EFFC'HjCmJCY0F3d6%@hN%Q#P*eY9%)'#CBm!i'CS@Z%c)JfLjZm9m&`&e%!0a
I&DUA3FI!Gc&XBbX"&$d(3R88"dFZ*KAd)5d[-"Z!S))--Y*4BjQc1)a,S9*K!G8
S,+!qm(%,U+Af"G45B3(e%J#YCI`#@LcSG6$!BcGMZ+f%B%&Fc9`jb%N*CM*RNpZ
f0e6A%,N@E9#1Cbcm2'89Dh&B8$$&8k6+pYe1LQai(5QbM4#T`l$*281G8291Ib'
fBG!dq13h#D"H!*!!Q3IACD8*b)ar)3cV9bp+BTUEHMd'HjJ0EkmB!H,3M)K#*&p
Rc1(q#ATe@K"(-B2)#Mm6!+`S%1eKj#1'"R3q$B+E'!"@6#IK,DeYAqYX!eLc&8&
ad(HG*#,'iRI3"aP`mE-B%Hq,hH@jr2c1+"Cr(iG8B+8I+%dd"8PYUReF9be#!m,
JfY["V1D'5%05L[MAJN(1&#1RM"kE'T*Nk&kH0mJ[T5d&)VLkbJ@&(3"[`Lr[qY9
kG2)8XVN2aKNcG8YAjfiCj-MJ6l%-41DD$LJe'q8JR220#)"&00Cp0qeD&"hN(#q
VH0c3,JA)Q0JqC*PpC)K0@FNF0YLHNaC`)62Y1cC'9f!!8d&52MS5-La@P!qf"m*
bCrXD9L"Uc@#lX"@Gd3,P-!lh"ICI3#!I1SZPfR3ALRfRK@)IXj!!mf-A`Y4$0`p
c(%XkI[Va!`)0QF96C%!fVi!4Y"CETm-!fJqcC+[B6`Ne1Hjd**RN*#YMUTNDlR6
mp$Hd53aZ5,D6bB+4rU)cM2"M#+a26DSM%bFkUf--Gc)RJeI`)BDDm5'+qa$8el+
YEmTEh`4,4'5P$J#N''8L!1bNP+d)&#jiRd`KP"d&F#5Ci-L8K-%ib8a+2`eeI,p
J%)(2C3i!kbJT2r0GM,$%J)Q5+'V"i[3dAD-DQ6%BH)2CM8`Sb!S1P3(C%i)6YE&
*MeGeNi%kZ2GK'bFc+3XLiK+LZMSB!e)J4Zf')!d2@5K#K5)9'08*(V5$",F`!@E
S8Uja'$$EF,4`+DeYYATA%b)bB)a,b6V,a)&m$1LLLk@*fi1V%c+b4U$P!Rk1imG
S[#TRRf*jB$Id[Y9"0T9Q0K8,#`$l'FJq5LMhkU$a`VK,jY)LBpfib"DpL+h1FG&
4IIhUS1M403+6#DTa6"d86rYHiKU$H[!L-p`e5mh!R$GGA+0YX-*"Q)a4bbj,SA0
P501X#CNd834rIKEmEG&SV-%"[c9aCY5J#XBSA)hB,`0!Dk31$Ti-1C[4LC-km6Z
#d%fXNj9#*h@#5@X+1ISfZEqEe[PKmQac1lc9iB`18$D&9Bb!Ua-,,VDKq5LL*qM
M8ibhH#Kq,I,elj0'ia#U-55&S`l"T!HN!`%N$R4+lZ[YdC@r6jj&9Y@*4MC+jVB
-YNZ*41D#8l"lZU$8-m!ZUIA$G"h'[Lch-)'V#b5N3,544aje*(Q4Y2N#K!D49GU
"1dr#f33,GXhL&$61*h8pbKQ+2&rd-!@pdZf&LQjfHhZ++2$%-#Z1Cca*!HkUQ*8
3#C!!LdN5$eaSal)RJ$+XFLq5JY),T(kG0mdqH$VR,34-VkEkEkUQ&krfrrPrm55
5aKbUDcfC!TpMbLS3h5L**G3kr*Mad`Jb(*!!K93DBiZq&98@iZaP-TT`550m-J4
[3&ELS`3U)JaTTbSNbI68hA"!Rch@6T8-k"!P96YE(165N8SQHhJcZk%BF[9akCT
iGrjG!Ip0Z",1R%cZp`GhAJj4K4$@hCF'%X3m#`$&q53"I-EDMed@$hj`!KQb3cc
iA$UUBjc!P*Veb3qKR#(U"%rb6VhQ`f$Q,DLX(E+J3,P4l4!8q2"IMrp@U16e-)h
kHBH4'K%d&#R#p@Z!-`$)ar*J,ZfiP'CXGKf&3HFSTdBVITcikB#JSa-ZpRrlmFP
SK#%Fik)0!E2[H-CpQa['rZ28cTp*Nk3T)[#TaK4M`J6&GL`C4P8L)0EF4`#(KkH
BD4PH4rC1ee'90SqjV[l[EfUabSGZ4%j9Ze4lCrdJ1I`jBBD,85HiRX+2Mc(l6jI
lY,UJN!-AABLkAH#UMkl5P6X[rba6kdSV"4jDQe1df4B*4A'NVej6CNi'H[9jUTm
CQ[D$F$6@UJNAL(LHm&Uphi34T*AIe&b*%L%CBiD)j9cc9c#!418XEDJb16jqF%a
'NYlR0Jm-p+M#3X)2I-##M@iY8#fGk0KX'de23hDi-(5)hi$+H50eL*p&iJdX[jq
@pUqL6rhENVN)b2XL(-lq1JqLLQ!ZfNmZBT4P"A14Ipi&#Y$#3)%f-SAe"MPP!+6
&,c"P99hMb'J@U)X(@9E,B9RY%LI6EbQbd(l+3Zq96"l,%!k+MP[1V)f8BD'q(Vb
Um5CJ5Vb"kMLQL`XQp&M6+B[4$ijK)UU!0&-5@',36JLCr(Am(ZLp-#!C1mAqp(h
fl#-C6*!!TIT,+ET6AlpK&MHaj83Sbf1b3F8R0e)34TP+Je$+c#a)p!(00q1cNAf
Q@!$TS`$b0U%E-T8Ej1Z5d5A@2bB4Cdi`aE@@Lkp&GrKTC1EDJb%bCAG3YS#3!%l
CmEE"CqQ6-ND-8e@-JQ$94K*6N5Uhj)ib%,eIZ8#'Qp4cjf43eN'JM!QY+5!MPdT
fh+U*d&GG&@jcFfQD"1aPK'pB4[KJ9S+B'D*l`akJmZrD%DEjj`@%U@Nl3b4b!&b
Yq1Rp*MN#A%"hb+M@V2RR+9!"HPR0KJ(NLL&8%Q*P`SEVZSK9a8B*XG)@6eSI-fN
S%$k`B-)l-8NdTEQPN39-C!L0q!M9H5hXcdri%kckbPFYh2UTk0mFP-3jR`9[F9N
%e8AA$5IlIamhb)(L-!*&!cUZKp#TjBHVVR"EFB"%p&apf"%![Nr6Z0@1+S)NeRm
IL5q$131Kq)GJp$pb9@q1TU,Lf,%l44&9V9BpAaBZC#,h[AU0PaKp44aVUY*+[+"
A@G+J1(Eece@k56kK`L)#c98p23U#&!kBC6U*5U$mQ**4P1P244SmNMX("CZhfX9
N$S5"YR-Krm0&BK,$9fF%-lH,56,"GX$K)f",Y3PAb2dMP"6%mH1["%4XEE0h6Z!
l*!I2Ya!mmkNf*962&+aK%%YRlQqBdmG,GU1p$QS`[mB#BiS"4V++$i[f4k%)fdd
Y,3fe$4,5XJL"D-YNJ#Td-Sr!*-ca84c#4+fP4(QT0hqibUM"j5L*1U(+E@C9-k%
J,hNlM-j3)801,I*qAb*[-NHB5R6)J,NZ358Rjc50'3[mD[d[lk*J(BHqjT&#FVF
N*qHEk['-4pm"m5&BTq5XCLLdH`#NZq(qNE&pErK!Z,!d$F(#)+(1Z,aH-0b-r'J
L('U0,H0G(CS4)0!@Cp!!"e5J4K2&q#2N2,43M$p*M@&b*!*L0!bRScjXf)3!5&*
6)%jTKf+kr8`,CCfN,4*3E&%!mQ+aPY36USV`PlNTDfND43M($J*q965a$DM!m*F
e-GTJdYT`%efeS[Z5KPT8Di"6a)2Gj#i0%TM'+PM1Cp9G&A*jN3HbMMPHNq[kGZN
LR#!qK-+h'D"Q-aac-#bqD!41,1i%R*e'[fpaElK*UZ4FZ31UJM#2QDdf!%L*j#M
b)9M1K0C(EUSMM0R(kZ"31PIXeKK'1BbR!e)'4e8@()CPYk@A0M9''FMFKSAR-K!
h&j1%!`LBPMR#IDG32A%Hkfc)0K$`'@$b*b"l*LLUSXd#3f[1VLPQjhcZa8r3dTI
6#k5IZTBh&J5c*Z+i5`epX6L*!VC0T3-A$rM5@GBD&8q&E5)C0`FC%#E9S48L8#)
4Rq25$De,5E&E[J66#&6B1"N9YaA6SH%$!IUf%EL8C2beSUZbSR)b5"E')meK6S6
+JZKXC#*8#Gc1UCSY%2aX'RC@a`KRi)Vl,a1*EYd%F$SJ%qN08NmeQY-)@Q3b6HT
rj#dL0G,B1Cj3+CSfX8Y"3fmUcKb!28m@eR&'SZIF@f!Nb!ie-qFQ(#bU+%,Yh$S
A9l1*3)N-$Eh%K+eRPd#@D`bp)P1f`UHQQ*Y`@$5"BcRdUZB(Jh3!G@T"-*1Kp!a
TmJC5,!"5f5FCdQdNq,IX%T@HN`FKpRHe(1bep,&$l,164pB,FJC!"PQhT!aJJ`"
6cL$V2LF"*NASE+KVaG41rc`dCL#eLb&`EC8K-b0pdc8#6c"i2)M+AC4Y!Udi$$G
Mfh4hm*-VEDK#"GI*eF3X'#U+!KhM,pT'f8A1Lid@aY*qPZhQ%[-DDR@bh@BbRl"
XYdRU"0QZ[+ip"(&-S*X4KE"``V(`@ELrcQ-NF31A5ijRV,eG)JNSda**fXMX68k
B)-S,M*!!Nib3!(YB99Dk'U2MTi0F1hAFC4-l3"ZCLShq%5*mCKKHqcNa@5,ZYEP
fiPll0K(hYMT$9"HpJ1XJFqbjb4%Jce,IPS2N$TUfkpH%,2aecK!clN(J(%@52h9
8I4[N"*'0#FBqRV1I*I#0L+bM#h`,G34PX`AZ-m(RV1VEdR%1Y8YGF1p0pBS+Gaa
bVmP0N4%M+eA(MFB6JMR&B4,bM%GF0MB153DKEN*jX1%SkkC3'Q,!3"GJK-Q"SHK
a'$,-bif5L"4S2&6Ml'PGPFYI@"fdp3D8'E0JpR`C64&,AC+(d`28qT)Y!T5iQ8e
P,V*Z23+mT)L&*Vd*Y2PYBTp*arQ[FdKbLp*9A$&F&lVYE8MQ[Xi302Q6%'Jb'0J
9@+LMKAEePG#)&SF#HcVYiJQ!KD#J*!feJm9(+)Zbbk1Kf2-Y-DZpd)@2ZG3rkA9
-d`Nb3(!qm``&&rHAdl%`31e3VZ`ZMHlC!P(S6Z[@GjU@CkPTN8&l%USL22[*8Hj
bc`+i,+mjbR[G`d"-CZZIRQ,8RRBcQlCFU)$@0$$T$R,f*&-Zd"&(BN20K1UC,c,
bGL*"1X"*(A68-#M-,*0-"A"89@L+4TVSVl3(T61Jj"6MY3Ja`D6PeXR-P%3)Dfb
Mb(!N,Za1e3br%kXCRR,)-[c1)3L4KUG)b!l!53C[Y)eH![%FkN0Llr!8&&050Ic
1m3a0UGi2a6q*K%SN&*!!qiG$2,'B1T!!0aUNLKZN2+bF$$4N)GaE5D!hhp&923%
IqX'@*QbCLkSJ!)a8Z30CS)-08V3"-'!B9F22$Xr!DpC`aL&d0[`XASZ(CqRYcT!
!9*'241VpkEZFcVpkGlm6),kCA,8,JNb-S15rZh1aAShGE6IH%P2X3ejf'1S*@+6
C+0B-2jYr"UpCqE1iC-j'`V+cc($,f+-KBh#(`h#lNA9'L#39dd$+c3!cS+T5P,p
HEVb2aNET`d0QZid8k-!P$G@PpC%TjQY`UT-lSBUJSRd"fAA3+5II*1Gk54PL%CA
b!J'G"3k2S&,[15b#VPU-,4UUa[f9J3[)$aNC*K,kd`I#BSkMF+,8l&bR-iLB*RS
T6GH9NCcX3"Ul586$b@%0UL+F!e44IEk6P)63FC(!ZSeYD'@Z%fL)YLj[f%S!AVS
ia@`GLF)eYX4+4RB3S`B1LNN#kpmrNV)5m$Yd+KrA*VAV1Qf5Bb)j+F*PYK9Ej`N
*%#+f`X"*Kb3PQ5k4dfkVpM%$$*qJ*Af&e%4J-(#mc&dL@Ykk%MVh*LcMe,cR&br
ZJPU!jZ5-lGQS"S'QTM'RL6Xa+)eGYC5)QP9)FJb2ZEYh8P5$"JZP'qK`[+9Taj*
X1k+3!,dG&paH3X1)B+%`Q-E!&2fe9%jXaH2l*JDT)XGM2`AU!FFD-HF[2C*""f!
S6caJf@1)@RV$15YkH,-%2('BSi'c0rN)2l$)lIAP3,'0TNLaE4aU)DFf(&,Md1Z
AQjqFQ4GNdDrpS6#B)%-0UL`d0MFA"e0jTDpBcTAfkUQS&-h1k@5i&A0JF#'P[fX
%3%Jf+HP@S28+JB9SU8NR4YE!A!,"q$A4%Y230"c$'mSddFI9)8+9M8Rf-8)Ib#"
9`p-SBf8[T!QFaJ3)f8YC(*2ibM'*Vh3QmCA@*,kL5F6b5[Fj*P%[6m)L6m*%k%"
k'ZXiNZ,L9kDiP!R3KI+0B(-TUM"m04EIA'L2MUP)H%T+F)eD4k@NE`5Yek9)Hj%
AL(`!5hHcTD-lAp9eTQqS*BG8)$UQUpa`d3FMl)Vb@'Q-(e%Y,ZX%qfH1eZGjVFp
5VFrV@TqAY$l2kRbQAc5SmJ&SUSTGAfYi5J!Pj5#pZ##F-+p-[B4#VPk#![X550r
6(I6Z$AXQR-`,iPJhhpkM*0BHI@ENdB6B0[,DPYaBfchl#S2Vi$L%M5I$d3P&f%J
([rMfA"j9%PZqq-Rjl3P4ZHTm1$HXA$E4JF8ZEKd@6EK3"#HDBRBKl[i3&q*+`LI
Url)Y)8DZ,&ZF@afj[2,*bRh"lIY%"GZ,XAd[ffjb$f1l58PmqYph,&UG%$dhNaY
ckcbA@jmXfahF"N&dGc"XmLE#%IQ#aYf&#aSPmEXVbljFPa#M6DmpRTZ+h[2+hZ$
UNeT62-'GlZhBl&35"rDmAlIe8p&df,NSefc#d,pm1IKSNGM'*YSQ6l6C[3AEQj9
%VU&l"C[S-ME4PI*%[h"-G!qld1(q("FkP-6blKqUE+**0Y&@RBRZF8a8G(ZaA93
5I`T1ANF6C5ch-*E[*CDcD8EPl6lhHQch+BPAHZrrNJk)-Ee0BMSFXZCZT8T$32h
CK0'3!*NIFkr$aCL5F,XIb'G6AXDQ[**0Q5ke-IDh6F!(Ze,YhS3Ve8TLek@edfM
Dl!!8q3$fd!(!*$8A"b"0fq!Za`@$NRLSCf9iL3H`ah%!4pc6XIN)@$6jrlaaQca
N0K8d(*-T3GAj%P)VZP%K#3H#TR`N3qk*k'")56clXlkA'4Z@-6B)4l))&h%SCXk
1"Gf`Df2Z0EJfTL41IajrD`N(B`)$&'NlUPiY9K*c1Tql`BlNG6U5Hk8M8GMK&E0
0@j5%Gr5cdG[NJ9lp"TY#bH@RD5$La3h$-P((kIK`BC155*fprLef!!2X!1VC!45
bJij2#)TYhZ*J!UDMc8V`[KPIc0SH"100M2&1QI&aaXSiX4*GEPF5UaXdrmBBrMS
ar&k*i4)*HqK`X'fGN[$h1JpZq&5-Xd('T5'#bI2A8[%F%8E!3-(NEYFSLAA22jj
JV"eJV+fATl5)"(AXk1GM%%9XHjH5H1bf*bBbPTSB5jf-TB@%e-N68qJ+QpTk*IM
@(hj"LSdfBq1-C1-bDbFULCrr9p[Ufq6#3f6@cTF'cS#,$VM!K@%P-IH2Ilq(TXK
B'jGCZdr+3MUXp5V"FpHG#jE!@T1F-58Q6&F5-aqj,r+IX2C$*6(rRVmYS50PJc3
j$[rR-PZ&SrTF5B51qEF58km-J%h%9)P0(JH6LYJ3bjAJ6q[kGfm,LT%4%eK%$(e
"!JIrMDhj#HRJhI0qi'+!XB-!ihdra55+aFKI"F-+fq*9%R[qcj`%1r3Gl0"VCHE
pNfMkF6!FCGY!NPArimpKbZ!8i*N9k`(A!FDiYV$TXf!i`VEK1*Br1@4Lc(LDQ((
j'dqq#(EX%6hr![Db6FJ`cdcEf%YN-0*"`lj2$M4q%JbhX5dJP&12rXqCM&Nl',0
U(4NPMS&lf$B`DXk26aQ*865NkMCVYkZE-8S*acm6"Jk5R[B[dr@-!8qcJ1%E3X$
JB"+1-2E2KppR`qkJBGmR!k-I#dcDV#3f2[rYHBaXGM#bU4@#J*m)N`GTVER(F&*
J89LaAR4GC-2q3ScrLc"XJ)*SiIFM,"-mc6,"0q6MPBBYX@#pNYLkTZX($+J3Ncc
hl4YhX19+i['rr1T*P[9fX+aAD`p1(BH,$0Sqj8S*$C`G@hcFX8P-!R%1[h"q*`2
H6c05riDGe)-Rj8'"#A0I#[Fb0V83QaBi#$eB*$-"Kp*AjriP1lT@GR4*'B!XA%[
9A8(U364NCS"FATcpjUrC*&Db55acJ)q&%VRR8CAGKCp4PGhY5R$q'j0q314qTCD
aESF$I#a%ah[YV0Rj`&-rCmaV)HBYF!#1B,(-'"c@EdcVcpa'Jk)#R&SCf&JS$9F
!'f%6PSqbaGG"A(,2h2qr`3X#@-N)B*NGE!6hf%RlC2'rE@#-V'@-h,%%4L,$(FX
pR2BG'BQ$bkjqI20i4JVJJM('`iDf43RqVGVRI"5!kmT+"Lk@fF'&JbNJmH2aPFq
c6&I,3-81'96SXJ8Clrk$Kr0BCQQKc,*!!KB+'li$%2chVBS2L+5D@M(m1)Ef)TY
!9'F#)+QkYEIrQ&M"'+E)$#YL*,"(*J#3!2QpHfrl,E'#(@P82Y)pIrRYAmrNdGr
2j2'e-lQTrrHD%PfeL)N(ZAiC'HUh*#B%$4j,(e4PleZ*+0HdA&hQ6E`92-)PXkb
-iYiq`QqLRSfNG!QZVdc9@(BQq-LZ*hHG@c#FrFG2M8NamQ3Kqr#++cB9APef*'U
GN!$bTqGGcaY1d#)q3c9rFRGad*H(!G6HAM3K@+f'$4emdbkIje,HF&$HN!$i`qk
6Cm+HmaLH@Gj`1EQQb,l"kR+jD%XkYX3Z#PeBG,V30rpKeXPApGHZ,V[m0+iQ`L[
Zfj9AAXdR"(f*UmYmRK`-+@`0Ijh*KB3rl#SkJqheE$Y+`485#""4NXp$d`Kr[Gk
4K%9Q&Th*13N&VpHKN!"TURMf1Ke9MKPJ**@@YdM''&@463[ii)@kVP1b%[qDV#U
K#T8BY%H`5P3ppJK8Sp,j6%bfIlbRLb[PLchMKb#ZY#YJ'UqidUkLdDHJb1(M0A[
dHlSJ,kN*fJdHl4T5i[T!0+N9Kp@`jh,lTTN6pTJpMrcQj83-&AYZUZ%SSNl@44r
jkHl%&5j'YK3L!hC3"K4Ibbr@Ar-@Aea`eq'8`F6eem,4cEXQ"#mZH2I`h[)1(Sk
k,PS[8X3AFX6PCR5'L(pL%E&)q,A2LUQ$pBM3l@$9Z!iQbK(5pIHPkfhQ5&hd*bF
Yh3E&I[KZSaKjZ$!FZGa1)#Ie+48!%fjM(`Q)Yqf1MDD'@NPm2Tc0R&5#iURmpIZ
9e0DIV0mj,h@hMKRYBlD'rk+pe6dL&0()UQKQZ8GJ42(@A&(I2"GbPp4FfIAL,qj
KaN&'H%p81)&1`lRmHec&Dalhir8%pq!e(a@1XYc,H35[E+lJjHCY6H5FRM5DBkM
FEi4c$+V5r5Lr`r@k$U#)CdC4lAq6C14EVM6"+'"E%EJ$6TqVj1&!B+06V#1-EKS
#4mb`b!a-*ZE8#`02a6j@,EBqP'bRiUK[353f'qD&J45()d1FLJf!SmeK1)2i*C+
#!(LH2!`c4&QS`%`*+NGaK2)Q0lPUmJpiS'0S1[GM1Eqme'@f"%ba@-3!Sqpm@dh
CUP!V&8V,0GK)cVIc$@14CE013$KYGL`8$aJJbT`IDQ(&ei+a*#KeKH!)AM[V6LD
-+VI9I"Q!beRZ3633-8RRqZZ"4REG*ea['02rqFil5B5%,JDS#dUB@B@,*ea5"dD
G$TT#'Th2ma"*CGLR$@2@#hVqI$KP*5GjFT0U'-Xj9jU$U96-A#l#JF4GJ8e"`B%
UeDjGVB!0,9eb(dDK,b98Y+cf3!ep%(LY%)CU6lacCqC1FY,$8R2'683M(ZaEm'A
!`LSV[0lhCB!FJb(JfDdcNICM0pRL0JamNID5k()4ZR61ZT1FSNf90&$hSXcQMf&
r)a(8c)R'1J!kX)pelplIDX'(&(84JePC#C+(i9VD6%X(1R51I4icpPC01cVcTq`
9FePF16*"4Pd0r"D)Q3b1Pf'`2TmpK`43fI0c,j-40IG1L"Cj+aD#J`k*a$f#@AK
rf))SjS,2%56bPG2jhh%jJMB@"'mm5ZbKEL3hPf`-*(Z1I5#jcp1V!B-'EFdde%c
,Y(TcJYG3U-5d,,LfSCRl"SE1FiZTH&FdpX&GC(4$&6D1`$AN"ZYN#MlHbS@J%81
qNa9pHaP&,%"mcC`e&ZGH4Y9p(lN*X+"+4p3fma8L4jC*,T!!)&U0Np$6lCjjaAF
hK$eh8P(0!J1&E%141+CjC2V'%G@c)aTMepZdVcXZPmLLdi8cIbT&iS",'QUQ@9R
NbfMf8b@$QEq9UXX,EVJkRrl!0MC-!b14H3j#'Z&ZZ4)p#3qfB%!VD%"-(&[T[YH
S)G*J35&9lq0`J8c1,+)LZQHfXf+Ylp4GK-44JZ%kHkiJ"QUY+EY,)JE8MDJU4h'
2QKKcaE*A!mN$Z*P+LEDBqNE)K3hIP3ApJp)9&(lF4%e8qaVT@j3p&dEpV1bj&'8
pSFk'UqjZkI$dDMU",JXPfEX*G-"Tb!4R8K5!M#`H[*3QEiHieTpLMMNif)"'Y-(
&L3Y60AC$G$EE1[+dKJL(#V+dNBM-#9I(+**HYRHL2La%SM-0%E)NP("cUY,2VTF
p'"D'+hAh[E2-f6)P68ZG68[$UGU-V")IYr8)#L'c6l@B"'U"LHq0-CZZ-MG-$8@
Y4'C9haLK3QVU'$08L4Q)D(%`[eQ(q5D"U8BUfImpXj5[HDmXRIr1al'8praR,,@
6%KAhY'Qa0'Nq)M'PJG`1T1T!9+K3aT29,!KY$A@bcV!CP4*Rka8m*%#A04V(Y&6
GD@Qd#RE4+5"&e#iJ"3@mY+$3#[06NK[hJ0%RLr!JNUQB$0*d#K(AX"A$QNaSK,h
3h-kKX6(60N1h'(qq%iA5G*!!L,TK,2h1RCG*E$Yc8USpeBp-e1G,Ee)2-N5V#Uc
5,b-a*cRMNL[APU!aUQNjl5A69`ZU4NV1[A#8mShI8JHeahYb-QmG&VE"M6mLZrN
ZqlJ,kh3[a$@4ZcP&5F2*j1l,KrVc'm9qN!$d48aKN!#DrM`dEhedKGIQAcK%KF5
lmdGC`KNNp&,6FaZD9QT'R'MfBr2IjkI6jPTh[S8Pq*!!F*kDbNidVe1cl9Ndcf*
cIIi0fVc#REqI*Fa!`JPUaZp(-j1Db5%dp@`3Pq9"0,%%+a*Z8V0f&jU(U@PDK@B
HflaAhP`i[Y#L'&0KSY1Y9C9h`-f[TR`,41KkJ0Kh*AF29e9"Xp(LUbVIBLXqCNY
&#D9`bbL&fhh)9K!le&G3M@e(2UV+heFJZXS+U0L8Q[+*eUS#%Z"p5"d4D8F8fbL
Fdj8rrRab8GD-Dc8&c9LiJL*$9*!!d$kY)SGNj*L+VN2"*k4-1%@AU!NlBCjCQCp
)*DJ`mh!eKb%L$&&-IZ,E&b(f@qPEm3p"(p5,r,``9'8iIHD&NJr[jRP%#8Er`lY
465@UKB6,eBeN4FkmP'Kb3&+1Pbb1*"Df0C[P)[CZmXXmG5$R&I'!+cHUi!I9N!$
$Tm)*8E8%hk3L8Y3FDX4&p6`e6+*D5Jf0U&kRKP08,e'M@85KZfKd`&eI6%qB%J4
bUMkNcUTA!K!F+H9GHpF%rAQ%H)3rUqEIhP[0,5Fc))5QLJqPZbc#T5la!&8YlIp
pmfElJ*I4B*P`$32Aq+UMrPKe9)%MGD(4E-Q6ZUf$XVhZT,qB2US0rIbYNrM"-UL
mZ*F+SLA&r,2A8!&b$eam9lhNL[TIkSdU-%JX&"B#'H3*i)#"j"2m1RZ%a9QiL#+
4I9KXe%c5KN-RZ,%JMjMF8)1V'Ab-`$hF$pc'kTUUJMak%!F5BfSpE8H$($dQ(aS
Yb%ZRSLlFe#4$Yk0J(Jmp&-8)4H"q,p$eRDMqk!B`ISH@RjBH8QD89Fl*K--aG8I
&l6$"2DXmZ,UXFTkmM3Uk!2$j,6kB-j+(N8T014j4mZi&jM+QB82XYRFNZ)&386l
BGU+V+$f09IPEM'U*8VHYV,JI#FM6TPjD)$h0rU!#ZpY*%abJe21k8kCLL)"d`3A
9h5+a#-9rl,FAAa36#M!5U4!NlDZXB*mTUdGCF*eK+QD9-+N$(jcR"bNi(18"[k9
[kDX!q,YeXkI%8U$E+186KaA'BcI)26C1$iLJ3Xi+pY$Vbjfd4D[#hiMDMf#`PcR
E+dcT8jM5Pd+%8eCb@UKB+YP3BUB(FNKS2!,[qRmS8A&i2JX#YqRD4Ah*MkdS+bM
FQF+3!'+fQ[,+N!"'LVjDdj8!J43D69,%T5"p#SrcD2$!M@RX#A,Gf#+jqH8D@pX
$[@""-4i4FP0-KqM,$dAl"&HJ-*VC3cDbT5+d-MZT%RSMZ54+%I9`aeEF@fT`fEf
a58A!3fJh31U$VjDQf3qB-C!!51FmR(6L,$2d%d*K)-9!FTp#88EdD6aL)-+2@kZ
q$)#-+UJa$Qe()-p28L![-CfZbBMV1X(CJ+SmTb5Aq`&@8E"P+C*YPCbdMCfX5Q6
c8KYDT!d-ZB&bqH"q9dh"bb#TXSSCK2UJQ&88*d*9[`PKb9i(8$N%8J@3!-B2)Bf
PK-j',K%4hVqAULb'dUNS,Pe#X`A6di6#'&iI,AKC318#lkecDZEKK`9HJAkU6SX
X#a@C+V-eM0fiq6-4b4T$1bY8mbB,H0j6ep&R'G2`U#YXJ1ZYGB43aC)H@JJ)E+H
`&*c0r$MZ&#iQj@@F1@QX5QEQ4k19k`mGpHm[b-A,@2"-3p)9BNN2AH050AZTi5Q
5'bIPK%`dlU*+d`e`LfM`8+ASD+GqP++3!*%l3mUKSjl$"Fm35F'"YKEU&$+!kGP
,DB`0*PC9%81UZ!0'MTV+,UT)icmK&&%6DQ3AUq%'[M44JCN9Hc'CSp39(0S8LF!
D)M4j+R,[`5Z-@&#TPR@$!NFP"V'PPm5@U-5@qGN5@p6V%PY8#l&&28jX)A*ML8p
*$&!IN!!CNLFhLZ@%khM%&J0lb#crC@H1aimU),V-Z9R`$!e9Tr*Z8MK!Z$jUXDe
@$c3jSR1d5f5IH[lrKRf-EF3JlZpRB+"&(RTCa6Z%3K1$RX$$LU$1D5KlhAp#!S@
58bJ+JhN@"3[-3K@2BA+Q&0`S@C%+CLJSX`PT%!SSm814GNqhe46m&*-jJXC[3QB
iHpDa5KV63Q&E6H8I3q'i'Ie2$lAiXl,G%)KNj@q'+)CHdib+&'PRAZJ)-QdMIXb
BL*PPr$#D4f+N[Rq)Rmma(400jm%BZ8BrH)Y9IBU%1Z9L[9VC8#r)3md4KPTc9'e
eEmHVaEfCPU[Qhk@J`6-GKEc4Jl43V-C9U!EXJ9Vi#1"MFhSDX8&`h'3,$++3!01
DbM@K1TTd`2G*ErEQQVlXKj'e(fG!Da+3!)Xcq%3R!e-Sq$E@1pJr5kV1%@T&9fd
SA+"H)'"Fa11`j#)(EX+!e51lJ[F3J++L4(TbiD6-*F4JeAN*-3LN`qc8``aHYh"
N&jM**SD&RN%P4c-9ZXfUkTpbhk)21!eCQF0jMe#G(j-VaH4LqYJ8)p[q*L[5E4!
UCXd[IK5Uab#Jf$eS`8mK1A5[-fJMpKdLLJ6Z!2!2dm-q'"%Y$-8r3P(BPHr$b&9
9q6j3pKjA6H8MHT-A$ZBS$&,D#%83@GVedERm&RX8+VQF3l4"8Th90dKTXY+$@5*
@Ve!i&iiXMSB&D0EE#0C%)!LS9!q&#aA5@kR+VX-Bd1jK'q*535!S%*%91'*0[aE
"!H8+!3pBF3DXG"VlPqk10VA(B&BiSIl`hpFGbl*a@bp6bBp+DLiMlXL0@ilU[&B
8DfP#bGEi!FXk#hU3!2RAdi1P!'b@!Gh8r,DX)"F"FkFBTkDa9GjQMb+&TJ8SNe!
4I"Xj8ir*4I2L@1SKU+1RIV6rBa41V1fXBN'55*3e)pG3*-1b9aNT$F!%r#TF&,G
CAV&[Jh%HKPT%E#1NJ"N(YSed6KjPSMXiPlSh&b!`24Ep2Kkp`T)hJjJf`b4TjLV
-P(+N*8M4'mM&p*68#3V8NShqRXIBil1U+AU$Q6fB6aLBR`dXLFH-k*P4F6-053p
JB(HFAZi5"*+B0#NDpH-$qp3S+L-"K5#h9jKl-JA$#YKLjZhCQ96X*+T6S#N&,K%
E-QiQ)4i8c-X!QU[EBJ!G"$L@f`3JZ(ba,J"F2PFAM!,YL"2i@ciRi(M8e[*l#63
'8(eRqEhM0TYNa"Tj31I#4Mak5`CMbfF,Lp(`'YU)3GN$c%#6$#8PN!!2"1*P!"1
PSBdfJ@&k6+&eX2dLTShU2-rL36Qc82#H&N#RB1"hkjLkc+2T&c'TmF$GKZ''&$C
dK9@5R)DSM5%R0XpH#V`Hd(&`Tki25eeljMJ+8JQk+V1PLKGCf5H@"0MqkE!-f(*
Xf"SkMJX$Rh4RYa*JbqBbB'X8FCd!Qc5jl!'+U%R2&JQiCCq3!)"EYUrQ3,B"@lJ
%h($P6ASJfp`YmV#-))ar(N)32elj5A'QA2b'5))UC(X'M5C"`F0R6%ZjHeaAZ9[
q-FVGFSGbCrB`9fSff4rIS+N5UqEQ5)2bVaq(%#FPjHh(K8Y3m*`05EYkpq1!T0k
09kT5R"(EL0EQ@p3CKZX#%M+UMBMDHJPmX@*&4kN`2l[+CaC82[2"AT!!ef@T5'8
'5L#bF1Y"HP5%5ZCZC$I+FK3N``aDBGSM&m+cM`Vl"3#)#)Jh'FSGT!Q#G3prFJ@
J6iXm(l`PX8BY)-)e3`dL-N0ampYVXTEET'!m*3IM-ac"H1d,pQ#mGT)8M#q4[%%
#)B9RS@L,k4p2f%YR!PdbVjJX$a'&e3!Ck&lq6-f"jFm5D5,M2S1#DNHRQ+Pk#"K
1+1),3*R,#Xk%cK+5J!Gf2Ml%8@acP,QL$pf+IZZF`a%JIU`q[Bq#2VQUH)@pUQ*
Q28"ce*iNGaD$1H3-N689h&8`0G5+i4c(F0+aB5S'F"bE"U"Ui'&C@LD*6)PXaCV
+H5K8,j119MT5Q0*Id$eXN!!A+LrjXl32r9qcG3ipaY"02RqlEL%mXR)APdeJXS#
@N!$0GP51&d4J+0UBLXXHmfaKMl2X6cY`$4rdL0A3%4,b8!C#&LkVZ1Qc-Q&2cE4
H5BK$)KBB&+4,(VTb+5f`AUIBRK+U$!jbRi5Ib8",lS!3DZHKU[)ejF2Xj8A3'Xr
IKq$d(6*%ZUV+YQ2EH9GCf9aA@@@@EX!F'[K@m!%Ud[$iGqPe(LMdK"43!*e!2JT
3Yqf+@ZF4)mphSJT&R!TPIrJNURVc(j9NENa9PAI9MG((&6,Flij&-SU1q@-HQ%D
l'k,#`9"eLkMPh),+l[6GkE[CSdNclMPX'%$&ccRA8%9kSFJ)lmE8BKZ3!!#'CMm
5kY$$I4+94@S+HUcHVQ+MAi`fX%,LYXa16b0$+BN%'k3L8$,4SCNC6c-L3i3#f)V
S5&$X$CMcc8pleG1ISJ"$2*J&9G)J!iHiPB65mmJ`qk15UVJd"D1rcL0e%Te,%kL
10%3F8kJTli+Up2,8Np)P@U3U(T-[dS6cAjC-`QAVc9'GUGH8VkI(ddiY4S&4qf`
RkH)acLF+c'"-Q(HYT[)mTY!LC6mqLl("apM3#6DFG,!"KC'*#JYJ-*c(pZN`3T%
LScGXaF6JBr[2,5KEVlY%'B$*SJrC%YCa#fLcZBdYJ'%r9Nd,j,r-&QL6)U0qbK6
-(B&R6j!!f19jAjUqCaUTr[`CC&'!KrZlU2)ZRiU-2%NR+#"c6GAhH[!cJTmJIJU
2Pmf,$lEMfL6QMM%HN!#IT5jXI9#FV#$H1lT(S3,IiA#d#!Ddc'G-k**FJR+jefl
Z`H0"bdTb2d,@UHc5U9krN!"8!%,!!("bXjMa%i8G!Z92a89NLUj#@K"%,hd@8D(
N&!%J@Z+V4,%LPI5)34DFCBNedp+K-*CNlUqTQTEZRUpY0*8Ud&,aCD%@4p@rVDK
@K#"p3D[H6DSXIhLF'ICf-Y8#T*9X1%0Zhl63-B9eAk,9I3P90UTB-b3%VA(D6J%
U$C)qk('20+fkFG1LiT!!TTid4URa5l#!R*mfr"a'Edfi%%9QA5#AJ+aQ4bA+V5M
m#FD$a3%B*Yc'4NC5*PET(KPk8`@1d%2LkD@$C9,R*G3hkRJ-,#B`R,qJh)Y+aPA
PAT!!fKSdKS%B(Q8SP)NCrXJ!2'`T+aqQJXVXMqq3!!VAecAAc@!(5*-`AR,4kr`
5Mb%T-BS+0j+,TCUlT1(Hlk9V3lJQ)e&0+)jj2KiA0Gq12%e,chUEC5FRXP04)#T
kM(%j5a@PZ1Y&E[S[e04%-6M9H"bfq1dqlJ-)mXXG4(q*&`SPfXjB0RI*,%[AUKU
(JM)b0PjJiLH(L&&(!"@&@e,i%0K5'F$,9(N8!F"9"!ZDbV-%f,"%q5$-L84`'jr
0d6'b5YAAl'"$,PJI$ihBH"L2MEjEYfSH&G(e(BI3Q,+P[j,qLQ%&G69Bac8SC!F
2m%EYE*%p"!(&k["UpJJ%UM+-3FP$JJ&3YbSH4-R0J4C'B%l'j(TC!)9LKKlH$9C
4&bdXi"f3!*L6SLTZT"5TG"A#eRhf+pN6+-KXBZT'3ar[P0dp"SLB`1JQ+2#Q$3!
iHNeA@F(Ep1"9f8b1#L-lklicN!#DqEm1h9h`0J+SCdV6fUZqh)QLUkMcZ!4FQNQ
jSdI@-P!a1)!L"d[)3Fde@mV3"ER(VN*XNqXZ-4i9#2ED!#29@KPFa+rem5%!JeN
b`5jF-X&+K)VY9paEFH%Q%I#4A$ik##)@`!LTh'Zp'fBl8(XCC&A"8HDD4bJFBdQ
!4!F%$-!S8%pJB)[a@Lqr"F"9,fdVb0d`'e&$XS-E3iNi"c(@9jB5HP*j#4r*bLB
FaSf,#!S*44B1I1PY(`'9ARUM[6)ZNHQN0h801H4)"k'*3Z*)U+%['ee!`j+5HeH
G*qET[c*+KCPdLcCpGpI*56kTQMeB6++G9RehIa48DYNJ9550klY*bGF&@+5F-E'
q[A#[EJ%N0AL!8Xp&i'$LQbCpLm#T[iJH(bekj++6&9j%*95XaH$S`8G5pZ-kI`!
!-BP"4%05!`"B)Jp9$@C'%4!KiqjKrffrPUVdjZqk[VQHj['jVUYkUVCk3I0%GP)
h"Zc+!VeZ*V1cb*r(e[+3!)lVQlQ&%-)9lHHA(A$+M)K1McJA$K0VN[%mkf3HYa"
Hcm*kK("k!b1%j9Q(dB#"*YfNQhdc(Z[[hprrph8G),ql*1mP,cm!&AGH*2-J-L)
5)I%!%5)'AfQ8b9J-2l+[@3!T*JH`53LLfHa"i#5ck(`cjm!X45b9i([crVa[`JM
q[V-JiceF[Df@)BpSp%MVd%H'hQjSN41h`i@+@1ah[f$&Jf#ZABdf2fF%qp[p&Yr
ALk3442JD9JbN6MH3!%9K)&iB51%-!ZN#AhU#5C`[TlBL)#cYEj'P1#)j*JkANAH
XccRHk"r`$`"XIpJIampPG@Yc(-UL-KU8&YmB6,5bq+m"RiAj3#`C!5Zi(#CF1TQ
%#CX`hId`'d69H*NhHiVrfKEKBKPDTG5!$%j2(2945hb-LiqS4[c4Mm`iN!"'Lkr
eU%YCp%[*V3#)km6P%)M+Le)eMG$[1h2+mH8@4hH+BFrJl%9eeaAaJ2ElcScb3+I
qJ$CGFY4PHX4PI*b-U2+N#YSR,E*R3iH[@Cd`0&Z,E%B`h3`31863F4e#V$TIaTK
re1E`'mPLE@T*4[d2HjV9@LVqU'hTVQe!MP['E6$F+L28h`@!)-c,%-6jD(Q)"2+
3!,&aX0X,U$%MS%B@+bV3hi'PpQ`2Ja($Rl,"IfMaP"K"P8$+P(9`DHPL4L%*["4
KR"dKR09j[V"mDrGNN!"6&`Lr2m[Gh@pj`QNXKa*XGHE9(L2CeJl3H,Rbb%APN5L
@"[EH(`hfGaNKK`@`lVRE)AARSaqT@N&lr[jN8PRJ&`[1lM+5!YBR!keK!q8`XT!
!NaV-d'jVEfchA@'643*4+iVXqU)ldQ"Cm"NjDEDGS',+5A[EL8*q1-I"4$Bb+6&
0*DC*-CeFlJ+3!$!C`+8jl,!bD$)'Jrhcqk6UEKRj#S*%&c-b[1,dG#Ke1KEc*3d
UE%#,*j!!bZS"3rU`XA%hUkBDEdjDGjiS,(QAll3B5`5X-EbPlE3!1UQl+#pVJ*5
XI2(2@Y68dNZa1Rr@*8&qZTGe,p5kYDCZ&KC50jShML)+'k+EHE'*P21D$-1!!Sj
ZAQKQ*FT"-F(p,,jdd,$dk1*#VM+p`%3"m3BaYG+dEKZXReALC!46-c'G%00*U4I
@ZKH9`UV+SCJqbqU6bA!A#9immV!LH#Q[8b(j@%!qqfKSpaHcFDKl16c2aI#k4Ge
'PBMke0%3Ec#,T!Fpm+Pi`'hqIJd5)55`EI1mPDCcfbhBG#Z,&iEAEH4cTXI,Pb&
Jr1CF6SB&+$LP5GPfJMIQRrH*`Ra)p@Gbd[!NM94E"iYE$3QiN!!,IK)Ald-PZEJ












R6A4T9TeKRL+9"-%p!m-"Q!4SCI-"90#ECU*9J#@2,[5lA+8-LRc[L85"9rf*LKQ
GSI)+&l05U2aK6"5U4kr+a85PhD2,El6!k('jU@ZZJ03'#m%EQ)UJ'$BT3Uj%p9Y
a"+TIb+YBA-MrdUS[6kXiT6@qXP1TqQ)k4+dR"KMQHB89"BS#SQ6SZ6C$fjfjdqI
RT#P8lmkj`2K(ZpXTq'&Qk&i'#3FPm+NbPT!!!Y+iZrJl2*SIL6Ca!"DqlY@BHA)
ZcF@h"EQir1FmpNZ4palfC#j&m90a+BJIPhVY+JVQQBf6)9)V%&IXDpLd2529hQ0
I9Cp@AUdmpPAP#Z@9FHbVVlU99b(DfU111kN1hU)[h)"!kPpNc'YS3p8`+5q'`Za
Ff-)JXMPC1QjVl*JZ,@LllaY6!,TX@cX,ph,[aUV'hSe9qVY3r9YTbZB$#!fQr-V
m)N3i[*'&bmUF!1-FJFF$V&Bp)fV494DD0KNJXX6L6+'UGhRE"DQqGV$Akej4AZF
2p[UVQj6AhQ0H!i,G[+#m$"'lm5Jc&ZQ90d@Lce&`&8DPfG8Ll622JS!SKj-3bTP
F$V)MR+3M`QH!l3!6%i4qi10$Q'5C98lCPKLNpi4P1l3DAQ)#HQm%p46HS,X%TE0
F"CIa,MV!IF"8k"M'90riC(M5$R,pVQ`peI$eam8'%Xi5+d!i6CLdACJH&QY&8A6
R(%afQ6'2EV3LqklNm0q'5S5j-JLK!9p*Ud*)c)cdG`!BM(+(-L`U%LSdEFH2qHY
l8"(D@dM26reYf+S%IhC+A0G`NXejGT!!m#jYMUlR`(jTFq4$6+VqF!"*,CK$j-`
I$[MXG+b9MQdefYd5,hcSC$8!9'Z0mlhM#,$Y#c+5&5T1T*P%*l1DiadL4F%*)-I
iE`rF&UEfAh')9l`U$X#F5SXe-M!fVC9NCZ0NFRGKI$leV'#'MLLTKjHCXDlm[rG
4E+`SZRZp#%%-mmIiR'U4R+ZXA!M0[45V9XIa`H32Yd0cPE&ekU*H&,-&VB804Ka
HR0aE(mT[Ph-f-+M9dA``&XUAieE9L5jBQ5D'elQ),FEb*JihZ+!Y4'b*9BUdb[r
&ri[m$rk,([0I82P2`hm"r+FIP,8JK@3*lM-XQq&mp6$q%,43Sl!L#4B8"Ufa)Ir
$)F@3!'[qiG""$AN(ThECN!$r#iY14Qi-YbT*ZVS8$YmZTbYimX2B`VCr1)3(,Jl
MQ,P)UPh+FMPYm14[B`[@N!!P&X[)iZ6cp@hY)5a`FPHSkjeLSj%@3&cDaBMUiYZ
`T0ZS1T-5CX+h3E!R!-f9@ddYT&SdUG`'9'ZUjDpKDE'k"HeL5%eHM(+D),BZ9PF
4!!X6SS$f[M%JZU(FcQEhL)fG4ca1kP`VUA1jU(2jU(0GTXiPj3@3!,Y'-2EraYZ
%E[YrrHH0ma4qep93D[6rpdXPhFc+)fqD&M`U(NPd&kpij"&1[Ep`Yb&f#@8YEAY
UUbV*&@4b13`M'Ad$2CB6Uf(Zl%6BZ&JQU%"-+TbifLcI3$`Qe3QH4&MaBa+9KFq
N"6bFK$AY,I*MGZ#)hJY*KL#X)"ZFS15EBAka&*%iPJp2dZ&40HU)LeHd*&,mmGl
e[U5GJ*NiARY*JC[RN!!qY3kQI)P-K"(-T5kPI[C`f9pqEiQ6ZP5"BlEqKFZaQ)b
U5$aq)Bp*b"hKbGbl-VU)!Y``i2%UkAL!$pp&@)YN2PibNl2P(+HS[jZA)E"lTSr
$[XSMQ2+Y)##dRIHCc6JM%9!'BqmcfFYb1ZJ2Ec&S[!+&BMIL"(XXJ`XRL%r-9VM
*VK5H&#IPf+d6(`rJm$riC,3D$Lar!$NcQ,b"T0P"S**mR#UMHd(UGN`'Rlm2B-C
Qh(Y'B4(qLBRia*L%DqG'J2m2ah%%&`8JcchEL-QGLS5PI5cf#"GSflQL##Ra-Jk
`F13Im1IpV$f94hM&$#djVE!cc,EJcfCB)!l,9IP-5!QY8m1Kk0+L%06b[H[*BA!
p&IJS&IJe-KiiqP%(Nh)[G6FCDDA1"`!#3)-lDbrqSmBPN!"(ApEHQbqZYLf"S,I
0i'#'!#p'ArdF-DMhMA[I46JqE'G`$N"Hf*M""ff4JB`F$TQJ3laCZb0I(,%Fl*!
!UL'(9!dp4*ES'j%[TQqN1$,NN!#k)BI8(A2)'RdMmNEk4SUM3`kT(A*)lC!!3p4
Kqb"TaBXmA+md2S4&iTPCY(#bHIID(IF"BfE)-1(fmKj#%AF82e(9J1&T-"$V801
TI%ih(4DC6BKXBZpkMh9QU5#hY'qpllchp&+XHYL1RmVqr+)P0FB'M*!!qMfB6JQ
F5'r#0-VCh40rpZ(2DX##qcMpa8aNE"rBYd-F*J&XQB1kfJHMfJj6hSHEl6rQ*"R
F+a(ZeS0p@)D`HE@"lKTEXI[0hR00$!IDe'6U&LX`Ark-"0bh3Xfa!ZRP8'82-fY
pib"AC8c#HUHiXrHGafHl1dAZS#ABc)S01(TD9ZjAYRi0`Cp4R,HGmlf'LkpSj0H
pHRIJ`q(+&p8l"(8$-'!V8Gak0e$JKQKU31N-bH(J[L88R8DG!-(e9jZj%k#)@kp
5`R4c`mL$`3k(VQp*Ki&%+TkV!-$Vj'9CQ1SlljabqG9HA1leb9!Kp2ap-[AVJpe
jBS+lFdB#0,J*TI$I#Bj$"d!4I[Dl)+f!EHeiFG+A*!$Vj&ZRNDBpM344Pc(If,A
`$Ak*MMD'45G3"%fimD+`6MMD-dJ1!`MEaVFA)kpqk3k1c!jRjDZEKSIcXR%*'3Q
#hPhqPA''q9hRXr2E,(2G-2-p!"Y1&+CFjh&cB,&#aNB"QkM0KF$cphPMFpQXh$!
`Ubd'a`#401#b#a2k5lml+heEM4!+[&jF%[4eJ0fE-KYhE`+K,Q&#63"q1B2'r!"
ZAKcGU&B8!PFLKlmN%K*)dX%pX4#J$hAm!BSjc1!(,R-$1j!!R'#JBV+BXVqlS@[
"TK4`$AFr1%6a"@VSNCEBLe)kZTCKUp-bPKd8@I9f(BjPCIfpI(9CNAcVARA*D(!
XH&R1M&9A%ANeLi-f'(&e,Il8F)"PR(qN4,*#(r#1(cNX6CLSL`3%FF1JbjN-p1Q
QV4Ya'Gqif-a,S0i(),STcbb)Lq'"`FI+PekUVR5EaJrrH"rFP@&b(13Jr%ZLmlP
%%"FV"bM!X'TV6RS+[)"Gd9erkMDpfhQC%3*"i-9@i5CCP4Tj!&1FBZ%`HGMD*&+
IU2ECkMf6J@IN*)'Sbkqc%3)V'D[HbkD0DTD,80*`!6#`fXHUbjLB6%Ab'J!KE8X
R1[q!iX`frVfcXI1a2&MlFEK3`UJpGS+C)Mi1#92ZZ2%FE`i*`A%PN!!@BBf$#-J
)%3iIN4%h%Bq,4$UZ&'mNJR)$iHFj6h(aarJT+Nl5aklLjIa4GA149eH"&IbTP09
ekZ1*$e(k-*,iS0'(UF5(-(fS5(b)d)IF@%$0`+4EUNY8BbcJMV,)e@C-)c40jCJ
"qjeBKQVlUmXFh5D-a&H%&'pC`3%LrlJ4f0)*Sh2pqVk8LM,G`B9I-0ej-Q8,KE[
c(hC-"TRTDqZBP'KD!"AFGK)JDIa8`e1cV'CcdYGXa$Qpl@6QF-H2fC9Qqj%hS%D
l5)dfAjBkX`(hQM"[a#2AED)059N,8E5bF[3NDGYrJkjF,N*d)93)Zib&25AcQY[
k3Q*0%pX!L@fFa$D9aNlhNYMk5'ah5@c&*$3(#HdZ#8dPNI@UMS5`6LA%0*!!%0$
+K'Lb#D%8)"5[)T5HK&$-K&"#3LK1kQD2fZ$!RLN%qYXhh)*MAlHReD!LmQlFmTI
(AiVe([ph8cDpFD3Ha6$[Y2LlI"1T@q`-1bf1q4YmNR+YXG&Ki@k2"MVD&5QkXPV
+d$NTl`[FL35%"YA!l',BdE(LeZdA+G#*9*IFRP!J&d!8AkPa2F!49S"q'K-jiG)
0KabiVE(+HEk6!@KXFDbkj[3jfcP,5h@Yda+ea'TM-Gc815dJ0hQGh2#@9#ZTM2M
"Z[p3B*TFL-NKM*8D"3Gf1-(AX41mGcZc5iVL#k1lXA$(5,KK%ZZ-HKQ1mNJYN!$
$1MNYF)9H1T@jUN"`)mCj"RF5$k3%)b)l&FLZiUJ(!'(*Qq+eFSMeB"GjHEpq%8r
m1rK-4@IrpGPB&DS2BJK3PB[BcS$@baEA!`+!"%$i@i)$de)V*T&MlR*qT#3m`pp
NFD4F1[`+CS#%"BKTFPjX',!9Il3D[DHD#PI9D0&$",-0!QBF4+'T%CUBP"*dCYS
B([Z5j,LfP)+1Lr5k5!q@BL-+E'Y!'D[Tm"4qaQ5Qf!)@TQJ5kH'0Dh(TEDFD2Mr
LHJ!&),9G8#PhZ5[6MpAM'JZUFi@0@qlV$(2"42Sa1iX%%LGd!3B210X[4MlTCKF
8ZFe`q6140EjSr`A(,64)FUjURrkC#2b4B--(02Gj#1$B)TbV(Tjj@ecmX6kB*Lp
Q06##TK(Aj#SMkCR!!a$JBbYGl++r-2-f90i)c,SB(`[dm6BH'Bfdi%-cICK&mBa
b3Xh(TT(KjG8flJkaN6[lj828S1HK[JImdZ$$-V,d9-1VCrRbX4%fGGkmC`c(CQ6
2UBC&QhMP[5ClM(r#!dJei5Ijkl-b*j[aNj8)r[Mi(r"0mJIm!JqKJqQIlG+(Rl!
mkiI4qbB5'dbiq-HqG@GrC!h)0M[kMEL64,CAdmd%hHc,m%hcpm8$FITiS-!hTBr
3ak85Z3SIfqL"BRU!eIm)NIhY2#8fYj`Hm0%$Hm6#5)YJ%I$#+eKHZLR36Bhbd)H
+Xp')qkCS*%8hCqN'F(md6')Y&8a,BrZ#RBc0&"""(``%+@8R&YRmTQF!$-9UCS0
422Z-H('ql4`6)!2!HHa!f`AFf%mel0qZ%#-Cf@IB'Biel#!6lfHB+,hri`YJLlp
&iPh1aq&2'ikmaSk'#"I@BR%2,AE$p*IK`YYaB@GK2YV1i!)$4`!(l$b*5Np+!"-
#D-$$jC3-fN0(PjeU1&c+B#pkF4HTMQ+Z1KT2H&PThCjPq"G&aSj,q`aAPTf$DV)
@%1*VF%$DiBiV+P*8[C8E94PfG*S9F)*i[kRM5"-(%%V&MVTdbCSKPaiJ`d'DhV2
b5Z5UaJX-8eT!Z53+,E&3Z%"[,X,LjTcmhN"X'4h`@jq''a8T"i!-X@@HAQ96%k3
3l!"a9KaTiL4NE,@6Ua6rF409+RiP8P*rZ"jEj3IM2)RY`50ebL09iL2%,5DQSKT
-A%UZfbmZMLN['['2SQZPN!!F'1@ZpI6D%HTD5PG23DJ,h$fI[Mlb!$Hh"l[kdeI
SdkcSk%rI"([jV&!E6lmfmS!*+LUPHX*%6RqV0LZX#PA1hq36C(BR+E3N+5+B+lB
IBL@8jTb9&FeVaRFhNjXr%Pd64FDbpYPK*TQ0AEl4dIKcA3hYdp%ElBA!P[XF6N%
"a%(-!XphFT!!ped8K1adI#""$V4VDBdC6-90HS)EV('b!Da6KGYSX-c1CHDhGaF
C+h$Xkqe-l#Q)b-K1GPVh@8@c-f+5f'8&+@Tbp,#)KQMKY!C(TP&%b9pRq`rZd3E
#D5pT!e$&UErrNY3HHF1B,c)DFFQrI`1(K!I6QeCVCY""*%i*S)PR0#5Z&2BK0X`
-1aV@XHUDpCrd$D2E99(#jA'3!#q6(CPqHSBI+NKIB@Eq4fL-)#2i!6#'Rh8bU(+
k8H-Z,MR9Q5a)Il[21MPrl+@U16%k`563DMh'35"F-FC*INkc1RZ4F,)Ar1l@4fa
RN!!FkVG`JRidZ2H[U1#H3R(AJJ(Y,!4fhfFJ)KY[2,eJjk4PiqRT&$e8LiHH8QF
4!JB2IiN+hf`mIE[8f(LiRSZFEaG-)k!F,CqlYIH[3!S((mr`BE2XKP5M,+&2da0
J(QqKU8-0,G(i-K$D8ciCZi4*V@I@#1c@KFTJA9h8`Ufr2-QS!MLVGl-K6T*l!l[
6'V#mER(f`U@cMN`#*PF`Q54(ffQab3&me-)(80-DqeZ!*(pA(UZLiUT$K91aVa[
F%%5Nmk[5'$H#mA2Xb!mf$q*hSUJc4B"c-M!fQ8A('C-j5UIAX)X2Xi8X,"#!5ML
F0EXMKr*hIc)3'1mHr`Q+R-Qpk8#54VKZN6YCTGiXL#$!9V$*%rpa'9"kE8&dff4
"6`+IS%YqMBf,@664X%2QG(EY9-2Zkj3fPck9Q9``hch'2(GXVpPi$Xj#6(jD3AB
!5IGIi)SH18RE"l50,Tp6$F2HDfRX@'!#PHYYN6N%lE@p*eAGQ5VTH)0"$S6X+hN
V[S*U*SidRqrNBj8,T`B[2&Y1$*[Z,,#(cA8-KBQ#c&e'3H,"M#%+Ne2cYe#8HqL
cdf#(*K3R06KQGMQm9+,CQFa#j6HcbNph$3)SkG@,PjS$P&NP!ppEP'3l'ZrFB`H
3!"XAU*%@3Ad`-QbF%fU&I(CH3,"`GJUaiKT&JhLINjbBl#53!&d)@ACGM#V+Y*!
!dmA5%+GQ)#Dlcaee,+U3!#R%UAVEZ*Q`dSKL$jU6XR+mcfiiTaUfl&6)qZ2FBBj
F3%%JNC!!bDY1+KkcVE[aeQfKaRqKM[2((cDTfZ)2Ip1069BTKGj+K@BQ"*j+#+F
GiXC,4j0iT,&&TUCPpBiK!8UGSNB+-rF@Q4NHcEE2"$%C-pZrKc!C+'0B6b1`!jI
(JFSfFd+%!E*Ki6JED@[RS&Af&2)Q3rK41,k*e1V[N!$%Vr,MSdGmH"3I5["3%)+
Ubml6"5ek#S5F5NY*CCMXV19[T`EUF$*MpkU+6hh0LfKQ,lh'IAq[jj)LZ-G9"cZ
$R80A4A'RcXK5UEUFjh[2Vrc8M1-bhaEQ`-E`b5dfJ3d@Af'a@cRSMLFR$[+Nc&%
CSBTE91X-B&NeVL5!lX0)d)!ElSIerPjI!8CS%YYKGdFA,A3305!6R9Ca8iN1F8k
U9ibI'c*QS%bbPb@CeJSbq*a"kJ0N[a9N[pAJjQG`T5mfMr`&M,lHb)2KC'"VNjU
N!,)HIcBTEN0@+*!!4Qbp"e9p$e[V)3F#cCh&&P4mr%F8bMB82VZU1A(`qkc!U(X
TcIP*FI8)a3A'e3Ib-k-EV$,`3$Nj,Bc&0Z&2[Cld"r[aMfM#dXJK)EUHrDUT1-+
1jZ!b!G#L*[BH`-[YF&(G%bZ(JqkZ@"QlkFC+m2,P@!hBSD6#L-P)P@&h@"T[c3l
Jq*IaCcrql1)K$hl*T8Z'A(U4,id+ELI5mR)cZT0e,2EH"Xdhi3r#M!jX`'G-9Xr
Fm@XHk`E0Bam111k)TJYJ6jGpGaQFP54-UFBcc$q0@1l*!1#1a'VBM3VSa&Y3%$`
CfiDP`SQ@PJ,f"1K@YRHF'pZUc05@p`,dc*S(Ia!ZiQ8`TZed-DpbXCFpeS0YD%B
!TmXi91'QSh`*L#pAL1Y0d1)Xi-A"`$hfrZ4b8N,Pa!3$U2cp@6edN!$-AYG"c5`
A5NSG)2-cdE#K6$6)K)T`*K51bUre#i%C0JHV0QIlM@ML9qEEM`fe3JeCLF`B#49
N3!8C3JA&UN"31)bU421H'XI*JRh$V@QjlX-KLQLplP*P2#&E-qbm`Q(1HL,9DkL
lE#S5hD@GP'2lm,[#U4!2e!Y'#FAd[M'PG*F9"qN1bkJlb1!hS&5b5TGS9'A`3fT
ddh*C%JZdQS&h0Lr6[#+Y8R%C39#LUcd8Ble3HE%9KA`FkNe*J2D)KU`%ha3)QKX
P81i9YBq1rJ3#ADhHR3P#YAk#2kY9[kiQJkF8PGq&VJ"50PfUZkB%YahcLNemY6K
36DM9),2mRhLS5cLk)*U@hl0"Y[cPf9L,F$[NJP*8ldr`m'U`AUdcad(%@R3LKK!
B$"35&pF01,#$kFhMp5q8jJ$li$KR2Q*$qPC$Ji9p'`B@@Z%3&'SFQ,D2!VC")i(
D3bfapC`BD,!-0YD2(I*,RqE[prd-E$,FFPCbF88DmTk3!$[DN!$h[FC*(KKIN!"
58`IS)eLVf)(R1A&l!'D3!1+YF0T+I$l53U#!,@Z5fNB+m8`d+iM1%NbmcAm0a%E
+I@FdCVXifA`PL&4cQ"ZrFe06r8JR3kVlb-%594)ZPPXXMpSBkJA6PmHLd(q-a0T
mi9GDiCCK8jP0A3BRJ*qJ8MZj`5(FpFV9EFkThUQ9V84UITj'DN65JiP0q*8!(E"
0)5FR-Jc4Yd%0Y-&G[e4G4GX2B2YahKbD$l@FLD,6-`aKmarh&ELTJ-H16j[idjN
S-E'rMDe48c4p#&-C55PUB@0#+FcSS$I83#-8CjE8JSh8JZe8`qrk&(I@0A"XKi)
N82Z#k"LF6T4CpE5L(MDQ+3Gad9r`4HAVT#!f#[A!3S&bX((),l0J)V0Cbfq1S`+
l&!9Kk'EFEhNK45%c[q1$5U!Z2P"(+@NKZ[8HkXa$'Emb$-YKe3%D2TSkKkcNP1L
DS8hRV9C5(5DTMT3#pRd@B*q2`,l2LG$jTfk'-%'1'MLGk4QJm(L!i,jA-N(9@G!
8Z)mhV!0q6S@TY),pDhGd-,L(d(A(`F'pL)qGC)XLYRC21%NJYE32JR-m9!a[j'-
-!-6!(j*E6i"GGKR#hG&+DX92m2j&NGbAQeK9AAeAIUUij+88`0[1K"+$A$J*%J+
Vc`B`L56R[fHB8'Di+8$,Rf9KA9jC@23RAmB-lVpT@$L'KDrmf4CqT9CCU,LE%Jb
G"Q"N$JjJD!,!X&V6!3a!B8T6,aTmC*6854XA)B4YC`I0mCGN1,B(K1&baXm$Deb
@($*RJ[dGkKJ#hZ1h*c+"rSj4lENZ4cH#eaiN3qmVLG&Sir(CjPc!dF@[prk9rQT


Car3R4Z"`*lYVCqFEMbr)i(AZk)h(TfA38Q#&L83!'NK-X-+%QT!!`CZX6QR`T90
3m1@+SX*3-@UFP(fj1ZCr!X1)C9J0dk'ebT%PbS&ebS&e1(#(HJJ+Uab9LZY(-AY
%&b&9'AeGG&hG[Abh"DTe1eK!#k920+Jq-!acr&"`Mf@PM0j"QpeJG!#Ya`*+Nb%
F+S)HCD0*Ilp(4YIb"V%PDP#QE+N+@pV,lU10!`[2BC)%fGKjc-B8&4j9##l8FRM
SeL+lD'Y"fTU0'K1"!5EK9B+df#"DXqek)Ap4jS*lhaNL[P"r4diVlhCdlAd(iJX
G[Tq!+L!q6URcklh[k+mD),j#k)V'N!!'J533B133`533B-6@jcIL0m0JRhGJ@kl
"4aN@8kUd3bRHZ+M%9!9j$+C3&9l85P@*8P9@$bhNLQ$dY)cjlrMBX*2S!hCeM#X
lKqTYZ)10c'!MmFBlf-LL%)8JRf*3%bb`qQqaf`m[H[4rAj3CIpq8DNdcaY-,B6+
Fdl0K4lF4EqaHf-XrF!`SB5$ZCT,6,`bAUjIi3k*#SA4c'9)Ki9JB3A9@*VCkR*[
XdPC4C2)G84aLUrTLhV$E,U"jaDAZ8I9a1%QdZ3-E,'!30*J00q$GM[4DR&0PDJ8
2%*D0-aJhCd(B%rd4(-S`#@)5a#5!LBC*'*-!*KrrL&h)d*!!!T10$"4LU"CaUI+
K)4SjV&Z9&&8+c38d-$9DcMif[qb@C`+U'@jBaLS-rA6,jec46Cm!l4QEH$!SAlc
!J"m-&YY1ZQ-E,)0$0eR6i#3d(QLBD'$!b-KRA'lcqlBVF!d`'HbU![0B-2,V[m2
-XY1&",8r9UR$(h#[Zbb5$!@rZXL1SR)(3C%-3*jfmE"HV8V5Q0b$AqhN36EFHil
BM$!HVRHR(V'"0)&mEH9(l[%!IDN1L#!`[3+1S-ek`V"k-arQXl-+K'NJK%1+'J!
VKVXU6lqG(SFBUJU1ikr+#f$XAR&(jKLXVr@1&k9qrT%lL`(j%)jiarZ3!"$P'cJ
,iV84&#q-lTQmi8#bpJ)ha-#3!&miE2fSN8TVA&((KE950-5DZ#+0&"FSK[blJiB
eDdmer0%Z"ZrQ!M`Xe1&cU,+,fB5GRB8PX2G*hq03NdRIedKT9MQI!-%(P'l%"b`
rYMJXB01U6)Cf'*5TI)E6M4$dj$`'SAY2Z2pN!q1f`aEDUSY$m,E13[jC2#a6#2p
`h(Sr```HFI-G*$`R(,LJ`CqJd*!!YY!'Ub+D!V"6jK-VXI%aCjk(i-,a$[eShUa
(kmF2EGY19CJ!Dj-5X'pbFpq$Y#D,P6TdM5iF"d2%$$DlQ5"9J%"BSN)!NUYA#5$
Cem1%PPk08@@EmA+YH-R3A$LY)H6J)&F-+U8IMa[Vc6JUQ)&l5L8AYf&Q,'V2*&q
d96NDbH,UFH@b&jA,kLq4f+M1+5pIQk6Y*&kL)8+eUEbF3DH#),lAPlQD!$SV,VQ
,hGc90V,lPiR(@LRY(')"SEY!Y"JFX%jU2q#NG*J!ai5VUNJ3TeFQ885q[JGTKG,
Apb#4)MjS%G0#VZ4BBL&AbdMFFNAL[2h@'i@VbVBaM0V'3ki(J`@0Y"5$aQ%d#@@
'-+8f%qcMQXNrRCI@'B!i(1a#"*pKpUA[JGii`P`dK-RaBX&-QQ!QHf%HMl-kmE1
DC+@f5RQedZhm1fpKh&MZ5rhQ`5XVSXEFeI'2N!"!jp5#P%mDrFBbCRZ4d!@VeI-


NTCR$a[e-2kHHH4#KRKFTF9`TN[6X#[2T'JcS#!E80i0!T0CiM[rr-VZ'I2V(bT!
!MjrkMDZ68Km!mY1lI$[c0JkV%S-HmX+haP&YE5C(V#$BbXdPI4LLd%Mk"0$mSYT
V*)@Ui3l5e$PeQC0jd[J1ZfEi[90`X8K"MB#&`bFdU4%0L#E4Z-AGbK01PT(l*G)
Yl0!!X9c[ip3B9r3d%Q0J[*()eicckcr2SP1UQd2D,FL&*p`,M-qi(ZL*,f%-4I,
CHj%2mHH'@ckEMrcjc,Z4YEp%X0Z%B#RPA8VLK5-#ESTSm+CkX2GqT+FIiJkqj@l
IJi1)[Bc&cU3)fce@m(Y10B3[FD2ZS`6r#69Xrq6[[*Pa)h8`i8FkM&i5rPS5q3N
51!EJY,j%!Um5AI$,+a4KcaVRpD%D[GZ0hRq#`#0V51!SYLpr,5&`[[AT![pbQ!4
H!p#maThr1kqhpr2MF"3)(ldKZ)Lc1IE1`,d!3'J[R!Kk@&491fP`d6*ZF+dBKT5
(1!afjY'TVZJU(de9%LE#bb2I3)9J9PD$("6+[,hh$NIH)j2",BKA#T[*4eBC*Nr
N)EKD8`U*2Rm`mkbcPmNZA#*@65C"XLUa['AbBh(M,[kj$6F3fHBf6L3A*-`+&rY
4,CZ9Ea5*YjZ4&R3Y-'cTJHVrJ9250aq)CS@!+AId#5-%561Qb!LVK!Kq9(p`)b5
&*'#ajCkiXjq)QF-`Z4R)aXpjY++(e1bTKY!X#'N+E)#$NfH[GKUpJX"`3b)Hr(2
cNc#kr[@Ijd390i*RJp-[e*Gf)@D!F&#md-Y1mUL1Z0"DZY!V'%bfNVXV,S5+4Vk
"#cQ1ZC!!$4fkRj,D)H1Ql-&3`VemfF`,A*E"9%Q$Y*!!1a`P+%$X(e+KFJ*0-!$
"V+eLCQe`J0(@a""Ec%#&9SZKE(dKBSefL5&Tq3GGd!U4eK%MaI"MR6XRR$JbrHj
VhlHT`i-K24kiK`edBi!"#ZLC562-`i+9UP9BUHX*0UTQ+"Ye*D+Q-$4aYmGNYXl
43BDJ0RE-lYHRdhNHe*@BTLB`6A-+de3bb#DKS`hHP"L#!HY3Q+@Q",08Hc"QL3Z
M#)@KCCJe3MIJB@jlK",(j`h-BLUI0IUm6S6LX6USb%f!2@!qDCeYCkVldYP[r3X
!qQiQCCk`QN,cba6p6+LK)NjqY@!B!RR6#J'D!0F%['+K)al"kkDXTV"49B0X&"T
r*QP3K5PLGNi6LeCp%"DYfRQHA3M"U&9lQUR"BKMZYe"0N3QKh(9@$&h25H`AEb2
*$*MBL%&$,4XjiE#')E2E2GC81l,!$b%PR2+NF*a`N4Ye29!)!BV#lL5R#K41V!U
hcG`PdiUDJ55`m0(9V)D##c5BEG*66%8*aEjZ9K5N4f9bRE)S4@K4LY"24DKa%IS
(RULBda4@%-UPVDQ3!1HJq4KQd*SSX$5'81jRKV"eb*!!"4`1FGI'J,3R+kjLLqq
JQf*E5U"eZZe#*ZqD`Q$#+AC'G[r4"ik99pda!+e3b@rqB[(U1!2HRFm%hRaGrq!
E)6#+KeSaHE$SJS8lBdD)0jpiE!j+a6mjrqB&rS5Ka+0[a[$T"`8T9$dp&%H6"BM
ZTe8-VN(YX4U+,FYlY'G#EllHF"U6`*XhdJl3"P2'ZSZIr`d-XK['dP(mqG-%UfE
b3!rm`$FaR'YX(5lbBZ%UL"blmk`$Se2p'`a6Dj'6&G0A,TfGH4B2AF5IbfjCrhN


-ENYZ**4F1)'de-ABK`"GEXc`J)fIKE2m5UL-#dKGA8D#DlPRcMU2!9[1Hrf!`Y%
JBIdB2`D'aV)fK831'X6pkYVM#l(eF'*YQ6jlZbLfaXF323f0l%&Ajm'X9'IL-62
a@)JIJe-#A3K$$#81pHbNa5!`jJAhSi+TS'eZSiIRf18feSV(Yd'G'DJ@L%X%TM%
RacrbJ&df4h4e+iE*eG8YAXf)SB5ai!3Tma#6%eD`LD'#qD8lm4+*EHGR%S[kk%9
B%*UMPUh8ArqDRIZdY)9'fX,`83ZM3aDQA9#@T#e-(EY3(KUb-19-0)QMejZ'[$E
6MVf3!(DXrDKM,`eCD"mmPSGZAllHq!brL&)Ae$mC'Aa)$$l#j+b!&$4m2ZH,-#K
Z0Tl+4q$Ni2)lfMGd60GZk*M9M'6ki#-m-$4B`rH)'@E`S*PBa8B%*RPL!Gm9a8e
$35Y`3RMa5N`CYPJ-RdV3I1`a(N!fX[8hJZN!Lf-URAlakM1Dk1)mS$J6#S!1S5X
a2&i2-P"#`iGJ+2MKCC'X)"B6f`8*SB&iEdTc")dI`3a9HIqildq&'`Yh"N@"3Q9
1P%&P3ZN%VldpK!AP#r,fa8A444HCG9Th%LkRQ%6+LGd6VjVG@@)%CrQJT2Qf9`c
MpN*(b9f#r9ahTNpK4)2A"Sq6Up`Z)U`ZX(XTBSk0YiF%4NFGH%)-)!Tf#4AfpL2
J1,ef$-2+pk-T*j3A1m2b3CVB@Zd,EQe1K%(VL,dRF-6PYEMcY"80JFTbFZ&"pD-
e(0K#0$GQmQU1!a0QSLYhk4@5&d3abGG`9'`&+dimc--63e'Dk8'V-$ZhLDB`PH3
#@eN`e4iL+QN%C2-(I3rkfiRFY2[fTJFaE)6%D2Bl-8Jm9,@IKi%A'rTU#F%3mTF
mr2R%`dqQ2m`-5ZNLZ66MmUNZ%@`@A$cdqhp1rfVfQ3TT8Iij!S"JJL5Y[-SZ8j'
cJRfJ3E`jPCSF&4!KrR%$#MZU6Rhab@@jUdESlG,-Z"!$,rAS!bk08AJ$`dbC`T!
!q8#[bB0XB,L0+518EVbTc-L$`SNLjrFr-P*h,9FUE4fC2&c(0AFI$kYpef,VF1B
cJ(hE6MbE&df8D%Vr0!K063j,D@SR)*UR9NcY0'h&e%T6!p0@QMSa0@LD`G4*dab
Q'CTQ-Fh4G"ZQ@CSZBVU0TK@B,Y)dMfN&63F`cG0d(0-"QNjK1Nj6&kC601h&e%A
62NalD6S#jc0[*N$0KH5rDTR!3-Hc!p,%(c[q@2'R&Am-)c#%2#G*M,lLA`Na1Mq
M-2,Af5M`Ma9Fd0@0VN5V,b@'01*Q)YaG$N`ZemdMb%QQ9!&X!TKbr3@-AkY0Ik'
6pG@ATUm3@9q,2fZBV(0Sk5R'E4Y[b"h"m("II,+D0m'[d,flp-ArmUhE[cTkX@q
@Ye60$IlDd,fM),PVBb&b$8M4J,J'QRV8ZMpHUc+KpFhKSi&%k,D$,A2($Vi-bMb
)8,d$+DiLCekimRrX*J0PL+60kbKfr[`[iJb#$bVB@RUXDi5JJQS,Ak,k1TV%[F2
-4AA6%Jf$@Gh&Pk[QC($cIjbY[KiESFZraUm4aLrJd(Tak0Sa`5Vb-2K`@Nm3#&)
`5*VVK%)TYKYRT,0AD8"G0aV(J%D,IHcm@DNcQ#i,%BqTpFl"%"rN#-*LC3AQmJ+
81N1S'MBc8JK-9@4jG*26@dpkl`N9#i@SX154#M(FMbrUZ+9mCMAjdZ"RT$H54Um
$)4&IBT!!Q9aafK1R#kE5L0`"85L1Xea-eCH)ZC,9HpQ9B'L+q+Te6!cC("I$KL#


4fhciIXDqYD0`Mp@P-C!!iq(!QT&+B@GP$&&$kDbc((JiZ[Q4KUlTXSDZ@AC(lM'
k9Cr4b`2m,1[`,BjUEZ-j#kF'h5D'V*XbJRT4+GZXC*+"3VSM08T"R43A,B$jH[D
ie,k!bk!K+cGS56)!4@&1Mp(&a@#3!0YcHTVK+MQYFYHmG'ff1%h"-P!)"eSBb)G
-&YIl"G4@!!-"&iQ1D@e$afhaJ*XH'-V)ijm"Q95''0Gb5U*m2('%58b#BqZA-(,
3Zh+fX4d1`(iMH,Lcq&VE1EfkbN&aX&Ehj+`10SD+bIcVG$83@U!2hqE$3G$X1N&
M5!eQU#)S[jl*F`"2`CjVP0f5+T(i-MR`01B"`80%$"R1h([XRJcM$j)bMk(Bi!`
5pQ6)6BS0bm6J6K8FTR&bCpeQKR8bmM%-h!p6kr#GSN86@*3mDK($ZlcSNl4&%eM
88f3qmK&)#+P"4cd+Bf2r,@BXBMH[LJ%M8H(!+JSc[bfU'fJF)9,rjZI5Kdm5Jj2
UJ[c2SB)Xd38C[F&3!3Qb4"&N+&f3!0&,p-!aJSbq4S)%k"5G&B+-6L@1X#F%b3Q
YP#l)9cZ,c@-&'@dQ3DCd%&(lB+JJY4X*3CBS8)a)DG8NK"Pq93M62%UBGTKKNj0
0B+V`(2p2TTBKi$H&a'd2K'21j2%6*d(Cjf!!RY'KJ[V25rrk+aC8C@QDS1`3&2k
K,PV@c-GLDI`J5mNX[PU@YV5CPQUde+SXY4qe&153!*CqN!#fe-T,j5&DfU-XE6l
)dYZde*ffY)H@0Y(59Q@Tp9L$a&+ahEQdTDeBHTF@PVl``[p*PpaFRED`&!Y,!DH
hL(pL*'(-BGfBUh9MCK0k-YfBSf9Nc#9$M9N-8&)JZ-i)*SCj&0$H9Y83jJ")TfH
ljC[YB%ZrMLe`%"35M``GI16U)S0q6hB5e$,+V2'6ej8`U4A-EY66$%#)"k!+QmZ
Jb3KD"m(0mkFCK-P2RL+`Up9YL#$&`i)*8Y#KdA(@2JTLj%PLm5[j(p15pB"hrDl
cBr(,(-l0+q(FH64M[c9GZqb@lc8i)QJEE[PFSm(HELMi3&&`Glh,-U6$&$PlI`!
&cd-QXT1#khaZSaUIZ6IArS9ll$l)c#BGf6fp(`peLSIQ%)`j,P$k841$Tp$QeL#
-#AY-6M%p&8GJ--!Ip&#%!*d`[85k#X2*96#4m)abec*FF$+f*eKfrC1CrJNr8i+
9IbU&`Y!8f,C+"a*iN!!a[!a4Q!`JN!#CNkG#LK#Nr(-5Jj3I!XJLac`Bm28-(&H
SX#fR'QScY061#rppJ*-KiR+eScLqiCphdZZ8r[QIbqPcK`M+DC'&2Vf5pQN'ar3
1U9V[N!"U66%)c89-`jf*j'"5r%0-J'SNR1hpkrmEK`JdI#S[qJkPh-*'A!aPaR"
-'V`3*0MDfSb(H,"A!-&Mq&FP1%@(3pH2$Jl)aJm@rp4fVVMRqASH-#GkM[eA,TP
EhV4J@'4TmJFd,iEV)p+5`Q8T03L-mcpqa!eAm2%Bb$aU#FDN,$EjRcXjf'ZfNZ+
HSeqM+dVqjr#if9mXaNEbmYFje'FJ0+-X4Y-NkGA5YJEa5qXaar!`U5R4G3%0)%&
'ELBQ'SQJ!6$"&4-`jhDNQlMaBmPJBq$dBEJ!N!-JVd&%3e)$!%cH$e80CP35!#(
LlN6[Y@FpkUdjQZ*FQU)rbRNFTIB+`cLGdXAf&$P2FhHFaYbkADLfGeI&YMGYD6U
XQkQd5K'@UH!i$X1k,-X5-G4Ye'QD@jFe#@&B3jMkr@%-%DFMM@P!M52prU1eprI
r[Zr[GlrVpdUFjhRffHFV(@8q&!(a!`!"N!-!)3D,85i0"[b4HcqR3%V3)8eiVNc
k3mI5AbA3!"aqGe(kUb([Rb)M95U9J-YQYPpEY9Jk!Q$14D(-QDk@*YRRhZ*!+$(
pdj!!pp&4L%!r$I$c%5BN*eHQIc3j)2ZEr5M+-IFr6UidV#2%(RFkN@l$@E+RHim
0@F5!XB2#2ZaDc,hP2-+K$KRmEQJC`MrRh#8c1$*p"*fek2"2,ZiTFPY#Q91$,05
qjeHjqp1-AIJ*ClQGQE1mjLahU6`DbTa`*pf+hf9$k"ECXU$*CA[D1FZE&@56Z[9
*BAd5-LIA0f(538c5$jfP1R4BG@M*,'p`K4`Q4cMfc2+'[(FHB1,I"G5D81CGLjQ
6eZ$R(3aA1VTKP+'!kc[iH4&"lNmGKl%X$(NITiQ&q&NAmMjm"Bq!)%hh!M%(&aI
JBJql1!FrYiHmX6jDd#0dV2,c0S5"fdl)3'L4Q2$60HbU0pc"Rf`SM9lU0KMip3N
qS-IRm!'Q$FrP!fbS*CX2X-dV-6kJ4!c`!59["NjBNSAF"`4m*RhElQkCPV@2$GD
4FidY#FHdIkm9#d*EE-Eq5h#%ilLfFApS8BBYL%j2jUpbV81Tq'0Z+eb@GBiH-qa
$%Gk(icEZPK#pJX)j@9hSl#NNC``!&1ZG9mdlR6R)kSLVF[X)1hkRkRKTXBQ0-p%
ka`F39XF+RL!5C-Nl)1bl(led08S-)mB,'-Vi[49P9HhY[Y)DRl8-YG5pprkL`PI
qF@)XCGe6+"cM+"$KC@1lSaE(GLGcphJ-q4#q2L39h8$ZKPK'(E9Xd)*Yp+1)"Ga
ELNQ%-bFX,T[L40#BKq%F3b4d5-5'N!"AGPSJTN$iFC@%-B#&15`jkZK)'Tice53
Kf#%B6paZ#`ABdAAD`X4EZK,LM9$aHRSDa%I!EHf3!%)XmC!!0lU63V'B9#X#da9
Pj5H+M%T0F4'@cp@8&CHh+dA+ZdV*UG)[+dkmk+[%03aaS0KiSZC,AhPjFEQ1mK8
CbaTdR!M)df&kS0Ga4(0IFaMQ"q@)XArr@fB6Ff@j!mCDFT!!a9DC`m+kb`EdCj,
E8#'XNhCL2M$P0-2YGK8c32!pR(ESS,4ReBS$i*S"AHcLRZadIp2%+M%B,!Kd",K
ANlRBZJP%95"-cJV3-4%2@%)TQ'cQc20d$)T$%Kfp$)MpB$kC-dYSFYC1C%PTQ%f
(!MK$c2fdMF[%L,$iRZ*4mY`P1iCd0!%*be)5Q+bB@S68'iG!DqjdPmck`PfbI6i
@2`aPEZm86dr3%`&-qJDUKJDD5!EFb98l"YTbli-`5$[qQ!#%DrT$cQd`[3qc+CM
DPX[GAb$%MJ&!!b+&M8eDf*JPFQiUb!kAVBV%FK1%-*f*jATdc4GL'De0L+@iNSd
V&%3N8bA-"2d3bTD`5A3+)6GR%*K*@*dSrXD3!10Ek(3l`85-`BMRKj[0ABS6c1Z
b)b!+BF4$9CXa"XGA@J3G"Hb*4j+j&PZ@jHprBfCN82#lE-TY&iLP$E%$bc$p5PC
6m#Q1U-+#0ZC&b0*%B2*,GQQ,$NLkS$Ke`*`m9B&#)BT8HrXTUp9A9+9BLbZ8iZI
+P'+c8RkUb1Llk3+&@em@QlpNYr3#CBhUJ#1`Y*(*j*28l+SZ+ZK3,8L!kM%bl"1
S52MJkPd)89SCJk%%()JAGR*525+q!+jUiZ#V9-3KbJIM",a8m354iDYHP*R6G*2
Q$%a!,-K05J4XmY%aN!!2'UYl*`@V@ki5+MTiQS6$h(q"+[!#',m*ZCiPE#FEh--
H2#F'B6Q5!j(YH[$CN4cIBSFSK,dX'91*!ZQ@)L&+$N-'k6!%Z@-T!5dBRm*Jek3
S(Kri*[(81+LI!4XeI+%CDq!J#RJb*k'`F#HKi2@FCdlDQLKi28G96Q)AX[1)b"@
U$J#bGlXhBK,ZRXH+hFPK-F`qLiPIm%Xjb,"rBG'!dG20$VSM!BbH8)U$FMV2YNS
G-"#LRG3a[Y0,'dDf3#emBEI1ATZ11)lS`KF4`YH+MYXGapP6@54DV-$V)RLB$40
-9K0!*TSDUh@HT3['2JK(c0'PG`U'1dl-[8"XZfeS8dlf,5*Da9-lILr%3&`4``B
5LZp"8-B6$lQBS)3[UJJ#FND-N35$P61Nj,0JAlN-I54PiFJk8-H@DKYY+Ep4)QY
6*K+ERNjdZ(6K[SLJM&22KX5,GER2HZ"8M5mPrrU+'9MP"kL,cjN4'kJ+2q*9iQq
UU4*R-d+%%8*0pdbZfK5N5ZmqYi`4kl`A`AJ6mP'U`A9p-)UDNJE)-LKm-F`A)El
`m%@5,b,Z8MXF2H(LKc3h3V6%%8FkDA5HYJ89V4J)SL5QCf%4iBYQ[QLK4G")994
6QDL`U5+UP-4%&RfB-9FbQ"4+kh[HY*)ZDmbE9ZaQe8,Q6+[)(-Ql@G''JX&i!`V
l#P%pXkTm'fHlRD+SFl)E8fG@iZ"cN9DT'%pEhaYM6iq*ThY96iq`TbI`p%lqp)3
3GZhTe,LR-A9Q'6hYA5H9iYf0AH'%f"BV-1jp%EBlL1Kc`@&*aa"I4X,f"jmPP5b
`DfC'29&8H1V!L5UPb2FcjH5"iTUAP'S)fcKbAlrQ+ce488EmA(@hrU[)ILpJDR&
FU3%&r4j99MEJH&VZ*Z!PmbdfU(5p#m5lb,SX3'(YLc`YPF,Selk05ZaTfBjXPJ@
CV1(3SQB*8USEDMh5HUPYrJGhJ1MpYJ`aBJQ#CM#3!,*01LVjkCfdS)c`RMGjPSM
3-8cY#bkMSj!!YHaV(A,C`)*Zpbil#@#PEdJ!+cUIJ*81i0je8J!V(@+3!$k6!&E
dEM@`D1U'!3+@H2bT38DQKIR`eE#-04QN-`r)ddUrCjRbNSamNZ1Aqr2-kl1#I0U
0X%4B38*p4DSRX@ZQMp(ej1rleaN-qbrMf[6$j`e5A$cN`DE&%`2X@'PSiGXLCrB
VA4NfSF)&"D&Scj!!rAMABIpl"8F#rhrR9dfIe(kVri%VIahlDGq2KamqGd'jYqf
qj+(`8j&R@TpZhY2ND(RmdEpliQphrdh(RlEIfIe[hVdd1KQmH[lMkqqlVcN2l[e
*b'Ej`,2rp#q1rGceIirqMicrpZ'A@DG1eP6jc-D'%rYH1P"59'cpSr++XZF+IeE
kjbrqVa[rmhYrPREVcEbFLfIIcRhpmV0[r0IArL*ld6Y[,I[A*ImbqapHq+IRrrZ
DrrI+[hhe2hrqAclplSV2eRhlLmaYrc(e1l1@,[rlN4q-rG$lIqEpKirqrCE[rqM
hYrrKYRqmicqYrXdM[hVXMcYhE0UmpFQ0[jlrZlYr1qHKZAmeq*F,(ZcpjDj[$Rc
YR[[AVPVjpIAr[1'ZQI(TUBP[,&kB[chG)+5hZ"!FmlNLTHSjPZQV8JGZCCeLR9!
D)F1VXe8qJDUG5$BUS0i(S!CC+-Pi'T@-FAJMkhA4"2(Q[DX-QEiNb*F!XK`"%Pd
B(qEhf8YPl-Ilcek`3`P-L$Y#)CjeB+HYdV0h(ekllVb9B6-(Q$%"aDE9EV%eS9-
jc,UGcPYQdjlh'8ZCB4-Z@f`)h4dIJq*KB65Vb*-(TCbd%M-8#A#3!$+d2`p+%-G
ZrX"RPPPXVA6JFG@"(kX1l#0Q3mqDea9+jeQc0$4c4SCNEeM$"h$)8p1#L06$T`Y
I!A0@%HN,1k%Jq,PMcqB'%44Bf!ZhYS&pp1XC@dCBe!,94p1TQ"pLUUV)k"+Eh!h
d'%6r84UJm`e-(9CG0KN*@,[TiS@6&KZZY324MQ[,F5f-kAj#*0K16+C%pK(5(Sm
XIkrc9KMU-5Clq@6U,6)jQ+m3%-SV50(6qYi)UaT'@0@`m&89ZpP'l'EK)b([bKR
"EKBqJTm[91aQQjVGX+N[-RD$$*S@K$+&&VfrFQ([qrIErC'$b(Di90Z,K4EY6r[
jP[2bJ9(j"&1169cX$be#H'9)K'id0+j%+&KK9b'45"bEM(rB#B,@Z)b%("dHE'p
,b,[q09U3!'"%H[LQ#6dEa#V8"eP)4Mb!`q&)*Gk4BFR!RMQcR'@%QicNX&G89HP
(c'(c3Yj9Yh1(cF22jkUUG(@F`fLUNcQ-LF4pUhN(!9cK!a)C,V)NFV8Eq!$L@(Z
G3V`3@9D4&K@A+DH+P-Rb#Pr4L4T&Cakq+J9%RHp859dXj+VRUP,6i+YjUH+j%UA
N4%A*UE+DKMZ*ZV5#`+`k9AC+19'Km)Uh6RE%#,j(1-(hZfS)[M'`VC@*i*IrFj!
!9iq)3!F-ELE$5NEJ88M%a-Nf2pL6b@)cZeP3,Z&kXdiHVA@k5e"d"AQ%)Pi3iDl
2D8`HhGr*A!q9@KACjqF(pE--[2Zq"ZL+"R45m%9IHE&5A!j5aALUl%5K6cRjR0R
X+fG8"cbM"0RB9h@Y##lEclbZMYc9kl4V0V8(iiM19R*,-KG#`N)qJV3m[%BM,3X
U)bfCiLBM,F%k63Yb`kfbIb6YC!`&UT99#RKX[1I32NSJJ34NBMp0cFja5!9SPT9
"d)q,[iR%hfTJJKm`fRqp6[EVfHh%CTe!QfZCJPBD$FLFB69NpHr(!)m'`-J$*T0
3D99[G&J2,d!"8I9)YqS4$jKm[cHR+UcBXbmkT!LFZP*XF6DZX+bZR596"'PcISH
$r`&G'h2SiI4HCBMBV8k!FQ'pQ`[V0kX4eX&iBHh+RPbefI)9#@Z$,UaI@a-[V)G
[F'(0E5bXAdY@*kaU)@A(plpFFE@a%Pk*[*k"`'kf0"EBifG[9Q!KLLBQVMR'#-#
Gjb!`qq0"$F&&8K2L'bH-$%#'EH3)U2RE%bbp%R&PKL[$QpL+,U!JIdKJ+pPBNpM
B@&k0`UlYT@BFV$#TYNDLP49ajTN,f+3)52NqE@+F1$EH1)4[J![KH19#Z"#Q3j!
!0P!N$r0`8cL[9#B2"U%#kX`a(PAXd&B$&B3!dB3eLY$3K2%k%k$-mAFC#9j!aZF
&Z6p)bqS55alSRF#8$ME&rJ1K6MUa)#haM0Q,"LMjdZkkl-N*j0!4*@q`LK@N#P4
)8DN,GI4%k"1L',$E0BHcd'FbBVFV2B1j8+-0A2YqT'GT6Nm1XB*)bellGh,Z2@q
h4bjS9e#%)cb%5Sj20Y[Y5'+EXYH9DrVTY5eY2GqjeA1,VY16E5h$FQPD8Zl2-5p
i*NJ24Ek-"lC$K#kpJ@c&k@iJNQdF@IR0hQ3ZrB("0)QXDAq`&D%'UT!!!mN[8f6
ph5N[J-L1#G1R+HQbS3'%H0`lC"*#(fM3K$j3DICr-3@C!!#$%&V6I$Kp-A2kBX&
S`IS+529B-%f985"J(#EfBVc#M+)D@c+*m"ZD(UM%DPU)eG+KDX5U)k@MMM4SMR*
1VYVUTS4[GGq8Sd)T,c"(l@3%'bq+DRIjdi5lMV6AlbkC5"4cQjESEDUL6d9X,J[
+XF'iaD8ElEbQXkU*DUF9*Cbee-kGp8NecXT@1DY!L0(@eFRF3maiScKGYNTFSSK
*)TPb4L3c`eCj)KZaVB#+EI&Y0jTLDXcBf-B!YLH(kpiB64)EkeTFrmBZT$ckC@e
10f3pkDlEN!#P%38"K-9-S--,M%eSSYPD5!defqK+BJX4N!!PC$i`&Mb3!0-K2AN
M&hec)d1+2EjkAeV,!AZK'X!1kJ,%cEREX&@[f'UPJ8"bRTFl,h0Q4Ih1FabKTiK
SDFY'G@fAp[!*CQ$YmEbPA!ZV31-BFTH-E3%!eqL'jI(CBV[MlibN@@a9IFaF5BJ
hH-IC**UdJFcBLf+a8aA)UJeq0rJ8N!$-*'BSCFB@lZla0(EC5f'jP-p4&DBi`aI
89D#T)mA'bQK$2T-bj%Pck-JLENkP`FQNQ`ar-"3SC!SBcd!fp`KYM+NS(1%JC!S
+[,!H5qDkE!NMUQ%"185)0*MNBNajM$@j@dLKm[%IX8ac`)M3!3`4d`,*Nl(9Jb5
DZa&Jk'$Q3qUFacY(0&5ULaVpCBk[FdSL5iaf(ZCI`&3IKS`"EHVR'9c*J@hM$X@
CB9-lU$l6qIMJcCR1*@hPlNU+mSX`iF*m@YA+#KP$S8P'i"d#)M26M+pe#F1K0hU
8N4q2ULr@*1-QCBl[JV%d3'D'J'3-DABm)kIQAP6e3Q'SR!'Z,#*4m'#5-qi'F!-
-Y%cNM!TlX"l!SMMQq&LQ9YN,CSp-pY`-'V*R0X5aq`"hbGj%mbpb!a8DU)ZDc-+
%HT3,eeS)Z42QIj2LAj!!0TK,rkr0lFcY*8C3+bSaFKH5em+8LELb312T9,3AVC!
!4*kSUc*epC!!19fJDZV6`82e#)j&6e,bTiHTqIZQLl0`p-Q3!(!e((+`XZ0SFqk
+$")A%RK[P"RAQ(,#FBkkmPZS6,!U("&4!5iLJGkk3hP2pGMV[@P0V&L20i3Y)*I
YmbqbBETLBN8LS!p"I++jB,--GifGVB&"G5c[j')BLiIBeZfL3%bES!UE,jj6L2J
l`N*44`8+Ndc+i9rQ0N[Pi)iY%5Le%0'AIMHrB0Pa'iP5KN6@dHkZJ%JK'HRca!E
SXM#JkBH06l!`M8JbHk)03(Ird3fS-FSq0&UfmkhRL3bD(SS6e5)*EKZ&0Y23@(q
4#bTTjSPUJ(C&aIS9c[Vh9-lkmk@kHYTiNp86ba)`dK5&2JR59+&#!K2ISdbC4e9
"85()X2PfU8PpeIDDq2EZV'Cl*Pe*")fZ!Z8)iMRI02CKSeQGUF25`iRJJXGPe#p
6hr6YUTcXRGSlZHUhYk'k@XH8FNcim5Y15c9%!C[+L)+Tp[SV0QbmQbIJ@M8*D&'
""eA1AD-kQH"ZX!-a"8*P6SE)d0T00,$NmU'rdSUhR5BGdLCMk4HN*(ZZ696)dfe
eNC)*FXDZ#M4Id)M#Zjb9N6Em'"14hUbSpFH6NRGGjdRAhH2Nl[Pj0HkaJV'N)bP
,K0LKJNRA!`AL3&3GhSFf*6E!a$XLMT2(+RA4ERS`QF[BVT0GmIV2D8-m1(pqAHl
jK8dlcZ[IlE*GNK`"0VeKX19#h)3VUJP3$pL`Ui9Rip*A1)DdC)!X4c-PQ8!3D8i
'-mrV#%A$#29U8p$)M"'NkVVF'PhR3E0r,%(%&+8[Y[DXmqbqB0b,`3T9+#9,0iI
02`eATeiDiJBaU&`UZ8ajJ+BGE@`5qr9'#UGFDNTIR%M)i3pji)!4!d,jVZC8%89
9Lk%ST*K2('"KNqYB`(J1h-X)N!$mj&40ii"*qZb[f$eHc6eHDaFYQ@+[ep&p#Ir
%(dUXeDijl3@9dlB`Tih!$BVQY"'KXRRKY1DdMq+FKZNEAb@RLD-B8&*93*RG1!J
1Y9l[aLhD!E2`mhc)Hfj'1m!EG`"0$h+JT#D!FRbe!-Vf!bQ!8S0`9CQ[%9J%pN`
!8ch)craaTP$+59Vh2NUBI4d,ZK6#V3+aQJS6#Y&MZbp`e221UjLbPj[kG5H(p"$
LNaQkNeNJ"fUU$fGV6VBd$L0ZR8Y1jP9!3#GKGCFH++kJ"&1d[e(DUHX-Nlj@6cS
,PZD$B!KNBb0K53fX$l!'88iXLk(bV,YMD"kjJaQ&@!CK`eD)QiXqi4")`cF+IXI
FXPEP&SqZb,$eZZB@-J5ZK!,fLjTEVMG@CYKm"lQ&!Q)lX#9Dk+i"c+Z%kN[#'i3
m3fI-dCh"!MP5lQ+K(#RR+YerKT54BdKYXbU%$Fj9*I!f2B'Ec5b"hBCE2)RhK,`
rRUdPFDaa%MIYSL3+eq[ZlIQ`NA[[&S@C90He)eG`e6l[TKR0TI3*Qd%F'0%1I#(
Z3*THU(BT#pCUiJE&C5&I,!iYR2UcmK0P[M0`+RZ!3qT2jNQ!D81#%89lQ!*Mid$
qGEdBlYJB(mMrqR)Hb"pYA!4hC$$AL)pY"06U,r&PVQi9Q*3"H"!D,Nj`q+SK1,)
eBRTE`UbP%F#epC1p#[YN5'Vf-CKV984118L4@K)Q6TCF89r!TeakG)4iRKfITRS
!`TaI5Z&NmCMK3`[I1"#&e)Q+Vf6TQqJkVqSk+kiK%&Lbp"d+Y+XkPr$1(Jc3i-!
3X#4FdF*GmBS@5#b0dU)R3FE*mXP9$hA8(rajU%-,k*A@554rbX'bY"U`T-D4l$'
@34+CIHra!4bfKJIb40$99$RC6Y1iU5@rcLdYje[kIM9EfU)p6qT4IP+0`q))$b"
j$4B9ZSGPdkQS$+1,P#RY[-ZZGA@JDeM9jGHk6U1V4p9PdVUXb%S1-$#+,NAVHJ0
GMkQk4V@Z&HKD,X$+ZY+d,M615Aq"LA!8(lXEj#DkAVD)b!(Hk1+95Tb,Mk&Sj$-
pNb#YkEJAY5&Yki!fT1erU!f4c(5,0S3ldS2D%'j,Ii+&4FJifDS4jbf9QJ`fF10
9Ua``fe'0pfTKp4L&e30N+#Ji+D14PMYlZN),dEK*34Y4Pc`TEmJP-P8q)JHL2I+
+eB$2K!dLc1!q4"qi`UIXf*-bfX%#5Bq4!PUdQAAfD*h$V(-@kc4CSrb*,P3S`iP
0R%kM$UE!YKCG(DVY*ESfSHYdSXZ5k"T$PcA49@lU[+9e2Sr10e5GLUSc$CdV9*f
M@QF9ZQj2G(@4Lr3$'l2d8CfP2f*A+9QUe1Z)b)KRkEqj6#aG!%KRjK9rAR+bq!#
aFkk0N@L#@ecqNp2AIe*Fj6[3hQldPGf%@PHq&JcdbMC'-*Vfl*1pKR`#2e@bD&M
3+JIM63LSARSr9$0UEX4NJ1mYM$j!(hXF32"SN!!Cp+,Q,TMdHl0-E0KMpLY$$qD
LmZjpm&NkH(YZBLSfF)HBCY`#3p!!M+DpkZ#'IV`j`#Z-&A*3rh#9LJApL,1J2kk
'"Fe[h$cTCUXS9'fQHiACif9Hea3QD[HRP8IrmV0$Nb*F!V@j@X@q2`H"Tf'9X4F
"JmkmM@QL#q4"lk'V6+QJXM"2*drZ3j8RGl[+J!j@[P%hh1"22hd#N!#CpE(jAqB
k*&HMp@X&(aZT2TK$Mh&$I*C)[UXH`a0p!'a["!A%"#BCJ(+9[if-1G(pYj!!q%$
E!-KM0M$20$*Y2#-$RCp*dhfiTT`3SEV*p3'*$Y11E1T1r8cfec3&2`-KL!PYcfM
2pLRI`UHbFX0Tl*&rBNq)3hBP3Z2dB-P123J)NE+AT"5TZGc*peIMj#bD1,PUVMe
PeDk(rr61qJ@&+i!-iX,eqXQ%ZGFempSGp9A+M-dJp$1p9c0ACNjcdredZbSF"%*
pqSR')PrCJ#AT89E**+ifX@T'2$qU#J*9hTKXJNbXP)(J9iJ`Df,CMAb1mQMZ,p*
#Vi@kBMXK4,CeHKErI#F02N9$(M'Na"(4[*ChIFLke[+Z'm`S%c-kH3-T3LjMi@K
0l&P!C)"hjYEae,"j4&2e42,eEHVZi4dE99[YM0[UDY8"eVJ$aLVCkZheE2@M1Tk
+hfU6ZQ%PUAdN"9M@8K1Ak5VY!DK`6,[BCiUSi`[@-5!U,pBa`3G[mZe+1BqMAP!
Xhd'ME2Um#XrHjI0,Y(L0AmlA,[HM-DG!k&H(UjdF-'pPkT[L`kIVbAM3F`m4X66
N'eLJfYiFGXeN2XF4VkABHJ!+['j9mp$eZQ1FEaQ*$##ehi4VCP5Z@DpbcAT9-Z1
h($25*e,bY55aTP$ZPbJS0cf3!(+kH92`VH4"eq9$6QP2ASlE'#p@di[hNbV0HM'
FSS$(qN5$,4(#M'Xmej!!D,!PQQ)P`S,6-c"mS9)iC+%+J"Zj-UHCkTNRQb'SS*2
5X5+Bb`'dMQK[2e'%aY*Pm@ejcU$"fhcGkHk5Z8IeTSG6ZjP5(MDU("6ER@T*Z)B
##f*l8kd-"(-%D+C)X@dB"P`#eA`qj4bE-PqiHLUCF2Y8Pa!3Bj!!)f*kJl+T@Si
+T*MHEpk%4XEd@E40h-!lb*Si(P5"+ae!,TPl,'&#QYV0Lh-kb+jQLcSJRcR965a
H6aV21[6(9k@06F28N!#@0HYM3JlMUBP3('!Z+%9R%@!G*J(5UD$U`TXmdD6dCH*
))CK(30Sb`Gcr6SS,-A0Rr"&U8c1UbE@mZ[a'0G9P,UmZVI98PpDEULiemR9e%TF
@8q-TN!"9akT45QR@*i&X1CCS5,Ak4YhUJiQ'9-bmk&f0jLh84!R0NCVejj`A33#
GSmC*LPe&6KfMiFDd3ap,aD9UQX60[Lf*"PT3%f`1TREV#cYIq2NL`"FQ[ZMRLaK
I$&[b!RP-J@k%+E2Jmdk4iarN@2hH0(b6j`9-Lb$J6`eYF-'6'T!!'LUD!Y@6!M@
8!Q92J6UH!Y@9!R9B4eR)J#m0qdBZ9X95ESiTf`aJf",-,Sa#mD'&ZT5rkml[61h
1I`UI`&3K*C!!%NLl#QN(dJkNAiAd!qN(-U"#"S!-!'P5)8e!QS$X9b(lJH`(-UC
#aS#-!FPG,bG+T1'B!-+"Fj9YfU1$D)%!8I5eTZ-I[#e!&,e"EKL'%q#+VJLjSU9
YRcc@eK+3!2IP$61%*h@[j01LT"b$6pTd4D,ke#48&Hp,DfimY8FC1Rec8iH8S@-
h0p@Z$,PZEZTaCHMSc8hY8SBbkTSkp'%D6FFdL&,e%b&FErYNHQT@1#&DM9ak0Z&
56elc%-4Y+a$(U,&r'"0Zi*-j!&%)bPl8p#H)TMpY[1(M&G'8"%dD#eA0)Dr3CcA
S1+A,FaE(*,q9fJ%0BRSdh!,3jiaGp-e5ZU$-1T&JPFYl"+YFrY9U@1@+H$EhKhF
R9rh9l,VCR*J8cqEqX16PXlNrc+ZIc6dBaqBHV*60,Cc3f4`em@pLL[KrSU`ZKeK
GUrf$LeErf2qZV1iLBh8jeE#kR(qh@4dDD196!X-#j#e2@I(YG$YIqU@I,`-b`*I
8c%%XqeRM$PV'C)`[KqA`qrG$+28M2Lq8@Dd*alDL3HR#I!F+X9"'QMT0#%pU"MC
&43[ZhY4k'*m3S-j3@$+e3MCSPK"lIUPe+0cPICZ4H)1Yq+J`'NA"f,@qMkZVABH
)kib"QZqarfc$2j[a'*TS#`@N+AH6j-X3@NQ$,@#6b8rHpM13!0262Lp[ES@R[lj
40&Q0B`mQcKiHVSBpM+98ahPbbH5U3@Fbpfr&TekU$Gl3*-%BRMaE9dKrq6QqNDI
9'h(Z@Iiibc4KQm[42(hUk)m4q&[qZ-XQYQG)KD$mpG@[ARhpr-6NXFRJj01M5dE
A"VH2fNDc4[rLI-ISaG(VSpH#Nk-r'jeep9q#raVmkUK0mRm!!#[V384$8J-!FQB
393XYT`$4E*1hhD9HbdU@@MYlQ!VAZLaV,@e6N!!d"29ZHIr,3YTe@l3k((GTZlX
8q[ifEB(U-10##eC!T8!)*X3BNk1)bQ#%8Yp[0X!ia*!!4*!!+1B`#DNJP3$M)F6
T-3clqhrI[AI[YY[h%mqFmccRH5mEE6G*5j!!!%%3!%'J'[pZd!*')hid8ad&8Nb
D'P*4(dc&(UP34RTjL!c1IiCPr!C6SYb+J'!ml+R`LAP0BQaYH4c"`CX-`hGSiH'
LcM0LhZ!%6a-US-Lr`ESGh6S1Rr@928EMX'2`)k2aD`Eq81QP)DkT"-V5LrqFPc[
NQMlFS88'2p+de(BmfZA(-(rX"pS%$&5eM88JZjLBh#(4SiCS[ZGfTl5ihBqe,fK
S5HR0E'a`&jaX#1kkbYc,XZ%,`d@NbMQi&bh4fD%YZ)@kQ&$aQN-0CGdLD1h2RVF
A)Qbl8KXa*5&iEF@M1([)@"PSeA5fD5!H%2AF)Gpl)"K'"l,+hJD43kUYJQ-Gl8(
$j8r3JSqR$e-!H66Gj+c`$M&PPpQ82AGF%ee&e*A!AYlZ`8Eq*,iSE"V'Kii2"cl
Xq'M$4`3Ih3Phh%hU6XZXcBbLVKIkUX&09R8X8"CkBUk[PbT+[1$EPcI6Ir#929V
1F"GEq$c1BV95%V21T@YK,D`-,`c0C#aQ+'(qb1dqf5$[fZm1"IeE'kr8YJ46[#e
eb[XI2HYfTcHQRN`2ZM1c61iIUH-AY,[c-QYpH&rG32HZd0B(5MCMbr39j))mXd[
qc6m5b#UT$EbMDCXf"V)HE-IYHDUU4m*HG"FaGV6q(5UMj0m)iA$Neqb)36jb&VH
rLRVNerc)`YedC''AI'3qEX9S4aEZ9SjmQae*B8F'q,)@eY'4lbl2Gq6EbT(Vf*(
hj50BeX+j8BpFaiq828Y(bUcb%5bVl&+d)fA2XQkYfH[D3kqZDrHBr9VKj"hMeed
#U(BE2Qk(5k##XBaBap#TL-6F&@B&1iNKGGA4mH[-+#EVm,%#b%3(0K2Mf)%,G1#
@mp)$amB[FU!4Q)D2+MJ11M#,f-B11)SIX)aIpcj!Tr0a(BhP4RDJ96i3LhV!h*1
elY,G!@d5[eRNS"X4$jBUV4r#+Yre'UI$"IFCTi2@eN4YGQ!k!E'9r@EPq2[mq+)
3KVZX1KU-$@cV!e4GE'[QX0S%jkdAMF1"R4dk'Zrel)"!PF81(+%$rq-cj`-P9Kb
`MZLcGaRRX3-*ULTf)#RDJ88e11$SdfFI0FjP"h6j`294$ib$qL&&'Gb8@$NV5U`
++mD!&D-C+dE,V&J"9S`K9V$M0A3%(6HYF$G!!r',(Qp2*KahUIcb9m9I,K5M[+b
,mR*ZmCGPPf`[S8k!ZJR8CR'Ffje+$R'"Nd1FG!aZFTIU&$fEN!!iS'R6mi$5)1"
U!PRVc-`*PJ@!!ZVMZ[Ij)c9EZ+90YfNkYY8(5j@AC[Bb,(fjb&(mjEVhT5maD"a
9aF"+X-DU2LkUiBq+Q&$al4D0+bkka"TP#6A5Pm3JhQ3f)Z5K0&l8B)*T#X05kQ-
B'NIl"`EdhZ,34%%,UBI02f`)YK4FmFX1q,XiR*RUpQHQ"qRp0G846dVGGV,1h9*
h-V1P!DrGZlcAdU-,ldbVm05S`P0*H#SA6X%aZ#i)$'c6ZTdDB!Q``6B,C'B9A!Q
UHdhk%GqVSD8ZH$+VH8h8TZS5EfLi8Ka`-RqhiChDe14)94Q[#(U[B9[MYDb6YHm
N9aS*3`U'NBZl8TX5V21R0ejl&1+'LiCMK%j+3E31PPl5#,af`%8BMEP$rU4,f0!
ePGLI!#*RVd)A59Gr,,il`F!@mriVMh)*0S9-"5G6prT2CUBR4pbeI1,HEEbDI1j
F1p5)9cf@0iGiD8'BkN8V$$DP(9hU&9BFAH,BS!5T$rl`9D2,VU**#'L#VTXZ-Hf
)NQC&dS!Qe3[,C"9,RAdfB(Ul&LPGJfk%!$Ukp-dJSp16MSibMRD&Mil5l2'l'MY
kYQYYiJNa9LGZ2Kd-2plRQSU1Y++H'l[QjCRpprGBEJ)irr#5lq%S'L4likj)0i5
f2E&'Lk4dd@-)!q)"Hm9EfX'lA!-J,-2$B+A#a0l"dJl01f3bIQEf1I)J)04%BQS
r%f0S#RZjdUd0TLXYYFR4f,Z9[#KA1L*9fJ'PpHK+@dRT%aLNLq(UP(jimF-JD$j
@P4CS1&4fT%`&SD&$C8+!Zeaf@G%43TEF)8)AAeIm4'M+3"06Yi+TDa$$+YPRIVH
e`4G-TVUTFR-%08e'*1QY!M&%BY%B"[HD'KZ5)jGrm4drRFr-hm6f0TU#Y9Q0+F(
UYYj,@cIkrFRC1MhIEYmKB5QCGFdZ)MU#LrU'F[ShU[bfmKScGH0'3IBH&(!(#-J
fFRHQAM&fAlP9@dS)[TJ3R"%G$-PlE8KZTmGXKZ6p&I[[FR@p%TDLphlY`"#DP#1
m58NqNMF$K'bpeJb5ekqiP4323ffG%b932(aIH9alf(#6JZ5biMYP4(F3SN0Yr9)
q0,p%D#ihSB6Xf9-Z5C(pdi`JHjT!Vi`MHr9b(fKNVhlVj#(l2B'epRi2&Z,VSHE
(@jjE6NQV2H@%#0j6ZDGiN!$,-[i[qpP2$hd03NHR'hRiBchPV2(bdU[5@j%NZjp
HN!"Lr!XdHe-j5Db04YKQ%S#!5[lLlGD(XXT1'HrC2E[X&,eQa-EQH!"CLZ,`"38
aZJG,"c3'eV-K10ClbeDYPi3$ZAU3!2,"JH9Y#YAM"#TRF[BejrJbl&SbaV`D&rX
*f*KA%cKNc*[$Q$G(CFfHRqCM(LY8cXal0X2-DkBJC4K9mc&[(fHHP(AjN!"ZPX+
i-0e%Bjb0EAqrU0Ei3+&D#`AUV)3@52bbM$,H%bUhkTefHX`Z4`"f#S@Ha,bi(FP
H9UhG(jUp6CZ%&![kqDZ2Z[KRFE)D"'rHL&hFaBB9X46CHebDpTQikk&Y@V[a(de
)cqVU-rlM@I0Z*E$bjZ)$3aJb6Gc+KQa5KQaL3f,bN!#VBTlS4DLN[8prb'[mh81
eaYmC5j!!T&*#UF%Hc6mJ(X8AVjTbf2&AcjS4Q+Q`RaEcCRX4$2-biBrMf12'G3L
UV-#,"FC&!2D3!(c!MLaDENEiAJRAS(,+H*JBA5'IDMPL0P40S&19IYj'H[NJ'29
E-'8MT6hBUKE0ecG-4R5LIJ-JYiHTreYATjK0#qr3a4eBiJ[+%Pr!%RFBbl(%E,D
BK9M+3NT53j+bE4Qh+F&UE)G!bVa%pN2ESFKVLT!!emkDEl&Sl3KP*r`(f9HVf"H
VcTT&$fd+!,,&IKTI,6#ZC!2HB#U[C-2HB#SMf3r9h%UJTQAma$AS*"hGJd,air[
j)`ACFmZTBpNbIZ1mJ*FUC(*j##3&NUSTa*',4jDi6EIh@rN`rJ*$hmTP38im&P!
)p2IE+%523@0*&&6E!+6[RTf(EQ+UU#UPSPl()Pq[1f)iMG5@MrdG@%69ZpZdIZ0
Q"-Ff&l,J'$TkZX5Gk&iLj*XL)pm*06aPl[@RAfRB9Pd*USIX6C[l80bZ`HBqDJb
2dRdmS-kfmB&bYTZ)AF3F)XJ$fr-4ijYXa,K0h88I30dT60dTUM,[GFF$k+BCX5P
)(9K3V)d*qVP6ap@)e+(QmUhHY`f"8lA)l0MP42kR2F)9PIM(P"U@mRNeTc@(LTk
[lbe0!EEYUGf"9R5p5F$V%4$'RjV459Ai9SlRL,q`9I1%r9e3J(9DEDrd%(&HH&A
ca0!T4SRA5"S2Yl*PIdFDeNVlUUpUF[Gq[jT#h)Fd2,CBZbP#K9q,M143mIF$2)b
E1pr3`R$"YdVB'L'b0lGB-19U-kTDS@SC8r9U$Y3TNN@E6(E$4ELe(JqQJIQk2CI
6)a`*GMJmf-4['lUVmfA@aDf`*fZ$adbJ[84B)PpAAC[5A4G""k-3"rKqjUJ'm0h
"RB!l(k#GGLjQ!-cQL43UUjfC')r#a)iBUiSL)MCmGNp6VD35FYV10m0L*"mC[f)
X2TrM5I**+fqp#E@-D4CYrL3Q1-'B[Fr6P(l3LGR53kZS-G$DmK!iS)r$CPr#&@r
9A#1Y1IKLS%jRMG%q'k&@#Y'ZUDf&,PZ&&'#,`VHdiE"i")R#V!Xj2"rKNqUVX,q
j+P32TKGBKIJ81T!!1b5lp-ama%[DUc0jT-XkY@*C!jZ%iUN9hJE'G[UHaUXfIlC
-E,E$5H[i+'56DTE*PGBf@)V'G4QPBJ%XQ!"@f"9"jDb"lNI$d)B21lX9m"KK(G)
#YV%!c+K$Kcj5KE8A)fdJCa-(`i(,JApKD-%kmaSrm`!GXXKa@-8l0'[H'jS9B5#
lZ&G,K0l3%[E,U1)M,JHkiPQAelBLla"()MmG#P1S+f6fljb0EBcc2L+NDbId+ed
QkQMqjiNRUJX[BCLGKP(SJ46++3Y0JCJfiaL)D3YU4LmE-JS*&XSJ%281kRj!Nri
(!"fR(UV9IQ"FJd-*0S9U6F!F-!"mZTHTTh6M5a6X*8!%%e5XHDZBNK&kJFkA"%+
CLDj0aJFCB2-J5(dFaXHpUX)3ZTk"C1ZCdNPXi*U3!2N,C6%!V@K"9D5'0YDjq1*
`T9+!epN+F"bT%TJ8ZR8hEDBdCd)PGr3X$D16-A4Zb8UCS8XB3qH+@jYPk"+CSGY
#6BbGYd0)@h#@`XcEq3#!RUXj3hhahAhD$k6,`*)h-(8hX+8N-4"d0C4FcCSA1cr
)*JZ'+4&$,P`rc"q16h[TbT36)#+m`D&N)e5XH)'a2*H+M0r+8,U(`S[XG5H3!*)
"pli$FX1"VedG5U%+&p#`lVb90%d*)FNNqX,HT!K!mJL&TK`m5,1R@-Jj3kZA0TD
XH"HJH1[q!fP[eRfX8'[cT1j-,Z"Kq9'A(afdKDp2&QP9R6Yek$"K8dKK)#ZQL9'
`9VcJDL8(b9`4X@BlBkLpm`b[qKq1L51-j`Si)l!e5[2MUF#8S6-)Tl'$@m[L'Nm
-8N9elL44FN9a4LXJpCANB3J(U6q0iNkh-BEA-SC[!f+[P9QHb-pbS2E2'@Vr('c
RL,d@L,f@-lp`ApUC6ia%mG+00ECJ)Ga*$E%EVQ`ZBqe"*)c9N!#6f+fT,+D*Uf$
bYQ*1SNTKmkFf0L-YVFSiaS0dXND4*XmVSQKbKm*i%XGB(j%-8+U!EmA8[Cfc+ZF
pN!#ZIc6q%d-F,@G%DC6$0*8lVT[XQm[pqVRYb!EY[aS108NCX(3*"Xh$Lf('KPT
f`aM"LY3Q##@&@ebZU!e,3Y+`6&8E&XDU)MlBI`"N&jD$D52NY-,'d@Ld`Jm[`54
rT(iKP5&mEKFH6h#Ri)%SAlV*AQ)16R#PJ%&M'Mm%XmBJ,Dm6+%K*K3U$Z&XJ&[R
fX!dUP!dUF4YHZU4$lq0E9'+,ShMF`94+8#-"aUd)*V&Y9P+LU1cQpK6VC-XJ'V1
3!+VH%d$P1fC@JD%hFX(&1J)c,&KeRlaiP'k"%c"R!0`1imJJ!rS'R!!qqZ)5!ii
p-Y&aPSJ1Aq(hISR#8Le!,4kA(@a[DRTM3c#j"AqP5KaDaYrAeZ0"!R3ebAB-EEX
T%-'5r"J3N!$'0,q9YU+(E@C`BTfUkNk@I+L%1khX`DS*,!@#!+e1QJ,0Nc9NNR5
X3T+188P5*XK'PSl*4jEqc,Bj$FA%mQLNkA,RB40"R[*N'S9%h4U0B%p$#JErjPR
hVQ-RGQM**XEIKqT2-Q,m5C8BIqA8)5A'(dXM-Cl""*!!BX6i*%QchF25B#@&CJq
P6L6aMTm$Kj`NVbr0*"NNq@dC)XQ,+Ga,#SGY#MG$Q(ZPK,PRm*!!%ZEH$"2QKk6
lkj!!%ZEammd`qMeLp28f4KFMckZLN!$RALPjVV"FHQKG-I+mhp81mVcAL6c[L0k
0qS#6kYj(4DSIkNj'Ce*GTb3MPaBMm$,N1m#)p3pNB'p5"SKe9G5q+15k9bEA[GM
S-B"P*3Uj[UbANHXdPIQ3!"$V5@`CKIeNR!%SaK(0Ab!Kf`G9XPf+"*J#N5BLh[N
3NCKFl8*VYM04hf%MkSXISX49cF%A*b(d*lq,`QHXiS3q5fkYSUNFb56cec,bIDe
-jQq-3ZCcGS9T+bR$R!RqR(kZC-l10*2mQPBZERe&3[6[kT!!0LL-i#k3!*!!rS-
Uk9qX8Y)3#+LZ8V4CfG,3J'DXY38(LKm#5A@IY'*m)jJkj*!!U[!Z"3bS@MC)e1$
NeAeJeAdqcXjZU4Lr,Z+PTP%`T6p$3B6k%[US3HG'([EEJJKm#5e8Q2hpV+Ke8,U
+93ZT45-AK5E-J`Nmh3h!iJMlkMdjR-#(pKfQJ))YfB@&&IS[fel*bT%CKb1USBF
dK"MU5Aa%B%Xa&-'FdRC'mUCN&&Ma+3j*@j("8%1[003JEDl3k+K#Ta%c+"QINQB
S(4m[+mM9Fj+%$DYM&@!,1l4IDLlXF'peBBI!Q%[j`Jj(hlV%dj!!P,3FfHR&9--
9pB3IkZ[3-d4V)JTRXHUibUV$K1,bS&`K(INV"%@PKK@9'VP5H%&j%!AP3E9U#MX
c&)M`XN$%4VPa+K,*E!5&)HjRV+B`a%DR-%3l'A@*'SCBSl$Gi"5'@-2#%'[bK5(
@U"9"iU+()BkqaEGL5Sp9LiIL0JpJZZ&Bi`BP(1&4`a&aIF-FqMGUcJhP08fB)M)
2SBNQ&TSiJG"%S90S!UPV#%r340ceH0QRK#I@5m-6-#5cJ6'LeCAbk-)6-$$64&Y
+3K5'CN)89eR`B)UVPS8SYV%3a5MA#@Q))M"'#Pkc3)A!YUU3!'c&Ja@'HS)9Sj4
JaC[%kJ`%+qT0hFiIV*!!QiMRDmaT$&c8ZdQ8`-A&$"-PD[M#UiB[&)"B$9pi(l$
`4Af13a+qf2Jr*AbaF9`pi3Z[(,i)1B8[1"%r9L(LakK%r!-8[RJXlH',HY-0*1%
,KP#LNUDZ")',&IS1&2U95U&(-8+!A#hd4@UKMf[@'!A)P)BNiD&*Tpf+LJQekb&
%S)+dU9&3"PN2+6r+Z$i&$iJ+G+5(+A!`UJ*bQ$j0bkmqPP5JTZMZkiAa(YhcDYQ
RrU,3Uf92hC&9pP6CTr(CCCq+1kcH"",Y0k-3T25)XG8dSASd6mTp-b"kPb*P0aj
)j)P&+,bDYX8fK6I"Tr$D,H0[L#GB)E+-Aef4+"Gha,hjYaV"9YBN-@NcL-SJTNb
ZlKD63QD3!+TmfZpYE*TN@0QFZINrZIMQeN$mK$92G'#VH0jVD'4'Y,!r,*j`&CC
ZXHUq,MjC8%&`60Nk-!6@Kq1R9&A%(F2fr-SS%jjj!'LAfhd&cX4r-MABSNl+6@e
jaa3N"(#lk8Aq3*A#lhB8N@f0m%4eQ"eEM0@,*3aB$&B[cL#V&aGMY3-K'iC-KdG
Jf)1cf@NEX(Rark*XrQCa0J0I3HfRAQd"VL*T0'2FcXrZ,4*'E!'lYa`kGQII+l2
ED4Z`Hm[rMZbqPMafVb"f8cSTc(mj6)j2cDQm@h-&QC`*I-!-Mb)*%dBS*q,$(NM
AV--MFY2M'#b0`+`FA'+-c+2!6HjA`Q"*q0"G[8cBQqGcB%CeM!86"*!!$PN03He
b)+M$c2I1h$*b)i+k&aYGQ&J`*T'Z*5*h"5S#Lk1kD+[%4GY9&ff[S)3*K'L+1,P
*JBF1M5B'-5Fm063Re&4b-HZ[,("RPaQmreTGCNZ`24Ppdpa-baV9T0TE@LZ-#5+
8'0CbJ)EVMc(eMAm-PIIT*JFkE$Q6TbIf2TU'"a"!Q$Uh&A'E3e2%@+L*f$La3LH
$YQZ'VmI2(r%aDYJ4-19UJEfS[M[NkX08i@iY3SN@BDAkiULfU8VeYENLP"5J9-Z
SQ9XkER3P283!pKqjDM"20iNeGhh@Q+I*4k)6H49d`0iId#K0K"*2RCUr)Nq&Iai
,$Ih4P[j*cH##j$D$DkT"i$%-K3kS+24Sf0`4CUM$"BmEU&$3Ca@a@#NJM-QNHX#
d6@-[R3Z+[9K"L8J+5K)&Ied#CbjBD[IeaC1`I"+4b'[L,1fYMU90Y6D@FN6q,V%
d1AKF`*e#TFV8Uc!JkiJa*$CJ'C@jj5-k26$JQFaM*e'(8cjPf`JF24LM)#N"Ve#
f5i*@kDlY5!UT3m98LXGKI'PdbY08330r&fJ+,-P!%@mLCV)L(P1,11pSC8NRA3X
K1[JLPRq%)HS*-NfX&[-VY3hE-[dYbHdQ,HibeF$-U'*1XbY06R12""Q+A2X9F@q
H,j6GCQ%'h'E"!q!f1HMY8&$rmIi-Z-hUSI$-Dmfkc4V&EBl09YfQ'Y3S2%518kf
iReEM1XGQ`(9D8APfT4)(A!GjZ02CHEj,"AbXl$clQ22XCmkcSalRb5Y!KrZm`5R
dd,ccV)F!LZ)m9CC8-P6km"#k6eAdfl)$I9(L3-GQf)%HG!)d(%bm`&R-A'JrFk%
GpEK3PE&0Y5TMdq*#Qm(TrbHid2T#0BYKE1F&[dP0B$K4C"PIYJiX@FbBN9@fMJG
N#04Q3Bd0NP5)V,)ADAV+fld)cLcQ*RQ+*6jdX@0EE-HBdCiAD"YQ(LSer@3$,GM
Y"#5VRIm)'i*XX%FR'liSJ5QJ)RAT(`J`dPM*TrHYAQibKXbHL2pq-Sa0i8GkL3N
fr1""PX5K'"[jfUTLLqlKNrZrPA9bEp"Gr3Tjf-*1&`TK4R[K10X5@dZQT(5mdU8
'Q)EQLTl5*6hkKZIThkMRjjIAR2jEFd6,2V9SfB'Ki!eXkJd2"ee+DF5m2RGq#RN
V635Qrl`cpdIpr"YQ"5AVC-0H@d!4#qK#d'hU`PY6NC!!(X'bT!XCd!M*$"8HMB,
`@-![JaZ)S&%#I[ZaI82UbGVSDkKQFlkdj#c"9h`*2e5A80[BN[%e%,T-9m+1C,6
2[ZLA+AfAZY61N4`Y'1k2ZDM$&@&QbrMEkpiekCTa1RAC6$+caFaRi8pH'6eB6%[
M&C-*j&Q8'P(9cXL@Sp+b*H,@c@m*Ba9NZS-K(%+HE8mX5bQb4`,QGX-6bi,hL#H
Xh#c&h4"h,6-P@"X9Re,Trc9R!f`U#JmX@TE5M36TYPF15NaL6))E0#aDjKd+EQ3
Sb`ejR--fY5IVkQc"pQ*SQqT0P6ID6CH*F0JBP#)cCd9GIlqZ8A)'*3l"05DCG!!
A,Fd-MUQ$UGXmSM8c0%Nkp#!F1AAB8226&3kF$[b'%SL`B3if$0Z2d"GpQZ%LAK9
5DVXpV!ih2)1AP',bmfBf%f89$M3cc#j4Y*r5PTXC,-L$`bDAbfAISlhTHMU0"`4
A[f6SJ203GSN-XlS3#$EcT#f0QkRLIXrr6T5U99'RK`AiEiMhP0q0JNr"bDUal-D
KkAF"RG#0qMUk#"e`[SYTHRAR)`MA('1Sdbi0I5Zb8mRN36A&[1"`ZQUU46(c1)Q
f5j5Mqm2KSc3P(PTb)8K6j%[L!92&V*56%8EZfTe0--VlfjbkY&"E"lUS1CH6ZmQ
%CX`brJpe5%$V4hG46TXj4-9jATSF5#U9$5U"'GPX6IfE4A-Ga6EE4jeEED9N&-1
Tda'[4EcZlY#YXIZQR0FqUdLaRmq*(kQCJf88ZRE5Dc,$Li(fkSfRX-j*$&P+8cX
MV$1QHqPLh#4kbZe*3#d1XLc!JKZ[b2c2(cEEZLZ8bCe(L(lK38*16X5QJLR(d15
M"EDS#PMe$92ShkJTmmTV+MTL5$q$bBXqEA06LZ0m6XIemH[p1PHSaUE3N@S9)Q@
@+-U%lq-+'53+FF#rR4VZfZEeS9S)-EIVK9kU+fGT*Eaj2,`+#(fVV41,42p*@NV
b#piP&`QT'!!kDdHP58bUXaM@k8RQ45CZRT!!RN40M#ZXLTLC"IdbEH(-62b2iJ)
Fc!8F`0DmN!"ET6Zh,h!I$GB'k`"*9D0)F@&V+p)Xc%NG6"G3M+JQ0V(ZaM#QR)r
'KE&k!8b'RBbMiQ*'F6-5GX1i&)6%e+JmNEa+QFlZ8FfCQUmjZDj$EeV8@meh5K'
JcR5NP#V!krfjbU6T6'E3bd('kTT"Cqi`(L22lT-apYR[bV1@XEMU3bjUh2TN1Lf
XTE&10F4d@$&R0jdcR5@p-R6mUPEYpS8"chd-84N!RYX(eU,6GV8Ki&A-N!!aSiE
h4j3*fD*LA%Yd`Yhm,*&4KmcM%)&RjHDDl6$j1d,G!XT8Ha!1MhJdrC'G@YKD%3q
$3!2aMXVA%c0c6q8eq5YPXc8rP0UUAG$VGPm0TT+QTXB8pq&dG5%,E#c!@eT(D1Y
Ke@J0L+,*JAH)N!"36%'qcBN6Qp&5%&c,L*cb*c&5D"PHr&Ujq69ZIUAFr!Sh2e&
ZIS+Efj5Efh#c9,PCLT[jbXemh&bRh&b(QlR+c9cFr&Ljq6&ZEP"ZEX$06FV06I*
&UeTKSi%)9T!!Q(F)CI28&mmp6N-ZRbaSV'Y46&5q@ME2I`NrkaX2jZ&(R&ffIM@
!Lip@L!"cB9SC,f[CG-,`*YaXp"@*@@8E"bGdiNC&N!$RQ!1Y#,CQYQLbf!e-i!B
)h%!#bf`#0p6HLjmU*UU+LDTkI3b*Z1Kf5i5SKGm8-k2i`c3b&3[(153Hk*9aMhH
1GdlRbd4#QUTJL0c"1j-dl8!fIi%$ZUR53'N+2p9(Nc$kqQmmC(""G3)[G3)"pX,
je+,3A%PYNC2`'"V5*9`JiM8JBiXqQUEc)4hMkF6aUjA[cl6'5LkRl%XJi3@hNmZ
D8JUYX8@rp"0bkKJfUH4bX%D-6EKFjd8KGJ`IiGXIf!4$DNcN)k6'D)3*@#IEhk`
42GiKeG688haC$9F+f*0Q)e#Y5M)h,F(dllqC+4jIZL34-(hY0a21iB)+A(6La)m
0cjf+GrPkaDeRB1S130CHPJ,K1"-L`maie"0cX(8AEIhr"a2PmXh2+1RA9C5BF`D
$m!(eaC!!B8*FfrbDTUH'(pR+M*mbjh1+,c)pXeCG)-abAE!UM8pGjI*58q(T8P2
ip"-!k6N66paNH'l1#pIj`r(A03FHp-kCR4#-b`2!kGfCbCD+(c`k-0c0#D!TI+-
VYC+Yb&@DFS!8pVYa8G@H6Fcd94ZDJ2$T8Ma'I&fd15',jIrS'Pj2F1PdHlGC(de
#*qFTV*A@[!TBXD$Tq8VVAFXU6)@'#T9SL'Z*icmH"CC-0k!,%jFTM+PIG@M$f-4
3-8`X)0HSS#%Ur3K)[+3*($Nj!Q3c3q9@hm#j[D3Q*8cG#CGfMKMZ`3Zj@r)THC%
0T[4-f`,e#&-rE#Me2jei"*9HD$MV#i[(A)2aBppEEVVq0c00PF6qq@HAQjYQiZZ
CrU,@bLfPmmkHU3L-CJ5Rpk0IS!-99@*M[*@D(EM61dr3*Hk3!%jal-5I)hB'-XJ
,b3V@qB*ZA%C""Ul$%I@bH+MLQ4eDcr(V$+E#a%6$@Am)LcJlrc*IN!$Kp'QqP2#
Cdj(4l&%(dVi3S46Dm'Nma,-ABP(@0i!BFrf&RE1LS35@*%CE8Qf`YF@''*jA2qR
'P2fX6lTl*SL2hAP-#pq0'h3EidGmrSjMRh5lLZLRjrQlMh'6B"95*,j!+[AXeF)
[r0*I12-A#mGrdZd2d`(a4TrH-j1,T'6rcTRL-Hj%bYh1k%QK2lVJE&+6TYRrYV$
*D,aGFc5"EY05NR#KTabk&#0cc@d)Ja8T59i4Q,9M+2,d([l`BET)VXUKQUGmLVD
!XYIF"Fj1SCmf3kArB(l6FR-maq3Y-DF8A[@+Xm')*&,ETB3L2ab,T*T!iVMLb!D
43+dAf$CH"d$UJKIKR$Xm1$3#eaCH41V28ip,PYXP2BB1rq2HFT@)qCl5TU*$[Di
abhhe*$@kMHN0NJ@$aBr0i38*Pdq5(E1TN!$5c!e0##"hFFG0Pim&)MApe+bDbkH
JVF+J68T!YTmF*prmij4J2G[ciShT1)ic40E5&2!fDT`Hl&PU5!61H2&P9fi6ARI
h-,@2K"(M"GR3USP(mZK5Z4I2rqIkbh5$Lq@G6Xf&XeeLR31J*'ce(*T(EdACaH!
UfU,-R$)Jh5"8`9m(eeMRd-,V((`+LfAmCbZ@'R,,!4aj`9)i30@*60k9f9UGSq[
Z[DVYJ1+ZF1kT%+QXEjjF-!BQ4*h%aJ1jjGD!Ci)INf0rm#CpjIj3JJLjZ0bZjlR
b$Yd`3A@(9Je!@j'i3r3LZ90hX5EB@2QBZ@l-EDH(08c(F`"jlL+3!)TAS'Y+r"3
32C,)YJ,%42SU%S4cbp@Qm'2R#[9RYJC6R+XdNPm4"bP#B-0cTr+VBb9ep(0JNlK
62)9N%Yd[*V)4CU$T+NTUYQXU&4%SZ!*ZD'IR""@Nr(Tqj#UfQ''D1+8caPK01f&
Q3!rD93$Tj)a%J&)*e4I%4PX3if)@Nkdj&a+BVpm$"Kpr$P9VQ)$%r*!!c0)hL+9
)pGpCBLkB#SDb*UIJ3k46+QQrVUQjFV'Sm0F&Ja+3!!VXDZrINf-`31N9!Cr5VE6
p,0b$"mAqK1F1EDT2DFC5fl(XJi9lTlq##c6Xe3aJA4%QL(9J#,R"%f+4Ijd+6-d
"M-mb6D'0c4@bkT&ZD&FfV14TV&H0Y#N%VEHCiS8SEVY+&N@ZR4U[(VZBNhHD8LV
D*U)6T9#lfCr8p5R5YahXYXJIaZh0SHIj-2r2P"!4m"mc-eTicF'*`TN''qS4AF4
%hkb)[TQ*,R)@rAfEk*E'I)*CfLQ--QX*r)K)AV9U%F-UED38LDai&8%J&L+HG&1
,DR+MImFIV,1aM8eICBa+U66PN!!j8$+-J$4bL%+),)##4!rG`f5qGmmJ3$46BBQ
C6GNL-XhU)H-B6$'4EK&F%@1Z(ZU``V5B##j'(p11q1fU',E4Q`"00E8+RL3+l@4
+e)949aH5hE[MZLrlh&E0'PAF,T!!5INA+Y"#D@Qdd',,De1A*bZ1j&Zjq9043Pf
4R'M+#&85di&+FYJ368NX@@a(3('0(Y&Jl"FAV)8KMDQQAX"XiAYe-MARYl-*E$H
6#(CJPLP@BXlUXiIcY$rSZ'EcKX)1c!M36hF3'8)T4UL%IP4Rl!Xc!RRYqN3aar8
K(k64*IjeIZ%!VN5`R4QA!)')j(#V2di,m$YX@lVXr#Klj9!@BDFZ4@R(VjVBHXV
YKL9@0a(cQP191+!FUANKDMGPRD*f'$mk-hqLXi$Ndk43ZJL&V1cL-eCC$4FcMFa
%ZN6q%)Vpi8*K6'A(-aff)F5+@cCT&r5*5&0hX05[#fUeAEa5Lb@RjPXZZpLPiAf
UTZ0beB8p6BUKK`LKXTmC4UbpR9HI2i"8MGlP9'dhaLR)h`X!Z-N(N`!dLC'V,%r
I42S!+R+qV)jS+dUj3e`J[k3dT4ENUrjaTL4#MKTPb''P#jl3(FRmSPq891kYa',
I9#F46dXVc`kfU!)(0&PN2p,pG9-4UiMk""Da"bHQ!JeJKGJ*$H"Ni54Hr8Vdd`@
p3FVMXBmc%*HQ)N0l$Sq3!)d`LDR`$Z%VdG9Pq@pd@DBl!Q99&"ci5VbD3mkA&Ic
8E8%&AQK8TjJc)TbP8'B@H-aX%bYGq)@lm@(U&Q60V'C0Q)&JNe93J+T$,Vl8mfq
6@jhJESQiIFlL[%0Ff%YZ0mZ-F9iN0dIrNYS%1AfTZJNd-S6iASQ6),"58"ZNZ-E
Fe-l"#EJ@qACUmMSR`lQ&BI"`L(9-G+Y0)T!!P5j'CCXFc`VS46rEAF[R,S[mE)2
8d65G[4Sh9DBk*48er4b0hj3L,(AqD,'J3qTZT!-1QlRcciIN4I`!"(VC4Fq8VI-
i8+ddrqN&P("I$cSUlJT12m)48blSIZDG*H4j1e4FRSQ0MYPcmM5*!MN&5Cj(Y*X
abITZS&i#B[[D(X'#dGb+MfJ4P`L#,e(k)!$`4l4*mmYCiaX,NL'J`X2Qb@BaKiH
*r#h"G$93T`*9HmHbd*EbRD4,4VFah-CJUJT-89HASHAd1$21Ebh'MJ%*1q5$fKV
H32[E1[($$q`G'pGZ3N-(-pZ&p+@[cVQ#[c$lA(`lL@23@8T,c,q,!E&S#&1+3""
0+S'J9*fchY92AdjS!TULq`+6a#KC+$+""lZX8X4`*I&EaB&f!X$Y"8!j3SdbKCd
$C"#JDh!QFjTfAeX8eHcNd0QPbj6U9J&+X*rQT0[BEjGfA+5IjpA!ad3E8YZK"V!
[CJ@cF1N9@r#&)3q#[h3CGKMf-SNJGd"dQ@)G0qkmI#XZ2c$YXRJXp,bp+Hqbrai
!$J0L,#"d#MfaPXMUef(b0IDAF[2TLqD1m*SR4ili*SR(FTmAQp,q!l(,hYTpDm9
'1PiN[lc(&0YLCQ30hlc#IirD"3ChM25FG)3LXK3eb,NDjm'jEP4F(`,0QBeZd!f
f`#D4@lrITi#k$HmdZ"AiA`8FhpbY#+F[*H#l61kM5Fp+-L@9d"rK!+E%+0AG-[i
Vr&%YRS1TiS6AP,2)i#[XR-NHLXJ&-G#$#[`!hADqc%2"-%dE'ja-J*CDZCI45G!
3P&bkL&d`Ja@JEE,,c+DATRl3HNHUG*BZpKiq,VRf%h$Ab2lB"B9@l5ID%B!@SRE
%08"IT0ZG[V"VC)6"i8UU`ap"SFl)#rCP2f8k1!2Qe"&bAhQeA5'X8qQCDkL!9"-
5Q2$h3k(cjAmU&`j2qIkT,bpE`Q[TVk@fUUTU#6iXlUpp6@J4QLalGYjXHGEbd1G
I#J&mP$iccG,acq[(#BZ&abdE,'lK"FXU`6pqHBN`LelrJr"r1fqfr&lia,+B[EE
d[LLmp&GKjPph,2VGkLR2[2cD-jerIUSckD@Qbm)h"GmERd`*Z1%00+h$mZADYF*
rV9elG2cAKDD[#qHr,T6qXr$`pbmh#8ppA6KJ'ErMJ2"IPY%llV@mq2Nh[K,qqqI
M2KAqM-mGRqeb@'*Eha%HHi-ZJ+[pUd$V,VKSZCl,%`i,JDSU)B[p'2(G4jBpRGH
%mjBI#'p2&LjErZ%rPPYQ6"Bqr&Ki4rKmJ[$L*q-X-6a-q,aFZ"hUIN[ihEMRK5R
#`Xp06`Q@'F+b*`Aha5H%P)q&mm,C#F,VJQ@FjFl2'i4A2ppVDIrm6m)[K$)FQ#A
mbqF&6`RIR#'Xj`H#-fBYR$(6FTH`82Mj0#&[K[#"F(5'F%,ipM4KmM3KHiD3!#X
%CJL$H2'Pm-%chbm4GJU@V5rpcT+(CH@@[b(XHZPIThaj8AMLYjD*FbU%`&p@VKD
%D49#f5SKm%EjbSXIchP9Q,AZjGm,"9m+U60+KD&j3UMLVmpIr0DTXPRMK+&biHP
AT`Rr85SX"J#3!aJ!!#(i!!"6-!#3!`J!N!-J!!!r2!!(UI!!N!-+@-!!AF!!!&h
!!*!$'Qi!N!-"GJ"1F8U$CL*"l3!J)$`r2!!!)MbTm!!"5N&Q"%T!C`T)3%K"))!
K33!%3UG"q[r1d2`"!#m),c`!!"PZ,`0K!!+X9)pR3%)i#Pj#Tbmm4%&836mm"0@
S(h!"%F!+ANUICaK1F6!mUA#R4N2k!#SLL%(k!#!`2+P`TNG+JfF%F!&1G8lY!#*
1F8U$CJ+Tp(!!6R9J"J#3"3&1F4mkrrC+(fB551IJi%(krqT3d%kk"Dj-h`F(,cV
rhNjeB(*"6%&%4%008!!$!*!d8(*"E8MRB2"d8*r#,dJ!)#"2)P3aD3!8!"JK3!!
N-A`!!3!XdT%K33!ZS!,I`NcI$`C1G8Si#PjR$#!U!!KR$#"!)""R"Lmkri41G8M
R(`C"q[qHF!`L+J!%`VJ$'Q'NCJ!"2NKkrij1ZJGZ@%q`H[pDCJ!"$U%D,JJ)+J"







|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|







153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185

186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266

267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292

293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373

374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399

400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480

481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506

507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587

588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613

614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694

695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720

721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801

802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827

828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908

909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016

1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042

1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123

1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149

1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230

1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256

1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337

1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363

1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444

1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470

1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551

1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577

1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641



1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658

1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684

1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765

1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873

1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899

1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980

1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006

2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087

2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113

2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194

2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220

2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301

2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327

2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408

2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434

2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515

2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541

2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622

2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730

2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756

2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809

2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836

2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862

2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925













2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967



2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991



2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015



3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036



3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183

3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264

3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372

3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398

3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479

3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533

3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586

3587
3588
3589
3590
3591
3592
3593
3594
B(2*@#`hZ6TX@%UecE0J&!`VeRa3kDAm%4%)kAB6D'8NRI$KEDZ&SFi3D86LAdLr
h!TH2mI*Bh3M1%-3Q0$3[XZ2`r`"Lf45V1#@4DBbkGrLebcC[S+H(BrEk$FJrZAb
M8Yr5c8Qc#mjeQM5B-Br!%0QP6kE5c*ME@Q"HN!$MA$aQLkf6'@Yj%kL`)Vbi,6#
3!(9cA[I5f`fUAS!eI%k[,)9+Q%kGZ%1e#%GJ$Qjkd)2rbX4%llkAf@eJh+,c@l5
CB$dUpE6@FAP614b)9)08G0HbCXb3!,HrT,%F!1N5dkEq@i)b))mN'bRJd4KUXYr
#cNU`&-!Cc"XU+he@PR5rbQK,9hrLDH8rB3XYpY)Blm#I*L!&''VDGf6!MJ2Ml[E
c"(hYXh8YZJ3raeM-PQ-9USfdij2lI3TZ30'PE%'3!#519jQba!SN@A!1K"PJchi
5"6%hBD,TBP32lPBkr%L&kPZJkaIRkAZMBBrM!+@3"!%!!$i!J,5KkFDiRKDr!!!
0p`!!G6N!N!21!!kc(`!(VHF!!&Fa!*!%$`"8DdaTBR*KFQPPFbl2J!!!3,*069"
b3eG*43%!rj!%!*!+J(!!N!C#`G8+aDHS%N*S,kG02Yl8q&c')(UPE"KHXQ&Zc%i
kaUL,pP3blM$fb62q9pN5L8GTM(GYT9jP$M*N69HMfMM(&jrI'D)`ZGQDIB6dIJG
PJ$bX2*BViH,kVhGJ-2Sa)GPS`BZHaT[L`mVB*&l$#Ye)rRe5CId1$SrYJIXd(cm
h$4Se$M4DKrm[U%G3JIqFkej&PDLl2%`9I%3akEiP2H%&0T6TJEMC*30miS[+El!
,`"+0HZ%q@5%l$G+Tc"@`D0K*N!#H%1T5[FJaT%dIb%AM[5Rd"8rr,,ShK#@YIU5
3!(5V)9+M*HN5rLF-3S)l2J)Z3`Re2M@aZUC8iKM+p3emM$5hP(-*m&A0Gj%qaM8
2IGPd1,[1P!ND&'(cb1'eUQ)2qM""4KJak5V$fQ")mUZ99!DXA%0`)!Q'jU!N$0#
I!HClPSMdmI&A6Lb+M,5)KP6)*j26PS@C1BcEK[Q@X40ZX3!MXJSaQXFHJ%lN,-i
m0Z[3A"Dh[-pB1L-M&%lemcacAjbl$(bHL%#6Y'0hL9rk3(aa+KFVZAbMZQV$U'H
FARU#cNeBKcR9BcqqUARkC,k,X%5ea"Y&-%f#DVR"F@Eq"%Z8VUp2i@Z2`!)8'36
[DS!e"!S+2a0lMTYar)L+YM'"UQYI%3q1Bm-kGB%'`q1Xh#U6H2l9d#[CBha(9+8
4VVPkQ-ipr66"[-mZPY-Yc3BPA9'c40*1,eMmUrjY%irj*eJ`Pj)AbCbEFSc[NcG
"p%N2(!24Ll[!`rbmiA-p"98JX"#P1Cl#bZCNMDc(!+q&'HFcA'&mhR%e(#&4M3#
dY)MLd,p(jk+1ZICahbSVF!l(5k9bAUcX13&VIIcKID5$@fdrqq81jhX!@NXm3kh
9QP$q@fb&("ZG@YrcRKi*!6NhJU$Q*m90'IcUheJi8GVUSpPrN3TUB0Q#R%QqJC1
ESYN!dIeAFC9bSK+8hXZ)5Jq8L3VY-%V1"4m%1m!Ejr&&YNiEkAJG@pTQeMI`&E&
(0K)%b+(LQ4!!ZQq2%!kVL"XHA`XLUIk"&Fd9IaRlT(JDNH#8PE-*)pX44c6"fK0
r$b%@3GVk&&bEN6@CU#liT-q&@I+Vj(Yk5F(bZ33r&S,JKp3YdMC3E@"%1RN3D#)
p-pll+9e#b(ieJ5M[)IXK&h!8Sb468KEc"'qKckbB8BHXcfiihZ*JA&apaBr6M6D
DGIDA9aklEp64"N%R8H!4@V8im@"@GhKc)PfR8P"AYlK$1q@Y(6L(Qk3TAUeP5kI
c'M'H58!qD[)i[Ym&,h!YNJ#'8614iY[*c*J3!!G+iVKdqH9haAKBrDp@!Km&R'X
APND4T3&LFiVF(F%RDhZ2V6H+mF*XrJaQ1"9F)Pf@MIlc`h5-YHUhFe%ch0[6)Mb
+G0rfm5TF#If),5YiRL,jhYSI(MPec"P&lYYZ9rmHejL@D@f[r5L4NaR4CAri5A4
qKV-G)lbG`5YE&!)NE*&pUXTd9C8%H1j'[dePPD*$'FDca5'3!,Il@M#REdahN!$

3pbCbHl8*TYF#AA4l#A&Je4#)e$BkE1`N2MZXF`eacR9c5(U'N@%lIrl"e$T"Ui6
d#Vq2)j3U"4D8G[Jl&%[-RJN(M64!Cd)j&Fi#DI#SVYDIY$AHr@,S4K[MI2!Ikhr
AHYBa[,EbmK+GLDlrJ*5i5,5[e6MG0MGS@GG[CVLX$1Q(Y0rH,jq!XX-pdVidd$%
0U"`G'6PDeFb6lbDbQhP82'BiZ[hH89KKXQTm+b+Y,rT#[L4YGQB0!D'aV,kcPZ1
`$aMQMi-j@Eh+p"H@%m&*kR`ZV-Na1kcc4fH4C&i)U6Nm)Br@4i'1iK-'mG8ra[m
@*8dIN!"@mEf+[m8##)[mFTA6YVR8QTKS1UXLc2I'2RQeD6)&T"[J(r!Z#eM9$Tq
LAQrY256TN!#,JL[K`f9,48@mrTDdPc*EJQPL2@&$B[BQrpXTfGlJCH)6%*&S,*@
*CPTrQDVUlh!Ji4A9d*RUpeCipkQ[Ta0)8aj9eNKCLrB'#"a-PTH'CB`J1,jZ1[D
!mKT-D9[j+!([Q'4qSFm!@*N+bVL@Q&C3PG$2(QXAC'FaEIhrCCHDH,A516`j(6&
!*-&%LfIZ,1l`%1m9E@QiqfaZ&f@Mcr(Tl`Y%8dP+Uh04#Te4&if656Z#fYHa%VS
+b1m+3ZmUem[U"kL)ZY`ST)$V*Nf8S&prATGMPClcP!3@"UcT+3BNmc1,+)45Icj
'F&Ca)ZFp5c*mD8rMKHh`*DJPG[1-$f5BYCP9,Lcm*Dl,HfQBRrV4VTT"*`jEq1J
8&[bRV1l`h+Y2BG'&QR3RM`T"C#G'3eMBqJ@*5ZA&YfppUQXRT(*dhV4ed$Vh),Y
4mAr"GAM8jpqAf-bd4F$[XhR#a!CmFAbG#Gmq6#,E0lT#)Y8[X*DrN8J,N5HP5CP
5aH'3!"LjqfiR+eA"[(Eh"Cd45JiQRid1YqN+jR%DT+Z%`PkKbm[ajp!HhhAe&-e
fC*eJEF$Yh0R1Nqj@#EBSbZj1&22h0D+H&CU[*HiLp6PmXNUN4GF@pJD[0iLYmKB
9APKRHHVMJm&DemD2f'$+QrV3L3HBN!$Z3FV-G8Z!l4+chF4`d93"+MA!1k)'d!d
$I0Ehe,XTG)9+-YC+9a+FSIH6Ljii5#SRG1PmUF$jjq*Yq3Ei5-1&)EIekXVb!NT
KBK$XbQYCSe6BIU2!#"R*qAM6TR"5$`lmhBD"&cmLkMUNE"ApB1r%2T*45MB$#)a
Y,5UR40JSYj0,rS`I&P[E@Ta&+1"YGM(LG$mrPl`6J4Q3!*Cdf2UBTEl28C%pj-d
98A5#pJUc"@UcibLSNkjajVkT0"0Kr'8*BKP89elXHl'TYQjir8LAh22PS0i@%dU
i'31%)eFU!)4Y+j[2XlL0"4"#fpC0m@q#X)`V'@)HA""HZBQ#l#Bj8EdMfPra3r@
NR9EEU+cU9aS#Q6S+%%3AbGE"iN-*(U6r9MC5#)dc3"+V&KpdrD9#CiBb[(Lb6c4
5!ED&Tmd'22G@8laIRq1A"FFc5q-1m(3T94l6LYHQq`mKG([I"f%SFE-(qeJd@E*
kR@+L6ESG%N2-D'GI`%VaL"h,`0!Bm!-6jY*PV&L2B`83ej0S[#C2Ak'X4RjjYNC
M85pC*fT0Jk!1&#'Zah!i,hK!S['%RR'aVE[SK1m!1Y@H5$K2hbGA$'#!ajA!q'5
K$@8-SpVD9fLGI&Mcp8M[1DLF6V6,r[r%M(dF(p"D#d8R#6$Z-H&edj'HZ&CLYjR
TEjFr&cBKal*h91+Lp"'"E&#1U`ml'%L%GHMS&XZQrF*4Ikp$IbZLA@XF"r!B%5X
Vm%jZalQPSr#j[DMHiY**FCph'[Rd9M2dmZ@Z#e9BjRVY'XYV[jIK0p9`dIRm#Km
,R#U3!,UR&P`C-8c%,P2fk9#M`,RDX!4SKDK'`M#,KFX6E-+'R0e(F%FHHDmEQl#
#2+cIh2VLP)Qq+JdFBhLCUVe'k60%LGU,B#mBKrRL1$c&*SJU+lpHKKpKLj((JE*
&RMDQ4("(3,r6XhA5#`+,+2bqV2b[5AS'XBY8#YSL80XUPC0ZA2Q2-DKaS8%T8c5
2%r(M"VEIL1E,F+jL"jMPjL),QQJCReCRPk@MjLJPGQH")"p(hja[h-(c4!G@3Yh
C3*SdQhB"VedX'4J-#`@++5)+`*9`F'-R-T)K*rPQ2!Ppk*SbX`Lh"eJ&MYm2V%T
Raac6Sff)21kIUCj9*4%c@l!14Y4Y8`Vj2!9LXbJ%8e@[UQ0"!ea1*Sc9Iq@5Y9+
(Z,B)YF'F-+2V1md#ihEA5YJeQFc+&6KC[Sp)+3E0rqmFRTMh$@lZ3D#(!4k&mD#
c5Aib-*-4Shp$Z$0U)K81mm+bf#AUUHj'bcASp4c)c3,))RL`62)bq@2J#BcM5%c
@XSL8CC!!I'IZ`HRCQDX&'+YZBj2BQ*+cCJhY5Bl1"kf$d6bkZ%Y2PBX&'()lJpB
p+dpi2+19idEL+!"eD$m4#dT$c+V8aL86QeMJXIqa0B*#eQP#Y)[ej*6V0YSdkCm
B1p*'PI+NjfIh"1ZGFhj10GAfGCHDmd#IeU%C8X*YVbp)q-#K!6[KP5bTfXJ`,l$
,NBHrdK`iccMABHd"FY@'FEmG(%LlHSACiCH2lH8,,6E2MM5C[ZND+lG8VLJS8VR
,"bZ4ELQjdj8dhAcX&#QQNlGrQCNi6dX,(i,d[ZF'-5&i9VR-cB+4p11SSdTiS%Q
Y*,9`[Ca*(lc`Tm+08Q9e+1!JjkBbDr3j*cI&J!-fCLMpi,6))dP%XAfdl,,8Djr
'c,2C'd!ZVebc'U6)%e"rSiAdjqjbISXfJ8ML83QiB6IGq%['ql+!iAaVp5*dLEb
I64'N[UIUhpCfI`8mKIrYD#XLr'hAIf&5SF!KJl"Km8jb1%HMHf,qq[T*4J9Ar,D
$!jk3!+3)aX9$"''LGeJklrjPc,Q$j%bT%DII-GMiUjeV&"*E8Umhb563"%h'e0#
k"KG$dY8f#4*NDp0r[e!NG'heTVpMN!#ND%5"Pr+AE$0Y4&5f91$h5Y'aYV9K%qZ
3!$ih!Kc)))59HTHcT5qGhRGQHeGA'4m%@95UhEU6i-0,jVG5A((9RSm`$S8[UlN
a*(@IMCfa!k)V(Bmep8[Ucldi)h)222YZcZCpje)S5+j1Nklr12C!GYGUZZbUm5,
QIiR[fkM'fTq6hchcKF,G0[(52'AFA5Mq$1MNqlm#-,(i,BU$lKZibT!!eM%fpk-
aU#6X!PDPI,Ci@UkqMi5XBS3@#`Hq0*VkM!pZ["aMGX@P`FhpM0&ih0eH#$)6e[&
U00kI+'H0Y*,6ZH2X2dF*EepLJKZJrKDqFMqjTT!!TFV-(Y$L@Dd+6PfYcqiA&-N
$M[0B3rN$R%@'@CR2Pp"k1`mI*C''@N1(IJGY0Dej0YVIA"211YiqNZQem#IS#k[
)G)I%UlhQrXYEeE5Kbl)k-dHlKM%J9IDl1i8pZ&B`pZeL(P3c!`%rlda%Q2S0$K2
5S2UffF[J-Z&La*4I"Zlh4UEcIVd48J'-3R%'fF,Z)34mSa%lk20d#)9e8A[qKH5
X#D`h)ha,NfDbp21,Fh*X*-1@'BMYKrZPf,X[C4Sma#arH2F85Il*jeJpL2@SrNr
MNNeI%0`P3l-%UDC&QM8Gi6M*#RQ*0UfeZ6N"N`PCMRK)UARi45-VGJ(BL5`ULk(
r-f'3!+MQLa85L$kf6p0QN`LV+SmSbY%5$b!EBk`kUD4me&h-fDR4[#NSI$lU`I6
6XAH$m(*1bh!Q8rDLEJI,CFqI9%[8'!4T#-A#ZB4fDH'+#S3Y4PXJU$dB,Z0e`10
Zh2Rj,mjDa@'-Mh5ILMmYjGbf09"prDFRcDX9e+fSeUC)rRCrD`L`BL-EH`TYb9h
hq9FdJ*P`4`JU[1@Rb$!115E&K3Pa-MK@T5+TBFr9)!&0@JF&3c@iJK3ieJpN%!X
JpaKNAMe639BKcPbF'GAUDM0"D2ULi)F1iG-RM'hfKdbc%J-eHYRCPFNhDm5*T*6
VBf[Bd@9GmrXJL34i#$*T5%m1eTkCVZ1q`bNQT0fFSbKJ0GPh8J[FmPV8j-FcM[c
[iQr8K[e6e$"$p,Z1M5aK-aAjEDAVejR93@,qC,Y`5'3V$KL![I'YJ$DEGBNYLeK
Nl2jNJNG1bJa@*V"@"+AE5Lhd*!q(X2i*k0jPDp-)p#d3pf83"4JLrJD&'Pq*L#!
QQ$$)VU!JE&%$58S-bl*[lcHEm0VDF9@0ef+6$(qAhG@+K+'qYG42LJ(N[CS[[FR
U1K,D)b)l[hCqmRl3qYN,BV6D`$T$j'VMCr4Y814YPd%+%%%GMC1Pb[CVfb8&bf4
5H"-+kM'U'-3NRUd-+KjH01(qe)P"(6ij!0D0M(@SLhl)ICAUrSE9P8mdDL4al,q
"bEEC832(MdDh-%'b&M+HBH0kRX`AX+l+#jAD-3-(N!$XRE3$bFJA*-AJ+"1kQ@U
bK[SMZCT)8iDa2L8QFK![(qkF"mUBd9DT5#"*8Rj,%6Y8*c$0T0XRf))0Q"r$[0f
)c@d-$LT,8HJb[H(hb@"6Z8@a5j3rSfrEr6*"35IdXR*XbY+3!0bcZj!!drim6&!
F[Fmfi`@)#1XGhb9$38FdI,j9Dq16#S8DM#mlfkAck`amC*AAIQI&S*1bh($$&pp
l1kZS)LaLbbKp-Q%k-)DBkRTZJN1L'41$AfPYb6YJJ`V@`h'B*"EEbLErGlkk"Xj
VkSPBk#T##%A02$3TE*hE2ajh-38[,-jSi,hj`jqEIUhKG-8C4'S!3RclI6T#Kc6
%VEDDc8%BZjErAhfR1(91lV44&2+J[NL!fNeThe4@ceQ3!()+cfB4CP8T4h"eXKD
@$Cha$UY&ecjp"N)JDLAaX%4@TkMi)9S"T'H&e9AE,JS1YT1A34MShCLZAm6BUMk
N@cCcY`@1[T`'j,LFfiYhd5UM)qRKm5C2GDrr1$&BFb@05M)$hX()j1bKB#pTUP%
5U`(1DkRff$&P5BBD`j&4KK[k-9L$(VL3!#c80[YmF%TqVMRlCk,%UR-&pjU,3X)
cJkKUjJD5A89Xj-P@1Q`A2Tp'Kh2X-YN5rGmceV'P652Z+(QYHDXQ4$Q-U!k@*D'
ef30Sej1HDXmC[CRSRT!!cQMQAKG+!qc0%dF9[X[1SlR0&Yr#P3$PX2qJeZZBTc[
kckMAJBdNZGVB0dZJbq,F$HSp'5,AMCTT+4&4mm$be#Va`@[@(55Ei65ba1JN0*5

8V`GkBL9aArTVI9BE,6H!%ai&Y`C*KFcrZ[hA2@qBJ-(RYhkFiY5kHC,q3"CDUfH
Y`f2CYU2%q-URlra4#)e@RfJ`Ul[*A0ZfDh8162EeD+##4#BLr,`3[XBH#CF(lCG
8TUhrK1JqVa93-Q@E8Dph&B+9FTF&Ld$5BC-"VqR1R6j1Y4c+,JGpU2pJ22[V95A
GQk90f!fB21G-$Ir+A#*49%5!P"4TcUkF)Ui&Q#8f(6RGb(JDFAlFkB`Mhe#65Zq
M'3f*aj!!aUR'eLJ"E!)U#@10Nlf1Pm8Z[l5q(Eh-dU0SGl`qraaJN!#CqLCK3cG
,#NJFP9cYU-ZYY4k$2rEdjphN%JVYKY'AP@mAF"m(fk*XTKN5+LCGYXD-Vp1jFM3
[%45UIm"@&acZ!PDJFHfp,H1+@cJF%d0*p[2B1lHEjb5r63M'Jhpj49,YVAk2DAJ
22EkVr,qkRN8ING,%i9Gr0ZZRQ3iN%2)DTSKbl1fQ"+c$8X!CC$BHmLEeD-+QD"I
DZ1PUKAePb,ABrTNBhNQ`-hF+JmS26G),Y(mFbDrk#qraPCUG1KP4emVdQ%JcLGH
jG-!0CEQ@p(p4YS1qi-4'j-iEBBaMlLd*U6jd1[eACS&iImK8,6"`B*3LK($pdLS
H`Z`"cTk+iJIhZT0YDA`*LBMV5G5p`q[@2*jk,A(r65ep#I$4EVMGU*695k#+R#B
ZS&aeXa-05r0Q1q$jlfb$`@524)4k`,!YAFCXpiTTM&VV[[*,@deRQ891UFHfIjc
UR(pT"YMZ&556N!!P)S%88TkGX0DDrf#h`qm%0IJiUX86KU(I51,l9$Cq!$RU6De
ab$f'$MQ1IkNk0*@HT$pi!L!%r&4#2AbB8dbcc#b5ShTKQ$%NE%QA@8R,EMcSDS9
i)Y%pH9S0[Cp)##X(&I%JP%X&N!$%QpcjT#hXcATMZUCTI0C$IDp-%Y@(h9)"AI%
61R`+l58Re)S8Y*&FRI!Ck+ANQA5@#b@E"d,3Y-B`[&A[b[C9kHifSH1VZ)Y3LNj
f-V)CJZ),`G#eB-$SiG*XcrL&`L!4$Jj*2$h6EdS314NBre-H$*k5pH)9jf"RTY6
U5rrAklhf60`090qV*MY6X6bLQ(2LGNqj2M)T4kMKBmrC)k("D1YHR3PHT-6J#[I
0bA,46YI5DEA*DIFh#XK$Me,Y6l2Mb!(UD!G'#&Qp[)h%d)9P,Gk8E4FDN!$f56T
aM*JTi6+K1qM%9Njd!rHAdL1(+3%lXNN+2Nf3!)-hTbQm"ETb3"I#fJ2-XZcR&@a
NV2,6'AjHMMX4mpfD(LkK,*3,P2M6krR6SFQBr'h*LEPkT-F*2GHDP5T!`([+#[i
&k'irr2b-klmYQRj!Lpaihrm*&ElE+,cclpmCSB[c#KZib&cSeUU'"fhDB2)r#C!
!F&,ZGJrar%d)iMFhV9&1l0(R!T5+$h!F+CNbV2$CX"BlF52+c@&3QaaNK%8QMpH
&*p44RBh$`PKTe"LlpR8f,@ZmV-%KXKXkdAL$*VjpE)(A$p%rpIT(iV02V%K'E'2
["RZTVm(YHf!0p5KTkLmJ%VY,"c*I#*KP5ZmCl-V,K&Vd(ZD2piX9FL)!1Q&19Zh
J`L)@-YMaX&E8S[kK0a)hDijQNiBjb0RCKN8VHpa*B5e[FErLUmLQPp1Jr4"UJA@

"LrpCQ(IdB3TeN!!*28T+6Uj8I2NPq9b09qZ#cJJEJHBUj-kVTCBCQ(H2H$``)jf
l#p51QDlV)JmDad%FGQZSrLK,)i,Q$IPIFT!!j-1[)HM2P&$rDT-!i`,UcYdI0h&
dC)6l5e!rjcP3S9$K32ph*mf"$Z%RUi4KEN0+ii"3q+c4@DLr(FYfUiE&@q1h",G
A"jiD&`d+V5%CHE'Vi,MZ3SVTi5j%R3#Y$6r`Bbf(8Zf)"FjqYLj%c&[NF&hdYBr
&N!#f"IGC6[miVQm2FepHrIU`H),'c#E4p-kXY*hde1+106bqP4VbH6+KSUPVR2U
!JVK1h8U[q04-aD64B0r6#I8SQcJL@k-S*!9&+D"b%)D[p-h)5KJZN!"*YNJ#&`8
Ha,lHL[KQ)3(''8+5H8NG1&F'2S,r[66caX6L*S#69V3LaEjXh[30q&6"(M%MMZf
iQ#lmpYL(mIS-QqEelFp%ImFSVF"(ZZk1l`3LX-URXiGqee*pMTif4,hc!mP`UZY
IGr)d4((Jam4L4XHBBqd)1@@,8C9LRN@%r0q4p$3*86i#0IQqcj)e3QJ&6Gqi#hE
%V#KVhJ%9pl!rNaE3&iL+8cQcT`&j1a--kNK@UKjV,I)P+AckRdNSLH)SZqe2P9Y
p@B6h+rfcZj!!H'hB!mk4hSRAimZE[K[h'eUlb3!(XI4[aGr9id2L[0NJV'[jlXQ
2$i')&hq9E#!Mq6Y[%CMj$5mp&QZ1'cAT,mFM#HdQrCN0aD(FNae8m`(Hc4p4ql4
@bac1d)Aie@pJI@l*F2Kc(8''qiUY+HkP"*23fEHIld(8S1cRTjcCR%8*rQA(2UZ
6a4aT5jk-P0ar"K`AAfB,1U`EZdRq!)T`HX#@A(9UZCh&N!!BGZ8Ul(&SdT%),@0
`**IXQ)'S+3S1!!LHF%6Q920XAifCUbr!S&&*MX[6J'cQAU`0$0Ck[Z2m"$D(I56
j(e1NqX"V8Eca4$f5YTkV@bp'fb2T9AVL2Dd$hI3eEkd"Jj0MVNMARak`q6YBFTU
aLkHVf3#XaBRE&-!M0iM,aal3Fjj4Ke8I,re##Er(H*6Pi8@DQq)(4J-kbpfe,A*
cMH'BqbQKXAcJ"STQf3mR9h1`F2"6"lm%E*dNK"J3[@pGVR3I&M0c48S(FBTJj*+
R0XkBUhr%*k3*QC(6eS`YdL1&Y+YDJ4)+YlCMQpb&$SqAT%4cBch*[[+3!,HRh)Q
j63S8$28RDGTIe0j%*e1Ic"2`43N8Qpe,@3!lRJ-GX[NB*@)Qd3c3Al'@,kXX)e"
EEVT@l+%-Y8$3DVd)&64@d&R9VjENS!'-hk$!N!!X9RF8T[p"#[41HiSDCQ1P62l
3ATSq$XBC!YGY8&3XDlb6[qD[@HlHq3IeCl$,r"FPe!pSE1'3!,PRdNU"A0"mjJ2
,2BdG83a)2U%S4VMcTjA@TXKXV#Ur85%fGPQAeLhkh&+Z'#kT!r#ffeqT9rSc6Xk
,FIm9Z@-,Fe"NEQq%AdTfIdNc8I',f)UXRNhFI#rPlV5&[CB0N!!9l2f@Rp@3!%d
9eaXM%`E9aP[pB)F90"kP[XabmJb$9N$j+j!!LJ`@-bL)V[6h8+hhUklT#X$kL"k
EbGMmUP+mGjm#&52ej38-R%hpBQe'U8Q)Qj+!dKRRr"ke9E(%-5-TEGRpM4248dE
U,C*3Nl$QicTm[6$CeEq*NXJB1%'UNARSha`$c5(Q%q`NbhKqB!(ZU3Zq0lS5S`D
8jIRjlkHS-aBCa4YiGB"ifY%BJR'Ed6C69T0qJSh0"T!!HCHjHM&"Em*'crDH'*Q
Qek8I[3RU@%(+XX(F#+dc083AE6R(D+++#6TFiX[BNXUE0@U(dRNHfECh[iK6)@3
#DhJ#r(VZ"G*hQ0V)2I3-6FU1eXcPrZ#m'Yl38qCM'[RBXG5`*A'6J@G&@!*AYbQ
BBBAYF25j1lXh[5e4hSLIPU)XAXm@&D5(@GkNKVaFp'330VLB(pccM+kUiLqJAC-
6b5ZMI1jD!)&!ISlj2Lj!&#MFfdJ"VJ`i"Kj4TAC+#T[+Dj4e)1a6d[(3D-AYrr%
3maV[9UA[Y2Kf4'8HG6Ac9SNeh"8(LphZF*!!@29kf$d$fTp#EJkI3'5peLF&bDP
-2bBdTkV9NI&pQ!-BKe@@Fbdh3QIXMf"mq`Hh$@BUGXb2QQUK4r1*LeK$m$DTrPC
Fqlq24$fh6V9MQQ3V1@``IADUT-*AJ5eRDVAq1L@$Te2-`J[GrD&EHPh!*ZEe6[#
ZVSc$AJZb"ZBp$%+AK$DdamZTLK1Z@FRdS@0Y*(qp3Lhq"JXI9YdQKfQkk@TpTDC
em6A2Hch`4INiQl@mj2ZBhZ3T21BD-Zj@S30EhrHS#C`6%aN94H![D*-EhRZ+'64
dVb%kplH)0%BAE(Llff4Db[*HCaMDATlE(9qbBG$5HC1V[@U$ZkT(@!m+'Nf"2hq
$Ff1%9fHBcFD!8eTX4V60M[&3R2Z6bkS)lDXIp3X`e2E)(!UrKZjme5`NY30YLBK
SH3k!c!'RbX)&I)p@M@HBN!$#LT!!l3))C!hh[[LP#jDV'GNDdRh!2F@N6c[fpGM
NINSmCEj1aY`G3aIH4TGQH$(I&8GN,KjEZLFSCX(Z-d)Y"cpA6ff4TJNR#Ka4eT6
TQr!G-jRC4r90Qhh43M*&Ad'"KZj@`@T[d9bUiqlUb*hSFqcVcZA2+XULFC@(!b9
eD9Kl,!BFdXZ`13DQZ)KRF5Y9Lp3'd@6pj,GdUa%*m4p"rB)eR&bU2R-aT5"@8mJ
hPLPMR"14erlfM9ZIAmQ!+Hfi&qQh0mU3!,'SPiQ$*HXj+Y!,aXdQCIA'j"BS2pI
mjG3FZllH&cC)`D(1brYrQ!eAQdA!L#*Fm[c%MfQ9$qq+J1G)ef#%"rfm8`Qjr%4
$3++B'aRFJF%SeY`Kl`AJZ[DpD,(5406ICRj(IjJ,XUM#$Vph`-[)mlf[+HF65(Z
,PpE&8@91'LEJB3(EqP!G0XB""PA!8%D4CPAqmB)m'@RE%qd&[4R,6XVr!2fBHLl
bMHL*CEm4mcQEZbi&,ea@F,YPU`89b&JCFAH9)C9c0jBE[-#jqKQj+EY%"iQidZm
b23#[q3aji#TYA3pE1lZI5Q*J'erebPJa`3(#'Lb*pbiZF&9YBl@PQ,0##2U*YQf
XIS+dQ*Lp8054q8QZP6dNLUJQBNd8e([3B*H6mLB"R9SpY-B&V(M#P"@4a8U")a6
r&X,UBVi4pAe+1LhYH`kCbf[fh4GQ!e%Ke9Y8cQ0eSVI'd0E%UBT("9BH1[5LGAh
@Y#'1G+*D$1SpGEipJQrEiCKB'H6*prd@iUpHd8PQd*D(JFVFmS%IFfEB-*j[YAi
2JrUl"YFfl1P,,5)Ym$"P2b",h*!!`F9(0DXZc5c*Ai`@q[Qk,[13!+mCFD+p6%a
(Q4f'QSC2b6FRIMmUh-,4IiND$TCh0pecM0Z@F[2,e#E($G@"0rAR1X1%birpCFH
Nb6lAN!#Bh+PY%,*8P@4R[R"E"I#1`84[f-iGEa`(d2+6M`Tm)kC'kMR3N!$,$Ff
'SU0%LC!!r01[1ddDjeR2DjV5rSqTbm3DN!!-d`rC!RiJG@*LCpKDB)'C8&Y3[RC
"IXdBm`qa!E5'AY4@CQ&qqQKN-,!hK,L'B0l)m!I0&@!@[V#[ZifM1Gdh3Aj$EdS
[3+E2DZ%6)VL2$k)HGqmRXhi0fXqr$imB8*BU&fZTk")QZHYUV'4YbXQ"Xd(h4C%
88TqNRd8Ik`"P4+cUJYiDG)Cib6VJ2'IMP&LjNI2CZKZL[9qh&!DkQ4f[d9Z'Vp+
G5Eh)&dXH"mb"lF`1Ih22'RQ'c0(9()LNEDqbJHDr-Qq[6$+eIImd0U#'Ii0S`hF
BA#4"lD0E$hSR6VJN)XYC9$96`)ePR@`SHZjdlc0!K01VJDG#9VprQ2Q5cTV1"ZQ
T"S9`GhBJipj)L)+S6aXdB`I2P$r%"+Yh*$k9XmpHfa$Im(9JN[SIAeAIk0iH8m(
pa$d6#!ILQ+TTl59i#V!mm3[BpYBr@#T0E!DMLGe`LE`0r+jcAJ'2F#1QRbYHJUH
PlG3V1`*[R0JMf'@NY@T'AKMe(d$KHRcGEU[FPBSe8cKikqc)0hSXbQl2EF)l3c5
0`8ch+DHcVDXU5dmFUGRD,BXri6IrfaZr+`'[[k*`kMQ)J0mK#R`YkE[fX#lp%P)
Y`GY&mRYkqc[0KZ'D+ZCP,fVH&L8rJDN&HJp,Q&lN+!F$+jpL1rpUA@C2fR%l%lB
ej'XC)0FQ,ZK[qK%D3XhYmk32"Y2VjHXc)*lGfD&eE%dUSJdrq+&MEFHX94D%[5V
r[V2cJ5QE!IGrrFUh3S4i8'ZM3SSRNQV4*V!4*CFGqBTbF[RRPDdSaQ)@8rqri&!
TU-"p$`SI[SAS40(*CLKME-VbL"KII2ZF1q5qA$4bm4)j)kSil,hmqc('B&D@2I9
1T3e`iQjC"E'[bMe`[I10Fe!"Y0diH(1+*1h2IILXNXlH@qD'T-6`2Pia"hK)Hak
`Jq(TLrl!9F3B'AGN0[)3+j[q`ZEl6F4XUdql'058pZZDh#S,aam'lT(Qjp`FQhB
a50b8!Eaf@T6NhX#Z-hja9LfbT3Y5!plm-*&DZ)A2,RlE13!4r"j9I9"Xm"C&#d`
LIlc0&1(SH[peRrSDmYMpYfQ)EQj!AfL'$IeFIbb#pJrd1if[ff14'L'2!Xl96[6
4rFA6TB'i0aJIBdK6eJ&&B+MlCa*%k0K(PQLdkrZC4m`qJGS$QZLLl,Q-)@iPdpU
[1[X8MhSF#$,ZBqZjkYQ9'LDCda+YKCLreASjPC%`VElM"6D'LZTc!%B%K%IfeCQ
Q8"0($k%LP!HBfTk51(jfFEM2mI,PXF*INdj&4rJ%2$UB8PIJ1MVHkJ@qUVpV591
$j!#YNH9%k&1%FZX9Ma&a`qfVrRX1$Ja)H%8N!kTK)-hX@fCQZb)G&TLPc9P8P0V
i`)!12$*%IY[j[Y+BfiSb)Bb&Kb(98R$KR`FHlULNIc+YL)8(AF8JTaVfU)@R1j!
!XR%Gr(L4j4Me*HIDSFYq0FE3S+lX'hYCB%8j(%r$V-8*!GSp4Q*fkkN%1N3p2QX
I*m0`F2G50,#p@hV423Q4#kiIc6N,JXJP2qGe8#`VN!$Hi@NY#mUZXAX@55iNbe#
+EA!(rTlp9S@)iE2qTHQ4peEhE#N#P-B"EX$!Ih#9)r5LDMe,q[-l*kbT())diF+

f+9+EaVG'dCFV[X4BAi!1Dk5Cjr%&!eM`Z+H6!fKcipqaVD9EMC!!(XYHQ3rD#,*
AcmeBlHj2G,IFT!#+0'Y3&TSRd$ei4%I"5l2DIXFL0p5*JSd#iiXX1rl&RScF3Kk
D1KhTkR9H&hb5MMXLL[JaUj,KPj!!ZJAJl"a"mH%QVr+G9J#Ml(Pi[J+d-$RP[h&
IPeFRi621aX1'H(#liLkGM%hG-[ib%U*UZ!lrpqRXM*)b59eBiRk-N[C(m$X,l3b
4r`M&lHI$&&)mXjL#(dFG[J%6h88L*NBrl4i+j*!!HG"+j!mZaHri`qDS%UCHV'C
MVr'b5Bf#I%'C%dhU6'jZ2,I(,B!jc4j`NEZ9Z"MDXim,D4!FK"['FrIrfU21Y!'
Ui!,GK#1L(G3*qm$CBYH1iE@&U,@NR,Ja-NVcR%"KD$H5fBk'bH+bAHe$'J,ZQTS
!UACNXTMdGSNi(4blFjSe-mSPP3%&dA2YV2[3(%B9E(&FD#99PkZmA'Ka,3j-1[-
ZrV[Hi(eXberTpbjfNhD"XeE[*ZQ4(Rk'HN#CBAM)$H,iQ+bBqL,[N!$Shd9LTql
k4d&%CJE%2XYlSC63@dAai41*p8HkQ5CB2@-Hkk921ffR$i4HPmAc9TSYJpM'40c
Fmc&A"SDK&PTZU%R5HRIb#NF'M'[&9L8fiDEc%9h3VA`q4r&&N!!C%'JppQNYYaL
b2(0qRC8-#S,*Y3TikNG%e@,fe![L3ThQ11EQqB25D42r0X!PDZ)p2qASQQHqlqf
Qm'[e1Pk+-$Sq!!e)*`XiafaJC9SKT+('i[0l+Sj"[*b3!)l-ekiAm@ABe`d@drZ
HR*1*AMekqf1+9f@PH$eQJ6IH"*e$T,rq$)Bbb!U%fJU+P+U,VrJXk1'Vhif'K%S
9'1bULTi$Z01@,HL)ffF'%&[Cb-@2ji5P2jCHS@lV1YVH%q#hBB#q#R(qdVeXK!Z
kqNIrPp9M'5Qif3jZ"cRl&YmKZ8QI%%TeL*34cc@MDhImpc*4"2kfIDkf*GG[Q*I
[5qPZ1%e)mm8"qI&aAY$LP-Gp6DXrbqSrSe*96Rm"AFBKX,#*Dj(*l4f3!!fq'm&
VMTFH9NrM'PJ1-PZ8lMRhiQ&NhU%6AU%Q0'HQm"NLR)T*@f4FCVCMXcUCbb)X8QQ
lXF$a3Lj&%8GQ3(DYNGAN32(`d@Q9N!$m@f$6'IXj9lEE"-4*h+HS+'SebeVclI-
Pk"+#1+6XPY)D3j'83[26*D#Ga@d"bGj9Fhi@6)eI+8V+kjGaUK#p#+dq0BZU8JK
BPlhj8S1,(m)ak"El0F'6RMC*G(iVYbQBpCfa&1E)ec3hKJL)E04HpFBq&H##4eL
f&6dr6SI%Cl&FB'TlmVVYNXXc)YNN1V0Mrd%6U[1V60f0+$1lKV%-Xi8NR,Kprp$
MGKM,Kq&CTXRJF*+Y8VS95d,#[[HpU)`eieC6*`@L(@6AR-efl-T`phL8%MC*B["
3B(Ya(R)5KU)&+3B9'3r4Gbl"Bqll1-2r%%i3f-M125I*[3NkB4T3qZRfDVBq"ec
9rM`UU4(`eTl+h-RrVJi&9U1AHc*E"TpeJi#*440kGDVhaSVFYR`K0j6m!#el")[
5!E#Q"ISBA'p)QRqJ$UYi*$X@+#9fEpA6Z-NY84$LC!JH'ljNq32Um[YqR!F'f54

8ICaA,4U55TRP"3!)41$88%e%!U0@%@$FQ4G0l*XmXT0M'IpNEH(eUe$ccPmc8Rk
lE,-jdmYPL%2ZqN&I+G)&NA#4hF&a-kciESkckQE-Hhd[[f2A9R9f6&MXdjTYLV$
cQr91D8bbJq1j0,JP&E,+"VG!d6iZ2e@9(2LR%JNZAHdSr3LXj5FNA*X6cPe,kBp
'kr%LR`9F-YKR8V(cDq+HArb3!&MK9[%Qfe1"FD2+Q6hC9dAV#JpFRlTQd`K&K-f
d!erVQ,(CpqJA6S@5dJ#RB5MmPK5S1#hEIUTkV"H4Kj!!0eP`*hMDc+$Zi@di`*b
#K@UScDmb3#B51c*+5bGhLb2),K3N`1$*bddk5Ee`r4JbUm6L$1LYjR*Z'iVbS1!
b-H)cXm2CIC-Qb-LqQB(bc`GK3LT8i"1FKj*#PXp@#iJD0$6C43LfGZ1NVNG,f+*
A%dApqN8[He[QG1+@qKRX6K&JI%0(Z*D%AVUAG[$iLFjL[Y%!50Ijj2#`2#!8!!T
2S&)"iUcfcSr3LQjZJ-5I)5Hd3fBmd&)KaEKfQaZ5irTSqqfXS%+Q&6IFLM+!8V,
AA@kDYXhY,H42G%k%4MU8&$Ue-ar"[TG&%`BU"j,eFpSH4&4*BYT8U5cKrJ5hN!#
cRkmh5-0Ia,#9j2C!rEGbSK1ieAhm*p!KZbpNlm$Z02K-+Y5Qf0Q1KAla8Y0![C(
brBmAe4TrCH@q`Q2X@2jf2Ql1f'F0`[H#e)-&+8e&52)G'B2He(M0dlSc%h@r#e9
Alb`H5T3TFbkXrSBS0iFdPr%Y*dD4XJ-Z--ZQb-M+qHYd#cMe1$d)$Ff2jTKJ&qb
r1(CbaNNbr2`B,G-Q&Aiq%6+-[+p!3i4bVIYU5#i1ZJ39cCl#)fmP,[8G3RpV1Ph
iPLedFL6`1JF'$6q8XHK[1(%E*DCUTM3D9clrbd"[ip,hDE@S)ha3[+J'a6L'`Tf
3!-f[CkR,[VUYjb2CRmN95[er4raAmrC*2,S0p@J*aRVQKC8Rje4)(jAHqLc)0L0
hJ4AU#R"cF@Z5PY"%E2i9ke*L(2rP[,!r*B$&Bp0b$Y))[[Jce+G)ZEp(*Hb`YKl
I23P8232Jk1jrP&dJ&IGKZj!!$*qYk8-3H5pYE"a--&,8PLKmLY)5ql4pk5BHE&N
P4T5XF9VT+RX)3hZmL!&LC,50GIFX*T`"6Z5aZP'r36F"jk[hKC(")qM&J0-0MQ5
2J1lS@-aJ++RMjqjp!!(M@5,cBRUMAp-bB'rdjCk,9P6#1[GL'QSTEjU&,'Z"%E*
b$"G#5)8`!"Y,qHrb,H!Ab2QQ[#KN'r++!3PUFlP*C6`TSQXcLPaUH@Mq,r)30Y8
AF#`@Daq)KEM$hrR9ShU-RA0'hHcqIY$8QAqFCi!e5F`YDMPZP%e[QCMI0N("K%4
Y%K)hcR%%5GR3I%+9q8pEHj&"9e(CeaNVq-Dm`4'GLZI1C*MAXpI90EZr`fF3C,E
`hV[%)0!dSYEiEdA%Mpk8SM+JG$F&G%X$D"Rher25fSUYQi3Y%)`+*-FGp(HZ&KG
#@p6`hbETAT&8a&KRF@k&a`6QFSQ)pk+00Se0SG@%UU(NJeCR@(ZUk4QJLSkN*K[
[N!!h-Zf2UkHjZ)+X0dNj3I0HeF(Y`35JA#98NEpd[4Lr0!2hf$8eQdpLS)6(3Cq
krIM6ke$i(831`1j6b2D3!(V899TkB604Mqr'VEYA6l%aHL-mjR0l'9GFfX3hF9)
fa[K+`AJje`*G[9)a@%CAV1V#!ZX`,P2eENNHY90P5Kd#qGE9d@k![PCP2IVC$aJ
!ANGq!GZHil&8TRpe18,c6*dLkjP-1#B9%qejhe9L"PT9HiRH&L'QabZ(je0GC4$
TU(P-Nq'#(Ne8[i4%)i5LIIed866S3qH'Nc*4fZ"IAVQHi8F@JlBi)`3[R$X(&6Y
d(C2F,*@qdH5[NFcSBkDBN[iqk4mc-pEC05XR[$LMaYBqVYXR$NT5KB*&QU@"jrG
Y#P3GA99`1JmY5)aR8%6BFE#H0-HjHpbi%X4`CB8Bc!MIeDHDB0ZpNfrhS"f9!*`
S``R60-*IE0c51Yra6[55a9h6IeZq9(GZi#Fc15,KHTI&B)f)%-!C&QHbM(94XpT
3,A([$ZHK#&+IBil)Q`-N5J418`@9m"R&DNQhC6EljNi3[-Q*hX'$rRNBd6c@J[G
6A`rH%cDA8[8jHK-!rFSdEfB6f29(ZHY-0-C,HN2hIBD)lci291k93N!YSElKQPj
*!TS,9Xa8[-KLi@&V&Qcid0D#F6lYPp+*fJ9)mr%B(jS@Md@Cj`GThdJl[!*P+Gi
"14Um%bm*qT(,6c@I*+cBm0dp1`+1Q3c*Bj4ml$PUJ!GkaCQ#aNZ5rFKkYCq)rMb
#@ZBPYq6EL[RPTUj0lD'cBPA2fI4R$brE)G*CYFiU[b`UT)cFV0J)ARDLqjdrj@J
$`@UYllZqYMY8`UKfkhEJTPh[e!K4icX!SdYQ2H$6AaPcl)A%F(!$"UqHhbJkeEr
+`8iJAFbe)!34F!Y$28"Fk2G6!f-%p0XaL6kV'T6dMH2edj6B-5+FNj!!'+5$0cS
IS$A3K3jQCZ(39YBV$QDS&Uk2h3$fd8!,K*F!'berF`52(VQ18+'#I`5ka-AC+hi
qZ[p6Am""He#*4'b*jIENNELc'`Z)-3cK)KZ!DT@QciZ'A5VhVJeTKQbpP,p"a%T
E)"b4a8+Ji0ipAej*-B0qi'Dkb&4FiQ6p-KH%5+Aj3YR%ZcYY3K'!BN(cPq42#(a
c8RXCR,R!2N8r5$m1D6ZNMj'Zaea9j&HkjI0F(&`2J04'!-6,f1fla@QJhi#m8lq
EbVP-A8*h4(2AK(,S)Ma"TqEZHKZRT8lk%Z`UK,@mQ[bQi1!i$pU9X"$91kEiE0c
2Um,1d[@hdjJ4laNl!PYL(*C4Jcc[6!TqP)4$kb,i!-h'6&dQMKA[@BDbhG4A-8N
eHM(Ni$2Z!LM*(F`Y8@X66[K"DMD*`9YG&RZHEZDN`j-r53XM-bSHDdLJ9AmaqdK
Ak(dM$*jiDCNq@kS"IRPFXV(J%hNLmj-4M*3VIr&im3ZC0*P@p,Xqi0j36qbNqh(
-Yd2[i5cM!6(j*IiKh90)cf6)h5ALNUq03aH1ZEaNGciT!LX`UiiL0$V"+a1l@FK
(MeDl#Hq$!!P$cE4Lk1UUZiiHA*@'9LPHK*3M0c9ZNR,M$TCK#%f1qPdaK%`[##f
#HGHBN!!F1&$96iGbY8$-e`ICpe4BAS444M&lfGURYkqY6%Y1HCPmerA)diIGEY*
6"jq)TM@R%cpY([-fB*LIacYAF8be#k`,h3XSDDkD%#k1Y!e6*,hLHC[0MMe,ChI
m3FUDfmkLjX@EqkNT$QB#Jk5Xap0K*%&NSZce3Y)UIhIiTc-KFIbfLUeXLleJYar
SZ5fG-XGB-DD%,-dG`2J-m6d*9ClUQZimm*BCapfEdfJB"ANi,8dfGXD+HZ6U-Ie
Hl[FE9&@$ba4RT%SL1#86U&r-%@GBF!hUiT`X-lq#*p(I!pC-4'P[-VUPqqBC"Na
!JJpXS8U[MA%!+R"6Z$qD*SdiiLFBi1`6("#f*)1SbTkRjHbIDU9834&k'!TBISk
3!$bGq)BILAm"[!GqXl5ledL8lB*ZR!$mm68I(UfU$SjSJr()$IR2Vfqi9P84d)8
CrMBZB4beEX+pA*(5S8`4CR%fY&QRVBeDL%&DQK-&D#f(+&kR9cF+%RL!8-,BCmV
QT-4KI,05SjjD,VXjN5!3Lf2A4B$CTl8[0jXb-di2Y2VAdN%DQcCSRFV"*YmH!`T
e,iSc!F!)T#*04,+"PSfq2Z9Q%mC0YjebCp45*C(,qhX3'GdT&"e)eT1bE3R!h%i
0IqZ68CPPqH0(*`HeZ1![)*I4V+YN0k$(cU#qrc,K-Qa*%UIS!Mr66C0*-fq"kG0
e-@YL$1dT`-Ha(Gi-cR!P8F8&,V4hid4TGa#"DH,im42aN3b8Kr9[B-8KJ6@$Z8K
(j[cPA5cFAQN"6UG$ijRh4jC!l2&Jld#Ni'N08X4H@YYHPbY95#-ZCld1XDl6(*1
h'@dL#a[a*A$pRGqHVJlq`Y-90ra8Q*8q6#ckPm8XK8Peica`VY&LKMD-pk66MV5
+35*p3G@$+k,)Q,R(cQTSF8$JHMXC2k)TI%#jj!r"Iq'99'drNj)Te40[J@i@Gm9
#Ji"+AE60BQ-#ULdeH9MHS4Xl@8GZ+G!@pY',mI@Zc6LD-,NGJ6Ai#Pq1krV)HpK
C!D,"dl58fcJ+jB8kL[bV#FPh`hL@45H&Pm5IUT2#kQ(q(!A`4HqIS8KL-,(I)%k
$"ARP*YTGd"`cGPId6SJ1[-(UUY3+Ul-hd$%%1rBci`6-`0iBpLi0pfK3A8D$)Pf
4rLF8+1rb3035M8i2e6$*IUbEf*9lAA*mE%p!r013!$fmii'TS2D40$P6Y,9!Sh(
3#X[qqV$jhNK-,6[FqqE4rH)eA#VPV64T9e'K(S2a6PBba[jIkTr![KYb@XEQ16i
YS+P9E8kf`'`8j8qfhibIKhPf4U#mB9+rbD$2"Yr,9eSj)0+2j!BcZaa(&C8D5I4
Q5@jAII4h)I3m[HA@01$53aEU8qC$ZKkN0)`U$RA-m43IH2pll)[pBK(r$`ZU9pE
iUBERi(bFa0kDB!%pG-Q@"HRBbqCVh,+fUSXd3,&1QB,aC&c!Tk@Ic3Zjm[beIb"
ZFKrF&l(ReHbZ"-[Z"'Q@Z[cJfa2ibQZeC`)@N5-AZFlacjR0P2A8XAhfI@E-MD)
HiiX4!cl3Pb#B16VQ5-FeL05Uj9ISMd8@D3#jJrcLRXjm)P""UiNaRK2)FiGdVQC
H&Ld@r@CLTkFk+1AmAh0ZZcl$9,0XQej,i3DS$mK!d[5F`IE19L4MkEA*%#H(MY[
(-QGD1kHT4B"PVie98)c(kJSabh'Hll8arj+ajKR4D'FHL8GID1Gk'`KeqD!YrUq
R!`$[ElIU6qKp6@!m`kD&b+CFbE3'"dAM9kZG%ZGV,Dk3!&T)C$8619-#SUc81hV
k0!&b9AHmD2-2-eRie#q51R#PUL#0(""Nk0MrAm2Xk@68dH83&FZkA9)VHB&9pj!
!h)[[kJR!5"AUHEpBi,G&U&900lQc&TeFFfNL0b#H*e&Q)hZ9"9aGXK[4f4jr0&Q
8JYQI[J0491fdeNAFT2ITQ9LRS*NFH%a4EiG-hp'5KVTE0jC+fVrrCqZ3!1b'h!6

jkN#rm0N+*ri-#4Iq'D2Z38TYMrih+A2Q9J0Y4i1UX1Skjj3),L%RF#-8P"0I+ir
KRplYB'T8cZ5KJEMq[+"6GNFIJTj)+[rqUSQYRhAVi141qG6qS"UbFk0%XKA+C*!
!EPA#MY)Q0!,)L40bNZe'Df[@1Er92hd)aQ&8T&Y!a"N6YQ1LGhdJFe![+!2GBE!
R8KRUN@fe@0aH&G-%+EA2Yarbi%mr"ZIJ-'cjl)3k[d"V49@&2"9X+NM9*%VhZZR
hp&Ud(6ANF1m"ZBYaA5!!%[GIeYea*F1U$!I+q3'N5C9XTIGTjZaV4krl1hm@ffl
2N8NT(`#[aG-&-0YQ-Rm2`d`GGjGl'"1AJhqIQK2MEXbR4CIkEJLI#-L@N!"dN[J
kIa2D4&G0)M!Rp,P6mR2K6iqFLU`e'5+mQb1X[r(FSl1krib%L#jlpdc9@DlDl5L
L'refe#+GhiUEqCdE*dmZ5,bRb4'80-+3!+Q0bI3VRiGRbVYiNq4JEjeDVFiDJYR
V"N@16lldY#(X#jCCC1Q1A9RQU%&hSB*Xk%dE9fp`#I5c4$K1S$FjcIVXfF5-R[(
%"2j0hNiS3q3Mcd%Q3-`YP!%0V1c'Z'0'E8QbZLj[(Gq3!*b)f+GE1,j1jR*R5QZ
"I*U'A*2C3I65J*P1bXQab'MPbPLU,LK$"kX60J+1eFr%D3MiPf1pX63d)GH)0LA
$5*0a6eBEA)NDIZF@XBLjX5Y4L!c5LpV0d$3cYUJh*6CY2i#8ai#TELZ+`bIX%(*
#`VNc&U2@FI0)BbE9`5&$kUM!a,VL56LTe"0*MJ!kQ4(SV'SX"9`rbQ[jS51TC(@
Cee+q!(D#&mQb3KMR%P4SdFApd4e+%@Q$BN**Y0SES@,%f+NGMh"jP`rAIc1b&YL
#3'lAlAL8d+D!bR**[5TlmkhDBF'6#&`N@J+6F+bhcf5q6c*V0GGcGK3Ba2-qFkp
`$V)(rfPX9&V%pSqYB$`CAqcjU3FXRAVDc,eUb@`4+IY5T)Q+hrN6aeKafK"@D"F
kP8aXeQ2N'+S&8ZffCPQ-%iqH'H9UHE5k*c$6iRA6&%rZ9'cEc!UrYmcC'*TArf+
k-9IZXiF(E6[a*'-`&P@#1`6dhE)P[%GSlQa*NNT0dI5j`lHU,kdHQD$Iq%Q$l%L
*SF-P4!-RG8BdR92-U6*k'LPKYFKQl[Z!",l1k"eJPfb95$VFR&0jXJ'jNP,9M3A
T,J8KNZZ4Kcqc"P@UA6h14LKl"Y4)e0+B#2,-FjiaKh"AekPlS"mf6'AGDMNe&UL
Y6j+BcpbM1MfXM$XiNa9("*d`p8DH*CB#M)D2,$"+"YT1+drmb`9VU@K8(HGd&Yi
H)9+$UYr@E`Bl@F0)I-+'5HJZL05i(LhdD$Gi3EYUfdGR2jc(Y!h$`AZTAH+0!VD
UD)!feNm9ZQ#H"p'VN[#5e-qqmEAdTcE$IUe%5&!&JN,I,eXDP"qPc"'3!(MP-2E
YCIjZf2FFh'#*0-be6$2FKl`ci`dIHeN!*kG2C`b2!1mB&Nm2RPIk)Tji(%$H36d
5bcjr((5[l`qc1V`Bdk@4q*2pF8I$LRTP)6&(Ma)4lbNc2Qbl[iYL+-`Z1(1j$kD
A1ZcST+'f8+C"NhVV041Tb%P6!dm&["'fqTbNDA`Q(GYZ1QMVf[Ye22Z4TK$Ca5[

C$4efN6GKc-0!!ST-rj!!Lfephmei&beJZMb%%'rVP$J%PVKXkd-pNrUTIV4!3[i
ADPGTiiIKpbZYD"#Rhcrm94Nkc&RkL@,#RAX`)N*ebhT9L-C8*'fX*lRf+M&GL)0
MSI1"NA+4cbRIF(#ZXPPZ59Qd!NdV+@KZEb1J4)4%92k-)&fF6"*c#B9,eS*E,@C
f,Zc*86pmjJT-@eB29DNbe0A!0kpid'19HC,JK`0p8ed[Z$Bi(e6B6AL3!(!fAkj
bZ,#@N@DG`'Ncm-rhG"3Bd4PT6p!6VCd9S(H16f$d-4Y55L(Q1DY'j5jk4CDS!-Z
D#,*'VUMYKUL$+#`Dl*VT39%%-H,J"CVBMBpJTXd2i6HK88GHfaqBi%CDECIIhm2
XdB&DT5hUNBrp%D&3DHHf@+JMaI9,$B%+pj,3e1,K2$X&cd0r6Q$5-0P@XibEP!H
p*Jr&T6ia%D`)IHl5e*Z-SK6Cp#h"+jEI0!P86T%C,6ipB%30a'KpB[0cD,GF(mM
LM`-JBVr8RPa&c,3)8cNP(kG8@cMPRICUXG[6m,(Pq62UYrR2P4-$rajNlSGEk8Z
NR9qCl)eL08MPqpV[lMGdpUf0aV[VY@IF5qd%cJM*U!l1"D+I04@+ZBiBT$QSCl4
biep`Ja4hBeC$ef+p,[8&lh+)1S0@rfMjXV3*5BL,54"I+*Zh6Rhpp*C%V!4+",T
+j#Hcm@q,S-&H3+cIhYE#eCeVTrGUcAl-`qef5F0(P6kRS@kK%(m90'jKdKPPQrj
TbXP4Elh4@%lhreP(l#NQ$(iR8k11EH-l,JcX$`p%YcEULZlheK+&UKphR$j&jJ3
+V!e'"fC2rJFZB%*%V[FSj[EpAjF8l5@Fb6C*1#FaD1#Q2L8mLb%NrLr!5J$$MMV
4)Y9kYAI%@@66al,cCeq9'`M(hKKq2h#(-*8IUd[Kdr4'MX0!U2Z5I$lrmDqI30m
,9ZBPc861aFY5YA3ZE%*-XJDE)82Bk##%6F6$FhG2#CpX'jEq)pXEq,)BVIU$"kk
liN)fBe$9#[6D31$&6U+4!1aQM)S(e+F[2M%[i[)l6)"p%d()ac`TC8*HU(6V$qk
Zek#C`FF)GKLF2dSFZqcE8@Tej*Z$$&d%@1qlSS3TX+hhQ&FGk!B(8eHR"kUF129
5pQJem0f99[M1T[K-VX)VX4G+$eak!a6qdE0,EfU0SPbG"h'T1L[UrV$aJl[-CX[
GU+8+-3![qk1QPUeFHQM8UNp(R1S'l*TaS!K1FFP(ra[Fe2$"RCm9V'f0h%Gjh,E
I3HdF``PN&Z9mJU+HSKFqZf[E9XZ*T,M0ZM9V6FI6VUkh+cXV)!ZB@NMZZ1SAQmk
&rdKHjNMMj$#18qepbdE&@0qr8B"-f+rc")SdNTNpU8dh-aRrG&(rCF)S,1p@UBc
4GJ&FFZlkLHf3!0E(Iq2K+j4ja#VT,HB2Le'EV$G@0hLEpqraJ(d*kI96U@HEKQk
3!+bAY-34!rj6R"P$6DNEY,f"hcaRp#iePIJ0HrC1BQGBBqaTBa"m$XL%dG(6ia[
f2d*1!-f2jJ*TBL#FEN`1RjdTE,C$B9$9bIYTqDH4$EU8HeiXSNiMDL(M`SC9!PN
KMQpr)'ZpLMVb0fl6G89%mKXpMkVH5icqLR6akKq0pSl[@-L$cRLME1LAEaqH1S'
V5ehZAfDU5-P1dC,`4M55lFpAQ)Ph$PHCrLXBd"8kk`('`Aq@Q[,-564$a9Q0"T-
T1$Ldqflk`C00LK@!Zd'V+,U(Vh'Rab&hK"k@MTkPN9'b9U5i8156,kLGL[6EM[q
9Nq`NPb"V@@c53"ABZ-9kE+*JcS'ZGS8FCHB#Nm9!(@ZAM+H!9cXTAb-D$06X1E+
2D8EI[q-&L$-[B9@Y`0XVE!KY"9I%k,KDl1+52V516%4KF5Z6$CCe'G+XRL9`fFb
BHbjH*MP10TM0jlXeq)fdQK!X"4kC@V*P2YHXUB&8SD3`NP0iGIrrii`fL)ZaJRG
ie$HZMEZ)6cX@C'jiN!#9K@C$pd5@Bc2DdmMMQ"HmVX#Cq2XU)ScCaYpl-UqjT0L
%b*CdXqdXHaR%Z'jM2!`ZaKU0*NcJml%%)f*!9992hec0Kf5K0-E!RQMG,ja[21i
G!Ji@Z13HQLLqdTQhUkKJdGp"S-(CkK4,EFK%",(JhSD6Y$VC@aYM-IKX0k[cc98
bZ&[Y0b&B#a3+,"FM,mYe`l`e%Ya',c20%,8ZeFT)'Bmlh")q#NHUI*4fB5FYiNb
D5P'6)3HKrkPN,a@KI(+83eBpU)hEpjr[LR*d2HmcKbV9"RCBEA&bQq"INhd)41A
Gk62b8kCJKPh%@PqH4EY-U@PK`QHiXY(bpQT+iP!%X-9SjmEFaP8YbFrXA$SPEe@
ef%K3NhI'20[-N45@@b-I$4'DPNrEG-q#4p0KXVR3X3$9q-NN$F3`4hhSeC!!8FC
&F2"0S0j3jaLM*dF##H,Z9#H(e"4MkK1"D5q3!!)L(iN2(p4T$Gr0Ddr9MZDBLZk
lrT`LYpbbrbBiFJ!$VH9kHe5ADm2rpVK,G3F4+E+,P!0!aqDi#1Tq5hm5LDk61)Z
0XEq(GFYBj8BIm%4C,(Z&bXa"FkmK`0FqX(q,LK'q8cm')TZQ)8jY"PlHm9f#aYp
KLTTK3V`G,(5!RPa9@aH"cTeqFZm"2Vciqek[kBdFN!#LG#%qa9F4D%#b8$3IFAj
%3,eT4,0)f10DT`Rk$JG('2*L9++f)k2bd#TR4N[5)@NGlQGm5%EHC9Yd@3AYFQ(
F&Np1@h!II*)EX9)frm0+lQBVX3qIDE%b1*@4YMS2[K#Fb6'F,@a4r!AN,FmAhkA
H[ZCLBCbHCA9pSdC53PpaN`(Ce'TlSE0#U(41G6mEE2SKb@L3!+H`VcX+D%`AG5k
UY3a62,d-`fdIfJhM-@l4@*&3k5P$c8a4%$!hm0,TGVNN*Q+SipDDQ5jMH@ES6`@
HXL@SFKL0q46rBT1iY2&jk3$XlfaDHZEZEdr5ci+LL&8GlMp"qAICZK3DqF+m(Fj
f-j1-R%T(Y%i%*AX*b6Q+ic9k&D,P3J6e),I[GBhZM*L!,j9ErEJ@Td8r9hACEp%
Sml,q(i&E3@NehpiQ2@K4jDi1D-L3!%M0R1rcQ!lNaJp#kY%Z4S0AU88,hKjPe6#
H)+[1eVHDi&JK&QlLQa4N,LVrraqjmmbTa5RaeEQSD!aek#krNXZ3!2SXae)5P2"
dlhVM+8Q3!"0ZpdMQ)mr8i)*2f'%)S!K$C43lLMYL-TkP1L*p!Gcl*mZ@i!VCP8G
fab-%8KDQ6pd)2#(N-%k`KSV),2EFjXpX*pPR*&#GcL(*f5"DZ@X`cE1%DMUDUMK
B[["-bT'F(&B4"5LV[f0&BjKKmi,(U22aM6A`kM"bcRpMDkdd[iPZNRS16[#$+!q
@3@N1b(r-f9S,f@-*Ul3rY'f[-jQb)Fl3drXi$0[BMQa)8X!+cr%K@0fhi$Bi8%9
fG(E0Qd-bERQF')R*8+,DKf#HhN9dGrBiX`"$0'Z4'UK)%j-E8-B%N@pqXr+GdZC
+3&LQkZB!,r!eYA200CD8epj*8iCZl5+MICCK$qpfM"jTB8T+ZG08XR8KaBJ1@Z1
(U"jXhr,)1FR9iqaae!@F[ERfD0fR1P3-G4Cr%hfR,3C,d`qQ4Uf1f,)SJ-8`U@Y
Ua8d#@A#5!MqQbrc0e2XfGd4qX,3#Mq58#qp'!Gl51(LXT42Z@p9(4(JlbFA'3@Z
'+b%!RJl&Urk8pmL))XICJIY54IIVGR&C)e(CCX'4KlSfNUhk4#VAP-rVJQ0Z5T-
VQ$fqjmp'G2h+ZQ["ETlKbABUNFMH[51rJI'J"XFcZX0[J8UXJq`XUiT11"md4I"
3#VC)A8E9@"GSAR@D"VBi11!'4rDirG05l#8VT6+C@`fq4&,2AJjpXb&,i1hrc@F
4cfrZ*9j'F5YYAm58r[Y($@d0PN`bSFhL0@X"Vp@mIEG"j2"ai"rUIIEe3$8r*HZ
cm"6+HXh#eJ(Y@IK@B(-#BY9IGrU0TZQ4!$6eL-+MBIBf0UBp`liV4"ilUc#+%@&
aDX(HEcMA1'NC6JM#Y0C9"Z(A-'T"mU)K@(DUhmjcpfXQR&K*SqIpl*KaQmpLI!B
NX3+aa&`r!c4aTPS`%"qr-&dGf%r,mj1Yc$G#EN6T+fa#03!P$Z(K1&faFb32ELD
QBMBVhBY,lGk(V[6I#q"jm84-JrYCe&B@H)eDCET[&'QU,-V3DJ[6N!#iQQBXGUQ
-,l@T%L,P6ZT-l-%ml@qRp)9mfmCNqpGq$h9e8d[Y(AQKlJd4ii2R@qMJpK+!aRA
$pRfXQI!QfXDJCr('+m@iA9Fi6$iTNpB3-i`Z3$aG"Pf!ZEI2hYjMr"U(eT!!6V(
mIRG$RjNhh`+,VG+Tcm[911JaeVY&!GLihdjTe6Idf$Z4)1rd#b-8qf&a,fh[1M5
1dC+e2e+kS'5Y1GTp[KC$`9r+5kT'+E+*$c4hi`kP$2Ka1#QJ@A1p3"U%U+GUrC0
A6TlmP+B2@pRSBi9(hfiie4R+25AqpE0211DSI@q(Dh@CIFm+1(%bBp@L6I"29dI
Yl3m!r-049TYd2d(DErLK,cD"iQqHkYE'ladVAThp5)"jSaCJ)Mhhh2MG3Sm`YS@
1IfXcRL*aKX0TXN-%ZL6M1AMX3SLk`CRmbNcLT'p6N!$5F@4*XceQ0B!!LdRi0Kr
ZD[d(5M9+rc!TM4P&fa!VYZ)#EUZlQkNGP(YH$S1m6,%6k13"3!+J+4TkT694m50
LGF)X4P#aceHZIf)")&b'(T0F(L[i6m6jbKKNSr'%Y6$ZBj3L3,fldA)@@(q`Yj'
*PaNZ$5LTRG#cPHSpkKXlpTDPTb6@PM*XXf,iIH08'BBLHT!!N!"Y01-5r@*rE&m
EM'F5VGZpe6mj`#*9GXN0F!3e+Y[D@&-dje3m"@G$-j''4Zj[Y%#MJM$mlLfQ4)Q
pGD"hZa8)8eDaRdrd0d@e(ZfiV))'TG[@![#UrQ65a*!!9BHCQjTAE%Nl[[K%U1$
#pb%a3hZ5Y@0e`#[*K"C%i#$0J"!fYprri5l9[NU#0Ska1m"*Sm0*mZSFM"&'%&9
5'`MZFkPVKMQ"B@d88'I+RU4UpaGFTC&"m)C6ZT(Hb+1%i)d%mR23-Uq2AJNaVDC
qrIrbD*PA#8k4`+jJ#AEcZ,jbhCC+U2`@HUhUL-e92BLI11#455Y%JB0,J'-5p+2

QP'I`j6+'6K$6Tb"85D6,kH@9$YfFE@&ZNHHHCb+VUJEa,,N,A@Zr#QqkMN1T`m%
6N3MJF2aV)aq1KAX1D93R*K+MT)c88(UadS'1Ci"fZ[+U$P"f)##I6``E1PbXmZ2
SL%)E)!89EVY-&4ahe9+EAcf1ZGA&GCPkbkC[kFQH'Gi0Y+-UJqFY!f&8i8kX[4P
6hc+AIUE&j*U)[[ZKrMR'9m+I*&Rjl9E#q%P4NEkD,8%XXc39UFiKF$d'Ck(rJeQ
4j4ETi[h0L8!EhXj0,KdN[mJbNf!T`Bm9b6*TA*[MZ&J&`H3-[`h6Q,MpC1&Qi9H
lr[PB`0[3XbQ1q29%V$Xh9lbEJL#0U95HZLY1PV+#e)JFiDEG(h*ZXkh`(L%SJG9
PJ%TfM9`,GIN,b+QScMJSB&dJDj!!Ij+3!)4K2mE`[J&l&#KMf)0FPSMM5T'"bTA
3Bk+VSrmEqRYHhi&`["&FUr+l3MbH"LELKJC(@`1iBKAdHZRP#E$2bd!G(pi-6P$
YLe3iBq8l1aZjAm"29)[KF-)GR$UP@i`&V*4a05e+KKpBA#JKceG++Z5KT$6'%0-
1dRBIdR)B$*6UIP"Zq!hM%IBT(X%dAF9ZM@X''8abee8RRdpPA8hC&bVS)UJ(0XF
6UIj*FNp*p4YZ*",qYk4'mEN[Qi,DHf!3lV'-CUeQi'9`Z#b(i@P#UaM@c"F'[Si
E6RDEFGlM[kX'e2*,hKf88Sh,N!#l1@Lpp[)*krI$deM8Q-l+)kj8SD1@j*EL5FX
aE3*#D@3!"df),L+fX!IV)MlKJk@k!VMIq4RNQ,,$HF#),*eA!D`+c1Y!dAc2XEl
[AkAerPdi2qM6-G2BBdq-K`)b@9IN0$Tr%9&3bbpk#!+KlaA3k3T@'48b"fAK8'%
8cKpcjVQD@"6f5K5Q(801kR*CIAp-HC!!@Sp(LLJ&DmqiYKAp[ScMTURThi53!,D
3!$fHDViSaMGf!F0cGiF%P'4GbKL+JVka@-eZNRf`#JNT91)I4PakCQ'+hH$HpUA
dNDfA5$$#A3Bme5)%1I1+8S)(qdI51QV10AjIIl1VcEaL6#'8AELdiDiUeR'Dd3P
qMMmm-ZB@khje9&la[M2&LPA63KT(mVhTm!M$P'r4(bVi#[h-Dr-c0U8Ie146A6i
@&j+UaM0kRd3ie6dqil`a!dD`iCqcfj2&iq"4Tk+i0f+3!,aj[mqIbj!!Vp#i"lE
(I&%m"pM,mf6f@1rD50dMHAVKDSS(0,e8,a450JZTHckHGIrH1!8(I1)[-chSpd6
d,+UZmbUSqSiDMYKkXdf)T(%r#41'QTV4PP)&65-DJ,&p#B(cj+qM'QmGU)FTC84
%%Qe34QE)MS!"aX1XV@qf29U"8D1[,Qa+KjP[4'R5E5+15E`qDS-B!QDi9459C(!
AqqlAC'VhXmKhk0V+Lc`39rhLRGb)8eR3iUJ1,KEjM5`K)e@D2Um*hkNVhIY[VS9
A!4b3!2dS`rp1H[b[cQY#k@YI,Sj`L*T#6)QmIf#[h%SKaR-H#KkAAEZlqj!!`63
VRe*TAEpY0Mh8+$2H[-cc"RBm)2jRC"1b,2a"&CZ")aEfMjF,KC24f8$XJ+PN1E@
[6Q*c0qX%HacZ81'qZMBH%*(V--RiSA)M2lQc5m8'18G85AKMUHAa%!Ppa!X4AM3

R0D%5fIbG-CS$2P!BP"S,YECj2aX9q6Rcb,fF%GQ)P0Li*d&Jc8ZMHC!!eVd`be9
G3fMJ0b'VjNFbr3e45&HBUNjG)jA0hMe3)cG0bd#pciK[ZDq5h8Bc,b!kLAlidB'
96[Q"J"2R[dffhP0lSq0NEHqQTAV$!mr3Ydkk5!LK$@AT6`'QJ-0,!'eAYI"K8qp
%aZbKe$r1fF(``J8rhUmJX)@8EMlL,N5p(NQ3!%maa+Yj049*"C*%0eC3+KUT&IS
%JmT"e![bpc+)HYV9K@6q"Ld'`1jC,XL5@LmGZcA#0%GepD0Q,0@1rb[lIBY%e%A
R!IB6%I8d6A5bNaj#'[PSM6Y1Y$-l5a9M6LFF!0IBIf1HaQE4RNSb'X3p0G3DqSe
@IE22VMUd)'XFE&U12f%S9Q$GURZ9`FqcY[#`!bCrL[B$pbM[XlPh4S'3!$V2c33
E4I08RR%JQe4j+Zp5iU$Fr$h`5*fFIaf9d,Hk@e*4"-68L9P)GrBr6)ff3dfJ+%D
KD8X1*0&qc,V9UBbDT!JY914J5)C$qm5$1R&klE-&&%32,d&kpSV-!q$r3QDIdV"
FR!rVJ*c*VUpIjLh!ZFcb*)1jl$1c(5K$2m5aEhG@4JlcDX@YfUeq$1b$P$S5UfQ
B-pSD([6fUjj`#d,5K&f2#$3C&!j33RGB*48)6bJ$B(L63Y")0hdN"adU'a"bb$G
3H#+V56AYR6kVERKX-iq0@Mq+6MqQ@bl8mUc[[!Lc+BC3qEF6Y5EYiUL$F)bLT'-
)ChkRc5KE3`2hGfpV6qNXkHN-bepe'))[,B(`e[S4pR3H3kXSBRPk"!,!q"plem(
G(qPcj!18P*rl80-Zd&JFL9XEJ5Ybl41JjAj5l)'b31L#eM-@+qU5NCqeA4I1QD!
L3b-B%42dHkTCQk63ml&TPQ)S`I4b"VGQ3Ql#`9hQDbURYShP(Mm9&+BmXkfZ90*
UVrRrNkJY@*&JDVQh4FT9fp[hPcaUbF(50SEc125'5L&pCY#PN!3"!!"#!"#i)p`
!Z*iA&`!!(DB!!+m+!*!$cJ!5FK8!$Srq!!!ip!#3"!m!9'Y-D@*bBA*TCA-Zci!
ZH'eX!!(`Le4&@&4$9dP&!3$rN!3!N!U!!*!*!CS!N!0T!*!%$`"#`G5+Fdi)FiI
[%!&,i2SlF)k&dU!8b[Ak-G[IFMe+Q-f3!-Emf&(([2ab"S-QlI48kGFC2Y*dUkN
@)4fE!'(FHZ)"L6'Q*GT-@hhRL*qJ*`&B9L'FN9CmIM@+X(ZL$iaHh%[#69+d-Gl
!3X(8KJ&4pJl+aVH"d5UJiT@Njq414")RUCM02S`KA%"RmPJh-e4KrYIcVGfq2AZ
%YET[$NdbQb%L05K1VQf(V"#&jSHM#E@5#36JlGTk(ard#)$X-,C`q'NhqAY[h5P
+@K[bH5qUclX,IFc*E'RZ$r,p-X*LEXf3!-3mDi,''eK35+19ib`ll9Flk6m(D@j
Kq,4(DR(9LPDR@EdD*Q`RiTY)rfpHA1$M2lZeJfp+Xb+lS@48B(#c[pS1N4eF[(G
!b#Dj$-eJTcmTLGfZ6F6D5%)md`#8c$&0F%4C1hQN9a'16qe'"pH%BbGDXVrMQ8V
SZQQqh+)a#%(ERNF"ffe$2(da4T4f2R$DJL@6A2d[mMH$!p68I!*48FN56fe$iN1
LM9dAa+,3Dd&#aH4FEICe%P)DBGK+`3RGp@KS!+j59LNei&P"Ii1$9JDLKLrDI4P
$r*fX%k&@jY%Y)#&SPVGVk(A1LHmCHd0HjF)mbD22dDhL#FG(K2VC1p%2!)CK%GQ
qPAqpJ*!!2N`Z##A8,%PNRiNe!A,U'`deF@VF#Uhl6+-V+r*pq8lLfa4k8#YaJUM
P,CGhrCrQ0h*l!DR2d&hT*5Ar'#IQrclT$F3YVr&MCHkV#4J*`%+"R@$5ZLqR%HS
6-GABYqRM*mqcPGJ&cdPRcXm1[cXK+MVbX6YKj#VSefed@q'dEJQRi"T`$%,ILJf
RTUfc"%HGVq$@bM`C%l4'`&C+jke!-Hm"rlb02K*Fc+G9`pU(K)G+Q%qdiQ82Y'2
5S`UU0Ybp(N-RbpH(kY'r$Kre-Dc[0lUe%S1@FXJGI-AQj"hpr53i%AaU&QMGqk@
YZ("8HaNc6,6q9m,K6'$ZbX-"9d+HJ*DY1T`0a1-K61jNViT6bbmrTN0MEG9jl&Q
I)I6Gh8F&J6P4b$!4LqRIa*`@e'9U6CpEfETI)6k"F*9%d"N#QJpkMbN808V(9"8
+E!fmaeBc98i'eJI,"HEl"2haf-AV6K#PP[F-9k+iqfEY4'dalN&%299)hP'#D"C
E*d6k-!G&UJHHYrr5k`m,mGK#(h$L99Y'l`@md&Kc[H$!bra(rAS5IMF6dVPSIY)
rpK3,8MdDD0&Sl#Q%rDe6532!Qe+i(%VIX2HN46-d`X%a($&!VA@4r@JBBfSddVM
0DlQBTH[Feq1Af5VH!U%G4RE286%%+$5KPaB!28NUX!D5@3U-AJNGFC*,5G1TlZA
C)bkHMG&1aD%0R'"X#RRCqZRGE!4CfmGq!%&1Q(XHUZVHDpeMJ-AcKheQiq%!4YE
SJ!-08DYlHUJaL"Aqd8bS%N1U'jh2rrCp6rc-arP4T'GC1eT3%l!&F#(U8ZV,hXE
'5i(iPi4D5dJXbSfYDPrFC2rRD(dH0R-2D1e%lSdA9eqVprE*b0-25KSSJIcB`&4
c-a`jlR+M+6(ZAH5fJULR*mM(qlLFGV,Z@+3`&QDpF5c2pT03[8e4PR55N['H6a1
Z6+hCG-$#YkJ@ETKhbPdS@f,CjpZ)Tm,Q*Q&*J[*T6C!!N!"M(8$Tk%p'TNfV02V
PM@+UkfSj[P8ae%+'aN+cmX3`p4RaMCVQYAdr4@RmLC)2'C!!9U-6%8B)dJj0e8+
Q2iGfV3EUHESKaiS%)1ZF$JY&IHI25ejA[C%ZqlQ0(Y$jS9Z$NE"bBJTD'RZaP3&
Q[LA#DL-'JY@QUYiKe4ic@jrXI20&5YmjBd5hR"S"CTR*6UmC)c-G)Y9,4P`-9qA
%3$keNPI"R55mZ-c0cDmCUlqL`Bf)E#PQ[L`(#9aRRU'V4Kkh&IbJV,GjV$ASa'k
qcB(S@l5J6D9R*4ka0%&pV#qab4iJ1FV*Bf39NC'LqmCEVCD%lCrBBD3%(S*e(!B
![cFZ@X(XG@Z83fDLE`GNr95`[i5dUh&pFVIdj!V[QhUaZr(DYR6GRim(mF(#)1"
h'S6H#DV$"4Na8I"[i)cl$b@T2Qh'*b@2i#l5YqH0q#p+pXSiKCpiGS18cDdMUPi
'9b"E)8JRAae&F,TBKi[L0M6CdAG[VbZ2jR8-R-!lNFJ+2KIHjTi6&j,'-Jhb&Le
Q'TkS9PdVZ8EXm[[PlHD@bcZGNI'Y#[!a[mSbrY!55T!!590P"dMX@f&DEl(X%cd
dDGZ8QYSS2'hr"k$8[1baLSHc%pYBlKKh1dMc`khBhQCT)[GBF#)3GUqR4P+6A3G
IPXidp(0,["HT%ZikpY!2,-c!hBqUlBTV"!Gr[$U+6peYUG+LL5BH'9hPbGar$1(
fZURlaP")GlG+DKBqh9N)[lmqq-+#phf(HZBZKY)8CQkYM35h[mG@hGh5p`29e)-
fb+rprhb#jK)JbD$-$I6HFUfp3UQk8$lUq[5jk%EKK[3!3FmibM`N5AfGSVE4iq-
eISel1HCik9U,AQ"RXe-1%R$"'PZ1D[e,&imN59F%&p%ZY[(85,eHqf#fYlblVN[
S4p#L@$qjf+4jZYAj5E@JffdJBC1[@@(Efd8UCZBRZ)Z,"bI"K3N!MF8#)-q#"AT
MlqJml@dUpIRZC(hR,AiET%q*CNA`m55JE-DJT,b`TIrG1K&aN!!SYH2ZfaDH-+5
`JDF"ij!!mIGA%XRTrRUBB%ALXcpGcapNF4G@`4fcc$dlmZ2Bi&NZhb[E+1llZ&4
i#FH#RZqRN!!XmLRe2#XAlmNiDX4B9VYM%SlUQJiPNleEica"85A#4k[R)Jk"Qh3
N0(d8*h(0U1P%4MXC9rUGKLM'M,dfMQh1F*'A@iY1f$#(ACANHl&S&Mb-B0fZZk6
)(Z`C('4,V5aLj1f2,)0U6SiK$CV#BRB1$Jdp'[I"rQD2$EP*9ReD5&eKL$)XLTd
MdDH`ri5B@f546!Tjq8"'fJSFK-j+0h#FeMNbURi2M$J4+h-@T&ZKBDl%+c+iXQ&
(cIF-2P[-Shr'-YlM($69X'bC0P-lkbUad[([3Ql3Yb'cAaF[XNe2')!qe,SK(5M
),K,!TNBbKVriSbL2H4VD(Tjb4SSRHa5N9)9m)13jhc$K6L+PATadH#dKQ"B2@[E
GKAp$6k5)@G3Y#XG6NiUbN!$A0&jJ"Fe!!8JfXrDI[%2qNZ*EfQ-ETKA6&q5P-+j
d3jKcRfN5GjaC%Ad@6C&TirTr0CNEjQL#FH%&Jq8b&2CH0('4EeDLa([MPBMe95l
UkR0qFGDb6I1UQX!hAPe)TiGN4b'T66k%(mG9%AiI%165(N-[&`%RV(61&IM,$DV
aXk14#5hR*Gh*f`@9h#P5+c#A-*SrPfG&UF(f`!(Dp+$`d$IbP'@!L`M6U&P4C4%
0J`#kkrT,[9JSJKldJd%JbLUD8XbIX[3&%`-)301YqFT#1c0!+(8q44MC@"-AL-%
DH9aBkpp$lp@,rb1Yaf6mAU+*ReY0#J!,3kZmA6`-C0ib)`rpjId#8$a#r[K$kb+
%j8i6)8NKX[GS56a9L1mFH0$`,bSNYXa0HP-9qR3j@Rp@R1(qQ!Vc0VY03b`FS9i
S@((I6d-9eE1(f"DFb#$SRRM&IZhcQ`DEeRhX-VZemV"hA98T*1ND6iT0Tbl5hlS
5`+N#b15D)'@)C5AC(aT[2hF4D9Ih)h3%2*K'CHX[CAF33f#USeKC05lZP9Ei`Dm
(*`0"i@2rHLHaY`B,9JUGpCm"2fkF,#V4@NfLCc0PYUK#&rBU(lCN2RITPNRqNrJ
6D'M&HfEf!HCmaql1&U)dD-Ei$p9majCmLLC52*!!k,[ZamN0(jA9kG0ZrM"d)56
Jr)MEXB+*4*[TiMije-XH@qkN4NPeALVE6JE1d0X&1R&HZ'4A3cjjX-VM3DF!h4M
3+$RScc(L4i`D9@8)&3q@h613!*(6fKa+9-(V#5qU$hT8iaSFhPfikkZSX52DT60
J&RUK'4N(C'&SXD"Q5k5V'6Fbjk*2$jrFGKR4qpcDGSCTL`Ch&aLHb+jfa$4H)f5

cA!85N!!qRHCDfp%ErEElhRDfLlJrqAS))clJcL2HFC(4Y,q6C)FYMIhH["+h0NF
MSh`i2A9VBa*M5d*%Lh$F2fE2E-C8IK1rmIIl9[4dM,*GUek&pZYaFE&$qpICaJG
D+&#C'4hTHL$TBqD*Zc+!lLR,&rBamV#PmJed#V0KQP%lEq2'c2'1-$FREkadHm`
H$Ek'aNa2Ya#YTH9P*`,p2qf"C(KdBQ"-8VchUF*ALI,qe5S[4-L6c%e!CpE$FGP
N-1SFS"*cMM4,l1IFZ+AjXq,)9jImMpIR2(5B%*3CmkE@`-`p1Xq`N!!'S(pNPJ3
R-NRl+'56HUD!R3-[V00MekFKfl,TLRQQ)mimfUcc3XJA6LPj3C@HC'4#SpL$G8k
H`Zc!1PkLTL4mH"H1Z1(QNI8UE5U'!##RrDP*5qk(,#JNH4+c2dBa5S9(-b$iqdI
EJl4N`CCIhlCaM@Cee8hmXX[(P)MQHq+*#+Fb(jiGGhqrKK5jdEN&4(jffZ3%aLb
d1PV85XJSTpf'c"&R`4"B1KbG5A!'rmZ)ZG#jd0(dc%)U@#AD`,,K(ZfE$lVKP(Z
%$-PP%Hed#N6h&!MS53%VE69-q0U08%pRrlfMYIhRKHL9$$&aTkI,$`4L2XN2l5"
4L0[-[*j"0FE%RMJ9G#D@MB-pelABSKIqhSSRpZh6L#5PNhS+qKS36Jd)URUY@4Y
GE)2eL!kJH`0Z'D%RAPFZ,MZfXa`Eb$6H(#iLUrpG'JD`*q-i8$jQU[YYk@-+&c9
(2KEY#!%GkC553HL2[X![Lb+i#`IYkVY5$Jfi3QeL4)X5[f[6'c1AT49$qhrpR33
T+Ze409RcFe6`Giqqp#I*V!EUQ"505#2TR2qQ$GHTI#0T6b0l6eD64lcLRFJNL5*
d0L!ThHEFSq6*[K2R(FYaSTAC+d5KcDjG(Q2!e'S,P3SiJV+9ccQHp41'$%2+h%1
qTT'3!1PP#JFr(35dA(94&HT+R22)p!LS)akA[3VF2Dai&3Jhd!QR2N$D+cF)#[#
jUAbRS3h2YSc+"%i[3[+8K'b1m,mM'd[Xd"dbY,85V$ec*Ef+Fq95DKUXYXa5p$P
mA9X10E(GddF+6(+jfE#jZ)Z)eiR55IG*@10E`jQhrN'mFVkDcdGZ2P6B8k6l8F"
5JZ"F%l4H6QL%"#04983U5CaNq5GaP6`)d@llp#'b*'pKd69Mcj,HLrNrXkH-M2Q
#E8)3(L*Q#E2'1@XH@JPc1X3Pj`4YTfc#4BDDDq9"C%X&a+FLrQ'&H9JN3UXM4+R
j0pal5dUJQ4QV&*9iT'KQqM)PhcQY5aYDd5H$QSPB%pe+-!%d6DrK4D@C&lqdQj[
J16$)P6!9IVajq0hF%5,(lDRZYZ6[(Gjf['4EVS"N@eD##Qb`rUbDU(A0DN@dLRC
8LD4)Qk*(G)3E+B*3jER8X'PSpSEhK%*Ul&iK)pLYTRA8iqE$"Z,1aDBcJG4&jCh
'dEcL,ck*2ESC+P6-Kfam6Vkhbj%#)%Z0#j6dqeb-9fTamcVZp%"QZbRLNEidGr-
N'8bR%4)+QJA!Hm!0-2j,QhTr(iXdkCC)h'fAPl0VDbmb08bfdR#U69im9l'L!R2
jF2G6$(GH&Bm6"mB-VBXGl+)qFdP(Bc'8*&RmJc4V8(+B2j5&[021Vq3X*rm'P0&

JcbcC5!A[90r$jrY!`%@Y6"L,qUMMR0q)T0Ep)(9Tc&X*Ua(M#KL"ar-HmYPb-dp
Q%SU[kAikHRd3%'VajSL'Q4UfK@iQ@@2AlI4f%STL2$K-,McDVpNUqT&Eeb6TD+9
@2KjG6LkX&VNKr$I9GajPf2B,9XU68aEV8hUCDG(iq*e9mRh&Nj@qbT4biV2"R&Q
HF@MPH%@[Jik[`[Mie9[kSCRq33'ZFE2ZKqPVH(I4+44eQ8fGP1L3!jeVMQ0hPS`
&2fS53!IKUKir$PL0%6hP&iAe(eKBm3@f@lAh4pU58HkD@5,6Ca(V)fmKB(Xc3%-
5Hk'82feS@FY%F01S-F"b'+c[C6fY!h1$H1feZi2blQ)c#FFhHV*XQ3jh%APXZ+Z
KM-"jLEl23EfS&ha5fV*1L%dclB@G%F+$+"d6f,8iG1'DN!!'jR+JZk$miINQ*&2
qi0Z55K)JTEc!325Y'm+%,+d6*h2%bB"3V9lDSIaH8k+3!-*YA8KRl!UMYm'9b`E
iDd$ZrHT#qY[BSQeBL5be$$N418d)*1TkrbU2#3lJ"1k"S8"@Rk'rXiCXrjaK"GP
jCjGRPTD[+m9fJ3+Il[&VrSUmp)LC+'S8&H*Qiq*a+IHB"ld58&r"Q%p0rNf+GIZ
Fa(QeLGel1PN,*1PIU3#-V5d6!Hk%k[(2$&[42,9EG4eTZKa65@BDATXcHc`TFdE
&K*CGhK#R&%S3QZZc`Q`DqB#UDEm`5-Jjeq*lb,4`[cjXr`#bc-34i-GKG1!,M@G
"ijCIjEU[PZZDCL3I(C011!a`d*1$5I@Tif"&HV"M%!@$3mNYk9Cb)Cf"K@B2[ZJ
DfD*&G'#$FbrbZP5ZIhU5&'bbqD"&A$%ZDdKh,C-MA519lLlpBaU+1bmCpjZp%F,
iF@41LNbA!ZQSc,TSCCdb4#kAi&0El$0bKbS6DL6hHP8MfN&C"F%09BLYE86Xjlr
1h)()(ElLqfYY-i%$ia,"51ePUjCYA@Dmem`#hCd4f$GZmG`H+`SVZ5U&Q4+Klcl
mILX3e9dlri9FP@qK,J-+H8Kj`'bZpf"TiT!!j[S3L$T*[)9XPJBVk3%,"+FDrcb
4'8+X`&QTk@V&JD3eI[6,13(Y!6(%I**5IQma8eG*Q5"Edbr(+NE4"1$GNclSBUq
2A%m0Y5r2&VfDEir&G99bp)YEJ[EcXkL`E+jAIKq#CAZe%AQ`2+CamcrNCBT3B0$
FU8e,*@DfM2SM8lP`%*U5#dKbj@B@faQ%F!iepKe39jP!b,j4TQpAL)+hTH*E#6Z
B#SRijE,3D`YfBSdE@N`TbDR@I9IEl$!CQi12XIYTN!"GNR3a[8%JCSDEHhNj,Na
i-0(L6fkcI)r+A8Y4kDX6G9MAY),HSDZS0i)d)r[hdQ-cPS+"I41UCkcffp,B0h"
mc6"9h!VrIZS%jF--DfRrV6@k$!l6V$E#,Upd-3#BaA9%,R1C&8,CDB`TAe!4pCq
p"$E,18&4NVU`(Xh%0C%K'`LeTm&"r(*&Z!NZa)+&E`Q0Q$B!D*`S9PUbf!+)V0d
bQfN)%rmFE!$Kc6dTC5LRD8`32q%4$+Tc0E+5@RE#%U','Qe+9e()bKdLGif(B!L
6MGCVNQNYLK8'MpFQ,JjCqZ44d+iII&QkCjGkaFB)HS)h!mSJiN1&rb3MfaV+[m"
2!cKra*rJ)%bJSi!6Zjj4Z&2Vp#9daNF#ESM3Pl2VkI)&VV,J)8CZr$Kk9*ZjV8k
065$%i,Rh*rEZbV$NqjGX0Z3A*3&LLZ%AP+cSSi96hBDjJH66N6Vmp$piVR)T2%9
3G()Y+-4RTf%MZ*r)dlLZ#+0@!K6C#$PqHVTGC`ZNGZ`Tf&,bB+0Y2M`VDp3"MSa
"NfaLM2+Y*M"FDIAG28DE#,AQC2SJMq%%Pi*m9EEr"),ZKP&aYK`qha2#6514NLG
c3dQJf2Rp$V#5JLlPN[9HX(F)jqAM$ir++%c[10BRV9EZerZ5dj5qq6dSjT,jf+@
MVYdVPAUJ&CdAU6LT6bY4$G'`r0j&ChGRiXcLM9S-0KZJK+qecFJkNa&SrLFZG4)
SjL*KT)A&&,5[AC5hl4Rc8Lie!82)p)!C,5*S*`%rr&NALLlT'GH5Sp$jbM02%)8
M[%JiYe98E#JDV"NL1#J9ND89fX@kRdd&0Qfkh#Smq9Bil06PEMeSB&T-L&1H+bF
dM$VBjFLqbXJ6#eRQ!'-12MG+VIGGGlqfaG0!RrXGl,U(l8lU85m#8&a$0kASiSq
+!p,YX5(&&VK+1P[m'p!FdXd0rXEPL3b5i6l+I0a&@%&eY8dX593bk%UATbUDK3A
C$+'T)p%j`YpRBJMT3+AXbH@C1Ml@bXI)Q6JTK)KQ6hSe%-Ujb&`chR*3K%BVfrf
Qp-,2c5F+NHqb98mRl#+VVdi4)*m@8eQV4aP1P`EpT`h'Y%a+TNUMXLYK[JR(TLc
@%KrE@9r15YIM(*+UlXcG$Bk2(prQe*GHGVfUr1"qAmG"*"QKVp%!Na,'!GYSjS9
$dTl5[N##h&+ARqqQ*fFSH3'BBrZrhhqf4B4l`B(0KC%CYd(%!Ge-jPbai2H!hZm
DlY$p%$ZU0@ZUP&M9T0lc0,&NN!!'YbP+XI",#QFGjmT$J&K+Q(E$C93hTf'S2D@
GKTFlTm3*""Vf29&LrXH%4,E5bKppFY$08*H5h@1#K)D#k)Y*3Ur`(fPDc$Rp*@f
UIh)cQJ'3!*rM9&hV)8H"!CE'Ue#c%*Xh+iU@c9e`'TL,QEYh`!a4KQ`2@5pl3GB
DY0AG95ZVJIPSVpSmd&r8kTQCddkNbcD@c@1jHDD@UJLL"Y8Kq6Imfd`%YC,1*+M
eb*NVYES2&mmpq6-SQ6Mj,DfilM"2ILb5[5XN,9"QcTFPQS3ljC!!lmUCSI(#)N9
90JX#q0bhY@BbJ1RJD&mp$4A'S(DM1`bfVIeqAh`I0S"JRE*qX)e%6,GMQ#KcdAb
2AB0Jp9EUeVeEiMeqrplmfA5PP9I"AJkce""2rifmKp2E9j6hY8T2mKfii6"QE00
L6cPZD`0N,NQ9!fVYdQXb(h0qc%A2Q&46K6!jX9i,ibF`e*kY,F@[2kq9SdYr6S(
FR-9ecCrP$++4+YCh,jX9IhVKQXr0CHIr11Z6N!![#'IY*j)H2,"Zm[`rk$")X4I
,*Z,0GfS-p&4F'm4ZUm"+Qp*-GS25F*-&"mjQh%I+B6KFUpa(J"$)Sq9VN!"NlZI
lQEjNC`e3!5k5#!KSeRdLXcd3E5R'33iiJ1CSD(I[j,*h,5jH[Q-&"(E!,rAVJ*e
Bh@I2I#[G2!9)AShiFCT9Ea2Cj0MjYVVFlHfU!#(lq!Km*QL@+CV*G2!NI[UEZF$
F0MFk1c9%!hcffQ!a8fkcE$pZ%FFPl"FjAl%X*f+8[rTQ2m%bi*qb-"[#@hd[%h2
DMELeR,UGSSQipZ@)8L`Aj+M5XmX"X2-"CpKPI1`#(EMr)e9JT`0dJ$9ET5"CJCG
H!I[880lN2,qfj0fc,NH9$-&RTmhbKLla(kcAI&iflZ,9JbGNTI#VQi(f`PHE@'1
HUbAKSR!aalk9TLqcbpB-PYifI*PbHJfA%&eCU-Y$,hj*i6j,)0`4U42AU,Ajmb3
RaEDL9#S(BX3!f*U+PflTkGL95eAAEAMMD!'"56@a$c[Vp,r"'L*8acq[dV+)*Ne
lrZ'[a,9fXDS8IIfa&[TfGT)HbAlINIC!*RD@)31a!hdhmpm32YU%LlbNeE59`CI
VNGPPkG+*i9P8N[jp!m#K%X[kqPbSH6521k(f8PG3R`-)421,X4#8,Zj0)EB3QjB
SN@K'RE1Bdl`#$&-5FKRCp@C,B+drm5c0YiL3!'am[VMC(dJj2lT(SU!P+%hLQGR
-d*!!SP`XaF8,h(`QcdRfd(d0,C&IK(,JN50fR-e1Y"eTA)@"#`UqmP1pd81$X,V
!2EJ,LfA`KpD!h@d95riC#[8YA5rZ5rZYLbA"GF@ZIrE5FNGE'HZFf"`I%Fri"D!
[rVSFfN@1!d`D5GPm8#RjRQ!X`*Pc(SYehcjX$kqlMhj1F+@#((Uk3"5Z+ZFG,9T
Kj-'11hTPaIiPKVGSb))j+[LH[0B@KNE&dAqU,+b+JZ)ddrV1PGSCN!!N`"+5m-6
'V9j%S*fRLD+hak&QiEPC"`2-ipCB8bBM@hKUXN90(S"eT!%QV[Dp(H5$BP6)Dlq
+U+R*%Z0cJNJ([jIG36S9pH(-!E5c9N58P06'4,Z6,XKCM+2pfK(H@,Z2@M@`[(c
Y@*3f''Q,(LNPJXGq0JCYH-'9N!$lKNE#Sc%QZEiaaH$PC&cY#H(3VIQVdGZI%qQ
*RR1cE(Dp&q#BN5&I86a#0K0'$EJ&rSIIFqhJMZ2Q6Tipl2S*I!6aDkT5*a4jqB%
+[Ni)h&cre6PJ119Zl4P#9ID-*DS0+`ZBX!p0PP5-LYeSkKj66"a!&6Ad#HMeYa+
EaAcG9UUTe2h%'021$&D,Nr-E2-cNMR0!EHd204j2$CVrpk-ri`lLS4BB$-"dZiT
N4+DHq(c0%8#hI9ZCkj9`#4Vj86AGRcPDUIj,F9jhVdQXJ&K*33,UD'(B1'kY&LE
LH[SDP[([#M'6C%S&Jmi,+Ra#S#!kTb(LaFV"&F#C-S9R+Idq21DD-,-c`8'1`ei
[kG5NFHq3!-M3D5%%TUH6lLaHGG&ImS[k(,5j2BGM'MG'6T86#8YfK&E!5iS`QmY
6)Z0UR-i5,9+CNX*@G!VZXCNDM9C*#e2l`Q0LeSSdCk#8KRCL[GP%jA#DUXacQ%-
@@i[i43"51ij"*LHIV3PRq2%8b-DELp3JV44B26U,YcZXM*-m3Y3Z&Fmk5cf8d4j
fMbAVVE$Sf36c#6SS`f2X*8Y(cC-XPBM'-B%cThS,0rEPZB@TJmXdK!2UHBLX)*J
pSMB9GS!Kd42Ydr2fTBD&'eqTQDK#Z9bl&5cbU(H6&FV2(lA#qlhR#!2m9j&Im#m
6VHCQB15bZ5#%2caj9P-8d*%5[(r9&KcI)6Er&c0ij&iE)X0J+2e,-i9HAcUD+Ja
Mc41kF$'$Z[d*QC8(ZkVG-UEbPi@D"1Z4iC*VZU(-j4hBD,$@)ACJJUP-JqQThBV
+[kBC%05!!F+Lek8K8RZC9E%1j@D9ZJHUG&9k+YMp4)FRN[,JAIJjd&NKrb`0Lrk
Td2Ba&e6QHMJi*P&V%m8U`Lpd(9XH[jCar-"i,AQ5Z('3!-AqJpArM"M5D8ml1DT

-$A4*ba6!%i!TXpAf$HM-S06p%J1R11'L$l*AC@BakUdH523LhD)fEXR5&*p[aRC
F1P3,C14@'1di3A&J"3M`XN[Ld*CETle9J'l2N!!)Zm3bJNYimeEGRijJQIe1b2k
L*(C-KXL[MejhBJZe#e@3!(-5SMTd-4ch"Q"1GNQCa@3i&bm94rd2Gke)LP"9e'Q
U8%N3VD$Li$lMpS9Gr""!daE`%6r0f%k&"KZA38mrLI'Y'kVFE*+DjTVRR++-+C'
0409cSAmSR5P4flCP,'hPk"maSH1&+mLS*`6B*h%q@5Ea+"GadbAY0T05j`+j9Ca
J%6P&8P"eQd,rIUZ$@el46[[#HF-P)@(PeaJMBP1Z'!N+dbra()Be*X98F)0c#63
NX'JPe"0R(hKM-l9GrN9LGUKcpk`fN!$54jR'lhqfRD)P"p(4-6%*#Z+091@M-IX
2ET+dU6+*j-fKA)J*Jm"`PSlT-!3dDL8UemUY'HGhJlq&#NeTXiP-YFE#Q0$H!YB
YfcHI69+k(D,e'"Ka`#`$%!KiTM5Gd4RbAZXpqk&a2))jjMLGiAYI6qm8jGjV8+K
DDS!eCFd3i9*4'Ubif4p3fq[X-mjp%('l`eI*P3R)hMe1N!!`&lVNUq"+XRb`9lT
V$,@*3HF(RXM(jPm$(mYSPJ-(Ud2ekL"VPhHrqR51Kql$cAZ&S(PdAXNM+hqe%+8
MQ2-"0)X4%Y#i4`Q!f++5dJD'TChijNf3!-2pQr0TMq!rX8KSIP'3!",9"d&#PRN
C',fbi+6pV-'9cS(ICNIf'3"`jP*q+"SQ*X#BE9R",CXT86$Ifph2NcYc%d@E'kN
4plS@ELX2P96528de)YG5C2F@!J#3!"HX-#NVGLP%RrGLe5!C-HI@'3dA-`Q'9J-
UlX%-#EP0F`dmMT6HEe1P%J4jACLFTjK+&"G59rb9@l*Lfk+90a##SD-fU0VUKLf
Y![eG5G3p%b8ilZ'e*81"2*'f3GH$+jR9dRYdS"@ab-4Tl9kYGSe"@RlVV-RQd%"
NG,+rCjcj5m-HJYREEFZrC9'QpNprCS0'R3re8-4rLI6C-R%CDYF*3)"FI`TDchG
@4kGD8IBj2f9',cbG3P8#8"pad5!D['d&mL3+N@$(ZEZ3!'"1e3N0MN+bMM#IkkI
3+2#&Qa)HKBZ4Y*Rmbf,L4ZaGUBA4Rd+"1C%+j+YLGTQ,rZ6Fe5acpI6AXa)4&$*
R#`)hR[TD&Jq#,#lPDhmDdFdM%+EQF"9T&1mfL8H@c00@1ML8HGLrJaUKrXUPKdD
8QAb!qFMrL`P-DL61$AfQYCbI0i&hc!#6`%*IhbBEIlIJ1i1kJGDiN!#L&@8'@F-
Rp-VXJC!!i8Xp)LArUCrCJe%@5N-3Dp(5CZ!,Y6aI*4ZK(TLkb!kXl0[3Zp!JiTZ
m3eAFp8@hS1-fBeK&)!HJHr5*+CV[f*eK))F"-Zr94XQ8Hk2PMfZ`"+hGpfI#'k,
qZ`FiE36P+D@UErM-J1,IFCNSpk+@9QbS+Vq'D(%mFBVd"#UhC2iKA0Qe&C)M+YC
F9RM23D4VU%,PJ$cZS)8952qr6dcC+TUXf'k#!IL4$&rl"*`B0K))@3B+N!"PGaF
fVPYXI"Zb!,UF@f0r&l"8!r`I+RIl1N5AX[T2*CqeJQf@b8)SUiM8"fkJQKHhm-1

PK&BDL!NNR5m'F#p8i#3-QI)lef&ePJ3(paE2jMfc3R6d9HNE@pK51ZiB(HFjE(S
c))EIB1#K2,#a4,`L0SZk(lalRE2%HU+9mc9eXX&NS)lSH&`JUF`L,&Vm`$bP'QE
&Speb1VKZ0hZEkJ)5@lerbrV40ijd*AdIGVC`pN-h`c`r$%T190fb5UlmT'R09a!
Zcqc+BHel-YYU-#3F`DR*T[4k6LMe!%&Q8Ek0CLRfNB,I-"b0j%r,`+EhKA0Q3"k
#800j[Xk0Rid%&4h5UK!KZ+Gf6QUSjKL9'*YAmHaCbq&X-T6-0Z#i%(SGr[,R"Cf
@,p1p"DeV!UCqj21CmXim%[)14Zmc)L43q(!hAA!KJ-!E$X"3LeYF1NR(8(3H3DE
KdMG[!4qcMCUl+6d0Jf0rD!8N+,)j#,Gi+r@E5Fi3l4eMX%r")(*5#"5&KHD(p)&
8UjXY39'UTX3PL6m'&&@P+q`jJ)K1A9R,fMAr(qYMJS86pT!!1,6EddC#Kef1mA@
iLXcUP$3Hi)%R20eYQVYlB30Z@(r0XpbJ3bR2LXIYT'2mb%K"akB$a"jL)Y*hrYI
$lc(-q+p&H-1qGKXiYCAK(T9(iAG21r")BrrYNei-rf(jK-lmDY8(U$rkl,RiRQc
9%'5p%5D(3N-5diIX)rM*Hbql6%V5`r3melfP$-R$qSNJ!j)[5C3-+BlSN@D"kHM
[8[K*'52%&,2STLQdacLapAVYMrRb5q3JQQRE+NPL"C0p")j[P$kMQV69#r+L"hB
mQQ[B@YAPhpKdrJ"l403cpq*qbX6`@+lNY$HVe&VDAVXVbAl'*dl2!A0`eDTk"()
*$2BT0eAlNeR2aJcHVNP@Q+rNEK(EiM)eHC+2Cpl&STr+h2CmB&`jSiRE%9$%)G'
"fQ)K@mE5p0LlZ%Y(X25P!f2'KeEVbAjHe#BqR-+4FqM3T'-3Ha5X&"r&I[C@j92
ZjGp66cUkhi8qEJM5Z)5F!0ih32+@AqBLNiVcUb0`+YD-0#eZ+)'mG5"i-9Z!VKa
[I-Jr%iPkMSpePde(0Dd5F11[a!cS2R'MmUeQpFFDU@JHpj5DBIRC0D[!1F*LjS)
8!Kh,Lk3%8`M-%djMbLjl[()dFT2dYAAp#ih,dBIe0ekYJr0"R!S93"YlR21II-q
LfSCh-V!TEIDpB21ih[GidrA-H@L)HS4Hp[ISrQY2Vqfl8$J)Q('F-J9N2Zal[@a
fpqiI$KkCrAK2ZA+)*a4Y*3FL4SA``qj03*CLa!X8mXVdl@G4*N1`)-TSTri9'R8
"i6JTA5G3MLqK!rM$d,P`laUF1fd@l)&"L3,IE&)DF'CKrR'U*hRQ2#*jff3GF2S
b9N!`i3hl0qkaYE+q2S[%kZ1'+FTdMVArCRXb6YH+X0-pmU&fNUNE$3TT63QpVL*
L%9'9,T@GaP[ALAEZ3IMMe%ck94qNY5L"TkF8dLHf)MAHm)N3bF2c828MSf#cQ%F
qF4SV0VrCm@cTbH#9hFdRN!"bDThXQ@CIL(11IqL,+Cjjh-EjHAB5VHdIbGTc%GT
jiTr-bN$mCc(HpR$B1i3UT1Pi9iQ6kH2RMF0rT9@&jqd@UHIP6$d4&l'-d(XKE!N
P*5TfALpbJ5`jJi#8cjeF+,2"!&pL!l#Kf@)*JE2*QUmQT)IE1l&fibSi"-*p"b4
XJN9p"0"LRR-J#Xl`Qihc!LAAiP@9M+h9CTc#1e"-8i)&EFJZ'lAY+(!h3Z1(#H)
Xf5)4&!Z%,Jri3$fjKf0C6@'S'j`)ZJMP0Jf23-hq432G*Zc+**5dSA0KZZC3-M!
CBB+e0KJ)Ph"8Ajh0M24hqjNBNpBXhkSjRb-N"*!!ic#FpAK5-D(Ge36-ZHrVB3$
@0''Q2dUD+)f6NdIfm"CTAS*JSDYVV`K+"ZSYle8daplbH6I+iYQlfE!dr+0abmL
2KfM'-#KTZ#E)8i$'+$RS*MG-`80V2&811$"YILfTmR&9Dd'Z5h2'22V0ddk3!*+
@c8@jp`lE4c$[9Z2GPm,kGe@R3"qI6bdNiBLGV@$,'4D6MT642'-%K!5PdkS*hV3
PlNbm![qP8B9kVP[8Zl19B9k*6XCM25i5jZH+0mc2-XfZbqP'#FRjcT)[*X[4SUU
a1(c+5$E`cXGe9Ba&'ik+LBi!8ake1MrCp"JFG$B"ceN!"PM6c-FA*(crGNb5jTD
PjYDR(eU)V8YHa4E"Iq"6KJ(,r'5#DXNkN!!Nlm`Hq[AY3Qh,d$5-kMd)AeEjd49
(HfIK&5jC41G$CH16)S+,KHq$BbC85mXp4C)&!1()MP8&ZJUPpRSRH1m6B&aGC3@
"((EZBUG35fEXhi(1bh1Ad-hldrAR2k$Ne+$EEVC%3TVkfCdI$2R"BV($@QdY98X
[5)"dNM@PQl#GY+S0rRR`UmBUA9RX-9[Eq5cLDZfe,69!)+C`3l[BX2&K+iI,(mj
ie[(cHVra`4cD$FL8KSr55UFN3TBZUq@UFdVMd9B@QHLd$XJ1'[!XIcAm"NFd0fD
YBLMb&'1p(Ef@)cH"6q@-H0mDTr%rR5UV%&M@0pM`J$M1!D9kR)MJ-C@E63GM["j
A6*-,RP8Ak`eHei`,iBD1bcA4AEi(Nka&8aB'L@k@U3[G4he384!Ji%%bRNfj,hB
AMNjC'GV&&dDFra@Xk8-("1l,)c5N4rV[44(ZIP#R%Xe!E8#01Uk6Y"fKKE82B$4
T5`DN%+NMHDH`X(#Hk5SL6DqH+HF2#4Hhm@(Cl(kV(HY'PZ+8#iahF*+#DjFd(b5
92@Mer15STaEkHpL)%65b#jRX(Sqb&bcJmA2jRZEPQHM3&NB,KY1P2pK6Zrr1KMG
05-#ZS'rmd)4d3Q-FVl!BecGKlSq12P%r"BXeTFS3RGl-ZPAMQ88h`0TC[FYX@'B
%R69q&@VijqpIh&aZa+l0SYpXZjbZET03`Sfdrq5bih8L6HZlpSmi[dLkieZD+c#
5dFd5P+%@D+[HU"Jqh8mSr0[d3hP'&[8`45S)`2kE!GI!ifSr'(&I6'9CN!!$-4V
pXU8X&Qc8c&eQDk"hh$eSrDA*%L69jBdcdk2rVKUP,3U)S0FNih1Xe&"#%3e8D,p
i&!VU@V&3aHp,Q4(DqN'b%j,PI2keV`Ri*9HZLSaU(25KA%MKb$'2KT29T@"5XS1
8@FG239kPS*2VQi"@E#163AHAiQD)aJ$&efU[DEYVQ63+DqUeb(k'M$0I#Ek9E&`
5p%5S'QiXh*GTVX,*bpTk$XThm3b5!89lfmmQmm26N!"#H$PX`$VB4V4Q)&JZmKF
h83K4j82jF@dEq+*fb'kDqE,#VTF1K0#DGk(L5fMc%F)Y%4d&i2,K(4rP`CT2a5r
03lh"DHcV&fliiFrf6ULQ`5EE,SM8C2CCdf6C['am4+i+mabGmE(*p*bTk3`"6P$
26b+5eCKa3MFkqrr-'NN!hVrl[8he#BiA'LDfe@JA2Q*fQCAdM4NZTS!2jh0dDP2
Al#*lj-l,eHK1I&2d,8d6hmqDEGRXc)C9BIc16F*&@TAlpN+ESaKlr,L-CpD926c
R(I&hI&+$B*Iapq$FpCMa-6*bmA0mfeR4aHFA$0N"h3T'J&HPChUX*(iR90(`,kY
f&m*MYII"`Jq)"%%fZ!-i2p99HFTNhGVP4#2&(-B[-J)A[AP"Ef'Ne$A`d3`,3Q@
&qhTeFk3pGVII#kZqmk4bm"HB#fB4addjibT@AIU-JdpDYP"Y'NA[CCF3kJLbC3q
+)i-XH*02&Sd'C$U"ac%eX8kC2ReFMc(fEpS22YhbNk$VN!"I9a*Up!E,HCNI@35
kAjSh,kEIcCihD*3Uf,-6QQC6CJADCMm'q'*$C&2%"-X`Jm`eh"1YLE,f5I@Me(1
Yh@kLBrFbQ"2P-+NqVbPVFhATP2!mm`U"2[l'AZfHNNG-IKQqTd`Iq5S3JICEZA%
,*4UkNHV)q1CF"r[rFcQGlCVFPKEHqUGap(05`VJq[5!rX43pH,"&iTkGKNm+pFG
,a*hKJMUj)EirN!!i[5bV"jr52mTbC%)5-klIaRP"LUrj1hZTlrNSIpF!m,(qk'p
BMjMMNUp5F"km9!dCE6G)%V%p`4[&YcUechFZXkQVk`bQ'KB@hic%S'qr)D%2!KD
+,[NHR8Vr1Z-AdSH95VGSC&NQ(*SH!,`8,rXDSr8LVF*#DpcYAb#iFR[&Xp"#5&L
)@,HYQbH(Gl6hmYLik(T*5L#!Fem%&8--eK`e8YbK-06rKfTl`iN@38&VFB308bM
$j@mC[UTe0XGU`%RK1PC52#Q#ImPk)CN2P-@&eUL%V(Qr,M%8#S'QQ1)NRrhb@4A
K&j3X*(`,F-"'6&U,3K0*GrUADpABk8aZRP$FCIjL,VPQp*cr&i5mjp6i-dhqL[$
r!*6mp4AkXmQqPDD**Lm6i,5a)jlhU68c`X+8@YJLUZE2hP`1TL*UIr@3!-RT%hD
GYT&PCPQH6+4XM,CHd!X#G'@4BEThNJddcN!qcGed&4VfqBC&I8DE9!8NIH(Ckb8
0J%LHc@6GAkQ'k5B%5JSkie*6$M9U4c-j63fM%ZVBl$MjFd35-Z3FGrcbm6hld[*
#,BhpZ+i"T(N,&l'DjZ3A,Z5FY&1#hcT&#"&JBIkcp[@1m(%+KM0,Hj%4kek[HXj
P`%"k%lrZ3+%15#BhBHHlNmILTYFmj6Vp3h!-jDB$CZbJLm,5jah$dG'kEbl1,I3
SaF0#CIPMkAi+KhHqGllP"[C"92iAD0()i%Udl2flV'[(M&JJe2,hYNj%92dfhkQ
Tl-DBZ0[QdEZ%k@B(KmK)%ZCVQPAV2Se4qK!DR#UAZRDGelT&eTdqQh$TVHDQTqN
hXZIi3&9YI@SaVU0'd9Hhbr`$VkiKcJPP&C'#UXTU`1*pHJENr!PVV4$ppY)K3LQ
,La8DHdAZ4jP5SZb*Kq48!Ef@$jI1ME)01!EBrbDl$e2ja(CSkU8SaejCNLQ8kS#
BdYHKZjV"'j26Y9fRP&Uh4#54a@c"c5e$VH9JJfDG(+43jU1r!VmA'1[DL%#6I6f
jH6DRHmN896"Vh(NGBLYIf5a%`eC1QGdD82Jb'*Qj+"Pk[T!!,09#e2IXR`m!'GJ
'p-!T9$rjU8)Vr&NAq14k'NGQZ+r51A3KHcY'Ic3krj%k4BM0L&T$[K6SLciGjk%
4PeI5kV3#90b9YXCfJ3kXiMYCk1lLHdY@KG9"B&hU#dha#5@4pX[H6-#0`5aS9P@

i0$q10"JERMLGRTi(h)d$+4kL6D+MQ,l(*M2M@SREF(m%lFle)+Q)4"-49[,fQ!T
4dAFh,GcUh-NKHfeX('liZTZV#L02qYlVfFRBPHM@)0,j,-DjLXp)GG4q8BJ9HkZ
q5eDh&2DkeC-0'I0!JM'ic6&9VQV(M[Gf@@I#Z(ijbmC2YlPE5iq!)rHT$l@r(TG
hN!$K0&q14Caha8i2MM$9*YN0mhe4jM,A[,F'Qd(krlG&NIXBdKEQbh2D`[QBHmC
mh%eF`ZjhDpR0IS"M8RM8ZUi)8A!a5Fb8'YT@9[E['TR84p[*q-"q*RXF91TI`0X
[*BED9R!M%TDZ9T2+@6m0D$`0kQ3$59DpI5`d&%m6KYXBUKJKS5NALkmRq#Z4QKX
H8C'kJIbeTh8rS%TY@AZ`#'B#Z6-J'Hp*m91I6+P1[(V&0Um63-c3dVTJ)RpGXDq
R9`hiL42(026EKk)dBCk-+p(5SC-SX,Jda5VIl`QJ*JL$G6l[%'5F0Era%!Li&TN
@[#X)cl1XXQDeG+4DeJIM5hF-da-ejc1UEk1&4*!!!91jUY,p63kQTUl[P6)"em!
UEaX%h+Xm43!&alEddASp,I"IGR3@Z&,BM30Vlm8N)LU4VGP&$!+Xr(eeVcDiJq1
MFEjS5mRc"C`3NHd8PeTY"G8hlBb5INFN)GG(1Y@+'IDPa0"pcAZM8bkh-&e9(f4
!$h*6aPD!RYr%PIjGScI8BY[Bk1XV-F3"Y-[43'cGrpN6bbMk*`H2@0%j&%hCL#0
EENpQ1@KH-NG"!D$ZlP4eL)X0D)#h`2d3""9+V%Xp")5)GcCTJSLkCXaZe-cBme%
$%F@TL@hdGllq5aKVmA'A-T-emS(@-#kraQd2Gh&08L3cEIk'#T8ZG2@YC%hI5"Q
bL5Ck4VV2!5+S$@(VHDZ#FZ-S[jSl5L-e,df-#*!!mLfKh#,hAp1V)8`3Q4,V!)N
QLPf4A(l%4lZ!#fSJ8[J0"@drAHS+9PUJeTMS0jUrR,lB!"4KPJlXIKPS2"D%5HQ
5k@VHp)(I(@i$bEPG@Im*35)V-JrTR(6*&le"6'$,`reQBD!UP)lHHAmLa*@p*%H
-bS3H@hrSr#c@,5-h'-9BM!"-JUq$Mqp!QK&YNV-rea$M!c86C+Ah*fXZ1Eh,2jc
A(qZ-A)$#ZRl$DBF6D1L9c[Z&mZ$`dc'$&qJd9Y#Cbp#EX)ZEa0-qra6*e)1HH`0
[b!bkJHYpaPBfRdjKTJYGMcA'$!9XYk15RbS[5p5IJ&)Acmh*1H*(,ZJDIX5UIj0
Ce!Z%NeGAXAN*kM#+MeJ(ZQ3J&0Qe2*%UZ6TbYBq6ri!(Pdbq$J#!)!r0ZfHp)Q6
MU%[SMhiUP0)biBM%%LGQNA00$)CFZ)h&3#Ja,BGXFTDi*Ti`h4raT&96QS0PI(S
"3#&ZQ%8SeXaLjC(JINe*U28RFpbQC["03rr+rr!ZK8p#2l8EIT&CB&iG+j@Z"K9
C#XZHaAihMEPam8acX((*LIQd%mb-r4DKG!I'0AB,%Gci#ad*k6dTaAi`r5ZSXTf
U-@"mpZ1BT'@*Y8j2Y$[#`NKT2ScIpJE,kTfRZSk,@YD@6p5a9Rla$#*Vm`)Zbla
%5Fq(!jq!F#45,D,[Z'QKMMS%CC&mQCET,G1fckf0e5k#l[i*kp5kh`l'U+TF*$q
3!1!pN3)lFUcYj#$Ra4hUSS*`4XmF%HFVJ54YL)Mj5G`F#l6NSJV-X"8Pl+'c(bk
SPY@X&&b(JViFS,2YSqA8`JHlm`#'6!F#LcaE2pa-%"A*1)'@652m'Ma%IV5Bl+f
*-bAXQB'%`FIB`9H+d0AF#GS53DrkKcej5XG[fMN,VI(iS*VrAm!mpbp[pN2ch$6
59&XFj2PE%F8f4UfK#f+AP)Q(cFXVpY,$J32NKaGTA*ULTL%p2300ZG93XX#PN!3
"!!!l!)#dSNd[Yl'dI`!!G6N!!3$F!*!$cJ!,5r8!"mFk!!"4F`#3"!m!9'Y6D'9
XE(-Zci!!!%#b68e3FN0A588"!2q3"!#3#S"`!*!'3X(8L#ff)S$m6EUH,rkT-ZK
Z*0G%`0YV,P+pT-#I)P*H3NY--N(I,I(SC*Zi$a[liHG4iD!a'X*,R&ecKS8SK,i
9(qJQbK&CPI$M!C9B,f$l0M8(RKbAI(M1BMhIBUS6B9PJF8r`10BMC6XErj[-YTE
Hm$fMLP++4m6Z6GN4ZQGl8+hflZl1,6D@ac@le1K3'X0XXSq(@1,cQ-)0,YiMP2J
fB5A,%MaH9T!!c-D+H-8IpcmKLN++UDLQGH#*eSJc)VpEFXG-AHcZ)!h(6Zm2QQ%
X+M0i&CR"NAdm&Z-rIeQ'Ih$ZQkr+6j+Qq[UH6RU4A@cQbp1426MJJS`($E"&BfJ
a9Z'a,!k2dJ6VL,T*1"qeH#NE'X-hE,*02JRl80ff%l",VcEbKAKGUf&K0-L89YC
!8i0'SNkZ34)J(l2'JSb#9GJK4a1bUfCB8P3#"[Mj[2YdjdFlVA$@'Ccl4+(9j@R
43QhBTAm*V2($Uq,T!DSXVclq'@E))EG&&SHQ61H)cGEC*ENl&SYqiAU!0&INZh#
E-E6QJ5m*@6fLAH,AK"F#CrX*f#PPECm)b4HAIPfFG-1P1q,J98I*-BJQFC&DDei
NF)&G!+p0lXhr#MSH%BBr65),"@Ik[fdL,,)jIK0VfMZY8m3I"l0aXV+CYM30Hl%
hVCQA'a'JX6+G9V6eUcmj%$68FBj(k"B,R,YHXGIXKebE"LeCI%bX$UYH",'5cd#
$-CH&a+i"4DU1(lf@@kMCIHHI541f3cZTC[#,lQBFT"C9GZiA!4J@F+i[I-6rm+$
m"E'6aLqF5+6F['2eeB"#(A8MY3-YKbI3hM`aLPrIJ58"'+hl"5!1TfPl@SY&&N&
6U!)@1jrELT!!lLqD+`9ACfGl8%VddBIPeESq8TQ1rJ8KI*m9#m(5mM3l)32+N!#
,IRGa,2m&L*[LcJ$EkPqqFp9e1&2jZhV3THISZ,B(1,f`8Bqd@1JIVcN$XYeRi$d
hBBpK'E)hVJ$@&"1f5Rjh+bT%"")ILCT0bG*q9F3!%X-(Sli-#9m23SQYPF%YJR!
8*6PAA)9q9REY6)Ue"TT9Y8CZefNbZ0E*C@pcTrUY[l'%r#mjrp[F%)0P!f-pPp-
"HMDd8fPb#4+6dZVXL!KRT%8`#kfGh5l&q8*mUQk($03TVc'CGR3PGjL@!k""F3m
i!4J0Z"*rc!HLYi,X&`cRS5c[mUJaIdBQaA4,pb&c`5fFX@HQI#-CK#'T`D%9M*m
bGqNrrCe`"QVrMVL4((((+iUG*8"TH,Ybjc`lBC9Icf"UT+2K4SF!ZI@4Lpl02"8
j*CS`2d!R'XN-@2U"ReEYN!!,ipjdR[)Z5YQB,c6P0Mj'N!$D&+6`a#k*pr,Z$rk
U$3THpS*+2KK%LHbJe+-Er[Tb@b-V'(#r+Q$$9k[rT4a"piq@hAiZHeSP1,X8[#%
ImH(iG6,Nh6KK3RYG,E(j@+Lh)*i@K0q[!ileX$5D%JiKME4AIQKDLjL#[6DX95L
cUhN0heKdib4e$F(BaeaA#5%I6LDV`2rC,l(V-UC3ehQP*Sm-9DYC!SN"@l%6iai
@J$kDchSK*kid$mAeD)SNjL*+b2hN[kr8%N-(2b#3!)&H%"M2iD)1Z$(6!aII[`!
,U2!(p1BLiUj6e!E0ChN2P,P51Ik5@+iRHEYL),-@Z[qK8Mqkk[f9J'R`(+$C-XY
,Xf1JEqQc(jBjdJ8bKXNTm$2G#pRAGYGSqmm(-TI-KXS&$T%ha&alm2Gi4M6MceJ
9UH[a!GrVBKk25CfGfh36aALIYb5r*djAZ)hFEfcQlrjh%Xl3YST@Y-!938'm'A)
a%#mTVJllK$dc`5UIeRNb9HNF['`lBp&K*RH8$&H(&,L))r%e3*r+NHdfb%SDFqJ
XIEbk%+eH5dH,IlB#D&9Q)b$Yp60Ql+825AMfU(iIPDE+'bF`"VNrBjAD!SAAMd5
N6T'dS'Hr-8'Q4cGI#`6V+aNa+(['k,L'fN2P,(fY)j'CVhAGUPlLKH3LJ3Fr+hV
ILLmm'IY$'D6bKB5e4dLTrfIr6#$kf-[dB6UR&+&#Id!h"S14)i4%"&Ffh@K`IDq
l'R`Dj0X@UQ38[IlM3H"-`LKHG$KlJY1fDm1F+#Uj+8`aL!#TH1P(a6m8eC6cj!J
rVV)TiC6ClE1mIpf#LJY$!HL'15JbM3!1Ujkr[*YhC$V2lQ8&9*A[a"Uk&1!SpfM
RH8p0ZL5Xk%8(Q3Rca(I1Ep[PjZ1`RmCN#ZYkEVJ2QMITj%!iIdda[1qYX44NR,r
,GDKSGB`jL$C[)C[@VbLU5kH2B)%b*Rli)kYplCT`"2fR5URJ0(Lj50qqJ#A`[!$
VpS(8$R*8(P)&Aa6'm1ND%1lb+NS6MAI`Bp!)beCc#b@$3h)ai`2!NQrr0JJ684$
,)E%-X1YhRHj+U"feJ3(R!IV9,fRf1,rFA0BkKFmGSI,ABfVX'a3G0aa#`k@iVV%
FpVeX5EE"X%R%5m[j61GBD!6r8b9BQM%qrP#eBNiH-SErJbT"hXqHF*E["@G2qb)
qNpUij-,Z`GRdc*aShr*q6q)$iN6GTHR0hdmp0BJdp6e&[N"6!XFMk!2RHf(lXBL
3!,IS4PHIJ"RR,,M9KTrCl+h3)+-N'N+K2Jc$'5F9"*S*3#PKC)pPCMRF9D2q#2c
j*EMYpKdD*mXheBh"+%D2kNq5@@JRJ"E+UT!!jq@H3b@IUZ6A'8Pqe)TB`G$r#1Y
[+(VI"'#Hc[#de&[@8jf#Jiim[kUJ@[06MG'$Y*kqpm`l+GqkKV!9-6C9bjmTK-D
l8G9Xf"'cJhBUIY4QhSS+c2-bP[Nd'KQF*'4DpBbVP+'4DL%arZ`lVr&+V"&b+62
-eXGF-Z5"RdD5(+cEc"1*!63,-0#P"(@XjYS3[!PU(a4%BF,qYqq0e-jqVjYlBG$
1$S*9IeE,i(3qf#$CRiH@+B66aFpXG0QT81,'JpNdrl5KBi)lM3#BLR`!k0I*KK*
jF*B&dZFZFpcCJUVS)jJ8KkRQKH8Qc"YIqk`I0J2dU%dkYNk'VZ!%"V[D5YRjI,B
M)MTce@mE$*)D,TS6bJFGLpafbI(dQT'&jPq!B1"eS5#3!+CDS*'J*E04P-f'VGr
2-$V$`("b4QJaE@JLhk`kHJDq*iGX0GN*rK!&YB'@"Q(4ASH$C"'p$bGLRl2'fEf
*2Kfe*ZNPE3YLdQ'Q-J(bN4@rYV,hFPEajp#qXZ*YM)*hAmZLN602VZ,cT%&9B9+
fc$pVpL8XA@5JrSDrJAZ#fQi4hGq`+-iUlMcr%4M&EiU,j-AE)F%CQ2EL@rcr%"H
$jYe"'+QCq["'hfk2+31*fqNRhr,!TXjcphc)fI`qb"LaZmm(Y$f(r"4,5F2AI8L
QAZmd3[p,p!$qLXH'dqK9BYNmA#`K26)`Ge,6!A+l(!K,jSk`6rp"qadJ6J`+1-b
p)jkDf%MF'l"`[Tm-em+"J3%6XS2`+Z(U5TADb'Ef-9L'ZfJ(40'5Kp'a%P*89P2
$J&4eY[JL'F!l1fKkK2S2r+f,G8cPc'Rer&K[$-T6Y#PYjp2H@M)'mSCLR9LdhYZ
mUXMbS8qJDYALE@m%G`IFeHcY@mD3!"CR'!!!KQ&1#NTR5-Lm+eaH5)@PT3RGrq8
S$HVkUJKpeM$Pm`%B(+%Ec*+'hC69KadJRF)I@CJY3FALBpP%KQRBeSCmPTpV#bL
f6VK!M&X8"d5e1"9+Y5q3!2VZ$Acj9j4Y*)QA4Y)A4!1ijbZSaB)ZeX(d25r"JVq
m6kB"5dLr&IefYQhJlXUa3f61b-S9F@6R6d(&mX@HkRiI6RbYbPj4HPUqB0&-6bL
&dAbhXf-+dS(e&U9*bk-8r2C*Rc4mckKqK+#0P*+9`81hUI4`pG[-GHkVhd#9#2"
+-eTS#cH[U&[FHIFFGbrYScDG9'FF)`rldV3D4bBRP,AibUXBVXcmTS,V,a*kD#-
D04PI8!l(rMRaNb303&0LH-CqX5+%JNjd`piA+c3[b--AA9"BGFBpHpGK3qdGrHQ
@l*!$D+U2L$m0)&CV"N1Y5qP8fHXbi#IE5I(+-G*FkNF&1149m*cd#cTlP20Hb,G
))I(j%hiT%SV`JbHFTFqd*8Br[M8A)l-rHI6RY-Ahiadc09q3!,EZp5+`HVKQd2r
3(Njmr*f+RkK%4dRh)QXYfZriXkN,)B&0mJM82Eb-jIjV4[QEPM1")Gc&3@D0i5#
&SEir#)-HLpmbLBqI[Jk'$$&md4(SqiEb+9BJHpFD0@0jr@CkX@5LMD2-NF("`jK
CS0mF45DSrjD-BLYq38QMiX+ZL(Y9RT!!id&%)'AlS),CX0Mrr!kPSRLA!&Er*R(
""S39XM0V*1Tr-&h%*6G&51@TG-9kP592,c[MPE8UpXjJJ*h-B$K#Mm$S2d,q+IJ
#T2V2&%J9TEH8Bc3qK9&ZHH#'1lCB2Lkf6SG*&eUbXqF$SIaPa@#Ib#HPMY)6QXF
`[0F[El5k&'$FdNQ($+D$CT+rFqH`[,)!R1Y$@#*Q0I6dMUlJ5-%NC!*(M#UE'MF
5G6+$4l29aG-dr,EZfNUCK8HdB"*!bYpP+*eQ3qjeUrmfD+,#c!JEYph)U`,V)$H
+$I6$TbZSp!i9V''&ZL%HKT8L"a['lfUSN!18V0(1&l965!kk"mHm+9KE%!TfAV#
#$,9G9[Cl4i#DU$Q0l*P+hl@L)jAheQ"Bem,B3XGZQAGA6'"U!@1%hEeZVLc)C4L
"cDa11@e$(B#5bjS[lrd`-fc,I24ch3*U9re(SD'q'lCSG$Aej'Ge3b''aADjr#N
0lf+E2XD#Z@c$9rm)0Vi)P&-#rPKq3S(12P0Tq$8`$IhL6fAI[LXKi55ijb12Llq
f0BXFj`Kj#c8dUE5f0R$hSjfbSPUi@6*L6NXh!-0Emj6-ZfD"UAd([!f(`TZeHM`

P)JIe*%X"N!"9U*,6*j3GHA'h'"i-f9i(UCdrV(!SE0#5""Gmma2@ILhNb'bDrBq
&6L8[EK-Hd'K4mTDlYeh#C2h()XXf60R-)FahVVe--XfBKB`h)dbVGfd9kQqBHqP
MjSQ6KS1@XhFiA*E)-kLPEI+)-FeAq)P$,"L`BP'XhAf3!2bKe-QC$4"8)1C24R$
5KDj0"Jl"bPGH!6$[4[AYRdbA@d0-q+A55d#J+l!@qT!!,"'Um'I%m92h6Jb%Gfk
2d()b(1c9eY#($K'@Y*(4p-C3&H#Z"*,*lLi8*J)Cf(DmP*iBS@@"#SAT*S[qY4F
3rqU$!miA2Xa*A%hYbE(U!0MZ`00`h8%GM%V5bFcSPEX"4X"bf,i1[YPkN!$`Cq"
fSfH"MV"(Eqq0jYm$ApV!A(kQ6S#U5GV,NL%ff4dG-Y)*F-"Z!@iHKbXJ1d8R8k&
0ZBA6jB*5`CqFS(DCSIRVZ"MbM$RSeZ*Xf9NdKbAMHGD'leqe2iCKSl`)cf&dTj1
XAU1C`[KB,Fqfk,J"jf!G&[IM-K'*G!**9UCSm@PcpMI,Z"$"C)*hd3+lQVYE3X`
ZE+MD9m8TH)'MpkJEbDX[CaK3$-EJlDQ*BU1862l0eQV"h#a2QfT#,lHC%4230MV
'[!'4Z%'NHUc4eBr&F,`+$+Kq[MhESCJ+ilm$2Ui8aI!"Fk6c`)JTDb2V84*8b!l
NJ%h9@(KRcp5cFU2kapcB&K2jXqik)P![I4`TiUm@UVCFm`(XP8C5l+Y&d"R4Hd%
5j6mp`p+8)J&a%lpJ2q9,fk(LfeGMSqKk[A5`0UJ6eDNm%%"UV@0Th8,Xc0qB1N2
TANE)'R`P%ar0V'SZelAe'YlKf4YpYUkHS!rei0eaPSAI*$kb#(c4iLA`U,Y%lH-
@SF9@-2Q-BhLl%A"PijRjrhNZDP%``CNCjA"1rIB(rfDk3[QCDlEAa`#m'K!3Caf
&iL$"*DCX%3@-kPr,ZH34,qUK6(FY#f''FaKA+2`+6d(E"F@TH(6HUAfq*@Rai)U
5[0L@C1r5ZAbLIT%8EJf+hVm@(!6%`@hJ90'e,X56S%RCbD3#dbcicV2bD-l!0ij
5BAp8hGee"Iq[V--'#!D91CVIR#&`@eNLFFTKA(`KZ4kQh&pCVkbpRP@#$j0CTa9
34E$Y3r+l`9&)GlS*,U!N&L'!9QQ05Qc(,DjHA%(LhkVrM1NR#XKH0#fGIF4akq%
ipSGV(r-qM%qii#4PFI`G4m#YmRAkP05j(S2N`NApm[A5JVMGI8SX*DBKZYDk$qk
(&9-rBeC-j0fXiPm'-"B%'$q"P8dGiLMRVDJjEPXS*qT4qA@+c#Q4e0UABR##AqB
DAS-)%acQia!mMd2EZ*8dI`DdJ'Nd-61FAdH*!A4Hc"5-@8KV2,Z&q+3bmm8*lXi
`K,1&X+kTqrK#&XJAY(X1ETQJj@33R8,'mK$U)S4e(R#Z8QV81r1LLmD`I3KQ)SG
rC@ddR#+D"eR9GJL,a%6Cq4d&D1#rkRZGZ"ZRi2`clFX6F[#!%SP5C`Kb'j'Lh#%
`59,Hr9lRJ13*IRZ)H%lYje6Ab&XJC)[1$A-ENraX$mV&*CBMLMbTmL"P4Vc@3cH
K26TiCYebJQN(0398e*&Y"VT'#q+XAMPE3`K#abC``*+[0(9A1HFhQr,b)[1Xj-T

bZh5J$,mbP[VcAljmGB3'&Z-pJ)m'RKPY$"Afj4&Z2(NHU2P[Z&NM(dA$!kC622H
3!)Zrmi6'Z64E-LTVmaS`Rk,YQmP#0d1YMBYLXmCp`B19@rG3$NhGf41#E!+e@[6
+mi[PI2b#S111VDdJB$T9ZQ*TDI&h`I`XN!$"3Ia53LmqNfId3`5eSFm0%F-`%B&
BQd'Tc@IN%MkKIGb4+Kl#NT1qi-ZkCE0-c6C,MX+$fC&VVN(-%I[*9N&+*EGRX[&
iBcl`*6VVp0DiZGA++rRhikUBpL#YY,rc9eREk8YR#cf,QT3KG4G+C4$aLKPRVUI
i--J&98pfrhDRp5hPB@jNkj2YE8IGU,3JXdJA[aNE@D@ik+%cj&lL%qPN#&X)2UF
YThGFci*Rl!MAAa$'$EPM'%*qAdGM@q&AN!#`F&pbXiT!di9SZ2UhjBJP5GNM#EP
L@ATP&h%"&d31iZ(HmC+VP&&VEm1l5q[c+Aj3l(6PJ8jM16U$G"'6Q9TPcRP6c6j
Ha,(r+V')cLh(AZcNAJD1P&2h&%-85Yh,@2MCSLA3J5mY*J[T1-jIc#U988KG8eA
ch5G0Id#2Y0`i*S@a6Y!SJSUUT,"'VfSE,A5(i@[!JGP6%9K25!N'l$a58kr%$Nl
AFFE9EGi!m6X9hT)lL(!,,3LTZR2+FImam3kd"h5&4h@2R,lcfJZ,GGaXQb$8L`Q
bQEMeRFM1M[h-&L'T0X98EZ2-p6DCS$p2kd)mjQi@m$)N)m0[XRiK,&1%"L#mqlN
STp#UQT6#(GXaR'FYib[S-X&NY*f(lFA*2DI3r@f6fS@iSNaaL)hpp-M$h3h+804
QMaI6@UK%%BF#*&QQMl#V`H1j[fA6aL%T(,SCkR%RQLD(kUVQ"U$L*4Lm1ERRr#V
pUh[8VBAh)+T8VeKqemIL@rD+VKbIDQaGijCr'rPicCYTR[P#C0VXb-LPKUe%-DB
3[A9MC[S1-CUX+"Q[L2m[IqZ0e2i&ZEYdCBl1h@C[f*qe4I%fRG#S%8`[DIh6CF!
aG`RZ8D)d%)QpE,@G*"834aTHhFH&0[N@@%FeCNlaNUA+,ERfh'@(a9[SeNB*%%'
bI&0,"IZMb0""BF5%5KVre,C#G4dLdH&2mTQfm(((d)KUBEK,r'0p+8YE@&DMl-1
j6#,HH(,iP`*hEe&DVV@#jpKqpJS[6i`Y#)'6[0C+0UXT9%%5TS[4Y#h+,K1GF@m
4qhk+!EYqa3#[ZQFKqakF!ml*6m0@Ge[XMR%i0&6U85T&dlVlG5V(3r@0T@ZU1"p
d$#f`ak'ERE86(@IQV&DQb6Y%FV6mD@`kZ4Y!a2"cD&PHY)!`"pD@d5"AA`'DmFZ
9%D(V19C[p4R6JjRGEQJA,j!!VRkhKQ4-ADHiAFSEqAK2V4r)I,'A"9cDRcqVMl3
T$AkLTA"5SdZX+ITL5['9#JjQi$($6K(Cpm@)EQh'j9I#h(#f*HKNAXIA0Dfq"Gi
`I&13!('U`TmVq+raUpc,+,,1"SDICkKfCL0R&6Sii6EV("MLbe@#Sq5fMkRFB*Q
$PBmK0&p`3D9E`3A3f$Ckl"j1386Zqe03AIMST$D'5%Q5@ZMcUYb19pTi'6IQKf,
hb1a3RQ9rk(de3ZSL84C5+6@kU3mfJfTdk,NJP-cef64QLqIGNCd'BYl54h%T'c5
F-3LPEHGe4dHl8'NV#8P%Nf`AN!!T',3YAKEq9h*bRHYTl%aYC(E)-DK2)V'-J-`
a9[(`bi4Mk'RDL+B1"'b0iUQ#KSpae[ARIDI@e9pQSJ5$aVcjCS#S%@bS'@EJd9d
USG8+hMEQ+Gm$#5VUYIm4X0b9f-3XNJNmq%(#0B9-,0UT$L,eVpbIVFhGcZYHmb%
8@l4Y))BfR"p-HG&f&*!!IH)8FmU`bD*56C5I4mEEX$h'dZ@LLPbZR!abjrIeSJ0
-2d%N@8-jd-E3#($"HLRPScfcMX-FT%#hVK5kD813!(14eB4lpY@b5Vc%rJNX'2"
6$,V*IS`)@cBmAD$90$[#4NqVh9`IR'$1,YqlfJ'5PD1#*C3EQ[,*CcbYb0-c-35
rdbfEflj5ZR%H3bGL0m+pPpMZ(Zmi4+5YXZcUKDMGqTA*b"-64A890rGeq[ARNdU
0KiR2TZhJ9G)!CR5a`jM8CiSaKf'Ldm"Qb1*k4AFC+,8kIDAJDXC1$d@&F2P*+km
G5`HfM"'jhf+$eB@G1T9+QdEFK82MEl)JL@rLNj3c"AEj(Tf)EQqqA#mhZjSpGJ8
4lUM-+cQm1+QYi-f3!$56+RaEHYiUcjKj50JNr$E$8k&q)R-H*PSN,4kB@)&2e06
3(D0`DXcc8#BP&T!!PUi!@,%DT!R`(j@%0m8cj5Zi3c*llFr[!EP'5[cD`QRPdKa
-'H)`'6C1pe,haqMjZ0IMV-f4NeaKkp68e668H+h2+QCRFm6"BUY643#j(CHkmUB
e,H6pV21J3Bhd&0FQEkE-1imqEY`,34"R*ChBp'LKhhJp+6Em9PZ&R3K*FLQieIB
3FjL@GA)ALEhB8U2bRXbbM,bNIU4@Q-(aR&X!(1+,kCREfClCP!HFDSAapG4i@11
a'm*#BeS@PDK#2P#3!"pHHAZPj[*Xp3K%MaV*J+&Mhr#RSP`8UF6kEYM%K#IqfPi
4('p-h)-qd,3ch'RTe[U4SZE%Qp[Zj#&Uhe(Jb0q[+`,,3U9J%H"[iai3C,`b#4b
KZ(TJe*9#ApH"eXfr!+Qf568U2(%2&EJiAc*-lkE*Kk9LLK`-02Za0eSTk)a0iJI
SVRC5hUaH6DafGC9fBbN!r*31b1@@9e'ARiVr8K3)pIVVI4(IURc$6+TAaGL1"U9
5Hji[q'e@[VL0FPQAMfaV2kXFUrB8Xeq1lkj+NM5L)ck1q5BfCbfpl"JV1kVK%pP
FLIr8@@aLi-SXNDNITRF+eHj4#mm@1Fp#+2#%Lcp(MRM4AJ`i$lakKmcPelb[h69
6%jk%pp@R*J4pbl`'ILdb24f(E980,$-AKhfGf@ikqS1l-e&9`bE0L0HYDV0,fHD
F1+M6Njh5piKk['MD0JQ2RML2"pqI[NMclqfhM6XaV-S[TR`'ijF9Vi,dZK&iR(@
ZRA*(cf&,i,!*Z*!!SKj)V"Qimhh8)kBNmCP[VQZBKk!i(!2(i[cGdRir,b[J3pV
HfAFl9afj0$ar(3-Eq+8*KS)&kMX$4X-d@EPldD6"'41kQXY&'pNT&d'(eGRlZ*Q
"h-!'9EXc4qi((PZ`(lpFE)L+5j2B2a&1`YqGAF4iNBK&@m&3"1)838)cPeSQF,V
QH1EJY0r99QPafaF3-,#TdkAY&mHN`YHK'#P)%S@aMUqeerf#%D!Yck,h33Qea4f
8@FAbDM6M#+#1hB&kGUMk59c,33F(@(-QN8S2R2EeL*J`#49"MQiY0jdkq0CmjkV
UD4DVU9,Q3)0Ee')0PUK1,rFmJB(P4*BVCFYPQiL#UP@Y$5V9d*jfS"cCA6SL)T%
d43)#Z5GB([BQeFYfrQb&eGSU0kZ#GP(C*jUf+5NV2h3EQ6+M3N@+Cb0&3RhD#hF
,4e+1h-ERJA"U6A22(qR[hAZD@f&j@PRhcJemDpMHjdH"4RZ"ArY6FI9%3eQ0,c,
Dq"9V!T[ar6)J8TLYc3(S3N+i1S(hb4J"di"K[idYYY-lbB13!(A9192,cVp5dhB
KbFV)rP"%5R)"QmB$jVNH*,d0"+4MMQBbk)9MGr65H"V"2PfLm98FD'(#8SB8fRY
VfPp&TqHN!9+QCLfVpV(8QT@5Xbk@%%&@cZ2b@,815#Q-`!lT6c13!,YQ0pMpf%Y
&Ti!H2R()%AGFfp#QkF-m+6`8m1![NjBXaN10VTIdIc,&jGL$0mVFrjPRf+jT5af
@cJX-Hp+@[TTc#-aRVBjVM3IkB!4)3Y6&a@4dKqb!U09k4jdM#KeXZl98")G*BAa
#)FDd$EJIlI3(YZadY6$mZ(mM#!k+A2f%$Vaa$F'3!%PJ)Q0@Y"!mA![a0F)'imA
U&Bp"UmliLR(AS"S#Jf#J+-rID-VUJM!AN9@DlYM&SSIT"X+ZhYjSl$b*LjSAi*P
qPaVm1)$RPN6h23h[953-@YBB&fINpX"%L[%D6M)29ZV8Ab5P2XGZCTN!'$Aq1-%
HfP3R*qafH')p2+r!$C6r0"(0'"5L5`XH&BJ3`pY(m*SBJAV$XfI4[)eM$$6[C#X
e2T3rZU#e9A%&RmS2i*,56rG%")G6,mBC[NdUbaJccN*bLa*ZTFQjDffLF)d5eI[
"b-&e4dc)l@SQlI@aaDa"m[EeT'IXpBH@)GZmmJr*-%BVc$X8pXiIXBJL(Gp$LmN
m`VZ)TGr#hPAe5[&8lh#kj5CMGXrq61"JLdM9cpAk8Af9`Ed&*f5UcT4[p(fXT%r
rmZhKYF$*iZ+d)ENJ,M&lX9L,(cSf26SJ6ddqH)(N@Dpf#BSqAUpV%E&6TDMf"RV
`43YS(45B41X9*6)TP"KE)M1')C5(aVAMTJkhLl'e+f2(Dcb!ic5"Yl8DHE3*XPl
"m@)4cB$Hh[%4YcFH3c,aeh5Q@,F&iIp3bL,"fq&IN6)HAf1[hGC9B+48AH#FBB3
!%j6(MPcF[DXHfE-Rjir86e$l*f@&TfN%HP`J&ei(Jpp6aA*p2NVRZBD8Y5LZBa4
QNH[SD@&U*5p,Y[r&RCi8TKI(-T9FSk#L%@T6'%8Ji,&3PjFmLqe%$$$DMj+"YA%
pm@9,qB9k#S[j#"UiBPD$([m+YZJT4r#4!E120eSf%USKV`er8NX8Vb#%KSjR6'b
8&RSl)*'`4L5S#IBMD-F!Sja`lIE1-0"Y9E&AHC+Q&9Q%6B3$1cG%i(Ti5Ue`d@8
)J5bUf9CE1dRIbr,@"-%[%0[JDYGrQ9dVIHRa+kBjG1Z2!i@-McS-ThJD+5-KblL
#F8d-iFI#cQBp'VHb1S0NTqjpbCkF)E)q$2bM"e3-"aNqEa%9PT3844q'iRHb-R#
K5,MMM[GlP`C2$TNbJY&Z*IdMk)ke'3LD(QJcF-pY0-P8-,6Ip`$*6fZ2e61%qPa
cC9BUrMZ6(Z2hHpX(Aa'I0X5EQ4rea-`EarES0#SaM%,8F[jdHAKVM,$&p5YPDK5
I0)!i"B34KD`fK-b-+A8iU,UVqM&`kqL`Jl-`#&QkV41GU8#(9*!!ZTBISfm[6`E
8C-Ni)$N*D)3dN!$b-EdI'Nad`RCH&1P*M4pk'XadR9S90r+)pITh+6K'4Y6'[Fd

pPlq+-5FPRIQ4Gj5-U-aXPXS-QVr-1D)pE+CAA"ZkES8H`RU$QMGVR-*4@14GjXC
I"$L-"hNkeFd*q9rR3XPDch5PEp4iqX'!Xb9C$ABST8ZErihbi2"@"IAiK)f-l-m
TS-UA-1'!idD!kplJ84[81rSB)j%&hJar+V1'KT[0bVlq*9MEjKlIAJ1lPlPCcDS
#C'iP2CD8#G*AT*j+5",ZU`U,h%J`NN-,L9RrTe9@[B@X6(h0'TTq&Q2b4V&-fEL
3!#0PH))`S2S2B3!#AaN2cba4XkNEmf"-p%A#kjKpl*A&%Db"3a@jbNBdZUSK+dK
iJA8I$*6-CEq,0d`Qm43fQAYV&6P6[YD(!*-(XmV'i%bG8riL'180M!FRPdEVQLq
kMfR)5+[Y4iQ004b-2*cK$$!"%0)mV`DcC9qifqiTNB31`%&KQ`r9dpaKIFCaecH
8"1[46$2RjCA05r9"j(if(-PXj'c#4KkL)&ZeNlHRT'18bDK9$"N6-j9Ljr+U%2I
3BAfE'902T`L$`FTAI["J6G+lU)D6SE3`UIK0(jfYPamr4"R9Djj'f@hfR*!!+`M
DB)!!Bcc')QEA4PeCi$9RbA#aG9VQ1qjYQ4jeN@K08r#ee%U8"'J)i))eR@3+hkB
DaTFUh5!d,)$XFQ@9Nr`$-ie%Q!hE)dM@riSKNl3'QjqYY+I,l"#ZMJY9XSQfSaJ
)Q9PT'(#QUP62)ejj@9efGAa%Z,U[#U@DI*iJ9GSpV)(XNEhTfbh%K4h$b348lL!
c-YMe9X(BbTPGp3*V3Mk$0G)j2P&4aIU"$VSR`d%rJD[bd$e'$5$6+PJD'*F1d3T
R`k$I',A8P1DCM8VrPCL#+I"@@L@4Rc6S+IIkK#8&MUr0i4%@U["ZFGc6T5N+eqY
R!*RNG4BA-PYjG[F9QUr0'a`8["+Aq(`(8,`@Hlb8YI%jYC3AqBL2'(-SZ3"&3P#
QjkY9afe2iVE%XpiaQYqIrjePGUNYG$&c0AS3P*!!-h9JAYmMPj[@`[$4S5'Vm1X
&-[JXJ(GP0hB3lUMjX)Rc"[bQd*2'dZM#H#Y,1[3!&%F3f*R6NQ&&6YR63hmk[S9
QdGrfdbMB12'rrH1(iHCr08e@Sbi-%9[e*G[ArF1M6+5iVMm8QK"%C),DbmZDIeN
%BR9,rmMb@,leJ[&&1Zk9,kld'jQPaeBej)AVR'[ArATJP2')ST8KaMX6-*pR2Ej
3P'&2C!&KkCm$R*%4!m%MpJSAiUh)2a[YmJUPIqkQPPHRBN+beZ&5QKa%FXUV&Z1
0[mjZE3-A@`$rEJ'-6dHX8+)mIlkL@Ab)F0K[6fKZMj)UXj3#JU5V@#Ph[c9V@bD
EIVN*kGXT*6pLH)(12GbJ9-SJ+r2*#MG[!*D-RTC-G8LBCMpm9Y[T1!-(6d1CfVa
`p4H1!YH`BYD`e4`1YhCc0jTHJVZ[plLPXp1P)*fKqYEfcZ1MM*)([V*`#eEPMSd
Q9-"Aq4h!QICJdm#Y)p&p6A-MakA8(V85ERl6bSTE8@Yc'2T@rcIqij5l$'f!I0F
erab"PJ0"`S,)j&TlGEPeZ+X-!(%a@0bMJ9!C,(1NQE2d[iC)JBmTQ0CbVBd+KmD
X1l1(XMF'HH!4@HH82@Q8DCIEYdUNZ3JAN!"1KMlQ-kPUi@RY[pAqm9k5Tdf1[[d

)A1I$R0d5MZ&cPi"Y26@prAaC%ZfQch)UVQr#@8KH$R*lCA!R@GGQG@R%k"PS3$m
,NXH92d*'bNb'b)BNkHZpTbFVh`D)@h*T(cC,DhVRqPl11E821%QRlU-ABfiVC,F
-i9@3!'a#P5F#R--m4T[!SRVX-a*LfbpMePm+1IrLX+X,52rp&k!3!hD$r+ejFm2
6ELi1i2aPYfjBZ'U[V3k[2PAhZDqCh$8)de*XqS3AM51ZiVhLJQh8&i'QG5al*Y)
'`G@22$08jUqVM9'pebR"j129#Q@r4MH[IV8aUkKSF8ecN5Bfl3Xa+'PNa1B3BUR
lCCG""T%l+l&l"3$m`Y)H0qeFC@"JK')13`6MQVpCH04-qmJP6m5UiLfFBFCR)Gf
r54@`kb#J1MmVMJ6PE!'9eQ*8+hN*,9#)&pGlAaRkN!#'0iYq$lc$Tl1Sh"Xf`M5
a0BXma$9,9ZfDBGfFqk!@)FlE"a@UBJ$(Nij'EKmMGHjP)If,0hX0-AG!3UCjMlI
%3r+)Mj-lji5$LP,reRH3!-N(-CXVje1XD6B2Yj38*MdrG`C!pYTh+r*HBJB8pSM
M$TH&*CUSSrXV(kfqZ"jPQ9ZN9U(9&T&b4f6N)PLh`lCEZpK*[a(FDHS9J(eElGR
hLUSUHmHVf5*hrj'6j-@,@2c#jqm1TjUF0(B25BS6fkmFCF(@F!AEIcpll)Q)N!$
@CR$SF+fFZG1C"hSNi[,$,8c1c@Q'Z(iQfIp*lS&+,`I&`506$5a+[SHDP#kK4N*
E2)61Z!1HBpf$kLXGeSP@1Y[#p1R8H@*q$Q5)`f%%GqrarqA$S!p52`e-`1bNl!U
HkpalSUF%rq[HpeJ!Yd+cLKSkVR-Tajea%S5(I%FpYe#jQKQKRIe$)E9H1kqFMSU
Z9!b!cBC2UmKa,`*[bj!!VdPNUNNmj#)&eIJXc4-K#d'6mFQfML,k%"b'$EZRH`M
HrA,S94'R40m(mkkj0H&Vb6UP9h&eb'GM3!*DJeB1fambb4eHrUbMper+UqV4!Um
c%30kjV#YTAUIl+rfC'096--N&U(G8SbYXhJll5jMYJ,Zl@VSPhDBIM94+GcGKGZ
pKpCb+(N6-l6p$dSQm*L`BPrBaD"XHaE%QUL[1B"1SXXf4Z4iIc$34A*N'Td0A,h
9D3f6*5jM$,*Ba*Q)Nm3,(abY-pk6+"a6-1"0a&5IQrPll`XrR&iql(#P[f*P'AE
Ylb'0H3cfD@Y`4TYbBlNr4CSRf&M2L'K9*XEa(8"HdPLD5l$`kFT[QS[4BGKlh"D
%fZLHHQ(MZRfVBVY-R*r!k(Mk`q%4eIi,hlGRh*QmUM6hQ%qQ2Kj"*f1-K'Y!qL@
6mBA0@[hT'$m!NK5*GdEaEFLQm[%ZJT8IDqY#qd43L)-U%JXMN!#-0"JVrq'l%p5
JeE+pN!#JTa5'eN-"GQf'!fj'+GkG#9r@Zb*&2F`bF!UUP`BTJXm,kl,H!eeY!%X
!fGk#4KF$TR@S%C*E@#rBZY'+XICKV8M[3ES8eY`3@bhi2D#1pleLlIl2HCjM)04
#cKKbIQ(S`%i#TJ%86Ga$ej1T`&bkkk1j+!Gd3(LqbZXcV#QLY&Kd5dRQP8[T34#
XGQR#Kl8(Pj-S4-I`&`fY!%I@rmhFBlcRp-)59V'pRY[5VEQ6U-h%IV[IK$N9(Z#
dUMjEMJl'm55)'1YJFVHI5'T`Bb2CG"F9@N%dD`[B@",,[DD#b%qhmr3Hq#kL+d3
rUJ2LI!#1al'fTQi[+"Mi-jC&00I`K*R$CmNVZ,CHX8A#-fT0qL&2h2)+E#@SlQY
)b%qXlKPYdMGbbV--XX8CZm$E4lj#)32ic3Ej@)mPN[)&d`Se)9VrM5&XSk[BqM8
8[,jXbVY+!jlJ+GK9'fZEBh%VKaMbfZQdUE3[JF,YpJmbF2eI-Y5FKEl"9L64YAR
NLaLqHMfFGJfFpR$VUP3KajJE8SP[$5-#qNm#T8a-GXDkbN)8hFFd(dk@C"`q)J6
URS*2bQ"!N!!0@@i0,hMVDk1qX0!"IRGJ#@Z!qh&)f$lkJarIKDi3r$`ISc[Q9fQ
FD"V'e816lF$2$5RX*ULe18m9CV1fHLYFL8qI+a62'V`9I@`@!p+*qkHD+MH@`p)
f8p[dE%KC`!G1`hSU`klE21$VSK5Jdch4%IL1dX*#VTiq@b9HiHV`0D6UVjdNYB9
a(U%HjXY$QZf`KkG!9(`DhXrJ0XriP[hB'U"imGMHdlN%aAG%&$rq((*plP-qhc1
rMM$a*'JJdAJ+NE8#-lU&*P[d&,e%2@kNmPDh1JaqS0mI+1bN68i,CT1"8FlGLjI
14cV3F&#c),4c9lrRU68LY(0K9XlB"q0Db$4KcSF3-HmaZ(AUU@U+ar3)8a%jfB4
fB'fai("jNpB80LH[UPF6laE[MmBrqIrcV[m"cQ%DJYr5S2&aQQ1NS-IP`DXUU50
hUbTGq"@)&D&UkTQKhpR1bX`SifQLhb)&K+le1(S#!Nl"e%pK0[[[eV63BEAbU8$
X5iMH+rS4#!l0@$"PrZ*,4BEB3h$Y5j8I+,cGjY6h(d%m'IYZ,#hGMdHGhqrPejF
2[%6'q!BXrpV#@Re'KKQ%[kKN"KCI6mRS5J[TraB[f@&ca-cZ@e8IPhCMN6A1!P)
[PL2aIr"dqS",P#LMkH"d0@d@MRm[YL'a%fJX+`kYk4cmXTM@QrEHlV!Qf-FHlC&
bZPX+a&h1-$pSf!H0&D3AI`fE`KplUY`Th+A%ec'r),"fc[KrTe,4A%jQY&*I8'4
ppCq"l9)$qaNCG,(FHbGPEE0*i%0rSZM5Xh+S([bYAQ!IRGqk#@&Jm0N6@*1hd,-
fb#CJ&NDDS30pcpN4S9lH!YH&CA'$3SEV+J9KD$6'q&[-!$d`J+VZaNA`G*0Gh6r
p-Vl1da+RQi8NL&9-Tb!U#pmDH3Q$'b!ZAT0U%6A0!8r2@&d8Xa4FP0lEUED8Cd(
-8[I9EFFp5)PGD6qb&+H@q#'lUTel+1!LZ8r4XKNLV"IkHG!,Aiia'2Cb'QS81kG
@YT5c!TE4UARiA513!%54Y!Zp2FJU"Y5U($ZAT*Y3%36,f$Q&i#V&-XRf8p0d6Tl
'd5hE-UY)fk1A3&1DblABiVS3)I!XjV*c0mH,(PC2C43F&kAT[4LhNXYp64'JS(Z
4d!RH"h@4MihmIeU@6mUDre,AZ*5r6&qX4Z6B!cZjB"RE&lU5$&JES@[Z%,A*l6q
jUXj0m$rLj$MdlJ@Q'YM)B*!!TU"ffi-aKAYP4+pa5Ai8YLVL8D)4)%lDQ%pPU9q
iPdj"V1SC'*)%P-q`-c!5$b0q2FVVqGV)B"$*+'5YRM@RJ*Eaj1"qmSMZVGLJHeA
L&`p(XAl&d+GqbUr'rZkR(j!!(AZ6F-C$9'Gcc&0c,ZUmAGbR5BB-*5@)CU9'8,N
f#10BVjeY%(a1"-h-)Aehq2BbSPDXhq*lhjUMMf4*"PQM$h(aPT!!rb5LdrY+3q(
`ppa@c(XZ&&Hak(Y&f[P@@MA"*C'2@QK%h$JDq#+M5)H[VPH0j&5UJd#3!+U9IQA
%'NQA,+)Q4#`&q%L!R'C@Zq4efb[c%d6[#VIf*j!!Aa6iJfPd&1-G5YmkIVqP%`[
fhY9Z*bP+AQ"j-(6@&!Y#eIb16G$PieEacKKlNa&R8KbEbrKBprA1LFLqVl+ACZ-
hm(-GBc9Rdb!5)qhZ!N'G5$ADbk0[L[r#-%VXIqLJ(0R,jAf2ep0ZFcZF+hGAl0r
!2N%@NEEef-Yr@-Y%#PllBGAUjC'i[drp[aBVbPJ+TNj#-%!hT@je4@YRB2m8&2!
$U+la%dKLhSk)(@bIU5l5k"C$Z(feY"#-X[K3YB#U+p"'hDkP"iBkK'38"8RGl,(
r(kN"cbT"KjJN4D`a!k&PCR3)X0m4*@X3f#eB!Y-[Xpq3!+Hb3'Q2XV,bjfRdaX$
0G*L$4P9E*iZAr@jC(8)$[4XekF'T+Kc'a8%``TE3dj!!lK-ND2V&-jF'S##PK-i
lqdcM)"eXaBklQ#E*RFJKm#@NKk%6j`QlYC!!i-dbDG$-H6ENVkG0SMFH"CmGQ[a
*Mjl"JqX`,5pGSDl1YFH!["CXMi)0dEc9fG3!NK0hN!#*(0m+f!)5cIP)k'BDF93
Cq'LhMFb)$B9NSjB[TUGIa)a4#icTTmN*9[K%[d+16R#iEA5@c,9KkX%YM,$2[mG
$EcafZlpQ0(0C%NRNYa#F4+E1Z*XCXXaBVNBKBX'blMjrGGQhe5c)Y!A[5MH)%G-
T4Q0F6RZaGe(TVN@mmcJ#fJarYAG+TpV$dq$%kR"he65&P%$ZNV,*K64jr3Q1&5p
25f"QebFrVA0eRG8r@"mm'ZEi8,85,96X(B,91Bm4J33Ae[Q%I0+pXXr8Pcqa8qV
aPYMU(U"pbTJm(@BdT5ESGH5Le"rceJ'03%'acRU4VbY9Jph'3bXP4Hj,,6"flZ&
Y2IFPYmqZhB5$k&ET1@0F`bN5,Hf1)LRIH(S'`(-L42G+XYlDkZAQUX)f@H05'PL
h+-K*,A%$YlGac5rjXa5pje1HJiF)#KKB&m2H$(*[rqpNG0iSaV9PSS90!RjN+)J
Yh&`VpTTm5-iRNp-+%UPJPk#0*IK4j3jYhjTJ*+),Qed$m9,L9pc[9X6E!)de1GI
S05QVD*&*k8GjLS"+G854PmKmMhI"Mh%cPr8VqRZ1&-G8Ii*TV3XFh4DAf1UV[k8
pCf%,RcXH*6Ui`'!qX[jEpk#Pe&Aj&(!I9L%[c#5I!,$0am)Qr30eS$5Y++T@"-B
%BX[0NiNHES&eB+$dK2MiS%-XPKU+K-lRPf)4p)%9c,X`(0+&cAT01+e81EB!j61
-UeT0haX6CG"`6$c5jMJbcrh#pRL0dSkL$imrF56!Mf1r%IfLZHrd[+&"r##bNT6
mCV`T"cGj3ZcFMQXVX1U%kVARHpfH"!TfN!"09c'2eD3Y5VY+)G@6##HSGKc&M9b
-+MS#a3#TL9$k$QU@DBeT(+mbLV9IHBmI1F$rcH"ak#2fa0FU%ef9!mqCTRGlY0,
MENfEPq)&I%(8(,2qXrrMF@Mfd[@('4f@6pCJ,j!!ATPX(dmXZ@UcCbCR8RS1c!K
T)aaLR8mGb%TT5&*(V8*lNff'YUQpG$##[DlTL'eUGC8L5E(35jq[,0@KEacma%-
LXRCN!M$#i+Z@*0i#D")RP"58a8q8f(*acXVUYV[+H&k1$F2X+60M"9*MrS+E,f8

E6B8lXYM4F2SJq"T6pS@$c&Y*Q4Zd(5PINN'*UiY#6A[$,6BMkhefLZpfP(e2T@6
6GXYb`3D%GhqT)i&ZTkf5PZkk'+d9@Qh3A3`CQbjITGX(T`r',4XLTAV!Q%rRL@8
*fp`%F+-!I5pQrT+$(hHT")IAE2rFS`Rk&KTIU')E9*Yj4`j0,RXKDh2iIq**RD6
+2A*j8c',ae!IIZ+$X9X36S1CSCa0&'-8&MK0kRrRN!#`hAPT4G19Y"XJ6Vf!p!T
ea1dlP@h'ce2$R!rKhJirU8-l$*jm0FL,jLa24UCPbJQ"SkE$qaE2B"kaX-SF)6p
(1TIL$2GXBF[V@+$8#lfB(HTHC[R(P5KqTl+dT`5Eaj&K*PCQ2ac(m#PS4G(F6#)
T5GEd,dN6b-ICDGV%"[V@a'UTCi6#bc39S"`&TLq4Ecr@VYE-CZ2jDfLL5+L%83Q
qR@T-r,hHF"$68he1L8'4ESEHpX3p9I0ZpV+*FqGmEML03q$I1@kY!G98A)RdM+4
SJmM%U&[C`0)Mp"qFi@*%`rhic#5)"N$#i*Z"[-SY$623MiH$"PkDm+%@4BNml1$
3FqBHVrlBca,HrJ!6a2QbS522e&#MP*mFhM`e%5K`&N5JZ`fh"Xjj&PQqQ&NdKEI
i!+%(#TBT%ZpY6p3qp699M6@+ZY*9)kJ!rCiXr0)+P"lCAG[ia5'K@kKVA&mc#iX
Jk&HHR201f5c'jC(4%$33'BH'9b56%p2QFr$HkM6h%8`+3'a`[9GD2M3#Y`GQ%Mb
U",$a"5G'X*@eGZPrX`J#e[Pi#aZ@e3qNkYd8BNiq$4Ace[d8ea#aL5qllXI0&XB
'kkbSa-R"f#)PNr6QI6*8l"jZUZ&kqeZ%I8CFm5Q+5f[Rr2d([++NZ@iNU#C1-ik
q*-@0d-U(2ce9+8ZXmK#fafED(&b`VT54-eX%1ajjZZ2[[aa5'3C(Y$LJ3YZ&e&[
9JS#PhPX(JSE9iJ1ICF5pI#X4`3+"fM1BD-Q4i"`MJY#@l[b0#RXZ3kpRbrIrYN(
PrM8MLpmhke20T,$$3BVZrZad!e-AIFh[*![KUYU6EmdRqm&JJ(N2ZB4-"aSb[L)
KE1!b!h$FDhU0R`2lf35rkb3LAaeaYFT*ba[*IfT4QBN8mJ`*-M3d"[1'!%AJh&e
QVA4%%NSrrd8I#*!!CIi&k2M*A4U1A$cYZ622"rIDHYY1T&6jYchA1&b0+G@1G0%
`5S#*ZD'UJ14G-$`Z[ekNC,a9dJKfNAeai)aklk49TJXH-&TDe!Z03rbCmql0D1r
d1GMdSm&SF+rd3hMFUlVbji!'VKX4p%)FeEe&X4PblQ,9f,fhMa,+KYf*HK%3#4*
,@q1)MVI5,`k!Ff!#Q)mCG0Gh,TI)HhaHX-LETZ,3%[Y$"lb2$E046))j-P&f#Xe
Hd[*hA3S&5@LI6ACp'kSa3c`iTqJ,4h*2,`$J0@$3%)'6[mDQT(EkEYaN0[fZBU)
C&20i#-d)Aj9IrPa&"JT&M46Dha&5TM69R*hcA-Q&D2MSbMq(X!TJ93lBN!!KNDN
EBb-)&DR,A'-06I`ZriNb+2E+9[b9KFc6A,iYq)Jf9r4VZ%E"#-l"lqRjU%Kl%aA
4f6Jm6)hLeBV,US)12q'Y5VXm%08NEfSmfk@JlETd35-!rR*Q&GHEJRE,[X4Z%B'

jf08IrBEG&qPlLXaX[(3VY+0@dqFSZ!!m'Y-JCS9R()!b[NSc`pZ4Jp1,B#e%jXf
A!EaYV'T!2eKHc0L8-j%+m!M0"%ea&Ajf0C0U*S4C[TL%L[P+TchlLm()mK(kZja
4YG11p#TC4BLX023ceKU!"KKjb,8EUA0k@4!6A1PA)VVlAbC!S4XXP0!CFaMDFbd
AJi$3,#)1CZHjU0#F(4365@*VG3`4MT8*XUr0A@2Y3+VJZiD2'PVIRmcDadq-"ch
c#VMN6*'4&U9h2AT8A6"#%-"(9Z@raDk%UIDE+%'FC5PGrDRH5XQHY5i`#!ZMq+Z
#@pKZ(dpV@#G!*4e'62UimDhKh4Y091Y`$6KY[V(m(YmT1`aLrbYbZ9Frd`B-a)k
ED*GL)r-K[5!XYk4'LT!!Ma,V%!Tm,iQPHTXS*6R&YNY5PZclbMMf+$&VN3'*N!!
&QbGqS"Mi6rIDK*!!(+"e-6&mqjbRI3A(2i2SR&@EU!QZ$`)PQ4jKMGAe#,hTIAm
+Y"NqX8XTHaP,S&b$cBdkY81(pqC+P8+YP43$'Xp%kfm(mpfNAa[-VX8!S#NaU`f
NM3GD)$9*1K&p4F$P[UH'CmYp2&L$QaD&)p5))P9$43I[h$FR5fRVZeAe5jUVCRF
lbc1UZ)$Ur*qQKdipZ9DDcUB%cPfIJbPP`b)lXP8HGC5%d4dMG*dUpN@@bMPAjIE
p$dfXLVNDTD1+a&QC)fpYE)ba8'6IFGL,@2,&T5+5ppi)6!UV-##ZUbkJ&L,#rRS
55E!8a`*kCD5E,`M,`6A!PkYXKi[RRf@i[[a-34%i2I!`B5jcqUC!V!fiZMM0Y#k
0mCbM9R[f8&#EYHPS(f$iehFl-6`dipHR3EYjjlL+GkHll%(bi+80&#c8V`cbP)5
#i32rU-6p"0SY(1j6MP`D@@JbXM,0%2f`li1Qi5iDjKrr5%MpQLF!'ZZ`P-MUmU&
k+H2MheZI[3&$9m%9kf3A"If9rbpklFNbG$ak4-RT+E&`G"8PS(RXRNVEp*!!MQM
[`+S*P8V4kcSUel6edp"%l@3iKLi2M5B0C+JfLLj$ZPDl5"EQ+4@er-iIc2$l6(T
h2hHl-qr3f5G@TXjHRfiVrZ3f)p&5TqDPKq5[V4@`&99m(0CDPQ#)4M%fD$,A(('
b-R&hB$8-'YU4M[9BrcfH43G)CVCB@F$ECP2d6SKU#K&mPF`83'P$S[r(1-UX03H
$@'A)c'$kCTJjFYiBYfIq&r0LhA0H)B8bpRfHZGJ5)hla(Bh6Y4!h0e-&-!qVA3E
UVE"iaES!GjK)pr%Q4,@)X,IlJ+U1%dc`,bcqJDS+SJ'F4M&@'X%ZXRS,5RB"d&E
U[r'3!!G'3!LhZY03d)2QN8293'e40[G('&2M$5C(MZ8RXkE[i5cP)f11VGCL"Ri
)GX&69+j24A!k(AKNlHMK4i85N!$aafm[2HpYr+Q-8rMcR5T'U$#Q2e#!YFeN1kU
b@*mHj6rHU4#XAF*6ZA&%rQACa(@G$T9rUm9+)0[SEZ@em$T,LE3)CTN3(-[p*E"
(C(B1L"PK)*rDR[P-eI&%P96UD!,akle#fIeZ3*pL4"S(T*EM9)ZKk!3hIi@q!KB
!XdM&34SfQjm'IbkSiGF21qC`b"*J@cbKXj2Q56362cj$b)SfXEc2Sd'c66mCJ*i
%J`FT(i"[a+K1UeEQLJLcD2K&Q2Zr*#9G9Zma2eAdGQ8q6MXDf6mZfm6)aF*cqHp
L68CV&HQh8GPeH%XID%P2YC9cRbjT*86L8bR8fFX@!rKLFQX)ljm0f"BA'bZM1!U
2V9jSZLK&Q"#NiR,mH9+-lcA!c'D-M(a)fSH(i"(f[GdA%42XN!"K"NK4e!!CJGh
#NBKKV%5ccFK"6bJb%NT0LI`"(DKN'RFUEK*K0L8q50lV)YKrDKl0!bY$B9Gq1R"
1RCqaE+`0(4M2"b$Rb+56K%$JIA-c16p9q%EU$[2b-AFSLeFIRHEhYFaaYT`HjFT
R"rU-k%"p1Z$%&h3F[dhN"V-c,ZNaKYY&pPhherE"MaHq50[dSc2Q,I&F9q`8'Mq
!5iN[c06RAqa21KFLFQ3QcNpV+K**R$a4'NDdL)L6D!r3rpFlk)B`@V[NS2$q4$B
B(ZRVSkm&a'X-T5Krk6ZaaT4r4DhILdHQ9"B2M%lp3E8cUL&X!fC`0!0kKYajL9b
qCrNRMAF,6EeZQUhH&$eCCSB-qKPA%#c+%rcV#3VPUr9@Zpcrd#iNb`V-P6GR-*[
FamEhmMjNQm&`[T%q0NaAjc&bi30XRfe&*M(dm6*rU-H'hl,kFN39Bf+Vd*(3'G,
!Dfq+rC!!6143X3SFEj!!M#CE!6kq)#dY!j!!eMpYC0le4j4`$cb[*Kq+JIl22(B
(cDBJT9NT#c#(9bVbld6#EaM!03Jk3j@#HSK8Z'mQm`H`Y,,)`q5E1@LKVhIf@Ip
2Rq`2Yj2B)+!3Z1Ql-dA+!HFb!H(0i8RkG8@qS'R6b+"iVlh1Gb6QLZ0i"`&E`pl
kk3JRF5Bcd#cY$5rq("#kM0PX1G'l-QFZQ2[Q-K`9cqeRqBNe95F3Iq"(L2e80QY
11Jmc91S00[)NqN6TdU'aUqMPaK(jqD-[U3@J"[$E3XSl"pm(+)a5R-'#S'PD95C
'C1#f'4c0HFU`4NA0Y&[R$@KF5$*@'(Bh2NkN14pJ&h!)ii&GR*E)!eKa%c0S2+T
XfV["*qpJJ,i+qL4"aA04VPbHJ0cRNS%AAN8qJ-0@QcBY9B3[@Sr#b0*bRR8Bcjc
pl+i%p,2YadeC!T3Nqk)@d4bU3E'8mR9HqCS!@Ke[6Y4H"`a$cJRPP8-DPi0Ib+k
C*LX,N6JcPSk"QU,fA"$*,C'91qfZ@hXmBM[!Tj&kI9K2bC,DbPF3c5[RHQc'lCK
'"CT3(D0pSG*Qfc8!8jB0(@$VSkQGYVd'9mB-B`IZX-AaAT28920)CpqJX&m4063
c"4%0SG3!9TeiNlS1XdTT(jY8ASLC-3f&cJJC)@Kj[,V1iJSL@m!VV[e1c+N!C2Y
dT2)%+@e1'f0D,+E!AZi!MZ)MJRI4R25$'0Xh0'Ya"3)a"ce1*fTT[@HR",+Bl43
-VbeerUlN$&PRdeTSDVj,0K"PmUAa4C[NC-TNhdTeR9Kmdd1dha,HlPkSbZCC[mP
el&1E0edhh)%Yd,PA!TQDkE@&TAaA&hP+mqdS5)-bdK8lHc[+h4IAS+U5q#I%A!L
+0aMZK9MiKBHl)$!0)%J2Z&+GrCT3ejKKp4+bD,15QLMY6L@caf&NN!#1Ke)-HA6
-Y!B%JAc5a+4#l-!YIR*kpekT($5Y%1NS+Ipk6CK(pUa1UJpYEK0%T#$VrMb',RQ
'lXHdVV&AfaNVYLb!cCI2-59ZQdJmX,2Sfp3bU6D#a8ADU1UhX"RlI+!I-344i#l
6i$p*NK#)#XGdCM'`56VfSJj(pHQQP45p-&dU[cJS,`QH#YjBPD-A![rZRpJ3kGA
VfRCGl,a%iAR!`Rj'GaNV-(Tr8DD`cfF&3q@jXI2(pU1bIij"3,AB6@LSqf2Q!Mh
Bb`j!+X5jBU!8A+X312VVhHFJ1m&9@"Np-ELYBEJ)FqYAF+NGJqj@(f$G&pEdZ9'
e4JTF%DRVI(X#d&8*0k[U)bVlk-FrP3-rYAfTRb0VUlRKBk*jVG#&T`FS*@2F8Z1
@F&D*HR*`H33[8+1p24@[l&(X+*T$Mhd9+[Hr1TZQ'#MN[&V6`[U"J0iE3jmUb&F
kKT3JQ$1bmL9*RJ1lh2"df9b4%Gkf&3pSN9q2r0-&S&4&+3@pKKce(Yq48H#fM2R
Pk0EeT4PBF)iJ8R)$beCQSK,bN!$e9-p2U9XaDRmX)q)6'ZTAXB&),KK"Gh6P1Dd
HYlah0X8S(!`@jhK-MH)HRFZA#-MJQ`qKJZ+p"@[,hX1'X$(e#pd52dh#[HBTflV
`jRaakZNrG'a(Z`8S3ZVJiUib!K$9"hZamb'@"fj8CX!qM#E"i0,$aM*#-IqQ-l%
[#CrC'LZ41M$HHVI"YCU1ZXj`ji%mT(*8J)3fD1bJ#RP1I`HTV0Ad0D#0)$d1Pd-
)'Cd5#hS1lCe0FhmY$2GD0-bK(d$Xr4f1!kBB6"2MFFIH@((5GcK5&k(6$j5CS)$
j9dlhf1R(1HK5MEBTqJ$@Z1&b1RAZJMDMP)DJ[8)Zqc0ri*384P0!3biPH,E16*D
c4`U@Z&R+#p@IUC*qMAJMP*BHMLI1q'd-k94UUPFhFq4H!VR"L%e(Y8Rp#m(mPa1
00BSSL%$El)ihVZSUMVpDFIeXY,S-pd!*&UC@m(jY2%Pjir8CT*pEL)jr(ECc0ZR
@(5TaSbIP9!ffdRL[!$SRI[)U&LIhL25dF-U[a#0c9@'SEY%U9FAP4&K3831Qb(T
M"c0SCH+SV2'J8,EAAP011DR(ilTc%GQeHL,BcAPXmk`AdVb%Hi%ji!P[#Z-4k0N
P3QlJVlk,@bm181bTJD1#&pPjK8A13cJ+qFpp&FhQJmNj42b"'pfM([9mN[VJi"B
8hY"%`8'fMT@5TUQhU-"ASjQB68@8&mQrqEJ!FG#bfF'Z*5bXP["dH!4Z+EjcN8d
Mr3M6IEl"b1iHrD"'NZ&`Md,Kq*2V$MV4VfV0Z"Y%G(9cE,"ETfD9X[VQd-r&A39
3a$"1k4hr`QE,q,94qD!6340-m-"FF`D,Qj)#e1YpV4QkMNBSJ`K*ESl`mla@cTI
eU04PiTPZp!(C(pr4MZVGf$l)dhmTF0GG#e&Xk6ibmIl013M-beBE[3rCC-#U3c4
m61VPaAf!VMYkA@B4T'*'#IVGcI#G(fYF4-!*IQP2PZ"QI*(V&KU2-q4)#Z6VMB*
pmG`0rP,jla$mV3Dmk"+),9l*48p'FQG,RR,4SU2j0qQ3!)3+-K*-2&ZfjNHcC!J
*BPCDfiY1Jj%mUPS99iNerZ*`V`FbCVpcZ!RrMVVi`hq$Z8ka`KAle%THdKp6IDK
A9#Vd$efU'A86"JE[cZNj0E0M&h[KfAU"IL9H4KT6je&(bCJqIl0FEV!bJr,dM,H
%RfGX#Zr)113#JrKXL$SpeCSLV,3"#T&,[k)YST'0AGJ5M"aT2l6lY"m4ece(8k%
d`kiQHc#kdZ)4Y0D2#NL,kaeNj6!irPB4JS$,HaK*F3+EY2*RlDe,[A8"ek!TS`@
N1`$QPFUPXeMR#c-YX5I'H54,cciF826#mq,ErTF#!i(BN8%(H5IGdp,#R$!B`I9

[qQGkma@93+"F,CQ+d'M8q8Al11!jBRA)-9*mKkI)jiaf[kk9+9BA`J(+#(6[Ue"
G'&VF`JGXc$[QX4#V"L#qaUNdr@'Zq9U+Rd-QYG'Bph`pDbG3N!!Q"[q)qiB(YkK
SrHb(GeZ3!)A**`XhJD9EI["aG6Sjjb)MYIkh5kiY$$c*V!jNI6TTjbpU,iVKi"'
jLM,2&ZC)!h288,bm8+T9@U2QF4'Y%ZVFDK9SGQ4T*QYUr!))18+ma-A*9d&La!2
YCl$Yc`1lZHIrCCe*@S&N-VI+kVH8V)[P4I%LM*!!`[UMCj+ZFmF"ETlX&'8LFTf
5%CH1FIV",6dKLGAdkE&X'RSPUa1h'`RP4QGNL1q!FkQqESQJk3#8d+-c1r,Rqk$
"*8BELTV4r&'C8$pA8Ac&eKeXMMIDcSK4NGQSD$kV2DQNCU%dJT9*6[K(45'ICeh
2qNcM`5&#9MX%S@VRTDL*e$Jim"j'GdLlJ,jb-q`$$)hh!'1[IJi"`QjR!+[N[r"
e$al`Uj9CaGiDfC6$Q8)RTNjlHrbYNF%Z69$9[J*4SCI)1R,IrYB'IAp6$GBVh`J
h"R*#f-+,'&LkE1P&*2-6B#Cpq+lN,FLD'hriK+rh0`9b0+jHq%!hFmlri(c"8Zf
Zj)0c`TcNd&K(jb%LD6dN4`"cP8R19-[),b3Z'Z"KqGMje3*(-D+m),qLT*5mQkH
B9Q+i6qDb'ZrT5IRXNZ+bRLr`6)*bh*%e(!h12M9dhI+C59%rM%cb8EbE"mENYr@
j5P'Z5MaDmFbTH!)RFKa%5FG!&B("Dk6U&DYGIcKQdFjrE#f[9`P`f0H4L4fH!qc
SJ[cYp(Jd0[Rr3Z+p'DY2IPk[3bcNE,62E0E#KhlGeD+U(%"c3LJ-4)f$h)8fF+3
'@a)NLSd2@-QGQ8S0Rjp&dd4BX5mPVDdU04#,,CGfk3Um9,jb4L9)e@5dJGE5%hL
#HYrM`Ic6,TTqR)q#qRdmr#b[dp2qIl[L)UB-+VS)BAX-j#AHFMG,RF`$A0aB1GI
8F5RGTUe*$8,CM3ANCqScal$-SG(),C%J!eD(d-G%8!D)FSaU(H9P(L@''TkiT2f
Mc@F-SYc0"L0N)A'&-c`D5G0-Uhflp0fP&+2,Fr[2`#$9LVU6MX%+MLEr`B)Vr3`
4Q'qU"#aaC%Tk`3,VU`Xp+`Z0S2H4eI9'ch,mGm'VjUeZ$)#X@A91l[8X&jfTM-,
9,I+C2F&'B-UFK)SlYmf3!1qqS*E+[Xb"Y6&1&`I*b%4-cbl1(FTbS4)bG$-icT3
f"13N9H*GV6qKhBqL[hX'S2TQXcRL32e6TU!1*-1Jd-Rq*d2$lj!!c81p2h!p,rT
4d(YI-bKcTS+(r%0LJlQL!!iM`LL[S$DLca@ZI[#U6ChrN!#S,PJ&[pE2D0!fj%R
'aXc8aTREr6C['4J)bD6I3`$[#V9KM"U@fYfdhk!m+j)UH(0%rV1lRLAZBaEi9T6
BJ&0Nb!HdVe-CKpiD'q"LE,6E@A8!`1ZYMGEr5@kJd$#5EmJR'D-HQ`pdAYjQ&Da
R,59YTZ(U5jc0VK`LSTdM`-43H3&k%&V['IV3"$R`VbC*-&-h&i%bC*S-j'kpSka
QeB#HmS1FrAE!ME,2#,0J)ZVAMYQ0cHRh'pC&D0[jYk[Y+"#3!+0(YAK(jbXj#d,

)ELQ03r'Lq[,*0%i`2CNqUb!%4$)I8X#qS2AAq+8liEMD-Q58I3L#XA,)90X$3Dk
N5fUCk@0C`p5"-S(S+@"9Lj)H@!4YpqH8S+&[4#qh[D2aFqm8P-Il!TlhbhSFHAc
Xb'%"%Ie6d1cKMe%994HjBZ`3TVh$hPCZT40T)CG0LZ%,S"AN*BPQ1M0i,Dm4imq
Y95k)$1h2h3T(ff3YQ""Z"prJFbB&h5'VLADH29#@A1lbD)8R1#hS2McaAS19E$$
f65hR#f5kbijQj[9BF#-GS6)-AJ9&dqa#fTmD0S$PIQSG$1r6jFj(MfL'N4&RQ+A
SM4dTJrLfrZkk0A#8f2hP6@cd##2pb@hM+Vl84+-NE2%lRmrLkU$FdQH*9C@BZfp
*IQb*F1*)j,!I&$CXEf@iV4%%M6+*'cQBm6TC@SpbSLXDX9DbM(jfcq0J[lZDX34
35(G-96QDV,pm'8@9IU#NEEVB0F8GRhN59G@EhKEUY3T#"c6NE,*VqK&@N50`p%&
H'[4A,b'2kFCfMLJHaYkFmfCV,G!r[f(4b*aH#m$YbbS@f@hrcLbi*6V+AR3(Pe[
X1@8k)A5a'1qkjUGHUUVq%U5hPLqBCr2LMfDaj2GaGJfjdmKJ1LH0C!9A1d''fHe
B&l#T*+pdKQLIL'He0H,a+84)1mQG#ZIe'9rZU"%j'pph`A&`DrBeAD#8)LY`JG-
$TTZN"%0pfJ"$XfDVk'*aA%3lZGU[Q&(X0%[E8LSPc36)@kplX[#X@LHlK@HIc4G
`XL@),e%miQ6Q1RHj)kRH0l8h'$BFMV5#Bfa[Y*jajlJG`+@3"!%!!$m!%,JMfqk
i)p[Z!!#[#J!")fN!N!21!!rZ[!!+VV)!!#)U!*!%$`"8De0SC@aXFbl2J#jiE@`
!!(2"9%9B9%0A588"!2q3"!#3#S!!N!G#`G8Kde44CHa@Aa`3[hE5CGaS#)!896!
%PqlCVCrYURDGQVlm$Ape4ScZU)EUBDP48I%b"k%HcMm09(R@U,dNJRN`a!*6VHB
FVAimZmJi4B[%NaSkQ-b6Decf0dR@i",+Vi(Jd9$"f2b)6PkZ,,Za3%VYSTpE-5r
K%+SDJ*EQEhflGQ4e1U2E$!CdMQaV*ml()X+3!%5,S+ISH5%Kj[L-h3P$KqV0DH3
hENeZhQqR),'HUjf*+1YkV@N)64X$50L!PJDYYUR1Sb'6Ta8@H('UUF8'11-A-,A
ZNlj[A&8k`&pTiNS@YTk&SD"'11PY969@L3j)Sb!$kM8*dKTKdhaL%Hm,[Q4V-r8
h9L%rJS0m85eXHJNN'V["'I1+V,3pc!eUS!,*VbCS!j`[UXCB$%SrdRbq#,cAR2I
"8-fF6S@r'k5kmBRFb!h0)G6YP&h+(4a(rFi290)Pmdjjj*PR48#E42V[-KM5k*Q
664!m-%K`d(fU''RKQ+L3!+B[i45+&Pm`b2$HjQbEZ`lCDLLr45RBdRF"bB$C1%P
i@G0`00&D$ER(Xj!!$"95M5Q)[!b#FecpDpJckUqda4Y5SZ"6T*@'CkV`RYI#XdV
dIlji90+SB2*EXJVYCpQ!X0UPr%!Q*-pVPl2b26%kNi%LirNF,#Pr)eA&M3UFAp%
pHE93QlI9qU-#dmS)dl+3!16Y[H8Ara#,K*eM*R9@j93HLX`L&X23#SJQm*4T$H"
$)AJaIMXc8C%ER[6dFa%kQ[CEL-(fRG*YH2-,pZFh#ZMHrHl6FXjKQJE*d%k0r&+
RZANm&65L`K2Hh4'92QP*@qTa@c"TKD'*cpqED*!!lJBHAr,ZN`IZBEZc0NP*DQN
52&c2VN%jG8Q9&+dI&m#mp4Ji,4Qj4f"Q#9MF2E0p5m-9Y"D#**%bGD,,,,()G0T
!S$re#hi6T6Ih&G(ET"-[(")K4(J8fk'kMb[FDR@,1p'3!1rE`GV4Z"F0*cmJ2E`
m5SiH%4A1JDj$Ph2h'cFq(bp)FT`EqhG8#D4q#*+%(K0#aNAIIp+CERR6M)f-mLj
HYZGNreMiDK`*b&)FSk5ad)rr`2"h,X&DIT1A4J'THM+eDDGR'[SAiNZJaje'e"U
NdRQHJ!0-(e0aD!5FKHZDkE($XkY@SZhVp)B'#fG"-l08VM(e)(J,4l5+8STSG-F
jQ5Z#Y[YJjCCP2`KaM@!F4BU$BT%qUJYjc%4`6c6F'5**#ZA!ZQ#@3N(3[@`#h-h
2b,aPJ'Z+@%SU#r1YM4TM"U&'HIad@M-[(G'1@GAeK61[@61[lMJlLHIUZGR1hXb
@`T`1$BZ5&fXbm!lD9,#1(Jedk,YZ)KPcb+(V+SqR#hpjrKq@Dh9-G-D0A$V`49*
cpM"U(kMLLfB+0Va+[J(ZL5ZPm"Jrb9bfb)#+hU'mIU'lqr2N`)jYCDULMqEPTpN
hdArY2"A0-lPqS"$)9"5JZQ9XL)krL,mCie@![C,V3#a%3&XQKf[%0`,AR@i!M&I
K$`H4e8(&ra%mU51$j0-PS05Z)"@5@Dl3Tk-B0cJ8j`X!pD0G",8[FKXrQEp,RJ-
%mX,j#ap`dXe-l2aHU-,)6a*X$Zc9KqTld,0+JX93MMC"$N10h+3JciU,eYJd%Xl
1mVhENZhr#14MN!!YIcEBKlZ*B,h$bBCR*c5*#hmlA02*0CfV)kSh3e6RbZDq-T`
piQJI$rjGjU(ZII1J0%fiT582lYqUpcbqRl!HDY[%!-Xq60&89$FSAH!iK+SBdZa
a*@l$@AmDY2`Ah&2)M3AGZ@5R"KA'p*YF*lYXL[S,VFH0iX9HH'#,$DLbTUr)[ie
DCmFG)1-H2r1kkbi&Kim*HIU,R&-c9Lila!4h9R&15KjYqS+Pq3"rP2%1BeE(b%&
UBPS&j+Q+0)&X*'3CcQ[0(QVmZXp-`mN%F#VAT1&jCM+U&@&qN!"E2c*q[Tmf`KL
%IUp!cBU`-caFXUa'l$[ljSKfZ(*dqU)c(kI2hAl615BTE+k2k*60ibU)'+M+69f
&-V&[L20XjQEU8B#CD"rbb!,qZm(3!LP"Yj`F@(p[B@D83R$),(e1qAMc)qHNYNH
rNC@L*$Yil&6jkj`TbKkHT!&@)5Bj%L"YKU6YH1IDPTmc*E9Tk(MTkXN)*bB`h&'
Be2FNXEBAkISYE`jS()RYVITkEIqL-PlJ8,EfC1DDj1D!MC8FBIX0V0EIaAq*3Z!
cd"9ARf6(Mf@(2RCmSL1EMQ@UJ2Mp@B5*Rfc4&c5!1m*B5&+ZlaFR,E$#cAhc(cL
G!EPa#Tam!PHL1i6(jj5KDE(V81LGNAG,-f!La"+(b%d"!B9!TmDM'mlZNZ9T"ET
!!V+3!,``IMQT$'2qB+!N!Ie8-bUS@cd3YK@5Nj0c4aUe`ZrVDhkN3G89Q82lH%p
M4+DE*pANYl$"MaJkV`1ZF#L,aXAlT,XDYRDeQ4fa9(,h!rHCCY(!d*NAdY*ad(*
DF*`1Qd4KVk'ZLBh0A@3KIJC(+RfacV$V(VMebPZd-Tl*8!8aD6R'YQa5Te+kXG!
5'icCXarBV[Hiei"FdTjaj-HHIf(PE6U"r5V*-$,G1*`mScih$+p6dKbJmi1"l"r
+9ai-58-rXJmfXHSq4Xp9b5er$5-pG0++X5T"Im0ZAcY2e"RVFL,a))4AKpcb4G2
GH2a1-q5MFh2Y!J,6C6%m0m4iZK5VUQ-(`aD42UC9U'"L+ka-aH4G-T!!2'A2KAY
mQ[N`VFTif3r%bc!4#bBlMYbM"DBirraQQYm[2j%r1J#Q&m98S5BV#2kqZdZm!"a
"&0%KSXHM@1DS+JilHX#Y9dj&bA'fcQL&8#U(JN$8'X")+$HI3Prb&Y692%a#bi+
*kU13!)BebTcEBZLYJQL&)TP2LHKJPM2"mCXP(#VPXMZHK)CSk9EQ0ccKDZF!Aal
f[9-9%5&DM$(S99m3Gq1!5[*Bb+alQKSdqjQEdGcHjF8CBN)-!Je#fm1a%d6K,M"
bqb36M#a0X&LfE-(eRmAq@CHK[FQIR4iSeSGacdMJ(k%Fqr3lQH*53ePH@q8#EAh
93B`@RqH&ipI+"%KSCEBj,Y-hSXT,Uh)#$*1QYhdD,N8Ka`23fL!HPJEYm+RRq`4
I$3&AI,PSAA-Z$pcb#m)8HN[*!3FGR%fE''HP9b%c8bC[FNa,059clANaC88[QTT
9P02F+A*pipeL,h*V3"CPr1UUkmfPMa!6TaYjEC`mHClhY*CK@Q1Eq#QE"CUp#G&
XIYe2a&VM*Mjed#bMFFEd590[qj`,3UIb+d+ik(%U6'"c!E1,jKV@lACXqSQXU"U
['%,%8KqM&HkLk,Sca,1C-6cpI*m4GpU$qNa3*NQ@9raqPQK1IEAb*hlFfBZYi5)
iEJUkh'p3U0CE"Ad68!X!PLkM,a!KpZ+(6JK[,Lbc6SaT1'%ZQXmH5BCDjEk0C0C
&G`F69F'd8L6Bmq-e9RrfG89iXl35r@G,QiHZ&9#1*DcFBC!!%KR(Zb"r"F)N4bZ
#iVV)R43'CbiK92M9lrhe'P(q+U"++iUH#H)b*SG0`0ZJ@K)FDR1,MpNb[bA$bPa
)`jRX*hm46ppU(k28YB[K,J$2Ue3(5N(!dZFe6reZ,eRYcE1j*`Qrr#2%d(MRH3d
p5lh!T"j5$CMZSYF3AhLBjBHY'LepUJE3iPfjFa@@%%Ia+Hl-X+5`CEifNr(DQ+G
RYCl!4J*q*!*Qq(5lGPhA)(p,A"@IBPph,+9reP-%kFQVrSaEbEd-6drj(e1PK0"
Hb"fMQFXNqmBpiF%*JY[2lAr+lpUqC3XVrl!$CdQV)F5#B6)peQ4mcM#jF`3)a"5
$G5KLDkC)mGL*+f$0"FTcV1hKh5dP'BL4hV6111[3!Rek%D[-[N'1@QeH[-,`lT%
JkF!q68L2lTMENaY`L,UUerdmYUNKrBqXHUcIEB%EY#MJ-KGdi)aTLKQdZ8RJTHp
Y"IPF"p,Ji6N4RKeME"j%YPCp"GD%N4$"kdRdk%iKJEQEJJa),AeN92*-GjJS%&'
XP2%F%@hEBi00DBfD6(I6+hqY0JqZF-rjP(rN8BIQ'k-chD-M@Xc%8Fk%"32&Ul&
9%CDTmSS&1Jjl@0*P48Tq(k5j,*3*r)&e23jU&L,PXEkZ#IMYjHB5aVc$"cF)V+F
QXmQifc+XEUiDMD0beL$DL!kh-5lM&b*CCXbFDC8!RYM"Y`"#*d*Qjd@['mKfNSj
'2N0N9!TNF`e8VAJZQQ,,Z(rN!l`$hA!0*)GhZpS1G&dBak5#j-"8CA&@j'GHq5j

Z-f$jcZKmVq`jPK$r4kiZe%-6[Me5*S,bJVieUUHID*jr60A+ia,!2")FM2E'1mI
$mK*C1*rCZ,AK-"lpAQ+UFaU$rQ8mk"(,aCB$3*&#*Q3&F1*)cLL[AFj'4[#lRpa
@hba3GCl1ic+0RUSKb+9Ge2P13QTEeE)f![3[lR6e%RqlIL$YY58*FIH!TX3MZ%+
ZT8E*YPB'ISj5Z6,I",eFi"!mZ)dkL,(@a2'8-qXNh!R'Rbd&@6U1VAZNZP8#L0%
IDkBXf2Q09dScFadjZ4&ic!4S"h'Q6$Yqr4Y'iT!!V[`VaT%1P3bCc#8B&AhCAH`
#ZIMZZ)C8N6*GL8B-ISYI9eM*eq,S)26SIA@9N!$rQiZ5%kfi2'dqcP,NKH!)$P2
ifcl%FEh4+RbaB!"Fr8hVr,edRKEhN4#ipAaRD9Eqk099#!iYY*!!'d!'IfBhG`X
QrVr5)1lkHEq#)NbfC432Hf*3U,"@8&YrrpK(jUdZ!hh'5`q"`p@T`[5qF9!6&Hp
p*D-I((jF,A8I8C,fi%ZR*%k5CQB&DQe[blZ'RI1[IlNpUlmcGl8j(q0m&4PVK"e
NVdpaC00I%AN0q'Z"cY5`jPTY("#R+k42#khi5(maU"U,19r"1`hcf"9YCT*L,Y*
kkpdN6EHTKC9,fZ$FU"BhC$DYIQ#3!,qPIYh1)c3JJmrPHUEL'1)#U9HdMKP(e)T
Pfa!rlr*C1HfQZJia"pBdDL*Z%@00Xc2E6@5f55Yl0lfaR1'fU$hpZ2Vkh&Kk(Fh
mqP1)2Bf'Qh"8a0QE0pQlqDlme%3FHA2F`UTkjmd52&10JC!!(hhV)aSUIE`kS'`
DjA'Ca0`(UDqJ4%lm9E&4j@*4#*rLM"E24A+3!1X'qNpebXVj9K'EqQDXcY%rm0B
4KKmHrb@G1))-6Vm#jle"EK#EHHmX2LHc2mKNF21mXYHfDBL3!-Bc$,SHf[A1pNr
FRF0')`U94#*(rV8'T*m8CNSj3+a$JZ"%b)#($2T!MhKIDSAY#aJ3`3idqkN*Y&*
FXT!!qH(Xj8SKarTpe*iHcApZ#6ILPE@NMmfhFB&liCcjEdI0iNL&0YBC2`MH,Rj
bAkAKbpL,MR+i+chEhDBiT86Ue-D,Ce8iX$bNBB4%4dbY8l[FqdVacTjT13iNADj
Z"(1X+L"FLR-%FdSi2r)YFmGb'PbcSLd82f`!K38A4MXH@P9XrZ6CqQ,FUJJr&#Y
[1I,jeb"IKf33Q$[R99ChQ5%YS`)NN!!dcKfPe,`bP*A35AhZj&h5QVPP2p0F'0r
AQEXCPHhqaI9FP9*GC)k)$qk-+Pi!HT6[hh(0hqFp2IIjpePJ!llX,@UV)&Qk`9)
cj8M0rpJN!XElGm8#5PBmr&`MSaRj*0BHZ9F$4lVJhaKr$,9bH6)fNSTQl0cqh&V
-U,c"FE2f"%Gj)kli+fcDP2*aX*!!@5X5NkeGi@)'P`,S32Add9PMk&fc'Ihm5Ua
a(+[f[ZF)A&Tp1XSq#B58h"KYk$frZDc,BK@CG[eQ@Z5P`fYJ*aak+Pd&Z8jl8)6
cJQh3blK(9lkD[f(CaXZk&M$CF@8!-T3)AT)-59#5D6kVIL2Ta92+'d3-EE'FQDp
Z8[GjY"XZeT-"i!*(DEHe[MC8-6&[VPb(Ifr2ZVd(6L#86p$HV1[21fLfRUjd9bC

'YPpY!0CmpD[8IqVMJp(hdQMbH[i)lBV[pGdMcL6(0"`6Deee(eQN2CYha)IIe4m
B*4p6`K'(CDp3*N05&LMDA+llPdD$RSeP)c[QGPQbPXP9"0Jbb8p*Zh8PI%jFI!(
P'0[k'X`VBXjB9@FMSRZcH8DjqUAR@R504f+h#l&BbP+qU'kNUJXA6#mN8j3j-5U
+ILIBRfI'6lQ@XA2qrl%0,&9q3`lVNY+6[k3eEJ)5k5pP60mqjXXM`a3"R`@B5,(
h22FUV'%*-6%jdGGdM"em&hp6XU9d3Qj2jUZr8)[fP*+Hc%G[PCUPdVhaY"Vq*Z6
)D!-V2TpQQbfa*E%Fr'6E"%NNYf$dM*5RXXSVUiI5AM2Hk3JQG'j1ea1LGf+l(L2
FhK!Q5XbTmmq"[JT#'3#q92*VdmCAr$#RP*!!ZQA4F9AD4cl@P4BNNMcarCJ@1G`
2a6N4L2"Hd(#$+L@*2&0Q1BDTlEVF9@mFQ@)V*0V8R@4TJp+,RYh[I)YZd3'N938
i&ibBD-J&6!%T'',Qh`#YE8LMrHIE8&2-HrqIlQFBTNK9im30#r0NEbYTl&S!DBk
fbZR1,epCDGTPX9lG,!%mdGrIR)`cRR$11m&M0KrF2X%6G-j*cC%0'Y4(hA"Q+%l
q`@2YF`S-8k"aX,He-Vjj(mSmAY3D*3PE,F4J`hA8LQ%CF"l$Ldf5K'(8E-Xh[@i
qBVZ@a[R%q5&!"lNK"GCXRhifED+5486@E%XHAiiQLScLh*UF$6SJHTM!)V&+BPG
aNM#@S6DD&hii10c9CZSY'+eTp`0IP5NGlQU#Q&2jp*1V`aQ1j14F3Yarc%4q"9Z
hkRI(U1DVFfqf6MRm'cmk!`KZj@-0aPTr48)%KBel8fac-h5[kmU5QYE[le$C-`j
8&4JAaG33j`-,(29TPVjGY&$aa-(cT8@qQMrAfQ1'Ni`SrQFU4l0F8LR$HD4BQXA
VCSPFr0'J*9P')e!'!d,CB18RULLc'kclZb)aGM$GkCDp2iF9-0*Cp3LDDLUXGkX
'"MkaXr(jrFMb2rq&*$UM+mbX*"3!U3NS(YaT%,V(SdL8CT[5aDHh1N`YFp4,`N5
c,J$V1iTLj-Y%N!"26qGI@4!c[,Tk9(fkK@bI6r6I50j2eYQHLH43TjTe0h3)IB-
QkRPG9@RrXH#lhMEcGpKk(D&%#[bTQHEUAi(E3V1e*L8bR94KNF%EGa%Z@KU0!%K
+9M[Q@0UrZc0EdVfLG4XEjc6jbBYeU8!8Bb$JDpCCjHNAIh1Bhm%UKm!D*fG+IX[
*Xfr)2YC,ji5IVb6h2VdBj,rX8qQYPIRTCmbfd[822j%5++P*'6+dj9a*2QSrP-6
im#IkcDAa$4F89`PkJbhTYpcH[pYNLR'0KYCC*HmMZGXS3'aI#(+*(@QFe&0Z&,k
i2PrfJmFDJjf3!,mS03($9d5f6ciFiSfZ(%FT61*Sj'e3YVUeT`,&(b&S$2'-eXU
)[ra5LVk"ZX!kS9jh'd*GhNTcS+C4*U"H+h5&p[5fe4FaMiq*Crf)IIim&FddV2Y
KG''l#2EY-kH@@PMD0`CXY5N8DqE$Y(`U5a[@i*IBlbK%HCC"(k&&eF*A3j8Zr6E
`5J$9b,Q8EaAi-NHFNBDCJN)PLak-e5q2Y&b2hXK(33cSaLDh*d-UX3UN*a`GhBf
P4@S'6(LM[Da1d#DlPA4[XeeeAXC[F2U0%ZK-k@RSQ99AI*a15!BdU2"'Vp-HhLX
Qi6q8dG`#1DP,q22L[69)EiU%qG3XYaR2!R'XZNEi+@XC80b!`fGU6@%R+*q40N"
hFUqG`-)*Hjr!6AFTK81*pcTZV3HQM3e@jB2dmT)kM%Upk#UhH2beN!$UA+E[j#P
E$28aaJ+hKM32'q1LF4AaGa@"(elE%2#VP!!0i[!(U`f&TLcLhAZ#D6bYUHiL%Qq
B9)NiHN"5)QDB*$!F$L"TGaTpAlUS!%-VdYKT5j[Vp'd[r320IdmbK*GHG,@BKqf
L4@iqQh68!JHMkQ33DaT&Q&T9[N*-F8ICh*NbKp#CH%3N!G`C$*aKlUQ&QUm8I!V
#F5BKilfiR$LD,C!!pBhI6R&#B9$KIb6D"dk2hDi4E",EqGBKdFfYJ@PF,r'XALT
@A@V*G$kpLL1B-$0Lfd-QXV0dlF#AcdC1`lPfC4lDTjiS%h$dp0ejYf6iX[3mdCc
dPEIpV[(@UYJUM'jGr#Z*"PE-4bXS&a2m+M*#10B2'CH0[0`30l5,cGqR"29Ec6V
lj8$JMGd(ED!DmSAAFK&,K`@FVH9e"-f)&ATrD5FX1ZYLd#BU9,iImU-Kdm+Rl+`
[46Tp,+P%TPIUeTF-rhH$U%VXqTEB2fSbAAmiA%#&THG$MF$Q9U`cFmAi9Nb3!,K
5la"#K@T'NC'&lXRHkL,i)CEI1qT4-G6KUa,HG#8q$KR&Mj&,k$`j'SUbXeAYL"a
PhMKlNmkMHmT+qhpG$kV`HD2`%HA(1@#P4Vm@5HZ(#ccdXpNRm(a69-h09RZfNA2
Y4"Caad$*qYah8Kr%U'iA&fcE+T0YUSr$LS4DQdD!DUEDml6Ta)FGlG6ep[lX2ql
i4b9h5j@f)1GYShX"Vm+RKAjG,ck)rMVc"r&*'d@a44K&fY@$XLCG+YpX)E5p"!Q
(`AH+GkR5*+9'rTMFqqh!hQ8DZrZK,Yh*!CqekSSp&+TPkU)J)ZCAkDa"C-$H8rP
,QC6I%FrQ8kIpJ+*JE1#mC6cp)CG)`#bD2J9,+[[$T"F$A**IHaZX)RS[(BqSq$p
TXbrJbQ)bRlT*Fi'AC%4q()Q&VC[Kp28Yr4,&$2I5$K!R"3H)(*6HNFaH@jLGMG[
$U0YI'r@G$2Er('1eYh3rqm1edpUQ0PBEIIMa"bkrQ%F9,G3&djFU-q4hAq2CMKP
jqbFJJ*CD4*Lci)`c4+NaJrcQPmih1*jpT!A2"(pljHP0BdYImr+Z'(m,-&IcDIN
$G"(6BI#YRM3mR(i#LRT)BrMEpHD#rFD8621QQ6ZRI8e*qfH"NQmGXZ"m,@h`9G8
k3LN@LSED*%$,HP-`5@-e!lk%$be"C4c+@U&SLrRM!-$19U'k1#LG!JIhq-Km(6J
0md(B8DD[B!-l&E09b208H,ldK4@A"qZPapHjIHjHDLkErV6qL8#DjfDJ(#[#Ed(
34N)%"qT6GcE1HMYIl5Cf1K*m3"lp'BK&2eYI%"4eHelV!Nc2MUKLk9'80%@l3'e
k"ihFR4Q+AGfd`cDG[4cr)"$6NdAQl*!!T#Rm@EMdiF0FRlecpjE2S[@DdQ)Uf0L
aS"l&"N@halU`FIZ91HH'1hS#PEf,!62@I%GCB[&d`NqJm-9+GbZX($'M(,dVDXP
A(Y*h`S)E,lXC"Q(Xl5#''0FQ3l9(-k5jRmbp0Kc2#44p'N3Yfp#GZ(K2Q-B90Id
N+$Y'-0"[GK-(F6k!q5XjjRN%kGQ-@0MkMD,F`6-#8DMH1Ji9jJH0-(3QIQ*QZqc
P",2BfT3)#ifq+k#Y1T2qTlI0il)eSh@rjHHp%&DX,3eU[+&)3AFDCSN+6G5YHX(
CR6%PM*%rH4Qa52(cR5*MSN'8c[,(P!YM"2-6IE%d!HA,PA)IqMQL@'%Vl8)r0(-
aV1iaJb0YK[&Cdj!!--U&I&F!fN(hr5eB8TC-8U`BAq9X1IPb'pQHHNql6`PGPJp
ieR'$)GKZA#Te,M%l6mHek%cr,JL)iU5rHMb-[qiPG*1AHk6Qb&)Zl%6AJ,TpPKH
Bb$cbc'-BN!"@YR%&m1'`c0BiFp$UlB[rZH(mT12YjN&X&KeCh*1(-6il8I*CCMh
@U1MaSdJ!fF`XT)"hZ-+M"M0EGA[$3apMDkr#TQRVCraS$bcP9AI'V8$*"bC%0Q3
VJ6+@#2IT0NlY""hd1$HK0Qa)$Y5Q4,2MSM(5C-TH!@Sk$lc(Saf5$U4`5C@-fdd
"+aI3(f,d9P$jdD[5`cSU@5ZMXmIeYL!G-Lp&Vj,Bq-SBRI0STZ4q+-%QeLrVe4*
A+hSajjaRHp3i''RLf035d(qQB9A2G*M5%m'IM%f+qGEZX5IPlALdY2@Lf&,EhrE
FVZLLS+Rf-"4#e+-kZa"l8!D0h'lcc5B$h)LTFVJ2[#0@&20JN5k*aiXINc0k$GM
&YR2amQ,)r,318km!P!F+B6Fm&UkqL$)q[pBXm#0PG-qC51$ZfqVE+fECrELQ8V!
Ca&`(UD[8b'cAA6!PlP19e(8%Ep1BkEdhi$033JQTMXKHlL9k`l3B0p+KPrpiNC-
)PjL-N@bh0')5GG+$Z4#[SDZ[#EZ$hfR#)KZ!f$JJ%D"HrUPSXZdfh+65a3CCH`r
)4Zj(p3F66bf-8CA+dX52qQ5#MFYRY[%[HZVBQ6a[51eGPia,1eRVqElB2$S0CXD
6VHNZHcie#@UV5V4jSq3q"kS@4$5`S"mP(M1Rbq&+HE8k"8L"AIYB`8K2LU`Cl1'
8j-YhGa1*19h0H3a+p"BIml[Cq#"F"UPfSGQIN6JTiYVYRZ`@VkN"S$4CcdhA(RP
i#3bk2*J4QG6iM5@VZSBY5Me9aC-)pQCLeZ2&Q9,0Rb1GrLj3&'DV%!5*6hC!+Y&
%rGS[e2+"6-SSk-Z92#APC18A[E"bqr)phe!R@VPU[XppDmLC!S9f&bR[dFpapEC
kPTTViEG+p-96FGmD&T8Lib3a0b2i'Dm3K!66Q#`@rPXBj+H9)qCX`"SPYH41j4J
FPeI!I%&bJrkL$ZH!L)aCSbHX%$4LiQl-33`JfNNKDfk%pS66FX`,$,S4!kh51CU
r,"9p#Vam)J,)dGBTI%cAi+@Ae[b`Y$(5dP'TBCMLB$&IeN@[mlj5T!Z(QpL'I4j
cGUcaIQklG*,Ldbl#``#f+e3[cq-5CASklPXY9B'5a#dp`'#KhR5`DBaKqU6f!@,
'0dC6[95$Ubqc[[8*NNTj&&149d+TkEil'Z9%@GFqVr+cM&Y8IDm[UN3aQ[d@d+m
4)@,H+ZMR!9D1)'1qBUY`Zpeq1CX"JLN&K*R#PjqClAeZe1$k94["&RXqJ@E5$9A
J&Zh6e8I[Q(eDYk1pj@GYLRbReTKk!@(H$lR'B68`ajajPVkAl&Y"@'r+$'b)3`f
"D+$`Q!-@Q,dkN@&YEfmmHCPq-mBFVKGN)5Ic4)LJi)C%L4cB)XM,hSr@1NFL@mI
NT#RY[NjdL'1,ke!&"!P(eH1Ua9!#T+@a!)UA$kl8UTH3!#8rB,fUqN-"aT,B#mU

+)MYcmZri-2PTkBKc!f(M!F6BL-pbGMF482DVNQjM5%1SapjDJZ-5&@&h'D9H8be
)`)a-Vb+(a&e&1iFBZpEf8KJ`Rr''"V%61if)AN3mfVX*Xp(i*m8i)&j0SDh3-qR
pGa*-*cUr!6DI(293&B8q!SbG)TpedIeqPDm*E(hFpR6%IT!!8qi[%X%ZMda)))c
$GNlAKmXE`&('6)A0j3k"Q8+h6FDBA0k3!!ZJZF-mVV'V8$%C[XBV`FNb5!a4F*!
!GVHceQ#+r'9"3Y&8dU2[)Z)QXGKb-Z5"Zj'BYB5B`%ZbIN0DC%2ir#d*&95EMI9
)r!eiVLmkC-MBebd6%%I0fe2Z"6R,dHXK+IaQa!c+m+Y%MpKr!ck@L#HQmQa9Nfr
8f4LfQ,Dl(-A)q`#RQ6XH!BIImRDIUmGcGE)#mc`@3k0K&1)f39NH0h'JITFHj`%
kUTa6ZYe`i49Si4$Fh5ec`*!!kkkCl4SDM)X*""P21l0qXP@Spk0J-`T%9T(*e36
EUi%1*UlDU`SHDfBYZ%Em@*elXabrXiYRl4Y3U3i@3f-*Z3q#[h`aVm4b[,P,+1$
lR)UVYpL#%fN*a(X0+li9B4Pm*hG!TC!%!3!!-!"!!*!*!3$F!*!(cJ!!!e[rN!3
!N!UPN!3"!!!e!!#fm8lcY[&1m`#3!mi!!55!!*!$FJ!&J(J!N!j*BfpZ$3!"%Le
TBfpZ68&$8d!!N!q!!*!*!HB!N!1!!*!%$`"#`G6Klm3JH"k5kcXLNd1@28i@a86
FZS%c$NZGQJUSH4bHKqI!B10G(MDil@6dI,-(Up5RBpA#Y*[,Jc6ZVdl(MB8G2P2
0'@HQ+8l@&,%cFpZ@ZdA2CRZ(blTpfJr'bBN59qAPP+-4lhGC8A%HlCU(TqTMVF-
L#$JH*!8Lje0B!+@3"!%!!$!!3!#3#3%MQ3#3"h)!!$k*rj!%!*!+C@8!!!%!!!'
AJ!!"PS!!!!9,!*$c$!!J!!J!SJ%F!)"993#3!``!+!!S!+i"6J#e998!N!--!#!
!#!#L!4`!JP99!*!$$!"L!*)!m!'B!)9993#3!``!4J#Q!,S"eJ#'998!N!--!#J
!+!"e!6`!Ke99!*!$$J!S!#J!`J'N!)K995J+!*!$$!!S!#J!P!%5!J"993#3!``
!+!!S!)d"&`)"998!N!--!#J!+!#f!4`%!999!*!$@J!"!*!&A3"`!(%!V!3#6dX
!N!G+!&8"%iJk8fpbFRNZ)#"*ER0dB@aXBA4TEfiJBf&Z)'pZE(NJBQ8JF'9bCQp
bE@9N)'pZ)%K'8b"fEfaeE@9c,J#3!eS!!3#3"9d!F!"a!+`%!Np,!*!(5J"9!41
)1P4SC5"QD@aP)0*H-0-JE@&j)'*P)'4KE@&RC@3Z)#"3E'9KFf8JGA0P)'Pd)(G
TG'JJBf&eG'P[ELi!N!05!!%!N!9Y!'B!J3#L"!*25`#3"33!5!"R!31)-P0[FR*
j,#"LGA3JB5"NDA0V)(*PE'&dC@3JCA*bEh)J+&i`+5"SBA-JEf0MGA*bC@3Z!*!
$I8&%3e)$!!"q$9-+Ni3"Sfd!l!Yb!l5b-LXVieY0hP[[D[HQELEAJ$%!3!-!N!1
kY3b!!!PT+[lJ!985,2Y+b&X1iq9cZS94MV)rcirrVL!j0k`Dq"(+KM9jKQ+MCf[

`V&ir"HlX#m#`U3BL1%aA2VhVbkfM'32&(&P,'cJ,!*!$6!!#!*!&-3"R!%8!V33
%8A9TG!#3"3S!8!!F!4#)'P9Z8h4eCQCTEQFJGf&c)(0eBf0PFh0QG@`K!*!&#!!
1!#J!,U!#!!%!N!28384$8J-!!4)08`UE*!!lLSL+&Fm@d(1X4'`3p5`rIcrXejf
rjql1$+GBf'%P+PL&999LjEra",'U"3ZbC6Y1)2Q3!"m"9#5BqM@mKDIGaGRG6G,
)HT+pI4mZ3pc&PmHP#aEjM6KA6jAe#b3m5Sk53ElSG,A`G'S9QL)q"HC1abaeLk9
cJ@A[I"3FZ$A+c+Ce3%m()3a-9j4CR+h"Zf9c)KIFIJai(r!m3+*2iaUXL26-$cG
j+&$EM-KaUkHFa@0E8ER-cGETJDZ80pr*q`cTre6rb@d!N!4Z!!%!N!9S!(S!I!#
f"!*25`#3"dJ!AJ%PL%j6EfeP)'PdC@ec)(GPFQ8JFfYTF("PC#"LC@0KGA0P)(4
SCANJBA*P)'j[G#"cGA"`Eh*dC@3JBRNJG'KTFb"cC@aQ,@9iG(*KBh4[FLi!N!1
T384$8J-!!,B08`UM!J,[j!5Gr91a$mmfHp2E9(6Bajb+k03*LRTfFql'k6J3$a8
lE'G9#9C9N!-KhQd6UrS"#j)2B)QrqC!!!Al+C$IA*4T0h,,0C$41)9c$S80X0Nh
%l40&LQIS0$'"1Rme"P-qaQ1QT*,p22dS82pVc)-l2TG!Iei&[QEeiPFKRRa,frh
ZGP$pLG-c6DU+j6&M59JZp!+6*N%5EamGV!)!N!-k!!%!N!93!&N!C!#6"!*25`#
3"3-!4!")!1L)'94SDA-JBA*MD'PfC5"TFb"NB@eKCf9N,L!!N!4)!!%!N!9(!&S
!@`#8"!*25`#3"3)!43!a!1L)*eP[G5"SBACP)'9ZG'9bC@3JB@iJD@jMEh*bC@0
d)("KFh0hEh*N,J#3"")!N!ZH!9j!!J2S!*!$I!!"!*!&D3"M!(d!R`3#6dX!N!F
p!'!!miKF9'KPFQ8JDA-JEQpd)'9ZEh9RD#"bEfpY)'pZ)0*H-0-JG'mJBfpZG'P
ZG@8J9@j6G(9QCQPZCbiJ)%&Z)'&NC'PdD@pZB@`JAM%JBRPdCA-JBA*P)'jPC@4
PC#i!N!-H!'i!KJ$H!H3!"3#3#!%&"P0dBA4eF`#3"KJ!0!!8!0)"FJ!"!3!"!*!
&!qJ!N!18!!!"(d&%3e)$!!6Q$9-+j#)!hhB$MR'R6XAbV0j%XHBmX)IiV0j8,+H
JL(G6Cr8c`3!G"L,18R4@$cZXm[rIpjiFhYRYG&J##k#MF"NjQKYpM08c$@fcB&c
B,DfDBBi[Q8@'KZhRa2eh1KGblU3+QbXZmrjdJl+K'E8"E#iG,'U!L9ATB$8iH")
""%H4JmH*JiXFe$A2[B2Y#,$K`U`5"0`DJf#cY2MX*ChTT*3S[2"4)pjUZHHr$Vc
5*(XM!dUL`bYl#@3++G+qArAV)0Jeii&kIZM)c)ei1q,`DdZCb"5#5`TS9m8NY6&
2mINh23-MRM'-lh6%63iY205!1aPr01FI1[ikDb1j$**hNU$CKaEqDXNA6ICm`&p
cThAf4L+8'Sm@!!!(#N&%3e)$!!`S$Pd,V))N2ZS-hqrZ1!QK5SG3'UP4i34(3(P
I"fEcS0Q#K"92C$K@P-9HE6bcNT,DRQeBDc[aqqT$D#eNV8)&DdiZN!#%#AZ,hfp
er$l&pI[)`U"CYD61l#ke%eX8NM![bE+N5i83d[Fl[Hr%iYTckrF($HIR0$%"*$3
M04p'j!kP$U6rDXM2CJM"X&PTH0km2Rc"[HG&*i[#(f(pFTmm#RB-&ck*PBNHVS0
Ka)H%LDfKbLLS1)"iAb3)Jc1%ji')q4!C1e$+EV!VUAf-f1i`r41*8jqrIEb"rEc
klR#mrrCRJq1ZiMrE`$GKa94jU6lIZC+pD562CdmRci59Rbk'XX9!h3"XQ6cJqBA
i*cH0kBALkBGRaJ2-hYTYaHF0X#p)F@%Qc[1G#a"XIL%ELH@5#bPrb&FN!i1YP[[
jlmh%-jAekAJS-Tbl-E)iZ1NUIe-VBQ88rJ9pHaHLJ@Eh`JAEM3p+f0FSl%E'6qC
a%KQ%2iP,fai+q-jH!bq+%HV0m$2&U`*Z8DmCK6Fa4b)0ia2aZ@G9,ZE96jqF'A+
Ij$iHhQhJ'jH5ilPL0P@@RLYfq+@YAja2bVlDmpZP*2I,Z@h,"(a8`Dpi+2Y+*E`
HZ4D#c&!IJeYh1f)'[V4[2$Rj`rR3DRRZZ4P-krfTLRlUKe(i$rbX&E"H4f%A%L*
8[*bH")%13M,hk!)G4+,3$D[JBV+Bjf8aYbL,qSpN%HGN)5K8P&!iK!STh+EU4DT
8TGX$6l2Np#Xa@8ElR,`XQErQ'&P+VqH5XPaq[HHa,'[HLHib-$qZ-$#P2h3B[-M
XF"J%MIj%-2JJ0p8U(mB,prl%JeVVm1,)AeEZm%SE*X-`5BE*-dbU,YN'[m&EE"B
'2LhLq,L`#pHl0G5RHl&m3iqUh@40JD9(e*HQ86pSY4)kbiIU#Uj-Ef"*EcRJ+"8
ZAeLlS$BFA6-Mk@jidB4mU*AB2SM"$YV@c)e6ZP[!58"@0Z$l&VH@lU8)$TUqSJ,
ad0G!-NIYF!j!F*SLDT[G(%-YY1+4d3cZ'8#`BSaZ+d%dCmC1$q(@5Y0rN`q4-!-
1ha'[$Y%FkIYAp)0PY8QXb)b)T$fUCG50fMlBQN0K$6RbLSHeq,iNERPcAVd2Qe9
[[+(EK2lK4,8$e9plc0*lJPa-QD5UA,mZQbUjH0&"TCi'BkrrbN%mb,j!0r3@J3l
Q8k*c-HC8KkQMJU2r2aJGiYI$JP0PlehjamNGSp#DZrFrd!Vk!ik0+iAq'Y,8GQJ
8b+FSE'$8UEldrFcdS3m&(mk+)&3YAHAqXNrYkrZ8F[9L`#PmMI6H+Hh-((8Lkjh
DFB"S&TqEeBi0Ud!1!(&rJpk4f@N&#pS'J'H20CY"b341$fQhhDmiND1JaHNQ)bk
IkK@TGT&k$DIBHaEYcql,N!#4DFY,JhDhiZVlbQI`3@$8hN,c!hH0%aR+R08FMJh
h@ECjV+P0"-Zd6F35M*55`k6eCJhMU!Pad[(@4`i-qC2)FY#qJMUR`YdCfbMk1+r
3R&+J)(jr5rhl5'YA@SKK9%!H!r4H%bbXF$[d"pU$B5U'iClN)J&HiL#@#!(!L2q
jUqG!m2IZ$Cj[E,49[EIkj1P%RrrplilrR[f1Drp0IhAHNmemXqPLE,dL6N2c[MT
mebIael4Xb*KF8MHPb-KfkFhFFMMC`MmUKV)T*T'3!)2Ae6fjaI9)fU+)ij)8%Ai
RFG(NYp%@hXk%(Q8Bbcj6m(CIRC5SP#5r$ZF!$h4)A#jj'S*I+SED&@CfhK6FpVL
ZPQrXXH96Uf02NrfU[bF5ljA5R4hMrU$R8LQ8U)lQ'fK+'"6Di#a18cl$iNlVlJp
+rKN84R%G82lDSS,c203D9B&$eBHXGIk'SJb-+l(rfG(,Xj!!DEJPcY04,9,L6'k
QcY'!L6Zfbj2jCblQ4rRY%feAMe6hl#aI[L&2l*K[(6A"U@*M-"M+KMFVMAcGZp+
Y@52A'"`acI,B`SqD$mS[&rh"B1df%Ajb5p*qEZ6m`5(6P)mYmKN@+"XUcXl6Z!R
*AdRCJ'RkYmE9`DZf)5QrkCU0"KZBYS6dV(%l0b3&6'8"2YK)i5r%+M)`#)5pZK+
HQ)46m[i,Y&`!4QcYX%5[kfc2IK"GY2f`6%#!Z-*dZ5E6YM'#C"Jbl+%p0VTKKR$
,KbILh%H2ldDLRIm$L1&i+'1D)BP#Aip8rh[I9rq05RFMf,P*YLZeYS1hZDV-RSR
eYqdQ+T!!rFbi0"[YfR'cUAf6'*A&PNUqjeSS*)5cKP5GFBQ$Lem4K9,T2`'9dfT
#+q'86&fLP-,`J3K(+Hi(,C@*R(maa1K#99,Uf&MeUrA*%8pADE*328BDZ%I9arQ
fr(+S+E`FXbE0J9i'#D503$%DUN3FZMEEJ3Uc`S,"3PUK'qV+ecpqDb)@pld!!!'
e384$8J-!!XJ093Z8SX6XB342CpAGe5'%+QYY#3bBY"a*C-$N"+Jb1CP)"J%Lhk'



N*4q6$L8h((P&ILE*QIaYB-%fhNkIDAH&K%Nb%pNN$FJRfl0MlLe$r14lMUkjBj1
#Qf1pV+J3!qd-q")[6T!!2&(NN!$XH$VqIIf-lF$JY8&`Z,`m2Kl(N!"fG26m(+L
c@!dY,VZ@Jq32[ecHi',DFQR`2$R2R"FmEhPV5TS[8GIj4FMFPUJN(S$krrcHmXj
TT(LK4Sf51[S8m0FeEMVMk6SYm6VJhLGTV1lRVZZ"EaEFUUI2-L@THq[lVS32kTf
Q[&34P4,qR6LH8leTcUSC90r2)#jHlq(PSQ5$"LU+0r@-Q$28$kPkq[BSR&*1dKE
`$GP@`m[M1pi1h+5UIP(#Y$f["YEirkXd45,c*elIF+LUHqKZJ#aQ&Jj&V0F0QfV
hJ%U,iK)b8Rj5bF3(R&Ge&@C#A#EdNS1e+6!l+jT"0GNjAjJ,"X-fS4558*PXpZT
"@GPQ4BRK,$U&MK11kK6e3me$R&PmRZBeK3+'[KCeKV"#+i`Erm##D%'$C3Y&%VF
INEJ[pV`2cNF!!!'e384$8J-!![3093[FXX#Y$`3R*l4pR,E+,9cS9G6V%TrE2UV
LrRe&k`k+#h8laU81%*IMeD[KZ&rGYQdIS"8K,pp,FV&4FGX(#qXa#P`NCE4GVrb
Ad[T#VfM,r3Re*3ecY$mEP0C#pVha3DjUN!"UKaJA-eeFRekm(d!DYF'LjIVki@'
lV9ff%4XfTid[`MqGTkrIr-H08Z2RQYdRFfCm%reVr)q5ZeS&TQ!EF&3"+6i#@"P
d!%iQbLiQ6TQbP$"D+p3#T3k[%+J&a`QB&HN9`e%"!i@TRSpq41E'-KF*+efY3YX
Idm(#Tb4#d[D[L[pkkf4+c-ND!HN5@EpmG)mZV-J)Iq[a,UXa*kPPGerLQap2iR2
K)Nh92bG[iR,lp(Y)jfcaeb8Hha*bcRH98B[[d(Y'VT5,%hmEqZYhrMc'4hLLD&Y
QKeplle"Flhfm[)H#CTR`3'M"adK5D0hlB4H60&a8F401Y5HehLpe#)T8"HB1aEI
S)*JDH%-bDfGNB0V9N!!SjLN38TkRF"(GN!!D('BaRVX@iB#Rb*UTJhNT&Z612U1

%V%JKlaXIpiKYGiKCQC!!pPcYm43#!!!"LN&%3e)$!!+d$98,R"6&p9%!hb4j54V
AQQc[Y9QY`(p1RFT8hqPl9Ri9f!Um#Q`&!,j@MEDeZEP[lT*ee`S-%pN4!cN3c9F
'jrI-mC-IZ6ph6qa+GR0XIaXS4q,T@IMkII8#j)ZL-j,2I"hr[[dG9f5[$5+hcl&
C-MEhRLRXdbr01c3U2@pDXFKTGZ(Fmkd+U6kTDI&,cPa2DK3HSITrrZMjP+3b2#K
9DT5&AV+qfqSU!kjPN8RAV,ZAk&6EX#`0HPbi&UGEc#@dD@[,*"r&Na5l5B6%*2m
Zh-m89c%6-8#Y$3"@1i0ALf%+#b3%GfQXKA05lq9S`EPBLAj8Eq4&D"r!(S2N50#
kmM&4LfJ6UL#,pS82Ei#*`@k&G+U'aeJmj2p$adlZ)&Le4LV)+(D3!!#09FG(9'3
)pJFp,$-Y'EP2#-b+Hr+4+K!XLeb+8j!!Q(9`F8!kMGP!SAJ2#fMEM0Id#YU*1Sl
5`QdHYK!+Q1GUP3%(P8GKhIi2'&60&Kak'&+irSc%krLeDhBd!J!!"$0"4%05!`!
'G`e9$8-L%K(QAQi3C#dC4'Vb4#3,%&QVTLBRYcf,M1"fjmK*Yc06mTPrGlr[fiS
m'pr-Yl9!NYA1l-RN5GLq1j-4NZ9@j)QXb1mIN6q6RmQmfGCf%8N@%l)h,FNL+%$
L"rp1@BD49%3iU!XlH1)RGL%XdS$Y8-@K&RB5AKr2MQN-Tdqr@5Tb%b2*lEeNEa2
deYr0KTa,b#P((lQrdKDbpHCeqFBN#8XTDGMHT"F9Nj*A@5m3r1$*iF)A(Ra+`bC
Sd@*%bYh0[UE$mLb8Z8NZL1FKb4cpaH#,'S2Z2"A0G593mh5B(ilNbH!U(HDq*03
V2L&LN!#Glm-GLj)350pE&JffVadV0j9c-)PcYTmmT-U'cCf2[lLr"Zb,Dr,j*UQ
J&eL!@HMeXIT'U5KXK+Zi)G(%4'NH4P'P*SBS*l2%Ke)*Td69NE&*%bSLi2'$"P$
iBJ#e%QfCd)!P0"&UFSY0QF0BUD3IT`bXGDL,fZ$B!U8fSh08@--BYZrp*)$#,J2
%1@+BZ'k&r-qa*h(XSZeGPi*0bi'TkX2@JbVR0)ahG0E&J(3EJ`[@YV@,-D*-cb(
Q-Y`6mPcZfjMcBMp"cGLljK3Rb&aVTMai@-PP[RfUT+62k1U0klXYd-Kcq8@f`RZ
!4-@X%K,E)89)*H!)2HGQk+!L4L(61rDKE[-93T%lT4&h#Yj6*Gq@)$NpfZfT-bI
Q[*a$ZHi9U@$-fpTGbR)EqIHh6JN-ELhIr*F2iT-R9S%)rHb*!9X*2'JQcVG5aT+
bk)"66"T!8Hh@RKiMNZDb1RCPrpLBBZE'f'*+5Z1k(+rRjMiNk%bc`$2Y2dPbk)d
[lP"05[[rh(fm5+9i5KpCGN!BDPI(P8iGH))aB&$'@AMak[HhZkICP"IAk`20U"3
0ED$cl3ANPB5bhE"dKJq'UT!!'MJ$K%Ef[#TaY#Qi5[JiZdp@*Ek(V6S2"5LGMGP
9XcSTH`kX!)Q$@e`Lj!Hc!YeF"G@qBdCpV(kpX(EYJl32qi0AAhd*'kUV,i&`%M,
25lL3!)9HJTA-Hq-JNiRVb1C`%N0V@&,9LJXedG30VZTedYBKmQ8[pD@$C2LX$T!

!US[$LD0[BBPS9ake"Bi4i"NpQ[B5,S$!l!aZkDY"[CV-MSM(ZdcHrYqi$lHRmXQ
0Uj1Q&hdZmV+6dc$Q@CReZ"0&fVV&S"Ua`C3d8JpM+h9[1peJ#QP[H2ESABrbfDQ
9EXl,)rR"Y(aV,(DK,&e(qXHCLJYTG`ceq9R+jqIUrhj)D3VcIeGqcX4Q-IlfpqA
BR&9R,NpTEKEkTP6FE&CkmZ##0U6Epj,8cI&CH25LN[RmcjI[Q)F-e2@eAFBV*qp
h(["`34I,9E@$fDIYZ+ZVJh8&%Tl"cXY,fjl%2ZKNB,XDjI@RH3*a"UE`8,`*ALR
F`jGi-!Gh[Rked&R$@pIN$J#3!``,9@j6G(9QCL"KFcS!N!-)"b"QEfaNCA)!N!-
m!!8%)'pQ)!FJDA4PEA-Z"&0dEh!E5A4PEA-JFQ9YB@PZD@jR)(4[)&9Z8h4eCQB
k#e9Z8h4eCQCTEQFk!*!$,8&%3e)$!!!`$8X$@f`,YfS!N!@S!9[Y[`B'!r!4fr*
r#&K#bBm'eKXaPa-!N!-'!*!&$3#3!cm'!B!!N!-&0Li`,M%b0Li`,M%X)%0[F(P
bD@GSG##T)$%j16!Y-M!`-5""E'&NC'PZ)&0jFh4PEA-X)%PZBbi!N!-L"J'!!*!
$"6BZ-#ia&90dG@CQ5A3J4'9XGAKPUL!f,M!Z-3#3!``!+!!S!(m"F!5[998!N!-
J(kNJ-6Nj-#dj1#""E'&NC'PZ)&0jFh4PEA-X)%PZBbi!N!-d399c-J#3!`&*3di
M!!-!N!1!!!%!J3!#!))!!`#$4P*&4J!$!*!$J!!"!)%!!J##!!-!J`#3!aaKGA0
d!*!$!8P$6L-!N!@%4P*&4J#3"B3!N!-A!*!&%!&+!!!"!!"N!!!"%J#3#*e"4%0
5!`!!U!eE#PT!!RIi(&CeCqR%2P6X%(Y60h9ff+'2YaYlZYfEEiHc(faB9@*9*9K
9BMf'(9B&#DJTT[J,i1(,8`"QDIbQDRi#lM$$cBqlU)D,4ASBB5rYZ5acTL`96)r
2pNKjl1M&V$6BJ'b3!'ZD%ZB8DBKG0`9Epd3(4ED8d&f,-,R*JQ8b36(T0HQlAa)
VPkLN[F!r*`mLD`#3!jp"4%05!`!!UJe6#T`#!Zr@j3bJ[U#@m9XCReQCTDd@cmS
kYcGhYGkYfl2&Ej`"J!%!D!"JC(0C'3!$#DJTT[J,&1R$QbkNIKkRaq`VEU4dMCZ
YeC+69%EUD1rE8eAPM-)NM2YcI8"Z'lbB&D-,`U9`KYT)$S[40NdGA$B!#a9f-0*
INe$h8`6(+)1+dE24hj!!*RCpBZREE[)VqZ-BbIX1!*!$6!!#!*!&#!!d!"S"'iJ
E8'aPBA0P)'PZFf9bG#"NDA0V)&i`)(GTG'Jk!*!'#`!,!#X!+k!#"%X!N!8G!$3
!,3%BL!*H-3#3!cS!!3#3"6B!K`"+!-%%!Np,!*!&!J"&!#m"2iJCAM!JBA"`C@&
bFb"dEb"LC5"NB@eKCf9N,NX!N!-B!$`!3!#d!CJ!!3%!N!F""`!!+!S!N!-B!$`
!3!#d!CJ!!3%!N!F"#!!!+!S!N!-9!&3!C!#,!BB!!3%!N!F%5`#3"!G"8&"-!*!
'"e0PCc)!!3#3"!G6C@Fc!!*r!*!$"e0PCdi!!rm!N!-(39"36!#3"3%!N!1!!"r
r3!!J!L!!)J53!!!Q#FJ!)K2N!#)J!J!L3!%!))IJJ#%2m%!L($!J*"Rr%#JDLJJ
b-SSN*M,b-Nid"MNQCI3b%Q88*!KRr!J%F-!3!MrJ)!%"J%!!KX#!!%!"!!!J!J!
!%q3!!!R)!!!%N!!!!!)J!!!"3!#3!i!!N!H!!"rr`!!rrq!!2rr`!$rrq!!rrr`
!2rrq!$rrr`!rrrq!2rrr`$rrrq!rrrr`2rrrq$rrrr`rrrrqIrq3!crrrriIrrr
m$rrrq!Irrr!$rrrJ!Irr`!$rri!!Irm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!
!N!1!!*!(!3!(rri!#!#$!!Q"!S!+3J*!#)3#)!N)!K!,d!2i##!!#!K!!!J)J!!
)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F-#!J'ImJ)"U#)#!bJL!J-!BJ)$3'
)#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!'`#!J!!!J)!!!)$rrrq!IrrJ!2rrm
!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrr
i$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrr
i$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!!"!!IrrJ!)!)-!#i%#J!K#!N!*K!)
J#%J#%!Z3!!2i##!!#!K!!!J)J!!)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F
-#!J'ImJ)"U#)#!bJL!J-!BJ)$3')#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!'
`#!J!!!J)!!!)$rrrq!IrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rr
rq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rr
rq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!!
"!!IrrJ!)!)-!#i%#J!T#!N!+4!)J#NJ#%!T3!rJ))!!)#%!!#!L!!!J*!!!)#J!
!#!`!!!J)!!!)#!(i#!J$r!J)"``)#!Crb!J'S)J)$+#)#!`"L!J0!BJ)'Ad)#"P
(#!JCr`J)($!)#!ri#!J!B!J)!E!)#!!!#!J!!!J2rrri"rrq!!rrr`!2rrq!$rr
r`!rrrq!2rrr`$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rr
rq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rr
rq!rrrrJ2rrri$rrrq!rrrrJ!!!%!N!1!!!!"3!!!!L!!!!53!!!!#FJ!!"2N!!!
J!J!!3!%!!)IJJ!%2m%!#($!J""Rr%!JDLJJ5-SSN*M,b-Nid"MNQCI3b%Q88*!K
Rr!J%F-!3!MrJ)!%"J%!!KX#!!%!"!!!J!J!!%q3!!!R)!!!%N!!!!!)J!!!"3!#
3!i!!N!H!!!!"`!!!!q!!!!I`!!!2q!!!(r`!!$rq!!"rr`!!rrq!!Irr`!2rrq!
(rrr`$rrrq"rrrr`rrrrqIrq3!crrrriIrrrm$rrrq!Irrr!$rrrJ!Irr`!$rri!
!Irm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!N!1!!*!)Gd&%3e)$!!#!$9-,@b!
$!kCJ`kTUXc#`!5*LB$G,XGYCPD!JBX-HkYR!Q&8a#f-UZ[HR8k`+#iPMb,ELGpB
!8LMpiEh!JNUia8#RBdJbMUrCpbBL$VrTa[llf*mk9dmSTT%&(C'kJKQiSm8DVUK
U*k42-JV[4Fi&!*!$9d&%3e)$!!%"$9-#h0B'NrI54Xe&%fd!Y2Nh,VcE64YQ`Qb
qU`[IK0f`fq6GGYA9G@%!#6LPL2pd"ISD0+Bf([[%R@[C6S+*X0-3qX#ck!"SN!$
&[[i%[JB!N!B")N&%3e)$!!1+$9-+Qb3!IiC&X0dj141`a3jG5dj2(GX"&32EXIV
B$&EecMiSU&KpE-&ZV1V'`$pMIe6d[rp[Mr0f9KR'kJ!,Q680A&D0p-'14[HZ8aV
X",2c+"6FaH)b3VE8Z5$*F`Z3!0p[JRD#kG&%G-mTHE-6hEc*lLZ&K$2-5eVUQP+
+(3Xq(j[6I`6`H[ijkXV6kQVrRepZakZIr82rqj'@*3+i-fUMJQe@`8JQ[%@VE)a
9Y9jE2Q+EYiAYB49ph"I'dPT-T*5d!R%I6(k-`pHZ'qD(TKRU8p[f6Gd2ZK"S@S!
R"-J!R!"-[ISY!2lU#3-4I`$`SR,K!K!FJS!"JQ*J,6L,N8'-h`a#j")kiZTMNXb
p+(%I60pdq8A%+fc,'!#3!c!!N!F%!!$rN!B!!3#3"`)!N!F$!*!("2q3"J#3!`B
!N!82!!!%!*!4J3#3(S%!r`#3()%!9#[r!*!DJ3"8re3Vr`#3')%!92q3!e3Vr`#
3&S%!92q3"93Vr`#3&)%!pID3!e6fN!3Vr`#3%S%!pID3"2MfN!8Vr`#3%)%!pIE
fJC!'9[IfpL[r!*!1J3$ep[Eprj!'r&EfN!-Vr`#3$)%!pIEf9[prpj!%JIrhpT!
%+rm!N!U"!2AfN!2mrIG@Ij!&Uj!$IrEf+rm!N!L"!&6fN!6rIrCr+Rm!N!089(p
@+rC8+rm!N!D"!&6rpT!$9[riphmUI`#3!e48UrFVp[p8+rm!N!5"!&6rrrD3!rc
ppeC8+P53"AqVprEfrrp8+rm!!)%!92q3!e6ip[prpRmUN!989(prprK8rj!$92M
r!!$r+e6rrrEf9[rhphmUJC!%V&5V9[D3!rrr92Mr!*!%rbY8rrEfr2hf9UXUJID
3!i&rrrIfN!2r92Mr!*!'rbY8p[EprIG@Uk[rN!CrprD3!e6ir`#3#2mVp[C@rRr
hN!6rJIH3"2D3!rIir`#3#[mVp[C@rIq3"S(fN!Ahq2m!N!cr+rD3"[q"pj!$pT!
$prMr!*!1rb[fN!2rrrMrrrMfN!2hq2m!N"$r+rD3!rIhq2H3!rEhq2m!N",r+rD
3"&6fN!2hq2m!N"6r+e6rN!98q2m!N"Er+e6rN!08q2m!N"Mr+e6r92Mr!*!DrbY
8q2m!N"crq2m!N"lr!*!a6SK"4%05!`#N!""9$99(!J!LC1jArpklmlMNXX[-ZFF
-Am6X%Y5$c(A*3%qJih,d1S84PXd$p3l+crG@KBb([qEiI#1RQJ*LfjCT'E1fe0#
-D9Q@lDqaPQRCfCl@f+CKQVCaf+CK@(*CPL%6mEkrhrZqGkmLRemlqrrc!"YPT56
+J5!2!L$)$!"GY6rlj-T,-Y)C#,jI`N(IJQ1LlClGKSSAJ%Vmr[P[BJ&$r5[r*l0
Jm'CKk[jZSZ#,ImNXS+k%(15Z2b1NYPJkmS!8Y4i4L"bL+IT5Gi(a[4f(jVDhI4r
)6NpEjYaf&$!`AKrDHZDqk355kS2p)hiRd,d[l(rP"klLTi'bR2ZQ4A[hFfG,aEB

2pZq`cKe!mEqjf)rLCLkfdH2"JX#4cqkMai-&`6iZEJC5Z2fcqcVq!b"i1Ef+MJ+
"f1ESf6,6&E#j%"ASmXM&Pf`IG2`(m%Me3$)IUpJX#,q$k[Z9UIi%-BSY#R(GQTq
frTA3m!RJ%qa,%0)IIMAqY2@F-`KNPGY9&ZJ@2aRlaA#hScXV2hB$ArHkbVK`)0*
VVIp$IDb1Pj+V'*0E)pe$6mI8#3BA%(ELX62'X4mT!hcQ$)DKJ$UD8YIVI&ri1RB
")4N6a@*8l"DfY&I(FSe'r[aLl"G8-91ZIU&F2)PP"6lEXPqPUmLVI*dYAdGH9DF
U$eS1Y)M(+[iPXLqm6`3cKG%MhCifa5L$Jb0&9kED%N4ic9qdAX(QVf$c9d4`i*I
*)YECr2m-'Qmp2%XcD&DhYIi1GmbdjMK0j8HpVV$cPlqccZMP4f9bpljIrZl9'5H
P"$JZ)f,XcLD6'(l0m9T'Nh3SE@UJPC!!TRf(4KiB+5C9L0%pdM1hA9NNSk!@5Ch
54iK5GI+q2e%H4'LkHEP[T0LmQ*5lr'q"-0N$T!i8a`E1S,+41AI!J5hD[5Mf3mP
Bh2Q$Y5*l#LKJr)0DVN$k6XI"lQH%-(aFRbX-fm[pfcS1JQ3DKRdaHmVkqpVD29m
*$b+%4qUCfq8UPRS2!!RHF5RlT@Kqm@fbGk*,mP$fF8cVKI)$*!p0MGhPQ&`rhq@
9HUY6T*p92bUP5P(*Ald(D(qrNbBY-Gl5CVecYX"QFQUPe,E[rq0Xi3AD1G$QMiA
I20%""[qa3J5LhljlNA',!ek*P#6[ISl$*[8XGIjJh6V(T0EM#P3BH4[N("G#P91
-$IM$6p*!pM0K)2#&,c2Zr#,Pm-"Ufr#Q[45,N!$$B'EV&,amY#4M&GZ%H0l-',B
f!)IT8"i'@r3-pU@fraB"`F'"a1Hmj(f4+'hXNEG43UQHQa)+AKU*(a[E%CQlld#
,d6J#"B3%"86(TBY6ICPcpdR&pZXSZDfrGiVN3-HZ0K%VlY3%SEI$(3IlK0@fq1e
qcGVp6IdGh9DEc9ErGYe*p@'H,S2Q,TV0CVAC4bG3eE2fZRcZYlX`L$0)"5QJ6ZV
LKeCE[aEhf"dRlh3hR8[hAMSA#Gcp,pLk-SN)h,bFd(!M39)VDNiNGBXaabd'YrP
&G8per1$0Fkf$Xm@2SEV)U-`C34)CMD5QU'LZF&Cm#PA(rkf-RK,9%j&c3!fl-lG
+,CDiK(LSCh,IE@JVRa"f!`9(31qkA6j,B+RElUI)@V%S&ZjB!X6l%N'&1m`UK0N
M`4fCFaFfQ[#UDGcGdC!!I`NS[E$Y!h3VKf0BGh(+SJd#r+kqp(5'mEZ0$ld2%,b
aAfUa*dQ5I+bMeqkh"1U"eT19HNrh0[D&-pH*a[k,pIX%PQY2#G9a*h8RR2F'11q
&aYP!qVGFXeML3N2*+J1`!A8U$HS+R0+HlQl`i0#-P,J9(VTGDNP+6V(RQD59Q#4
e0$`6Hrr%Fk,4`+qbpdmBMBh0YXa'crXR4,Ka[+2K@5F)%E8Q"J3+-AaUVBN)%$+
rZJ'I'4e,IRQ$XjA)#PAi'"i&e[iJ#1ANqSmapA1S1QALEKdKe3`!'94E#NL0DXe
mbe6aR4&@piRLLVmNYC`S"VYEUpp[Fp-$"*erUA62!5MNP"(UNa!mq$a#h[%52#I
!Ya`(8&8ZclalV6pblK"HDrfPecT2q-R0mY@p&T[@FUre'qA"k6C4qfhk+rcf,2H
-idjFpSRD9qQ[m08lh$-!aXdklG3Qa0NG`'6p-`$)(1XhNUqfR2i+bqY1ch"2fb&
meVF[[c1JeAk(rJUrFpIa'DmYF0re6KH#[lTpAb#SqQ+[#$L,V29eTl(d)IM3SF&
*[3M3S(2U2T!!`ep4h3HP&a`k4r@Mr4(R[GEkHF6UMaDi@iUXhdcfc&eSA6bYCfi
0MMafqE4*Urf5rJUrR(jmaV'iiZR(ja'M2cT,62hc`YHXrcb[Cfkep8ISmM'k[&D
5cBPMY1@kde*N*YM%5fEd(Elb-@Z(XMZPb!'6D+kSlNPP&APZYB086U3HZr8p!%m
pM3qj6+B)UBC&-4"%2@r2DGdYLJrX&P!"!dd,*53PB0AYrDNa8hqc-M&)%k9ZD0H
+-AbHU4ArAcq4B8#k236q3ZPA6!`0GNDb5j++)T`9AR@N'F$V$-Q"!+dB6TbjidL
3!,V!X9l5Ck8L-9"aHU+9$R%'qeY,RIb4E[)lUjKm9$IjYG8R'lG3G+p-dNAk,Db
Zc6$Q9hb(AL-YaPaMEQ8&(,@J#&Eq9,d8"Q'SE%*"%eVP6qA"529)50NqL[a!b++
bdfca`9%c@2a`e#4iK6*5MlM'rff1#0J04*i$AN)P'dp&Tf*A,8&f!)X`fG%r)!+
"Fk58Y$c!ehKSlaTCIm#V-*P,M&CmKj*GLSC0`$Brk%)9@"LFap4"FlXXfX@T'+Y
(`aicFE`M36"ACPdXHF1Np#`k1Z&m2k!#DeG&'(rYp)%`Ld(UhK&YR,B$J($MK"5
-ZU9HA-cMLl-a8fZl'!,KaP%BS`S6#&JQC6Bj8'%`LH`$j!c9)m%0L)DrXVG*ATI
R#MBb$(,%bUbCMI2`QBC*%"XKF,PaCRqVUGA-*TLJ4+&*0"P"J#qN+$@3!+J11c'
Nj!5VBcHm2R`ZFja"VI8MB3bl,IVUm$Nk2QX1SUSre(P8)Z8`d1E&k&b'$N@S!MB
mmrQ%S-KTRc$d0-b2-b#4$#-p$BZTHUMj*J3)1ETR#S3Y)VA)Q0hC'PVHQc[4kJa
#mD063EHbJK[#3-@hD#HdprFh01hBel$irHk'UX'E'kI[X$Cm0RKc`h,,Fc8a12G
#,$!IHf%!ai)T8Sd[GI4HR(+G8*GL%`JaR4F0ce4$jH+P#aar&c-6ZXL!-`rL2f0
ep")"A#FMqfm"&'imN@IDab@k6FjVKF)Ll8!4GEe&42CR6k'6eEN1)%#qMRbm-5*
ISP$B0$#E0SA0r5ABl'R)9ikBTKaT[QTHl'bG&#Uca+V6QeH02bVQ+85d0DJ%UaP
EeY#`f0km*,2K4AZBJN!LD-2bkPY([-ak*5@9bd-(iB"#Ck[qJAffrS!4LJ$qKa#
"S2#YJLJ2ST2SNKb@KfTL1UGN[6S4NFe!dk6EUappD&K)F2$JaFTZHLK9p0ek!Tk
[4ahJS41@D`Hca#3'DU1"qPFELKhC-AJ@6f8V(02eVXP5"Ml'!fH)qmd$%k2+X*J
m!2'2&r6$8m6ZNp9"m)a)*JVN04#mj9"harB4*E)D6e(36pH(il1kc0FaA!H9kdR
cY32AA[8k+64%&kk,P1[3%'Y`l91Z3d13!)V`@-KV%!"jkLBc5*@,iNXI%%L9#h#
D"#@NQYL%10!YaKJF53CSI(ARM438kcfYj1JZh!RPVU%jiUjT2b&XMFB`2Xe!SBd
2&Zkm%80,PP'J)2S!!JU,N`CeqCc"Q!Ld51dlDdR8`b$X8-IMDJ"GFY'&Z`2pj,4
P'%Hjih1kMPkJ2b5M'd"U(ilk(*q&k&$$JHfAf'MrpDNl#a`C1`XJL(N(69''ABM
K2J1kUaj$IQPjT#D')pl!a6%+SY611j1YL4SU0+CXG#JR35l9BB&XPeBjG(eU6Li
9+hlUb-M**F80N!#&@4$ADV&el1ZXI!!6FUiRmDJc3&pV16QC3ZZkSMb'fZF-"-&
5-I!*&Y8$NBdR8%h$UbrD%c%H#eG4j""qZqI3(!MYl#E3khIPFF@c[TcPKLTkFm`
cL!H%q%EP5(jB2XYY'X6'mN'8cFB#)"NqT#2h4rEZap!&"$*8)S#9LPh*rC'"Hb%
QCM`&3CC*$"mE)Q#`k@(KYBGCU-YiYU[,(r1R[4VTAVS[BBB$Nehp0"`aGQ#G-Y$
BJA8J5E[aQ%)b!a&L5D24l@U'q&Y[9KJ(PlG&Ylq@!SFVVG&B!#4U2Lih!hQAhi6
J+N%BEq20$f#B%a8[B!)TKFmdCH6N*)JF8Sk9K`l)"5L3!*0EXB#&(c&dpACRqmk
#2!"2%%i-JVX$5M!&-2UZL9CGa282h[c-N4h@4Y[JcIPe+1a(B4%+$M``SG#"JJ'
&#!SH&+kLi%6K!JU6+0b'JS6#dBjRM-B#CmI9,EF3B'eVh$ArM$JK%M991"$)&Le
6L&F*9$rJVAcXP-DLIJ8N'XJ2Bb`8@(!J@&R@PcT5M)NjeSaF*cjG&CAK4J,CM!A
fIN5HGi`jQAi8AMIQ*"M#'8AlF9''!VTNq&JFd![Jb4(T$KfaY$HK1V*2C@9C,iK
maSDJ(U6TqHU'NCk[CPJ6Rc03j#@J!-LdAT!!D8%SF-UHFV%Ap(eMDfM-SNNc898
4YV@SV)Kpk*!!M@#mNKlB+N8+9@9'HKUc4RUD((K3V34ZrM1D*@9(Ef0@U42#GZ&
ESe`em9!QlAN!*hYBf!YLLUieYNHS+bC-GiLIUC@qAef8@G[Y+!)bm-Xp8p3C%EX
A9D'bMLA296PE,5RR'piUfi',aL-p[9Xq#ddLS!jSZ58lTqXhDaG&bh8$C@cj$)&
J(!BE,c%YihdmD,6JPGaS$m-r0bDlbP#jqc`QLL)@iilHYmS54EqAKJSI!IKj`Gi
'p[14T#$B-i+#9L`ZG#b*C*r4L!M`S%[2U!q3!#"id",Z!3!h26S9I`'1D%rMp*q
j#5LKURahB@jApfq%C[&@Ym1$HR1lb)R,l4UmqDeQDp6f5#XMN!$mIJJM$TNIH8+
2eK9#a-el"B15*al1MNJ(@J)D93KS-P8#lRi,KlERGYh5ZY#Y(Yrd6R3U`I[dIFa
iP`SDh,dS1X9#a"hllb1d,$X$ILNbDJMiK0[KFl@pMmMb9Hd14*D[EL,f`ET"(C!
!!J9XHJ')A0@aj1`GkZ-Y9Gfrm4D(TN!S%`P2STPEUU`C"I0(@JlJRrT#Ye2@M&e
,+3#PKlKSG""iZ0[9VPamp$iQJ)'-AF[!31'ZT8"qq"3QfRHp38HN6FA'P1Na"R"
rK5X4K0$q[hB`N!"%&3Shb&QXERTD,9@XRc0dJf%--rQFJBC4(fjr9HRLT5lVTU[
AMbj6VS[iqQAefR3-C,RT+j!!%ij'4Lk521SB4-)5d!Qbe6C8f6)EQV$"qAJFYQB
f,1pB)Pfd'*X3S3RGQ*90T0qED"NQmHfq9&Tf(-cF6mYq5JL$&$%CTMIQKSH2G@E
dHR-K-)L+ar#d+)Pe2r3NN3f&Se'1l[dQF4A*iGC(8JHmAN)@JZ+DZXDF&qYS+(G
RKK#jiHP3J1cm$0I,lU(L"AM8AS0!0D8A#,jaC3#rY6jYLJ50qh*!dR%icUq5Kqi
9pQ,em,iEdUEdKf8XGjacLB"K'Cc2q,15pa)+RHedi)K3LHDcbC'285Ei9,a1b#3
[K[[[0$Aj8!83fUH1[IBBN481h%e`k'UTkX#16E'p,Fq$*IpcQDleRP[lL"h(@TT
%Ni'@Z3N*Gc+[%k!G)@,C2L"(C,Z2`)3Y#h&PL%j"P0U,$lDq&SLE4lel#h1cpmi
4*,J%-5I0jpMVmYPkjZq*06-V!-!kSX6mr$e4%'3AN!!#TU8JAAXZUPHlFQ95J`J
C"98i`Kmk!J1J8[4X(C,2@c)KF0bBI8Lr@BABD43XaeC'(P0HmQa*cNXHPemPFqc
)52[1TT(fR*G,15++6Z0%%Q+["%P!bYdL1X@9c@BjqI[9##"bEKKThe+$cd*-KCG
m&*dlPV3Z#6R*3"V'19XlPR`a(aX[AkRMdmX('"`qZiTXI+GMb6m!HFY9E&debF2
!Z%AV(p"mpHGFr[#!-!CIXcXXIL`0RS&!CYJ,)'JHANAf,MaH&mKblEBicC12fGG
B[$4jI%$lUh!3Nm[`+V,6ih8D((e(crb)`X6aML@&,ej8+p'riJ52U!,A!,bjfLm
"lHF052!deDqc)McF8FHA3IRbiY4CYbVH6!T,9CP&aHS'9QH939!a$03N0Y9@(ZZ
(FQV#f6,REJJXKZGrl[)j2RFealCf&`MT(qZJSU0TEPDq'dMa(RfTS`l6)l(#8qP
a53KiBjRAiSqJN!#5p(M5+46+#4@-`Q@lj5"8l',KIk9)9*Mpm0%8&,5KDmPC$k0
JbmbN#9T+h,9-+T4RS83&SIc$YNqf*3BD,Gl`BA%3'DQD`iF$T`$HHL1p-CpK-[b
pLk55MN%01DPG32%U1E6D#"i,Sb-m+EcDL'[5Mm,k0PHA0,8&cXVr21,mCEXeh0[
UFBf(H`piA!Dm*PePZ*U%i)')PH(BBNXJ"J30%4e$LA$L!@2JSia4YD,6ak6m1[M
"IPB'LaI,l6jd%6%I#q'4Z[N6`f4J$FJkhQCYpVK%cUcj`Vler,p)IMbF(lahI8$
cVI-@qCq$i+eM-R$qiI(Q5@dAXN8p&JEkbHj(CUqE!0DX`r4Mf%C!'mNFTkf&A`R
M4&FBVf#QGlKAC6!RTQH-+Q$5T1CrX4`CKPj#G"U[I%PUaE4jUeE'3KN@KTS0C$"
iV,f'rqFB3GDc-Vam,Zr(,6&$G8XXV#irDi'UYU8Bl,3L@XL4%"A#6k5TQBJ`b!!
#-3"46"%Q'a(QlVGMJHMEkS5e0%'D549J$b*AH1hGSXpf41`'@0MZd1cHkN!X8"e
%pfCkh&B*FCVEfZL)iSilc8H%FF5$Q&6'dE05M0+NLbq9Q1,46@PIE8UCm2$%hFa
5Hr8q0BUh843RBRLK'26$b5K%T%GQ!4#`Y4e9&'4Z%JC$c'ZB,65SN`TX"Q9kY1+
()*qhVIa!Vr#c!JNH8!'FYT2S388eEFRfS06UDL1PPG-$F@QrDhaqle%SrSF(A6k
$jmlkf&D$)G*Eh5jl0M$mk8J3BM3'iifSGRjD-cBK8,N13eKm"QFqJ',"536MbSS
Z-Bk0"+r2%12'"HMFE(`4Vc,MKkLq,E`IhBfrCG9r0BBmCKQLUM%0KN(Iim%mjX%
-'cGB6I'UKS*c+UiRdD`&K1K$jIP&hK`2ad2!apT0,-UQ$JNrB2Idd%%3,K9q#'Z

K%cpk!#,XAK`b"%53!%FjTPR(m"JcE1!M`XB2HE-qHE-Jh)[-iVLC468ce,(VUG-
#l[3L(aPLlMQ+Q-VdiP91(pbSkEE9TRpk28fC3FPZ#G6%c&j+bEV#U#G89RIDSEj
MP1KTbl6iT13i3@*+"6@8!3@)e@)JZjS4J)fI3X!Db+%-JVE,YZIKd-&4GM4m0BH
Vk$eIc5(&!)#('3""iB8YSR,!e'S[lQmXQ0hA@,$TP#D&+G1IJl)%PQ0L$A8!1MA
IJB$De8')G"@0M8G3lfNR'-JfZ-,pL+*pMFEm8eV-2!d9M6A@+%r-9LC1ddhX,fA
LEQ9LF@JL0Y51$B9YPm'@arBmZMDM@0Er4[EHY1bq0k,GDGQR0%-`P$8'H@G!0!V
U,#*mNUS(pR$i1"FS@p1Dm%RU5TFT#8RAq,,BFG,ZFaa(YL40(Z6+&)#p1I$DKl,
6!@SJ)a0!0C!!-QC65BN-Y&5"E4%q%5"#5UefMrU)+PCi%""&kS1B3Af!M*'M8LX
0`Z$kY1c(@Ac&M"$NK&UM*"3*GaHV!mMGJcG+V43G)-353L''XKm0cc0%pL,MSCC
&+XL@8m+a0k%V8I30lpeL$8#4"1"59(&#XXT"UK)q&-C3J2S6QA--dpe!kHc0r)6
!N!"4(9)hl#(826PXLF)ceZ9el%Zi'Zi5lC+`1qC"3HCNT@$%hHa1e1lER+E&qTc
lq[chIQddPSZKQFK,@#5ZTBIa1R28jjf*M&!LmRTN(jcB"kGjV@r2GbI8J3(IX#f
MLSlf11@Mb9NRCe!9IBS-[[JJUfb(R0V`)05hKZrjqD*B[E"[#b@HSHHVhmMS5aV
#4N#a@LK5#MiZ(&'2X!KNmLj@(T8TMcU8LbLTd3LY"&A6%4&"K&bJUZj%'&A)b`#
LqLe&dXm4813kcj-cU3"4m-,PKlSM`pQ$N@`KKMcGFHRANY1Pq)3-qf(A`EKVbC!
!1*5Z*FdMFF1FNA8fPqV9a5QUN!$ImNNXB,[2ZFjDM`($lA#q+,KjK`HFLUSC"XQ
*`r&1LlIdibpMqVkpq`IhG'E[2p5jYf2`qmL91Mjf+#-j25iM29Q+aUAEdq25-q,
6NhM!%FU8i(F!*Vm+Y!SbdS8G@D,$4DV(MSS&0LaXH'K+9CPj[EYcDRM[SIe6dEd
G,$+jfIVl)%G&Lc!KHrP)5l`PJl,!EZjBmYd,MP6l'!MC%JA+N9#&JaE,@MJq[h8
XYr[E@pc#VF9-Q%"++6pAQJ9&rRCNeF03BaCrj3"PG0dYD2#Hqi5Km`H'HKfCZa8
b%b2jB%4`S[RC'fRU8#U"3d-jhV%(fRdB,)bJTGj-i'kC`+41eRK$a$M'Z5be[VZ
Q[Gcd@j[Vl,+!4-1d#c[3%P,fL&p0[*`#X&`QE`61YVZpeI'1UhKN$)"CUijjYm`
mMP4ieahTGb`R`BL4-D#TRHfYX@)X`S5HDQp&GP--TE*0`a$ET`mTA-[4)Sb-jU0
J$-84JjQNkiN32DQSH$DV89TKFLPGbJbG2p5p@Ta4e'01L-15mUk-R*a6)P'F%Bl
l%ZbMpiCpiLG(r4$bkSiFLd@`V%[T"eJD),A)FreMEUKa`L3%PRdXZrZ--HD-["S
jP[ekGRH-TJ9jQZ"TCDU`f09M9fQLRbCHIIeUpp,l-NPBZ9NkjLc+@fPEifc4-A9

'325M+,+hDAq@m#rdh!XRaZYPY#%V6Apb92J6CE8TS2!bE93Ed#Der9UfGP5cD,G
SAfS,Y%TYUECBQkA9DS9DEU!ii!Rd"lS#YN!dF&XJ+h!Q8"li-2"aB(kJ2M!V8"X
S$13'Li1M`B(JC("r-$YS$bB(6`DA"fZ#6F'AJhA"'F(0hS$Ai'hcGRRhHl1pGQq
bpk6hNRHKGkjhLAH4pal[E1r@)Rr48*'TD+,)@R5e++8SVXKGp&(4Hd@04I9&XiU
Z+pVUmr['I5EIK'qIlkV[L1q-ld[I3Pq6lf9IR@q'Er-khlUaG@hVR1[1VZYFGf(
GNA@ReKeEGhPGpEVjkqVAIE,ZTR9ceQhe"raPrL&r[hqDrkcIiErU2cU@+ri@Rf2
Cjf*LR9eC[XE,0'Aj$LmGb[,E['a4PZGjfDiX2q5PT#cIif@cXRbAPejP@8e,heC
P@F2,fFVbBelHT5aIi1@Rb[+2HIQ@X[b!Pdh+XS+A0FUbNTI,P@89,dmVbkpjQDJ
X'hMjT,+FbmZ,bV+4Pah+mLYHpLV,9hJj69PqMjGpbR)q,mH9jBZmp#[,TE3X+P#
@rml,6FTb#5p[9*Er`FXkCIQr[(aC@El"baG4R)'2QiKkPDk)!$5TL5FX9jC-iU,
6bT+*@T5S,*Q-48rUKUVKSG+8#5V$FJ6i,5pEP)G-S+*fCFP*8#3T3adc$e@Q6'"
#&!PPb8RNhD*-rlDm"@qYFY4TRM",@Al1bmA+p(*m&[,dqFT`R"cHMhA$IF`6,ZZ
ZrTL[h%SAMNcH1'A*#H&0d4e`NUG(G&IRqDTAGr85Aa%"rTU)ai0)ZJPIm`5C!"`
0[6)"1,'$4)"2C1)&Ve1fqaN[le'@bhLj51RiDeiZ8CEXXB*cP59(hq"#(3X,L)A
JPbKqJmpPRR#,MLMP2#&,eq8dAee3KQ62%Za8PK`*JfGeNH8cRVjEQF!H1lK'BC`
*%M3Sbh1m$#M,2k*PB$1+2j)C#pbJ,*rRjA6G-Fr6-B&[G&I,q8V[!GlMUaVGeCr
ae5AGeHGmGB[ZkLri+NYKkprik0Z8#Aq#ckXmS91C`-32R&8BjB3*1*ATabR5mh3
L`$p3p*FMG5#X1r)rk%SVd&dYiD[C5MG+c10mGBrZLU1MYPMAl9fqNMd!XkjpV*[
!5DpGePfaPp(FZUXQ[XT3YRH5"iNTbeGj'9'@ahQj6eQqcXX*C9R15j1br!i[Kj6
P4l`-+mZAD#PbP1@A[0bQ,$RCQ69D,ZIP(3S*AL$L%l0#GJ!jbSJAPH8#ARkQ,(r
+bmq9j9r`%Z,UBV(L8*a!iCm8*mDL,#Li5P')53jpQ[+!(*j1C8&$p5S,1V*,k8!
4`D3mq$-X4T8&-@*3&K5-HXF@4mj&APH"NdcaV*h"QA-NJ"41e![!%3SD#Yd!U8'
pGK+AB!$QC3CJ(MJU[*eQXDp4e(QcJdH##ldfp5miR`Y$hRCd("!DGkhQVUh))$I
Gh(@T@#LX)LSq3HlG6b!qPLb1L#p&PIJBbk2LC5J-cU$iLFJ3Tm9&X8LmJF9PdF5
ARiM2ae[%Zd4B&'T31)R##l%cH(dF5mEVXeJ'AT@a)hK9a)lLpAAX)PjcBeIaHL8
@aH[&Q!1[IirY`qYrBfIaHL-fL9GpE"THEmGfir9bV"q[Iij*H#f+$H(eipJBAVQ
a-VcbBhkmIKJ$VYJ!BBmLUfl6+VKhi+J)Q-cJhQGD(F#kZGKb1C!!cjHdQm6RfSq
eHl60fJaYYPBB@#1U!ckY)!#2*5S$Dl4,!2c#J@E4&&L$T9[8Lf8JaA44*fUecm9
XN5qf!B6dDalN2j!!0"-Q1E9H!*0@,8f,DXZdDZf)&J03QFJ$[!9QJFE@&U"`R$`
R#LG4)#+50b%L(N1"b2JD#R%SR%EK546H3B()@)l#"45q6Ci6K9G4)$+qMS)0"@3
he1DKm"d8L)`IS6#!`NXSY+&`L6`R#ZG4D%EK-JV&+$b23J#&j8M-!K6q#)8Y+(b
)`K`8rS3m*`T3CSZl8%$f@c%,K38Sr"L&Rj,R41%p&*DJm'FSc%GK)3T9+2`@K4S
82L!&,`U0+"!"[P)Ld9Y+*2Se4k*riNMd+8HLrm14k"k140-j%[f1)p%0()Pqcj&
S0NHLhh!NQX14k1mj%QhL5(3c4k*#MN6r`*(S[cN5EH&)p$mFL6E,N5MSKD,Q&5$
RIBB@m9d9m4lBTSYBPeeP*!M*LiGFC6%LibFme&rc8$qAK`SX`9#APD%@+d0pTK[
UY+X03ePjm5![q[$TakFG(kK@A9,-L5'hmMDHj@dm`pXSi'hXiQhXj-0cq(#MqI#
c1,a#1Icr9`iI`+9EZI`2jA+FAa!EJ8SEcNh!1pi-GG8-+$1VBEB#V2l`G@Bj!,9
ZN!"BG6m2FD5"B6*%0R#&AK2$S9If(RTjKN-[+ef*5la`dNYm5Gh%M,[G2,RpEMF
rp+X[*XD2+3XB&B0VA#PFU-A9-HliXGT"(%2h4(Q"4jehZrr+lBVM!Il1GBS,(PF
l(Xh$T,0dmF$[-*NLH$e)9De%e$p@)QU9%P%EP)MDT%68q8T%rCi58CFU%IAI1+)
ZiiLkK#2Uhh*%r4&(e'miS[i,4p3kMUKhFN5Ga4(e(cQLhX%4p3mF8Ar&5A`A*r&
0R-4radPFbdNmJj2iEcL*Ve15q#+5k4rXdC+*&)EBmGb6VYeF11jD3i8AIZdUTN*
0YFXImf#3!'dml#pif"Yjf"mS`rSidi,3#9RRXV"E,QHU9"&6DeMF0Q`R9*KI8G`
i56"ElE,c0+%Mqa4d*!PIpM`*4F,Recm*TF*l%$kVN4`ekj!!E85)4FKNX'rHJ,"
"V6FJcTVFA'M[Gj-B(NbE[!G"25$-Gjk''0YRC'BL))a9,$)hRjCH`FU"dp8"$*F
BcV$Zb!RBieEG'FHdjhK*M'$R!Q4bK$"$p[(NjhjA`B*cjL&GASJ2pN0%iE5eRS)
5k`kApp3RXHD(-RBf#UHTFHI5rXDGmiP`&)$,L&,+41'4b*KJpDK*3'$K()3cqM,
D3,LlJ,iQ-AdLD!j3([GA)[04V%`+rR&ERa8UaH#l+%J1@I@V!!1U+(`P(K9$k-P
JHi3414$(%56b!50CI6T"dM+r"`RPD)5Uk@LE)P)kkKhcaVc0,e1@0kJpJfh2[Hb
fEa[c!GAkfVdRdi5PYIieqfBmG#)EU9F+r,$mQ&X+@(YY[5JF1[6IDH*lRkD-55r
RrA[Pdr403$eC3Y&%DNR3CG""NK46*Pib55GRKHN2LBJA!mQpeG8&K2E@LR0!K@r
&Ta#I,6#GeUHUl98abST44dq$"i0P0V9,4l4LC19Uq+S!U,5HV`SUIiiZ"Bk'TRB
A6kJ'8VfT(8*M!a!SQ)YX&$@fRUq-&T%fT4-+lX%8*ZVZEA3m)p+(C)050!bV#1p
B5qV#k56+B8D40H3,9A3YbdT-ZABlHTV@f[Y*EGqdGJmKjlH3!%SIBV3C+HNXJ*6
CY0EC)TUVNTbYCU(i$"VUf88XhZANJ3CS)&HIV@I9`a#$3%RIa1UNI&BYjFBN%PZ
M$"liN!!L*4m(c+DT%8aPJciIN!$)P"[#-FLf&TUi$41hN8L)@45MiGPmGB[fZFc
D@C@KLU1%j#4K%qUN&pk3!)F,GH@Nf3,aeCb+G*QXL"`bB6pP`YEe("&hB!0(a(3
-B",6mEN$RcTm2Jd41X'JGM6Q8dGMVUK6fD*V#,AHC+dr)14ZbSCQ6a"+(a1@(K%
hdZBT+`!B#PE%drA-ER'M1E28G5TM%*!!m0pC+4D$f'XVMh*dmr4N[M9K[1lkc,I
QX9QE199$C&bckPBSm$L51#V&SNbSr2XI&BXq41G-953B*T4q#,-`SUKMLH%QC((
ddfA&5cbSM`HkG5A(,bTaI!XIhl[4admSapqfLZ1h869$MT6`&&jm)&$94*'JVJq
(3$MT8r-%C!A$"pk@(K-,'j5!NkXR)(XSj6KG3RGq+a)@RPrJimf6QFL-hMB#FEl
Z2I9"cLE+5%-GSFMj@*eJQN&)k)iPMr@TT-[C8R'*A[5B(#*952,'(aYDJD"'aE4
%JYPb0L("pZGXS``qP'!jQkTZ*FqS$PYf!ZBPFck%U#q%N!$@3NK9SQ`1-JZN*$R
T0pC@r[YNUqXUXN4VVZLH+DK$VGCSjCH6V5cUa&-V[h5f0R8R62Y`Ama2Pm-QmA(
*aaNhU&hPDfaZ)MUP-,+IYLFrdN@1,43jj#`m1E-T!iFb,88Pd#-[%bSI3hJ9!K8
bJ3Vc%ZM[UK3#c5+&6f8b1E'955@)eCNc'm5+jQc#T%)QeQ`cXA$%!e'BXbLB,'+
5lCACS-h9JB!4%KE)Q5F@B,'J@pGY-N6Z"mTqS@Crc+m`kDl(BIkK`*J$`)!I9Vk
JG*fQ)dU+5K359Q2#&&EG5NBFb%LRR2e%)3m"2qJ%N9[*dJ[M`PJJ)aHbfUIl(Mb
"R$(N,#-$8[L1%-&)l,BNb@j+K%#Z5V$#P4!X`J5lbJ6E8S*JG)48#X'N&4+-Z[Q
9"Cb,p6HZ4M#k[U%8JP(AJ)jJ8JQ#E@'#&HS**MJU+D)jRfirJXUc0a6JIVA9B4)
CVL%'"@lP9bZp1TEdYlH+LY'B6ldN)(3P"%ScEJ1",R,'[khX@'kViU&SH$JLRST
%&BMJ#EF#G2U%(S&p3`9P+XLY6$)$E`$0e12$TmNB!Q8PYVVCLHR9!X`+3$RMILj
Z9lTaS#Xcjb!a(aD)E**LAJ6U%MYZqcNSh8VE3'!HS-$FhXq6$5b86pIVk$V@Ell
`mm@iQ9P6V$LdS'$Ac2LXN5!I8iBN3ZEjiT18!5aJ8FL&,-$UJqHf6[5m08$QADI
e[0@1V+[Z%3K*'fG3S-l+6B1D@1bmcf(R[9"fhXh1pCU%$"`1S8cM$-Vm![8LZZL
Fkl[JA0IU`3S&**QZ6UISJFmFA-mU1E8%%%-26E%,+K#QGY-"'[0N0NS``)I*(8S
GdSmU3Vk0$%*5B(T%#k"DZ16k%af5F5Zr0[0V#`MRV"SMmP@q5d`S"q8PKb%,K0A
fa5kS(N,cUPf8c+89-J01%&i"S@EP"D%8NY@4Br,Q%H(6a2YiB6SGA%2NB@mepRl
Q@`0[Y6Z$NGlhHqA(**bY-UJrP+pH@$(,32[XHmV-YHZBBkq)ejV+q""i(mid)"Y
qTSNMCCYL$,QKbCmq6P%586YFPD4HAh6[k'd+CI"-K!,DR&R8@%p!LY66&)B*)6q

%cZU9S4U0pHNLN!"$bafT6@%qaQ3qaS#(-dSp#),@J88P2B9[KTjiTAS3"RU*Q1m
IdF4E!d4DpL+cfBYX+X@,!)8KHbM&Z1CX(EKMNFd#PHU"2PfP"q)"FAh("RNJSHf
@$eb*9q%"5qmXYLRHVm3QXJ3jSZ48D'AkK)%Xm2`V8jA6+F05jCRhZj@SqRp9d%j
VVZZ0fcDVHeE[qi0iK16Q`CNjTkC%`MY@Li4%NVS5*&P-PfTd9,HP&I04@h(`irM
mA$l5@Kpa`d`"$(%)rma"VCPB[BfGp,@p@TNUIJmMb)U6),-6UYLBNbf-,(2EP)a
cZ@E2%e6BAV`DfhINC4&4#m#VaL,iVYkCh@JE`FU1caTfEQlJehAmQS(Z0eAp2h+
D&3HSaZa8qIMK@"iJ9`eib&b!6h@dp"QZ9H$(D`P9aPCGMEKMQ`S#H1IT6%[-9l2
!)X#pc9L,!2FSc**Q[T9L[!Z,)mBEUDV03Y*MlklCB@eU"hU)Phr-5kkiiK"m&Z(
c+6jeq0b"ch5)9ReX-q#9JSq%TJLZiq#kMFb(Lj-9Em$d$,T[Yb),j#(E%DhC9UQ
9-5V!38J%S#apK$5!8c"+8@p(+U%%J#+!UT''d)USmQXd9Tc!SkhFT5b%2)#6F"1
f8@c-$@I!&&1ZhD)++YfI3N%Y+L1)3$!l2Nk1!4PlYYE$Z&q"pHAPlZA(CjbmhQE
-1EYXI499MkN$TKUXEhHCi$#q[2`iQC'h[Jf(DcjPCB4Sh2&,*md'-aU0m`'Bj@C
2lCQ5Kd#(A1[EbCYQRCc[cKUA(rKJ"SqQ!R8eTJ)R9,Nq3)Bl(UPiQKfr&R+k9HF
X-+D!'E03#IJ[Dl59-l6"+BT5KUQ+E""K#dfaZC`Y3@r9%@FV-Y("QDGQ)pJ4$)b
dH$ZmRAKeHQ%`kfN2(-i"!ZpF0TLkQS[%l'FQ@JL9BDc$j`eUh!!Q4T4V0PIDdp6
2ear45dA)2!ecZaLL"N1d+C1I`q0[m&Q'cb,c%-pKL'r3UBf[2e,0(QNIlE"q9FM
4b#4UCjlijdR0bbrI6'3NercCA!Nb4k12+5TCM"$QLq&MMR*Y9JBr&j-M#$$U$YP
K*j3+$B4+**!!-+(!3Aa$J@1N9`%!"B&eAaR"f&)95!`F,4e)V%b5LTPS!eJ@)J0
Q+RXiX'iRF,D`iQF+q&a,`TK$)%h-)dpaU925j-fD`G`RMIA`DR"U`-!0$1E@Uf"
ZaDhQDY`0bP@E#U#DNEJ&DX6K4#-JYi"0DRc(E%DMa'-#1C3%BG-DL(MY5UH25ZP
8S"Ldf+)DY!Jj0@4ZJ$eMPKjmAjVj9TaV#-L'-6C"F*5m)bdVIi!!)qlLP(R,b3c
B*ki1f&-A"DMhU8!p$5!$mfBR5kN`%H-+Ue3phk3c$m*4dp1S9P`imkq20qGPj)M
FEDYLY!2Gf-10ACPLN@8Jj`"NP&8P3l5A-Q`A6*!!4rpE*hRNqN[RmKV"QAAZJ&E
j2"&cNUBY9UBG+c(Y'+DG9kVL+M[Eb$#*E*3R8E)0Ne1[CS!AmbIH%!bLJ,M&P8P
!VQqfU3a[VL3`BeYPd[88B196iaE8Y!@1h9chT"JM*`9QG)#5TqVKPDQU4aRTHKY
RLXqA)SLFE4cdS%,[DU%'4Z!P(UMDM@@lXRb-Pj)834-Jie)8#"U*(YPFp-!HX!d

[hCF9Q)6*UC(LUKdd[,f'M%5%M*RN,C!!S8h9$-)T#(FkQeQa-`Y+RP2ia'%C38&
+*594pGeSMJ@!c5)k%)eB2&f*M,J3"aID8KMN#Vab-`8,@T8Dh@5c,56+HULHQU,
BdR&+S`U59UkEIN+GMLb$"6a8PSP-Z"`M%bid"'95e'"3!*QqfT(0bbZH4LHVDZD
+2#`A9H0+IU$!Yl&a*6`JidTUjLiH&Xik%'P8%FfYf$f[GE,)ZYLL,A2EKkl`JiV
V)9#mc3(6MC5GHCa0!*+A8TN8dp8)E['LLa0#TZ38S&QFm@8-MUJ$ckjib)B!$4p
N$hfVZ0+#LFZ4eG*Z#D*E$-Z2S)iT9LUYrm@9cA`DJ!h5C((@mf*l&cmJ8!LC'5Z
1+0GV1%2kjSS,8LXT4"iCFS99%UKEa1!$f+B65NB%*(B#bIZN9'Cq9#8[$'09L8!
S+EBYTU3`Q-f[51&$"F*RbYBC`[Y5cV6[q&I),kbeYqfC)[1*IlN-N@pFAI`9-[p
"hH#r0aF(Be+S)U*fFK8V%qFicBrS)RX0&$+S5!X*Re&m2#1+-4`cfK$6pTMJP)r
'aR86H4)rY13e5')HYSbL*Lf[R%!9IX)@qB+#&aqrr$BNP@e!`bH!6a!I,cj&aEB
U(hh+(U*SG"hUlpTaN!$,%Z#APemrH*YH[kCAS!S!bdr83Sj4,H`d8KB%[5QPdYQ
kF"2BSNcJ6`TU"-C,(XK4K8Ue$el#8"d+1,E*`LJ1H!G@ipM9ELSL`lZ1ZUUU(K'
Q4L!5D**0RF4NK0'f*%R*i,'C#!GRFcmj@Fi@3l(525`60(XI'KrUTXLI"m!0RZ+
N0063&Xc*(k$-(R*Ljb`hXaV*bXCQ!JNGB0TRYm)jdCT`i6TVDmpC$L!I'BebPT0
5m(SNKl%*hL&JA(apa&J&aGpbeA#)(8Sq)+d$0,8EQA4KfU4Gca+%TE0dL`pek1D
94kBP1mYe%qPL8Gk,R!lGKDjM6Q*)b8EEM`bT`5Pj8Ml-S"cQ'9'0C9&(L42D4!4
@RBf3!),@@)RXLLCV&+mqDa5$94+iAc&(98mC+cPUcl@``bc%qRhTGPM&5HkiPTQ
Z#Y8Ec'DbE*&EKdAJeSIKmB+)ePjmLVji@(4#j96&*RI'+1+iMZkCSQSN3%f1F1Y
m5X)lb"3+4C!!`Ep(G2%V852IfH*r5*PL8U-50m+%"llRe!GU-'@1ZYdZ1KVQ$X-
++X'BTcNH-SCP@6j*MHVFMQDrN!$P%5p[hcN-)NMS2(!4fGe[MeU"e,`GB[*KIJ$
#Da*9eLE4F*LFT@K"DQTmFQVUc'R$MfFH6FMU6%Kiq+"PAh42r*iX%@UkL3k@ENI
ebZq#*qZl2Fh"!DDhkJ,!e0X"I#*cFG89ZEQQ$e13!eBIp*53!$-#'-b"[pT`Lkd
A@GTZPpkJE%bNB,8EB)$`mD4V)F@V-fMI(@kN$!piA%b6-bFQ(ijjq$)JAeUHX-6
(["2)h-[LCd`kpk2hT5F22jk8R*ij'"Grj("bHRcb`EMd8VDXEMKRXclM%8`AMI@
c%BDHlTc0e%4-q"aRYPUMN!!HaXpb0V0TSIlSe$a"KKI4!0&Ri8CL-'Hch3qc&3E
McYKiZ*(B8kidA(RRJ9%QUYFqJ'L$+*kcfD+0J"4T9PCd`B(*)F5e9R@"QPh$i)'
BJib@1blCHrHSK2FURS8DbL0cL%AQbAl1-11*M9qC!VNp)mdMAM46YG-LUUj)VAe
ZbQkJ+[MG1lS6-M*!Pqb%cX0(ikl&29jDI-LHZ5FV'SdhCd-4jND+'1`%#A,kSP2
UaShjpM&iaDXQDp[YUVPQ0S*"Pa%bXk5rPTXXG'p(3Zf2ZqE+6-pJReND&m$P2Y"
alG4K&fF`!VX3J#PaSB#Ac*jPqB6JE$+e-&DFU#)#FTH5QKS1ilCqUmQ+r&VqIHl
clReZ"#EMG%d-8U!#%0$IFBQm*NbM#kAcPV3TcV!C9Vf2P*U'E#8,1JD[hVFh@mP
DXZr3)!`d6N@c$dee$!Xa1J3'X6A&bGPhq&T@JQ[+3[`QQ8fabmdd3V6"!-E(3&E
+PMCU@Gj#'hM-5"XiSB*'ZlBU'jK0CT!!m-R2XiNqj9%Z1k85SY9k-LR(bN&P5bh
#k6XVe1&b*@aT(EE8Tc0,2pT4pbSf&Gh$q@5!qbc'*U)(NrFIcNTI1B'c9#,YZ[V
8#EcVFQN%IJR-l$Xd(%@1V-MHD1F9dI`B'0Th1-Q5N!#8(NQhC$dZCp(b6"*,&Z4
l"N-A9E4(`6F+3j[lV2ej'@UQDj-9AUNN-qLibkF`ijHGbRI!51I8i$j4[!i-G#C
F5bRei0Z8JcZHfX%&(j8mq0XiH%m((aeq$NI[bFL5$pp%TJITF#$!0PN-c%#'5Xa
R2T%6BM8'aZJka)#K&Fh)E%+M2jZSf6ZeHi%rEBUD0laICB5Gd[0J"'P`p9$hhZ(
Z`Bl)RJiapL!B'Nk21h8BqHbkVf9%$QDB(ANTEl0l,QjdcbE-6HYeNXRZGFB*S6E
Y4dd4GLbT(bMCY&qp4fRDckqB*f!c"9ia,GLP@9pZ1TRKYBPBHkJ4[Pr2PSH3!*[
Tqr8pbK$QKM)"R21@[T-GGmdbH1VDiDaV4a'hQA@e%FQU#f6X1TZDM3`$3%1&JmQ
8+a1&ZLrA%@6`kZ#KcN%EH4Fjd*6&a6c`cU0!AChT+iF"28RdIN(L)UB[+!2r`"G
N4Q!hAXfL(DmaiF4VA%cl)PYdIC'&r8lJj4@6A`b,H3"$!U)&,bmDbkX#D&)&`,X
+)!X!%h+!I3@5J`b1MiU5*[j3$6DT,0$%`*Rq*d@IY"kL9ekBlYX1%lMK"$m*3Z6
$15$K+ldC[e"J$5E'Q)PaCX+$Pdm-f9$eaQFFCR*pPr!BCQZ(b'6ZT@%829rJX4M
&DebX`FXM*,b'4"X%qhVCm1JBUU*Y[l0LFKZ+%KFP!,YHH`B$5Pi%DK)+Bl)K($)
"L#J`$K-@pdr!%%(Tdk##-%pLB!T$BYYHQ!BDrdZB0*3Sdq![[lkI#pVApaZSXZ"
A$[8V`ifZm0$9TT9bU"q(qPGiD&Jj0,a"KiBhi0!`$Jf[m&#$FLLEHehPSDY0+q9
3!`ieV2c3%"LV-f#T*NIIPC*G!PrI6m)j[2"qIEq5G2i962EV*[Z9lDpXFPJh1Db
`[E,*"YeN3mKEN!!T2a(ZLE+`N!#A-d[lBHkN0bk!#&fXSY'-aXT+"SbiZT1l91P
k!cA+60[I6CQZpf13!%)HC!Yl#(Q!3[-!KH4KFa-TFL*VHc0j$&HBSJf-h&"#%XS
SAd(RcC()l%(4erFciL8XEmL8bKF'md8VAhMPL`(e`LpIp+G#U,A,@)$A"&$d6iT
*Bml%J("5*ehACLD9ArLq[Kq4B-*XI[`'a@"i(aX-[m%e5Nic49Y#fl1B!&#,j&8
VAb#c8-B#)$TjU5TFL48G3lTMp'TCD5mU0IHbKdI%9)d99'kLEHXf[j,1e+Ab"3!
J2fZ,YKe'*Iem[ap+)VVH5S65N@Z&3m$8rZk+0rTEGCdhJ(9NPYkR-$mUIbTrLHV
X9P,YPpVPASN5q!L-G@2bL%rHVYS%XSS+*c#!SYAU5@FLTclX'Z[2CK3jST-f02&
Q!)B5BZdN-Sc!'-,#aS*CEPlQe"eAe$PS0Z-RaRJINYk%+Y@!'+#%*-99b(JaJ6i
'VLVe2BaMLPeNN!"a1k[)QYjYHm5+5c``4FRBjS%J)dY30GA#UTP1)((cM6QVCS)
%JZ0pA9m6)hJ0C,mD18H#hf*kCP9H3mTU8!9Qfp'BCjASLl(KcXlZE"YBVbB$YQV
!"hA%qSV,-ErDR#3hd@%H4M@Bi$4dYUK+,D#bMaFH*f6f,(IYmGVMIjXVqM!"$62
)8f!%rQ6K56)$IiHlpQ6Yb4rP#YmGJcc*Zl*KCYQFQPQ0%A55b@Lrj&Hfh@HY*d&
P@Dd'C(D"&&68[AfG*ca8J"Pjkk"Y8&kLkEpFmk69(qEi-QlGBbcJ9bkrFQLM-#"
6-"2U%6L`1L&Q4#mE3!'2)TcYE08KIk!mD$kJ'0BQ8k-(&)8#NI,CiMibQM`Nj6'
RcQ,E3`S3dXa#[E,AmhHF[kJ6BZDTc6++5*N8lMLICd)iK%)U#'8Z#l1*%",'kU5
QYA9rPm*MSMAHkhP$Y*T5GBR-)[ja@U`X3K94`i1[H%#Vb(%bf`'6(A2d!Z"Nr%X
R!-k0h4*)'b$cFm!5CC83"%Fh*BK$p(U$`'fS)JCJU(#iVe+d2A3%0Z#mC)J4k(*
U2#`Ae`CFM`Q[V"kp-k),E!SC-94S-Bk3!0VlAbYI)U29j14MqCqK*3FE82ILqRU
k*V124R0$cK$+#VX8`U(CQkQB)S+[2CNfCC'9&EaGIG-3K)#'J6KGX`rQ6GD1F%2
C$J(&XcU84-BNYE'H%aN(Xl*3-6harF(ZB@-YSF15$VXbZ!Rr4%+AS%&i4SC0Y0U
R-E)-4q*ed**#$kN4%V9jFQI,qM'DaK[F&%+-3@R35')0A-%P0%NZc&jXah"1EQl
J84Vd@YEK*&U1'"LpMfV"pdLaF*em0%mG`'$p22cQNCBHr&1Rq!ad%$qicR`X0Cr
KiflEe5i+-$6)`&%L-@hl`0Rb`#r0R6I,RFe%bjE4Z6"K$01FaQc1hZ)M*!JUC0Q
-[JA+9N(H-L)hK,k&fHGZQ&rE$F4[Sh%a%X3BNr#i9PS@#%-peY4$cZPLlP"-(@L
k(Vf,(f!3*L9&UibSRC-AS3l[f6H)4P8HUqdVTi`+[(LjVj`V"m@%BMFDjHV"DPd
pUjV1%fBTK@@P(Val``rQ5@dP[E0d(MpS!Z!DAMlK@`X(4[Ma3[-"Z%,M#&JdLfB
XaX8iAKlKHI!`UL*$H$dYRXEM86'+"j+3!,"S%ff5rdr[L!Ij#,bfLqf5[a66lZ'
qjlQ5jH9+PZqKKqN`[(!BVR!B&MJ-Lh'ZMRQi1SE$J(BH"ATr013)6TY16R*rkTp
R1fYj1c0j#eLX%@Y8)Z'UAr6MC4)Q[!!Qi,9El-DVAE4MNP-imHS5AELD&*0Bc"2
cX$L,YJZra34@fAZ3!0R$Ua9D-MNjqr!60eE)j%aQ%SX*-D&R%JXd[iAA2V%2,kZ
`iY8T1[pd)SHHiE8b`f"e,E1Dpe#!&rl921+D`C[VZ[V+)AU2b[bZ)q5*,NlPVGV
RlF6"+8f1U9hCU,pIFN5R5[(Q'2k['mh$@cGLq&kekbU(6hR+`kHXH[K2FZAKGhS

fB(LDD&#lFB-(AN+ZV'6SdmV35`VQE0$35d5cfLh[S)-h2rDbDY+8NPK[+!aQ0Km
99DlaYNI&Cj*fU8,8E"m80B1r%@Zf@mA#eCJD`2#'[R*k`BKA(hj@b*LkpB*Y+fH
3!!4Lj%aK"E1TXmU-2!`YF4bC9r1[*@)284%L5$9+i6-U2%Jr*D@+LZLd4ZQdN!!
lN3VBV8kh%Z+a)GG0JKSNS+0FeN#KX4")b5&#LT*BL@ib%i@&R@V8Sa5fjqM8Z9@
ZBP5,DqbN1U[LLc%SIaG'UX6#qk0'ih!9CqTIJ%P$GSim"IN%YSM,&[ST!*X*UD1
`P5XhCd0!&3B"5a2%8UibUGc465B$`ph'RlZX92P'SPE#P,%I+Sj19N"#c,,!Bmh
F9DdSLMFKURiH9DGN@k-3T'`LB%HC5Jd)V#'3!%hpd3pbd!fMDLP5HPaF3Tad1%2
DQmJSq%-CPS2*`mPiQ$P[(Nda25V%@V6A0@pHHQ*m1ZX@eUlG'bSIQY+Yc-E9c!*
&1K3IU48*Z#U9Q01Sk@)d!P5c&&1bZ#&M)QrEl335)l-)ARH#e&3iVj+kNNRG$-'
MpHa9K@,qI6NUBFKi6%D`a6%D5%Ik!PRi#LLC%1%,9N,i6@4%6#(mILEm9KhK'5c
@%Ij#(X*[P3N[U6rM`lm4*)mrFLeZB,H8G2K-HQVbSaY&IJ*G@C!!R6`V0HJ*",a
V$AkZ5CAD60DZHj30'94ff4`U@&[YN!!p5HPaqV'&A!hZ9je(9Gfq(J4)kfI5ZdC
485F(!P85cR)E"[+#%ASG-2mQ"AA+jKcc3$4!Y&pBM%ZTHB,GphFEMFS`%Je$(S3
cG*S('UGSc-e%j4NbPmA23L)!)EDS'K!d%m3[%k4JJ8U3!)*[&)+-K3JL+BVr$5'
+FV3rcdDS'B&%%L0GlGJqjGMSRqrB8&+3!+G55!C9,*[2c%2krPCi")15FC()R8L
(kC%5UYRr2"9M3kKL6"h*-3m*4e1'@'UH-#3`E3iDq[&cIV`4piJJ0"NKcM&YP!)
&1R3P`9D*!f3`P31b$JFb)Y[9a@MDe$!Kd4&8aJ,R&d(TG(YH9B*UK0a%2bM)+hQ
j3LNHkLB&8bKc1#8)L4P3CD98!+G*$Qc&d+S$@h4U4kHi[R)L#bTHAK+#J,PQ(Z*
r@PDaGAQ3!#%Q+J8BdJB$*Kc)%lXP3"+ZIZA6`cJeJ&A-ErU9aRf,pB'rNT!!&b*
ZEQ#J)Gp%d9)*T%dKC)JBS!FPZjZ"8lrKjhEmq"Mp!bQUAeU-%EI$Bbm)#3#&)Nr
Sjk!SQ8irAFQ'bfbAmfkf*$2+&RdP"Xc)Fp'3!1r8)q1)5-fA5KFL#JdP'e1&b*B
K6QSkRZk&Z%%C0AhCpPccp''h[D"Y8$U8K`"(9'G9*kbCDpi3CGKapbKJ!"eSMMV
c,"U*fm$K8$b5iSQD!@5&Z6("dG@mMQGP%B3-eICG@MR4,-(k4MEeklpkr,*Ed[5
%-5m`h'r+1A,`3Ek[J$MB"+B+YPiA@Z4l3S[[hV1D"mR2id%3,+SHC0X+R3B''%'
8lqkR)G6)6-!F8)%,+6UDNlbK),UU5&ib39@8LJiJc4Yj69j[X4XE-UiH[IbRp*F
M5-UFXT*A1h0AZc+M3p4Q*I8"98%X*-`Vc)*"K-VH&5ARcq@2I%h#8E&HEX*&)f1

Q1AC'KSClTP4d)&f+!3Cr2$b*V`U!D(ef'3YL0$aE6dBbc$rHD6CekqH$e!aN1Ai
JC%N**2'JlDV+9i`#N9r'i0@5R4-d(%@QrY55U%J9T6"b,kC9bK(E#J5$(,&h(Ld
pBZqFaa'lQB1-(@"RJ"bNh&-Fe8ej'T261G*h@X`9SP-ElQ!@c&#lVZiKd)5c35G
3V3SH8E0bc8Z2T36k[B5-c+hV&rKK@GkPVk90T85)5+3)a)D#SHhNCZQfXelGc+i
UFj!!Z&kGpN`BJC+A'Tk*4HA%LHeIqPUmcE6kN!"$ZL%9mZa+-`qT",(j5q3KpDD
RjCrGSfbY6PELX'LR2pf(B"3QcT4)aBj5VU(I(+hkemY4BeHK5BdDrAK!2iQ&Mk8
)YQXh4lNb!"Hd(&FM#!A5$[Sj9Vh8r"Bj839@#8hl!%KQX)!5'XPaZImbGapL"YD
V,$al+8q8[9f[J*&8jK&iCqX#EpQ,#B-D4$e6-qc@2d`VhaM((G@-3hU(!aZJ`CX
TH&5pUc%r$d0!lUrQ)"c6QGL9C'8Xc1YULF*a1Q(8V+$`G*bRaPTFJ9I2hA-ZFQc
CkFcV*!M0H42e2qZ)JH3G6$B2d1#E6B+![Aj%cHM8863MGmrPTFILmhP+8!THZX`
H#90&IhraKh!iVMY(eD-3@#F&3AD22NZ"Q8d!6J1qcRENHJS$L$+J+KEqr$8L5e1
M'%XT)d$c`dD!MMiRN!$e(liQ0HpaRp&qf,$dYD0VlMR(LPZc8UA0Ljp!i$CTj&h
LCb"kK['cX3ckcFR9DSk1b#LS1PYJ[#dkG8Vl"LTS422`M()i'f&%+B18T`PE-l$
AcK@qdhQ2laHSN[Y980a1eEJYb+,`T!*`2mR9Z&aG0BiViVTUR$e205lAA)d,UTA
R`C[[@J16kNkdd3%brE$L(*L0JX9Pq'3)ibNCh$a-Y6V*M[UGP*k4NL3Gc%K2Y%!
+-Mf&"-SfVN+Y1(mJ#68E"A,fmY,3q54PRKMKB(VB68e%LH)mcKXL,C)[R1+M)KU
dD`m&l@BRGC`0)c'iQeBkkQDfDLb(UmM,d#a8@2'L3%R%F[)i1)eU32a8$Q%&h*K
mP&k*pkGcS'j6G4Yc#!5mX+brT+p#P(BjH2-II(R4E@BJkHD#r0"LPp!pf+Cf[FH
h1U*1GELH2CehU&dHh8,5,CbkK8&@dDbmkV'VIN9"+6YZ*KE8$jF!XHAUGQ9*F$a
5bFd'V*iiBb$0GBS+CL8"0h8F*X&PDQM!6p8p-[*9QSQD8TKCV3SJ$'e4L[U$rah
1%h"%bcGf3'[Q(mTeQkiVFC!!Ef8AH32MNP@NMGM18plLDNG5e@MrbUYX%!(h4aU
@T8Rd-3GbV@B@0+$&52K4Qk4#AVDJm16%[T83fp1!T1ZcPl@U3Pl6d'Ara5RmUV%
hmD'PJB(F2K,`0@HZJ*LUU&'FipdK")ND!3iR*+8H[CD8,YNK9`Q%'L(5iV25Vm@
YlUMbKGaKhMbP4ej(PDXSIeL@Y`UrlDJ+B2l0Q98L,c"ppXFd4'R9l@h[PI3@%15
DCRBfb&2LCjVJaerj6lS0@QN2AYBp8!Ci-fq&NK+P&FkGX4%r[#BA2`8X$p*I3C9
2@f(82))ID925QcSSSaq$9R'-K0PpS!AD)rQb)ff+IL!+'U6U*30l31"UpQ)%``&
iLfA)N!#d8Xp0)MMmde4iFdkYK0,*A$PAM2h36e@jKk)B6@JPiLh*ZG%K3JiYUM,
-XUdCL'5095N"!Q$0V0l!%Dc$I2'0"0&M4YbV&dXCF'5fcCIceBVA'$++!VciNKL
4(qB@),")c(-e'eGfr9A1Q1SjFVUBG"jZ%PCqQ+8#UMPS3Pbqh(NGEe'H-UjfhlQ
9fI$QVF59U,SF%9ej[#e)p$-pDLX8P)k'8(S@84,jSJm1GdeI8A#S4Zc#QV`4UU#
aT105m"i$e[J4-p+MU!KZ#kq1E[0X&+*YikEhFT82'9P!`RlZD!AKZ9+,hefN&%9
-3@Z0NKGI3B"8%N@j!Flp8jV-6SG*48XCA[NdTEMY8PTjfVGK0R+VG-LN"q[#[p-
KC8,0cdMQc['qlG)VRaiYd(G8$[H((250BNmQEPRTT#+!BeFq!4bjNQjKdLdmHV4
Efk95KpqiK"jR4@V[#J#p(,8L"m44`diTDNC[lN`Vk65[M"AMT98T0CAK6DXHRJ9
fae59(9FYVdDR&!-bZ8TArQ%!-Q*`*F&r564XD349XM9L!cI*!BEjQ#9L,$S91X4
B8p+,Pcbm9'!lC#E`M'k,ZQ1-MAQ1qA4eX((Rj)U!'r2@l[jHRFl*cj8&XbJJ8MS
ekdJf,dr9rZif!N32V6!!M*B'#ZCmA2UfmK)[aei#5&E)R[2M8VBEA3N"adVCfS$
bF&+hYI%5!&c[kS2Y,&a*BYb@KqhH9E'R*rl29P1@j%%bKeH%C&l0m36+X8eRjPL
kHffRm*V1Ylhqb#%)LUD'R#Y,Q)`0ik!m$PfHa'[j53NNV@4BFH3T,9+`T`cVK1R
c9rH8+iXZH40pa4kQG)qDem["*&,TK2DSK)BJTjG%49C+lSe5!9#f5Rd(')M1r0j
LC$[)r"iD41YVq0lLKe!XHH$)qRjCm61mPS@5*,bNjhA)@Ym)045((pJd`!h!%J+
X,6$VY4R(hfJD&HRH2Q68'Y#NSNXRS6Uj33S-Y1jZe5G3(`(4K`8DUh8Lcmi2bl%
`%FV&*%lUe"4-6(@UkF&'FDq(!NC$,8fr1Y-p*&DQ*U+&qrUNp15M"qfTUAG2Ha2
9K+kCU#)FMNp0BL8m2AP#H65cLh6aUFPae`iR*q%kGArdLDa3Bf%E1&amUF2&dh$
amR#kc&3TJcGIGi%%E'C[)j(bIeX%Y2GX%89KR#kaU-C#%9mN!395P`rHr$Hcd!R
#HIMT#me+G@B8!!iQlDUr1&@Db+1DD1lr9206UdbqqDmUqi5k@M%T6TA+qYpNEbM
V1E8bkc2q9&KI1GP,B4dr5'(',8#hHkN!4X0YNEEbrJMp()Mcri6-"[1)$6#,#l$
T`E3ep(0UE5kk8TRGZ@MMQ8e3BmR'NCQBpG(a9-M$E,J%Xf%GXf&Q0[c8Q6hm&*R
pB83Pl!mM'd,Bf[a[*@%h0K,8eUU%VDhG%-)bXpmb`Qi!Xc+VEA5iSJEMBa8JY45
4C[HEH3lp3MNd)@NM$jbajXpli!C%(2P!je0a&2MiIp8I[c&1F@P-r-fI#K1V*J3
KDkfXb(S[*5(eLF-Tk4RbH*2abBpEdM'pHhqm161`QPdH61q$%M(3Rcfq3dcc"11
+&KehH1h5a!jUDS,8&a)CET!!d69KGS3[TC@b%6PVZ2ZXXT8h0mV4QNL#MB@iafN
r1L"RP)%F)PkP,',JER'P*fFPa$q&"1[q9JbrdLfBKdF6,fMI2Yf(*#P$NqEYX!H
"S4FL@6+Z3Bc[L9,5j3R&L%81'h-,Kf'f-TfDa4MMRbk(Rjj4k,cHiKI'(-U-TST
mdB$*#9N*6k6(P6EL+JEFYT)"$eSX+aK3r@&%P09+0GX%8-)bVL)IUDRLi#+h`8Z
Jmm8TfFLjfiPa$bH9-U3D3@Bke5Y#YhCPANYkq)N5AJT"rHpXR"($Te-#P1+&rN6
[Jm`(8D*33r*`QZG*KV[GGhi&Y!)bDrc42[hePG#$ED90rr#pdUIrLE8NXl1(0S4
Cpb0kEUHpQATIHNCk(1*CI%*+H[bTC(!1pkm8"`C(r0lf,6NL2Zm4"(cM4b%LN!!
#N!!m6YjKT8*,K)DJ)ajD@Bb14r*'Zq2a2ciDVh1H9ZJ0U&GmI'RXM'd31pYAiZU
&Z$%c3j(B3mlP-CL&-m*F'f9GSNah!$MQ1+RD!"BJ#%KQVdbVm'ca1NGe432rr3S
',Xh6k3G@QpPfQc!lmeTLDPCkKL[j5'V)(FU6T)Sca)f@H$KEq"K)D5!6*h,clqa
a+p@+VlXG`kjUb%MhBC@'C)p)ap)1G,k@pF5eaj05-a,3c2DT&A+PlpU2VQJ(1b(
PF)CV&9XKS62Ze)01"c15MKbf*kq!em04T(3NUSY+(SPqkL*q9#B+SmTJdmKCbPM
K1,cM#%FFCF39$2JQ"N`iQ,b4)iU5@54q2jFpYf&$[IP#[5m[H@T*SUmU!MfaUJK
%2lZaU6b,-JVQalb8*90kF*@4k)Q94L+aSC(SLC+4+,!"NHL*MBp%6k`N%ZQ6D(D
jR%3EjY5[*)QH@-hjcB2mF8G9#fKh[cR6qIhdj$KbH4j1qXq8p'6S)j1krP2q"Ch
T+DQ@DiIM8JpR@Z3chVb@"IMP@R*#A1UHV&6kc%cG6d3(!!!Yd8&%3e)$!&%r$e8
&GN8M)(2PlP6IhE[CV)MBh4T0df"$5KUUD@T89H2HZhXM5&@3!ie"5!M5*)f)H(k
9lqjZRT9%U)DLU$('U+SDeGCSBSc49Y9cDcaI2$G889A9@*[IpqdQi[RVIfIHFrl
IFplcr,hR("TF!34"!!4"SNK69TbIEPe4d5hVK@$pXGdlLcPF3LcARbZ5U9h-b%E
6b15C3Xi-UN8I1c3MHSEXUCeaAPVYP+@eBf8TXdQQmEki#NP9IUGUH'V93fkT@Z*
,kCrNF[l(Z+k5AQQYjXF2TTr*!rPAF5fN1L@,[a[hZ645q93G&@qRcH8jDPAm3r3
[mM0m5Y`d+95jcUI(cC4Z+$28@r&TG+SmKXq+Qbhp3IP!I5&q,*dVYe'pmDr3bE+
(0iYV*HQ8S@T1r*X9p$Ij,Ij,h(!T@cR!"m3p)EfZ2+[q0IiS(5BIj1ki34,)Acd
8AdPGFU5k2ri0fPpqM6mDedrDTj6`j,J&dN[+YqVKq#+k5"kK(SYrN3k4Rq-ra-f
6MLM,eGViKqNbH3@I(lG31U1Fid[LPNTRPF9UG,b2aXJAe9AaX4@dVlb'2arA59U
VV11GiriZl9"qVbE%Cp)ZFK0[&rHNp+(bP*SAAdJlb'h9AI&lk*rPRIa[FHfP!+@
"pill50UU[+rZMGp12jDlUGIL%qPlmTIm(h(GT6Y+,l8iIK[pMlb&ra6A4bT6FRR
2Z*qPhFVMkKIa"E5MI*Vlaphl6IT'ZDhq'(qF4XPheIAa[p+RjHriph%hTFh+!h9
Mr$rT&ANPIcRZ[V4DfF5[aMdLr9ZjT(i5[i(@bkPU@2ajQL5Ii)&a)G)Tj532L[1
6[PBZUir&4p"JfF5GFHQ5S+5S&q,$DBCX8-9i-hAiC-8Ka9(*TcK3ie$&YLVAH#N

Ib'r`3cb49kJ9@N9TaF#+'a@(+VKGRfr-XY5TSmS(Db0,"mU'mMNM"@Q$AC!!&)4
iHcL&EbJ9T--@34T6,NMj#'N)cb#-"&1(a)GN(i#U%1D--KP'cXNh'95DC6*Bk%L
6350a)!@cP%3pK3V#-l*9!Mb3!-45%NHaXh2b"8N2c+T4m"N&U936*%d[52Cb4Be
E3!IlITpb2'&h3QjC3UE[piVKaq*Y[R8CjiYp*@YHHY2hQZ(ejl*p1FihIA*6V#m
cDQHKlmHYZiX62Yapa(HqF-fa)li!Al&8X0rhB[3@al&B!K5mXh$heYh(m+ClN5%
,19rmiZ#X8$li3P1#Vc$$*frEAEbc82arJ6DeNY,%a'XqPHS&UXSqeDIhUBT"cj'
*a*XP2IHT,2VdXN022Z`P-**H&DKHpZNc9%kiHPP5pF"2))%(8`#LaA)p*JK1"L@
!LBq(p93e@p@*9-p1%'8L98e-&C0!G!#E+N-,eCX0HSD3!$)"N4Q!V9S0C9!eba6
ASc9L#HNXdjZ!0892mI+QR)U8bNlNA'G+mP%G*d`IPFQ%NJ!3!k*-GDB8"X"e9-k
`!TST09N48*hS)'bCqNb5MSSTeZ-kX`4@+J-KTq9dTN%R'l!Z1JL)6$5B8jP+S2H
*e-Gi*LG$!Ydb*5,a'[&5f!6!*S003RbN(m+NYq%3UG&RpaP0"VZ4qq`+*8805f5
*F'6m0pLj%HpERp'"$%aU0*06!MQ)ml,2U%KfSq`%#MYRa`e'NXPB*'IX)J'P`!3
)N@"5U0e-CV,$@)eF)@V#Ur9Dd3!%jfL0H0A`$!Zm425`#*3b%FfQ85B#8U2)S(a
fKddbQ)Td[NmL33aQ"X+6+3Q"m%&&-+I%6!S!+TNbb$TP&)E1JQQ*r96@bfBFN!$
6E3M)ZLdRI5TR-,a!%5Ka+`Bq$QXB0)K*0R"ffNQ@amRPY"fQNP@VJ8LAj&1VT5@
5bJkIY61YdYM`SlG9l*i%f5#54J!cUe`4*F*4l)3MAcC#(N`i),KS&aef!J*Mi8d
RNlIG2B@Yf)+46A#DUbBULNk'AU5L@E+K)hT%!f2Dp!5,9[a-MbMKG!Bj"Ci0N!#
`$-!Y%mfLQ-l8X2HX$,a*e8HCq)bGbXk6!N3fi%V"$'&m2SAND$dXjBTXm#&D*l"
'%K*F+##LL5Nk8iCYLYC"`"3(QBLT`-&C-2N8KNXd+'JCLN*p,)S%V6QG`96cL3V
)S#253*R6TS4a'!k*JD+%&+e)63jbAN6,G!#8m#Q6SeSQXe@E1GA+`8C6p$jZe(1
l8EKYjb3"m4[e2NamC%*+80*M4VhS)+#Nk3&-$Q6,l#J+9J11b!BF)9*LBNCE5'9
i#$icMTXG"#G)f8k-jNFdXF$Jd9IT0R5N3'FJ""["B49(4+[8Sh[eE#i#c`8RQjQ
FM'8f%$NF"#NDV*`"C$UZ8eJKT8G*U0FTV#68J8jJ#"6eLNi[Kj!!"Di(AirL6Xm
1%)[VC@C$,)K1"L%RX4-Nk%48#biifF`'K"F(J4*Y(TfP*heJGV)6"&8k8Fp4j1)
)3fmlESCS6#CcUNd3AJf3!!)fCdXC9K(aJQ+D8FEE)%@L4kDU4qUh$d&"filHACc
TfqpF'jZj-YEAC-KE%bhl46m@ZqEmed,$QS5#BMa-L*DIM2i1YEKa("lGD#)d&)I

[E%SiAeL`VIM(iYb%f!rP`%BclT%qZfpf%"JCH8qch`6J"++Y5-I!pcDVRm8MDG@
)Thkf(1`3j2-m8JXdZB*FMq4@%-)36XY5ERXNUa!##)#AcT1Pl9'bEcYmKZcm)S$
Y-$@K@Q*)d5,#I(Qm(8''&K[0DSY-*%$IiTSJj8fAEqqT%Q2Al0Q4QlHY-$0L*kU
QK3QjFNT0#XLfCMpj68$aYX)Ge@b#UaG`G8I5QNc8&R-`[iXm"Q%B8$[P[a@(QQ+
,Bf'*iS6FaVDBP%9-B9Dr1ZH4[MT+*ZTA#ZEjQ'2rAfd%[M1b90a06LNZ1jfEYb-
h`EIlhX64f)ifi&J83QG"+Q`Z5pY#j+HhkFC*mr@fiNEp10i8TkDCldd%$L[*3$h
8)lA5NiRD5SGj$mbV%)j!dbjC+MZ&`$h1r[eBKf3djHhBZ@CPJLpAbQ1QK2eE43"
q0F)Z3GTb6ACZV@1`+8d*K6Z+!`L`)BmCH+2DDKIJ$B#pLG!Hm%#rY8if60VCVAU
BNaThG+Xf1$S0bA+%SB+drEiXl@f5(40T#)D*LNS`0%[c1*XGBq["HGZ+9qDY@jN
E@lJMJ5P3Qqd(L1L4QQe'#"#N1b2NP+eeeGec@bK,+#`qZ+e`pmiGKEJZDXSVh&%
*a-fSfZbq'VR2(#6RlNiSh,QQqS'HEhFUpQff6ZlPj6)-TTfl#f+,e`3`NQ[fVYS
-cD4C(q4S*XhkUC%&(LR5(`%G(NR9b&4*a2A5)`Qj#CQ0#@0m)QPce$a4iQN$bQN
$HQZcL8c80ZX`pb%[4$#SN4HKSlh(%GQ4k2!M1Yk@M0Vd'JdCYHN"a1mLQ8iQDTY
&Q0p(2Y`M6EDSN5JC)P%b4-lap)eXrN0[Kfr#JQ4mU5I[VbPe*Tp8*iHcmQ6bCV-
kZ3M*4S3#0A*Sil,%)rARimU5b3@X,('d31L$d-0c,l)I`ILfZj[FFTcDUHVN@6D
e5k#f&j*&##ke[fjmYHi08*eM9HYLDTfe#2N)93L3!+Srl0fra20brkT*1fMmIFp
DTFjU-UZc6L)[4U"UIqMTIpTcZrq'Gp$'Ch98ChA$q3I)@b+d8IY$V2iJTri0RX[
pqdfJEEJk#aZ#NY5J4Qm-2QNlR(eQr(Biqi"CR9f**)a-e0RSQ0QKb0%aX`[8rKG
*Uc6E@Q$+cVcG+pI'lNj!Be`AZl0T@bia,m-3M+3,3NG"5N&G*b5AR8K[bPX6L`F
#qjhVBYFN&"2SjZVXUF*PCmF*YMYlU$SE'dK@qi-5q[F6k3L4VKFTXYq*p)T)AaC
T"j%H%HQ6)[e-T,@-faPAG5+Y%ZP()ZdV8S0)YiPd!B2q6U6V4,T,T"NLr8+N8dA
UC"M[-YHAc4Y%qT0)XaQF*Y+PT'T,23`TUL%QN6TNFK9TCQYT)Kh+d!&kMdJ(XM2
2-GB,)Yf,+S0)"q#bMq(GcR3X&ZN3N3DcK454RK$Thd@k4+4E4"STdYkXiMk#cH2
CIPi5b9AD#LDa9k3a6&-cNGi4DCC)Nd6k*828PBNB*p)h4IU852Fa83*%qSa)bd5
k9D5(4$T&T(pLV!0-1'KG8kd[Rdd#QD!ir,4)(a(T"b,e%qN-N3iAkI0-TQ"QqYH
B6$mcJ6`LV@1l&GNqd4PG44SPdNp%fTbT9*J%Q5,Ya6SJ9+6h4HS5k8U4@N4k8+3
bX`LD)US8p@c$k-XEc1lYfGlDL25L5'qcj5&-9PMr"fDG(L,pPZeK!G0aPZhjZNJ
I&ZQ[)TdZdUXLr8UNL5*G*Y+2QE*&l2m"*NS*-`dfXjT4c%PQeL#4EQ#p"@AhQ"c
3rAieLCaR&Yc+0[N,!reDT-G&qS#"EQ(@,f+'!fJVN9i5k@-3RAA2+Z"Le,10p9-
,"Z4MU(pPrI'X5-q)p,")3d6k(YX!8$K%HP5N`m5+&cK9iRdA9mASr%qhbZPB-05
H'YDmT(e!FPApKMRlHMIddcY0A@ZlC#iIFh2cV+1pLSIP"dHd2Y+ZD9lDJie6$hD
ricBDa"lR1UeGiSdkhLDlCql`V*!!8qm@YGfe+26UTQRl2piHDFN)EhQQmlU&Bqq
ZRhZJ6pQ!ZU#6,Bje+"aarIlUkCAGVP@i9%Q1LqiEZpKcljYQEclqa@qMNXjrqY,
IGLjik0)RIhRYSkf2PUF,Ihcip`R,r[$pGl2rqTpYc`kqr0KRcchji3qhV[acaU[
rq(+3!1B`rqlXmfZ@[R,lamP[rEclPj'"*cirr1Fphclcb,qR[2(qh[kP+4IqY1,
[1qDrm25[(lcqdjBR"[TprG@,6q80ZI(bbTQ(hN[8A4Ch&Vp04AE+XBQr)+IJM6m
&Er`TQmP%RE)+mq[)8A41ZD1kFGP+Zk(`hQ!qERiVZh%Ca#FSN!#QY"h0Zh%+UXC
6iMdT8fBa*%4TXMUP0fViGZ3aeQ3%S1U4$2")8lhU9#mTe'3TZ"h#6B5,K)(h$+T
PETmRh9eLI900$9HR4UMZIC1qP[!bp(F(6&)KUFr,KD8HbmY-D1+E%R,c[Xl06-K
PFi,ZjN5U-"Pji`#kQ0@TlC!!Y#36G5VU8e045jQ+5YR8%DSE'h!R)j!!9c1N6e`
LqbGf'Mh#bj-)-#0(RB%+bibab,'A'CY9GrY*N!$k*ADDp13GG8D`kSkTJEi-D&[
YRP@j#%`lGFE(kL$lda2@qKYG&-bBVXj!IAK'#q631-1Y$USkdILUBAUD1[f-1LJ
JbVUYm0MGaIp&C@rkmBNBf&BcRSihrh5mpDHRNSNkr5EQqj(ME6kpScV)@LFFa1U
%5+MRCQ5U&GH26APErKXTKSj@LTPCCR8QD'rQ'6*4CfC$LMR))FR-NqSJIkX8p9B
T,RVm)P2([q#F@$eqCXEi&BLCGk(Q[ZIbc2D0+ajN3Cf*kkqCZ2kDfG`k9fG1"DX
-dq8H'U1SJcV+cVe00LA9P3ZFMDP5Bp!ac@hUli+0HMrkME6"JfX#BR12q0L5(jQ
X,-k0h9QmQbhi+UY&ESbZZ[i5CF@8YrYr`S*6fmeU$+jVBMU5#Gj&m0hKe4LB,kB
V`Ka"HMU-*&jmM#"GU533J[2TBBf&cRYR3YYdf'dkl1TLA,`Y2S"`5T!!lMiJLCI
fNjeA5KL'5q2EBiX0S49p9'2deV8DUh`rcJ$[k*M0$)Xl3B5j0@CB[)5BBI%ZT+K
%,hB*d[G$5@)cJij!#-lkc-Dbj[dhXYBBJfLbUdY`ME"N,8)C0*P)`Sca)*)KUEG
TX#PBZfhGrfcT*AI9*Hm+8[dXMq3UNDAEk'-AhJkZ9E)8JUjeSIE[3RRV3KRX3KR
X3KHl6Z0LZARMIPf(i[UGUA[AV#kYmdK,J@YTK#$Ga0-6&aVF)*4V,T!!PJX&SJY
[!pFFUejF9VR3@Pca0VfZhJcl)a2ZmafDFUQrZK5l[368JiCLYhKZi8+*j#,0(Hm
I&eU(#f@3!![QGU(VA(JIZ3UJeYHiqkThqdk9BXr,XHIPi3M("HNff42f1bM'5`a
+p!ledK+LfNYpAPVPT84hJIHq[HEb`RTaiF2RN!"VQK*LFhRd"1@3!#pkY&FN[QL
6EI(HQZ+Y"3R9`PAD,S9#',HkD&Jqh&Sd6(UKXLa,A@CNK,MX1RD%#q&P+%DAl4H
N"fePkB(STIZm92(5-&PkC,LAiZRA)jfmG)-XACVUTD#Q4pCjR3&&h-aAU'H01IM
%k$Pl5Fl$pYU,fE6@AVXU@cPRTfTLSQ%LBLddM&DXK9I0MBm`5L0@AaM&C&hB`D`
Zl10a,V54km@9&mLE$Tfi"Qr@0@A&9SUeZCf&aG8P3l!9S&U%qIRUr1[M81)"cAc
XIMjfIkAh[feRkNH(Njb[2Uc14heX2XU+q5#lq9d%U5pU2he&@ESi(!(AmKF0#,$
Kbr0NjmYp'1BZNdKG3hN6e`)9D-hcA4iTf3X*eeXP[2SfjqA'3LClc@SbkSc*H1D
B6!ATq30H@ZqPZ2$Y&)R3%L%Bi3K%4h9Zi95eJN,Le9kD#Qra8Rmm'-L4TI[Y%I#
SmhjS1,P`'F-Z8NeQ+BYqShCI4$j'p%MG&hfY9X4iDE+A$P8Ai$-%eB[Ppkh,liq
hl#mDM$SXIfaGrRLmjCM%da@U8G1A@dVYSl*'jJqZ'kMcH&mCmiHa,e3p&2T-fUh
V0hc4jml@2RaQ4FP,4BH22(IXaC`hXpmkqYF$VqplEImE"eqY2+6%VPf6QE"Z4m$
1AAZD2Lc-+rJ#&qhEbVBdE0hqlihrA,ebeHJ"pYljmPTL51[Jbd&hVlkFNTS8%SM
FcrpHe1fEhpppZ[l5e8FHA,RrmX@qRCl[m[[1IfrrYlCrE[GNYrFk2YlcjelrkI0
6limqIVrl2lUp&arAihGGrpMb6mdrI6Fem"(I9bQYQV@C2'[fh!pmFbUQ6CNkBrV
-Q-9,PLj2mNqjjaGemr[E6emD@[rJrT9R"cc4lp()rZj"VJVqIfS$@65EK2!,BHG
2RBKil16ATlmjrZ2QlpErZZ'6AcECM$"DL%h-#&3b1*cT'I-rAdCE)eq`-(R4$pr
1FiliE8MkCm1(rC)a[Jdk2$@q$6SmeFJ'RlIqc0GLR!hqdYJ'baE16ek`k0Yj2i`
B-[5hiEm-'mm'Nrb-06re(Ic)*d!6r5N9YLaR)VraB5mfqY&hq'Z-B&@MRp,S9k(
`dIqU6kX6B&EqkpriZfR-J!NQ&0Bq#E`bQU9a%NekL)i'`B4QkP4YVBRCcISc9C!
!2YI3NqAFJTZ@l(`8cq)MH6iIc1Y`#j11Hc"8i48-KIS$(mYIi&Am)4l+Rq&Tr"D
rMKZFI$bDRq0RH5erQ*rK+hJ*IiNAmF2m#(m13`0H4(HrL9[RhX)JQ,pLB0AVI"p
rMHrREq"'f&Gj*@k23NI&mV9m$HkZ5q$Vq!iH`(IbAA`2Eq)ImN+HKe&LAr"F[TX
AmffmM'rK$A`Vhmlrc6IbIr,9I#9kr9p"X*IIi9rbDlJl+i4A"22,2)MIj9Ijbcb
&Tr)NF!1jMHh(rINp(X9[mj[mH`!pcH[j*B!q`Kr`+r`qMPcNIANRrMc[`Rr21r1
rmrEmEl`Yrc0[ajrNhIKl[#0rR2IN2r0Hr$qm$rq*pqBImBrjql`lr`F$L-Fp4,`
(rah[b[r)@r)rmHEm8riZj!L%PUr`Dm@Em6Cm-Tr&Cr1jr!-q"lpTI!UIbQI`kA`
QMq',q4+qP#q(j2lB`6e)(FAN[3ej,r'KN!$j!@5p`TrP!rJ6["prP%IbrYc0"h%

AVa$rlj1!M(X%c0c%"4l1,r!`ITkIiLGi"(q-Rq4Imp2m'hkFrmJhmqriH[iVhm!
riC[')i&r"F%i%X#))BNEZ)-lH6V2i22jjh`CZ+fjMEf!,q6*I"(rJAr,j`&S"2q
0$`(SCh`i(mCr`C'h)i%1r+Qh*3%#%-mV*NB#Rd1'chJ,r#BNJErJ0h%5@!CTjd2
H"C!!Q-Ml!q3G!K,i$G,q!RNR5J*F28NIP4fP%5IKl-H*'p@(Z5A%C@830l+)Z9E
%jCF30l!pFe1*maB5&aT-h$-qjSi5GfXpFjR-06$AQlNfc-dPlRSSF`HC@mfFNlQ
Hc$8RlSD*1ArQTK(R8jKV5ead,A--k0`QjZi6GeC(h)Tfa*@`!rYD%(H3!)RbDM&
aPHa!C5jaFL4aCT%iJ@deh%lFq8VQQSMlHJ"c,Z*1@iMEXBZjUm6Y#L*Z6`"cla,
AP-eF2A%I-L0qZ*!!Z%+QZ*!!(5jNiKDbV4DkLFXl`a`$bQ2Qb'1'bjY1A)'AZ6$
QQ1J&c&Lj$iJVBqV,f#E,jK#hK4PLb`(Q6M%hR,L'lXbacQKJREf9LEZ9Q@$VCZE
BYVHbl@ePjYl+P'eR`QeIaacE`(D'BLrVmVe4c(9KMK(6AUEQcJML[Mc(A$Kcl-!
e4M6AFTJE5P`L-fiL!deN#iPX`iQVQ'1NB'#GDV"0Q$)(Cfi-FicX(-`3$NDDMS[
--3*b-$91CM)RBcQCkG0CCkHcaT!!cSkP-`*+CmC+CjfDFB`j4V)C$$5$Q51$N93
+3jI#6*aUC)jeCbVVJ&5fi54'@#'-F%-)iG)3(fZ&)DbeK6"k#@&p(XKS*(!lFjf
CBlB-C03DA-FFklIJ!ZEBX@"'kCGC5lh-C,bmJ6QQi$,VbFZXCi+B,%%-44$Vmb$
@jd&-L+#2Q@2SJPJ2"c(&IUaRr0LHr&K2qV'GqE'5`)reL4mV)IcLQC[&(,1aIcj
cE2Iql,!rDrIqCFba6ISciIaMQ'0YlKkMiR[AQ@1+lc&D[XHXISqeNRXGQ@[*('X
V8B`@SPMC%-9S)BV4FK3VHfi6HT&ZPfJmhkMa6JMGMCTDCp5-*S4-SkB9))#T$d&
)0QVP&U-f#X#MjKUe`GH0@Pf$86X,S$2"#&f0fSSa#!V#*S5l4Ud%KejUJ4"Te)V
')Za(f)!3J*!!JI!Z`M#MGKL)$f2Km$S%Ik0fa'h8RMZ'8)P`('%Y3Lk#!H%"K11
DCTbUD4DITP@YeV39[6AYF%Y01c*Fd`kedc6aT+DC5M6Y3UDQKFh4Y21jQREL!)+
SD4&PQ[EB')4V#,ddl@3P3M&#2dh$PqPSTdQBT@QIC'[DkVDDYK+)-ZXdE9dY`QD
%B)4N6GZa80-#mK'1DPTDP&l,bG"VEjMdfU[lpGSK*)IDk6A6DVdQq1ZeAcN#&RK
qZFC$bcAY'N+,FNhI'm&GVPRd#"%)CH9DD@5jCJH3!,ePZ6CUBENfH!a#Uh+YVU4
F'hLrA2-#k*@ZjGS,aR+Y5N5B9kipK-@(fT9VSF2,Y@FD%+iL0#rAdR,+Y9ZT#*K
FVdABK*!!J6#LA,Ya'Q%$3J&#28*(K$N)VR,0Pid!JAb&#$F4J-!(BD,Y#&L-0L#
d4F!QcN'3!(0!I[BB`YabV4E#ejj"J,!V0L)i%6SJ$%AS9kk9i("*Rh,YTA-)Z3J

2%+#i+"`"'cfmU&alEPUjGQa@ZIBL%,kj[9c,,N*BKr!a`VX)dmZeYi)3HT4V4km
M(#rArSU0lfY6VVeQ39!3ZTGVqimJV%+iL`"$[`(J0b$8'c$#'jh,YB0H"$!23N%
P0RI)Ki"18Ic,04Q!iLN%'&#%J1BU""MV!K4IQ&UZKD8K&*GV*f#BL(d)6HMFX4D
0CeY!R4DYP&XdH`j#-%+b44Ye%Z%Z`K+,PS@&V,B)r5cDb(#%GJLBj*X3ZPQd`9N
)ESY@YmLL$Fa%!!,GA)[Qk@V4[*8@E@b!43[YE0'H+E4SD9"kkjS&(@V4cN9CY,0
39!Z%+qiJY,&S4AD%9KEYF)0&1a*MdBl&@l6XA4EYVAd@lHKpLrCk+J)8R9L&J#3
#5#1'@E6(`(LXY88lQBB!S00R%+iL3,"[)-!hXbcDF5Mm%BGq$E0S'b`)f&JX$XC
#Z,8`3%!G`MU%RKDY5@I"m(K8N!"*9*`qBcLj+Cf@NRX@TC!!hUDN96PRq%2AZDi
1`l%9DA#@LAUmKPBN*[0A6$5XHNCeiAL!Q*,-Sqfe2"qh5ihKTF#%jd(pm,!jRQE
KlZ!Xh"IS3hAZ!&0#eZ48jd&8"J0iq3(FbfX$5ZhRQj!!GaZmf-VM(+-apQrQY8A
m"5qqT)Q@HUNERc['imjab,,@DqK"C"VZ08`M$kb`JdXE6%62-,a)$cELH4U$i,6
('pL$9i64@6c,bd[2L)4Pk%f3!%le"[EQKd,T0*kPik9ME%X,b9+-0h!KVpKN#'H
(dQa,RHNVZ,AdT$HN-km)2FF1(6521e6L$9R)%kY%YZ+cV546CXEJC"jlEMrAR@2
iC,BfRDaPNS6CkMCXpDpBSAl@*&BJ2%pMN!!D+d5-Ei9H9L[dJYaNDC`9Q1$6[)(
*[')M1TXF#V8YG@&@521'G1%9DH0CBER9#X[rG5Z%%#YN"I#X@PiZfhKNAhCfJ`Y
ZDUV2&)2aQ)-'Rq5[dTCmIjCmqaJrFj*RCr&S'X4$Mr*Aa[,S#"1a'clPLI5CD$i
X+%ZlPTJC63k3!"eAXlJ1Sil@%YUZBAND6fd%!T*[ldhUrEB#26e-6,)$T1cY4%l
+IeX3)1Q6M`[#-G)k[M+IEkcPhqAc@l9mIcjr[CERj'-!)cqCcdr8FP-qPf[jZRa
H9-[2jR2IDTYp(e#2aq%D4V%YcF*5F(8NCK+QkLDCaqZME0UDC&Jm3UE'cL6$0)a
0bkbCqS#KC@E!Y-QD'HGkJh9mF48'"0IKdVfQEl1pPj2jUU-RH@J*YiIbk$(Q'VS
e%B!-Vk-e*fepT-I4cdFXHaAN!U02bNpDcLZF93jme9FPk!eh'rHIjdNDK$k[FLc
(ehrCHR'H*aLmQ")D4DaDQQqMc"L#SU-h)iEldT6U-QLSR",F!TacicM5j3dBXj2
6U#5m[-'8iDZ6lR",U%f$fh-TNJ`XfFpI$q8jSIbP8(i1$b"#q4L-&a2C-Ac-hei
dY1IM*X'0*J@0*TXE6IBeQU69)"+FG3S[*`f-+8q&mZMD6Aa`QZ`icZeTYS9KZ%e
5CbYa'F5BlEcFZQCPk3*U@'j2#'&*!E5He`'2LBp+XaR8eG1'#'NI+p3'DZ#@kR9
d@b6Z-cG@iJEcDJNEF$HmG4+*ZmEdC1`!-CqYI!NZ%*+UG0bHhjJQaRK6mE+iAXP
eqmRB&QPNQTNX,L(54C*,%SlH#U[K")2MUiS!16cJTIEU-JJ`)IJ!365FDD4[ea*
6HLbH`*52UAQ"A-B,4+[Ec204jS4LN!#ac34NRrP-k[i"TK#el[MS!F)QZJ@D,#G
9T8h!phQI61EcRDY+q"%lAe(&Yk6aFfPm65h(9re9KI*EY$drKIDlPVq*@3irNQp
QC0bDk1-Nl88Z(&RDQe`fXR5jaq'ZBS#YN!$D'E2lIhdN(NIf[D-M6KbTDARr&@$
MC6mX9qK-[1i-(d9EmlTm8c@KlQ00$CqKfZ@*@4EeL,0eQaU4r'9XGBKd[BMM@f3
p4lN[AmR`Q2MB8)jEq!K9,V3K4EU%A)*c'k9@%r)5f@P3'P8[9U5&mF'KC%L+2E5
kK9JE$b0[d9"F3e!3-NI"&fPjPF!rH2R)0&j(1r#cG[B#l8Jqk'f@KBqcTT2k%#N
+UbCN!p!rQ5r1fF$(H(P@%46cFhCV,BS"i[BlGMUFVTk!#5KBBMlHPHAl)+Ge+GH
ERXaMXMGbReGafSq3!0%X"&f,DS!3+lUe%c!"K4IXUUSMh+kV-6F!Fl`K3&KPiPP
MdE5UAmM@NkF)N@FBMj'QJCG664[(m0fDeKDd11FdfpeB2[MBH,[ll"4Z6lA+Xhi
#*U"#L$be2#ZYXH*`HS!ek3-ej5pj6BG2f-3cBXI3j*VbH)!RLC48BfR('PirDcP
9eUJV)iFU4QRe%59qZij[dr'#dc`XJLH1j@&er2ec21`S0hYjC4Cr,CmIeI%A[Eb
SLMpmKVLMqB4EDH*2E1*l+[Qf+M24d498%mq46582c8M@eZ2SVb0C'CT"!mQf!qJ
LbD,)`c55h5G2dMJa45&'qqeRpX(X'QEKeE10Q%99cc$m`0M@5Q$'$L3M40f02'C
MDHGUCBANZ4bMq%jSQFdEYFcr,AAjrb[U(&$RHBI!'HlQeQ%A8YiD84Ti8*!!pQ#
`fTj0XM3`!-'%F2Um0(#$HC)E``cMMGV!qHU"(*2HYG%)bKH0%E9L8Y@B#HT!9Gk
Nj*U$'$L&JHblPXK"HkV)f8BV!c&ZC"FqHGq$%9Dk0)L(Q`Teq[15,Rpd)JD2Mm+
jQ*1hEb$&&lkP9I'X1PkkX9(c#[8kNdHhMr&4B5[@(8qi)1XFaQ`bX)akeA$D4C3
mBf6*%LC)1HYPkB@0)Nd@T*fR(j-fM(e-LX$0*98`Xli!Bh9bC5QY&rSmi"2(V[B
Bp3FE#)ip2T,Zf55J&5(&NfIQQM2R*Ll[$(1EQ(-bejZjkH4SJ9F!$E#dTbcPS`,
h"ESfIaT'Ecd3-)),NkkbXcL8SXEL+#kMX@CRF6FDDa5Gfe$QBj6FYK$L(@8FDiD
b8p3NP38)KV)'DR+8"42%CFd&2,@QUmc5&Tf!jp5%fB![f-M[)%X0f&aq[@aS-1"
J`eA"d0#HC0f4Y3''KL8%HUY4-'cGM%()@jZ`Z[@Ui0cDNj+aiYZ0!0VZ*8$E$`L
'lHZSbEGG`-0VaPS#h"ECX,F%4rFHa0'pk`A$AZ#JHhf%&d9L&a,lN!$90V)dFVN
XhDP%dP*fhR(59AS4)i3%20`Q#,m-&k3[d88MBCpV2N'kKTXm4Pl(C+KJ5,3!4H)
jC$P!Q"K'iLV#Si)MX40pdHa)A%,AQ"ddM%aS0aS0SX*e8pCqf5(0)qJ0YB*ND!)
,+!hqQ,55*AXVQ6V#*BH#("h[b"3-MU'3!0mCER#kS51G$-a1Vi@Lp%V"N!!H3DD
V5#`Q-CM%"f5e(9EI*G2T*!j(c#!#CrJ%3`Ba6%B%-KabCMbJ2P6h8a3-fX#hS0K
KLj5H!UU64-682S+8K2H(23f2YX-0)84a#'i"#MNT5k8BVaD5+cK#&K,+#Ka$$J6
Z%Jb"fk%Y-!5JJHMF`-jN5U`Gf",65'6"GB)K1"[mB"1*Q`N[8m#cES)SQ0#[mh)
**80r,dF)H1$01"Nf6P["HEN22J)A$CGK&LR),ML$XJQG'S))SU!Q-1TYM)m*S`8
BNB3KqD'Vr!k!k4FZ12d+E8ar-!ReqF8,"[p`C2kV"6c!*R[aKr6q-B3h3($H1d@
85[H+"F1pPL$!Hk`G4GN&2*PQk6l"FEX9k0ea-i5ildh-$5AZlJ2LRJjMEKMCC(d
Q193r5b!AaN[0dY@fJJ-$#M5cid&EX[3J8R"F)4hJZ%*DVH&q+15i[ed`h#I#[Q`
4R#r2B`*G$"-FI@q5-hd(#)lR$j!!p2RkajbKh@J&1M8YAh#N(8%EP@kC"-FY*kd
`5pFh#0*eh01NUjHGCmr3a6$$f3,-pm[5@Gc(@BYb5CFM1fXEk0)586S6,$M1$#"
i9i`4R#X@dJU-`#e**TbA@JL1SJa#e8A[SY"p)"Z+KN%mI0f*mh!9ki,$'p#rKpH
45+Mc-'R[Kre2dP"C'Qb4(GSeQ-5TYD#,-5T@h`jIA),@N9mQ5q@JVRcFDQA4#dj
,'9f+p9+8mABF()N[4,#hT'HaZe%,dA,3J!H2%D6""c(T,MX'Yb+LeH'HcUak#)@
aK&P!jJA58AJT[0)9P)c4A#rJQe&H+-)N5(CJ'!J'1PIKq[fXf9&&QUAMS4+k`L`
p")NHQJ@S!(`J5XS[ac-j!$)m3`UjCkib6R0`T,3F`CQfJHj!Ik5KifkPNV9ET#a
fAUqPUP%dA0q%R9r2%"cA1j!!aHXML*3h6JZ''m4#0`T)V!I-MBk#imBF!R2$4IV
G4aU*$dhFi5XNE0p0aQj1f!Ya)"Vd&je0GjLPD!053MZ1D0++T(2BiMQ-@E0[aQH
S[HPLXh6f'&SXLVUcF`9(l4PdQk2f2QM2mA!*PJd2hd9*m(!(@J&b@&%V'&DJC8S
V0JU1&4e3K%NVKJU1NZ-%IiQ"i#p"X9!b(4KlbSkA5%&TH#NABVld!)0GT*IQ#"J
4)jA#ZNAKj&#42cP8K-+YY%'@$Z0@YY,MX[3FhMDP+'b1`FLPk)dAjb+ab0+EZ(h
1JMX$XiX%3rCpb*(pXH"iDb2"p&B3`I4@$c!@%FE4ki4a&2HA(L@RbQ6(AaX)kd!
GTU[`+6%Rj,N[4h$X-j'ZfYG"F,b@5G,AHL&G6S$h(a%FEf33G'pd*S`h)*F&GDb
$AX&jF"FVD3lHK"J(m9+dl*1P9r%fX*b4RC9fZUT+G"lbd98BAhkS0r'5iNqS9RE
+'qNUP&CbHm%Kpb)[3I'8i""l%M8Lkf"c&D%a-aTHq3KCZK!N1#ld)3XATK)APND
@`iUa2%H@6L`8("&eC#&L(a%aSZQN)CZZ-C&aLH@`U$S9#DU)'Vi*3fr!jrrNZd-
N1lDGP82DIKC+&ea')Xh[*MJ(Cp(jH)%2GY1Pk1bk4B*cB$*MkHBbPUHV)(Pl!"9
3[Z*#FN#@rV#IM&bATE&i#fUiiI%KU0A@bP*SCb6lF)p!)Gj`8KTHlaV'4piLG9F
dYaZi(GBi"`3B4@MS,"UL%30NDM(kaBM'ZH)1U+X0@5SK,,`"Lr#H8I()YDJ93AH
BE!fdF35$D95m#)r&)lNT1l*h%B*r#efK`N"(dF69cE,dHUVJH(d43EF2`p'QbBl

p2[,UhFpH`'pFT%2-dN'-3F0YR*8BP096GKlU3BH-%CfbPeD-&CeL+Kd#EikK3qb
L8q"X-A`c@lc3LLfH2dB@T9-B-iDE3NpKV0iefA&L&@P$*aB4&e&)L[+)BB,MC"T
*6d+Qdk5FN!"1Z`A(0l0SRYPa2)SQQKdrXPVCMjh)iSq,"'Nc"J&@bSl[ZK$1HS`
i,*%GklX6*,q'QI%KJr&8FBLl(AlqFqBSakeKmj`j,GeZpc"AT-Xeh1QFl()0)"(
jE*,h@i`iC(KL-B$F,PFraKbHf$29jA,G"-FGdQq%ba@ja&ApjijdIcl"kM,V%PQ
-L53STN8b(qQ+l-Ub'6@-CG2GlQIG6)!"B%'Z*jBlRC&1jh!Va2!TimqAZGfri%#
NqcHhqcH$`6$!2Bmi`TTTbaMJN!#T"[Bhe2f%dq8HB&-aV$m`,(,fX`,pmZ8Z*a$
miLC5Mh"Ef8r-FrCc$hHkR!cT!LHa9+5l@8L8blNF'*f'%F`SMmj0p9p%jY@-C0X
CQjM*l*a0$6XfR'#"m!X)qcGQT-JRKT!!fEG)RkdjZC4Nbkc6jGCNf!)#&&1YcQU
XSBqfGQeI[h*cqZd32k@6dNhjiF&[I3-rk[iSqqX6eGm[j(Crrk38jCr"k8(TbZE
j2CqFGqQhHI2R+jZB@j0HIbmN*+Tr80rK2`qrFR(iid&r(rj8I@"5Zj!!%-A3pEf
ZACA%4U(,JUj`Xq'8Zb%ZCmC(IX6KD`N,pYiGp2rKhplMK)EGr3JT4hlkJCAF2dm
FkbEFa1"iGpbRNHkj'Hm1bdLmQ2%CR2qeRUk[A)P"6PILiemHQqGDN[JVD#,aCkI
V@V+KKf'DBE%,24[RFXedZ9UirQMih$mjbZPUL$BBm!pF(0rbDIGrq!dBTY#r-4H
5d[H4IX2DT`6MTma)5P*kY4[@@HQ%IMY"1UrY!18$*8)jIM0GqBRdb585AcBSj`f
A$GcfpjC#jES,LeIf(R&9@ABL,#29,cA9'CL4'V,jZkK8aBa`FYcrRe-lT[k8qR'
UXM'eje2+PIH8pBr,Bj8C#Vi9NEqJ&$T#a0FjRVaRh%bp(455STK5P)LE5Z,h9r$
&T"R"JF&%)3!!(,*"4%05!`!`eJp9$98f%4!KBZj5rffIUNGjNCp,VHdSL[4FPr+
Q5'V$!G'#!NqYK"j&NHT+*M+Va9e(Y!b@4&I"1Uf2Y5[dqB)"HfAX58M@af$'Qf#
#S2&N#HBB6md5afGRFc,M*DbAG6$ff0M"a-'FPa#&IRrrVjqIC-MNpR+I2aZQ*`9
"N!!%34!%J'Mr1mXlA#kmH2BB-d(CQ(Llk&pV$QXqThd"Vl9,kFrC9N5BX`'9I&a
rTkDS(AEkcU#DjRcmS-Sa@5k,XH0hXQTSI,&1(hXp(kr5G*rb$T%a%jRR2Q19*H1
,ReZ1$l[RBjhRB`[-BKlcMQci59[)d"6Paa)ch'[i%39+,a4Pj"'fl*Jm@YF`eDI
Y"1MrUU$mY$2I5FDTmBIHr'42YSTVGaR+pUKXX2V(k"BqHE4qrifHLGqUf@8YT[0
336[#,9S&P[,m[(h"rXX0)rcSF10"Q&5'4XNm&aLFXp"`0#I39(CfKmmBJKLGqiT
j-S6Q[R9#M1+lM&9d6*KRPV$+2QUd#PcXTPGY[QJ4h#,Z84["UbTFLTGkfi,Aehk

I,m'&`iSc(6SZT$ZDr+pX&l`JQABh0,"V4*Jj$'$jq!m&0DNDJa'KX#3ciH`-5l(
[LQPZ#pR%22pD5)QNV6(Q8'29r'ZS+V'l)ZR*RY!*Be!iDKaUlTliVAYlm*JJMqC
Y0bdFG0VLiVm@LTTK3j,+&%mM@DFDcX!@-K2%&!%'9i-"apNGXX6rBZAm'HFZ*1d
i2dl%-QEM-LUYbF[&59MRdcN,04669b8HGkf+S[$D)&jYNf*KFH2l`fUY6'+""#2
dUR1KZ('qiY#*FjqGLdG14!eP6[(edA@VmXD0TV!@51DJ1kdfcVq63FGA(Gk68iB
E(fq40*PYGM4N''*i!-EZbpMDEU-*DDYC*+h1chNT+6+N11GdK'a'Ip%FYpfcM5Z
S5T4b0'hMDL%f0eSM'S0)lF9-+qCfP`T@UVir,#*90fKdCe0HK8GE0-$--G6mV%3
M*+4NqU`5dRY&GZ`q-Kl`)pjM)kPTbQ5(aAaA%mbH"SJT8eq9Q!&L!rEj(P)eIU3
XM*63RXJd,hJ3ecJ8VMGH,N#PS3"KXm+@b@KiMh8-5$1Ec0r41GPckm1'l&8aIid
ZXr&D5$(kV#-EVp8UK6kV8Z`c(Iejjqf61%jRZ1Jh32#`aYUa(SqlB(lH[L`c,Sj
c1E`1'b+qr6qPTZ*N*[EC"@c(AkrU3JT'c+ALU3@&R'MrjIJcA-bTF13A&'$Xhje
YqL-84!X(Fe*)H3feR"hb0-F4EA6%X&,-eUK'hVYi$HZ'$1HF[rRqJeMB4SJJ0@@
8pbi!B*4ijK!rE-fG54khVBl+b5bMVl@V!pEKckkAL+fG'1a"['a6U&3b'411P3#
U-UmKim4aUSU6aDkj5cK5SmDH8TLa#BLQk&`U,1IP4&(`-Xc),bF1##e`QA05Nja
D#$JkQPCeKe5QX,R93Km+6k*6Nj-(JG6"&"GRZ#Fp3+N&AdqGFJ1*!CB-8)K38LE
m,`(#QDE9AD4NX689J3+FXq95"*j+EPq"a&`M&-#BNmq1KYh'b16%hm54,+TqTl&
`hDQ(,%8BqbV663lZcM3a&A#D+ff*X',I3QP'V5,ep2!+*iBFBpYQ(K95RQ%Ha8+
T#!b`K9ZF!%RBFk`FP((UQH%9jP'[NRPp&%)(dR2FKTp51Sj4jh0#JHXiePq3!%5
(%4NUBbfjIif,F2XV)-jRiV9NMX4`L50PbG2fAf*!1ED`k[94BUB*GYQkA5@B@JT
5%Hm8A)Zb65!pP#hEGGTAYbZ%j&$CVK*maTI*Z-q2E0fETCMBKSRDMa[I,+@*jXC
G4jV4m4l@Gp8EC@q@hJ0(21e&$5%VSdE$4L6iMQ9H+cl,me#lXE9lZBDN8T)2@p@
L#DVJ&+9f409I"E08hX6S)!(Ul6P&*+,Qe1,RVc1Ql!iYXH8`9l3Ir5ikdUFpPLh
E[&4,6*9YRUIYA"4Ge$ea3&03!#aafiNS'22DMpBG4XIi`k8pfJqhP'fHSreS6pR
QYl5l9[5XZ*C-Erq3!2j1IAK(jkfH'leC48ZdGKZQAb1m!UpqRXrf`A@0Z5cX8TG
Q*``63"*lHdlCDbaKA6h(53NJ*+XD$kk(+&1fDfjBNNb8U-8'LlQbZjjTkZ#f$4e
XbdXT*3K4VhVEqFaV9LN6mc#QL0&`)0GP!rNfV'rrM``")-Q+AP!j1qYm`f%M@qB
EpYAYILrFBQpXr0P@1"ZhM6r8q-@Frm0HT4kJEUGNh"BjF)%KA8lCd$IFq-e&6Te
e9`0"jqT[@CfFU@!9hFiBN!"i&ZJF#dp8TVFk'Rf(CaThEZh()UGFf`pVM6qMCH+
(jPP4R**#@H2l*8+L-c4!`38HFV&fj#`QKh@YIbV2Y4j+a'!JA!r$mVUUTJ2Ff4F
Q-aFj5JEif#J'Aff2S&5eSmJ!i,p"B-`I6%"S%'R9+Ji*',"AV12TA5(ck&NYLkQ
FLXR(-(3MG4HZabTU&ZQdh4#4B6Cl(qR,lmbi@XFI5RbLQBN-5-4T5+##3`Mfq95
PKC(ZRX&9l'JZ[-81+-S(Y2,dM-`'FF$Zj%1MZ0SH(%G`@Z3MfHI$U,Gr+(!BN!"
)Rf6UDB!fN!$F@ip`HpY0Y0E3*"9i!14R@r@fdl1MJBYk"6qY`Z@L6b6#cj1a[UM
PE!ZqKh4r*fd'0Pj(kPk%SqZlk#jfrFCD#D8bJN%`B5#4MD%,V%KMRS3SMdE*Dp(
3(b3Nc!e&dl8%YMT,cDRUJ4ZF9*GRk6bPHEre#`D1dR!T%5H3!'aeq)DYESDFMRE
(iUi+J#B'd*!!qA)p8qUV0kdG'N@A(e$R$`3kfKCdq3&9)VeQM)61eYG#P6rJ8H8
)%%VXFMd3#0Y`mf)p8cEP6LLEm+Y0UGaPGNNS(9cp6[p0!e)kR8Ti(8#!kGa)lHh
[2FXfF3eq0XAjJTHJB!dLJ@YZJT&e$8MXDNG#9Q3V#,%$hILDEP+"pPfZ&H1ReR4
$T&[d*ac%pDkph$82aDGlhM3D9h6K%338h1FjR"T8Nd@S58[)hC*dI8Y-S6Zai+@
&j+4SB-(MrSU60[q3!2$T"S#b'fLrVNfM!F$8iU*(21B@Ik''ZMd+EN,hNj!!R*Q
CXA-Il+`eK*J@EBPSAEr3bb-NA'BlH0k(3)TD#c(Fh[l'K4rFqrX-BpY"E(99B"1
bKf@f5A5BPa,P&Q*lpBi2(Ua9-a(TmdbAGGi2lJdTBaHYXjPB%Bla,h'P-22jIFD
K@p(YeqP[jIA@&qq2'ZFr[VHJhZVFrL,pVAaarrAl1pq2eJ[B%NTH,HR(321S&3T
-HaBGq'VA2ZNbc'mc(pmE9hkDH"@QBArK+Y[!QKVUT&kRfKIC&dhUp8'PZQ&%jEN
bA`K%6L+-+1%[jX$j+!VSMCmqj0X6`XCr-kiP)$c$C@VdhB"D%53B2@4ea"mB5@Q
25CE&[FiCYXP+A%edE`%4CHQ'%B%@+3I"%Xq#He%*fHYmBrC'heAR$%-YCfAXKc[
((r+Yb'@RF,(dZ$c)9ZYa+Z6%mZAD%4f%E41H#A9$GNU8LGUQ3+V'HYAC(bjk58`
[T@%&r$LHeMN*BcUIei$QSH((p(aEmY-X4!`#QmkR,6Uk+-qeTde$SiF"60mX%-R
Q*iCYSNkF#&#6'XLr58+PNN-TZheMpH[q0N"Q!3a$+DJ2,iJ#*)Gehe8cA2,`Z[9
5QHpU[TIc*ef8hUcJlRe$HBL1BVPlC0m3cmiBB!$#c+'"2mC!kbbj5N6CTG4ad6G
@V21pQJ9lrd%,YbDK2V"3Q)35"B%Z544"-)cID8(-&`fq&D@KNb!f&40RA+l`AdB
8F8QDecBB+9-AQ-pme+ebX3YYG9GG,*FDEPbqq2Z0[YQad6UHIkZ5dr'Km2)bHZ4
A5&!Y),#ZeVE&BZPhT9$FPRjPJ%0N3c9*!K'#M9)ZGR4Em1JfJ+-"6(T)P+mj0QV
PqAaJ`(2bJ#H$!jldM9RkqIKAHZ-1m"%&3rGLml,emZC9r5PHceeVPV&pCjDjIAX
,Y)9lkRRr0rlEYK#Qf$830D$S`bAVS0BR"`qN[elqP6PUGP"5(3mP9Q4rIC&V#EV
D1CfZXCJGiPr!ZJkQ8Zf(EhDG&BcTjLiY3@PBPfY4e+T)U8AA51cXB+jhSkZkkj@
ehAAV$-A85kK@!-S9Y"dqPEX$+#Hd3ENp+'LpE#*I`5Il3ipCHI9eJ1a-rm%TRX(
(i1-DcrDI["ljMjMHK1QprS*PVQmVK)*%mqPdePj3#BcfH)f#Rrb[0lTF06#De5"
TBiqVLJcL'Si+!cGM8"Q$X&!'J6'i&mVJCJc'3KN-aL!YP%&L$0Q&-Q3C`p4#'DE
-GY&ZUDj$F4AYddTp6GDHp)$K+X"`PB(K+MICDEVZ9V,*fdNd8@La'QGG6)kkep,
KeF[2(H!9[*)r6i&DTI*N4NGhj6cH@a-6TLmP+"MYr@MBh6+YGBN1PbX%P@D9XSk
idAbp)[h%CUIME"9%%`KB13[8E(&X&-4&I,D58Kkl5-%fD#aIU0[9eR46`bP3ZH,
*qlSJe[VF@BeIfRRJb8*UmB[VZf0C0lpd9iIbp#I(1jq(FrZ,khYNCp,b0"T$&A#
H&ZprHhf[l*EkRMjhJV(DalAa),-5C)iXLrQd'qifc%DUBQ$a!L'V3L"JM$#!YHX
fX[jK@JL+&FX,"p*I3ZH4G8LA6ebrLB#C#Ajhcd6qj",4)I#ka9#H1kA,8"#EieG
Dqj%mf'4F*X-#kakiZ)Fh$HA$NEXhdXH0XN5cU5l4I,0V#*hbM6e$*1"Z3STP%i5
a%LL4hR!fkqK35ERmkIpqSVM@12'#@S'#X!TCch#',0&bC3Zrd@GYb$SD!J2bVQS
-b,-"eHd([*!!T`'hcRQA$(h#TR#N'b6),IG(T3U1)QZZC!J$pD"RG$3ZMN,"#&"
2@lkkHNV+kUQ2e&0RBe!eB@MGBafNK,X*2"J5@THY"fT@33PRqrd9lhr&N!!YdpU
2M$k&$0"0)VhkN!!dACcGQVF-IaYf(!6mmLV%BYAb1DBC5P$Fh5Z5d@,rT(pe*kZ
Jb,$U@SqDKLKKFP!bkqlH!4jJEkZQ`AlpqHPl`6lE3e2[XDNrBSV#Sl&G%AmLXM1
d-VLdmrN00,M%"U6$m*9Xq,rpFSH,4TmTLZR8hG%"6NN9pji*V[@D(-5#SXEA9-!
dG1iXjlhM+eh,*6@ZIT!!1(XQirb9!bD$P%N[8Ai9GH0c9Lp4jFpMHSNSIilT*B,
mH8B[LFLI3hU*@rkmUTF-d1IJPlKKPKIXV9Y!(i-(45k*9T8@'EYJ#NcHQE0Y))A
$K2P[9e!$VidkKfQKN[FrP%KX5!%c&#d+i5dQ#lR9RjJ[QKbLJmmP9A,l8Apc&J`
'8bc&aG$`H6)HL-iH(,P9kRZj0kkZMU+bS$Ka%pH*r'1@bmHqb3jKdZrq(K"'N3&
`d`-+jP4P80cd!)8j44NS0chJB8j""Xp0$k#B-b)$kUB(C-cTPN&fd`-mjKcSIiD
!adb)[9$N9rZ[l105Re8-A"C+-c#pNUAr21$EY-8$2QDDb#Q&Xf5'MIb9N@GTQ'L
i)DiRMSEGP,#Tf($Id5I1ABp5TDJmFE%AAAGm`dlQ+15IH2&SY*JfcU+TFG5i*$8
apABPd%8d8"0Nd0k-T*9SL(0HPr6qEq,-Ek')Zc-Q5LfNa3mH[-h6P[((TrJ(pk(
J96ZhFI%X25FcmI'$&++3!%Pb%HEHVlA#U#rTch-TpAT["j+)QEk6[EGJ"[lXqZ!

9P5-NE2R'cfqAE[`*9j&-&T)T8`q*'*1pUhYrrmMh(m4L&ZG2Z"*581$H-Nc'$NU
*&3CI`N-caSk2+D&hQ)+BkIaKP6A3VPYY@"D$@"*K%%C,a6$MP4rq!&QJH&'MlJi
"L&I-c#L'*TTRJNbRjY&`#j+6eDYkALe&U'29%qF"X+TZhIS)8TJ4PZB%dB*jr"Z
HDiKSlJVr+B(M+L'qj[i!DL2jKmdT(Z(Lca&LaTV&DMBQ*mX#)HV8r'DGb9i+GJk
,0hE)"ZFS$fG"B#p5[`M3CYGld`RcE%M&`ciZ!1)4QTaVjJ)"2Cb!Da9GM5R"(GL
-YeVel&BZUm&&8)4C[+E3LY+iQBp"caf"6M2$5Am9@'m4lfD*'0&D(LpP(b'2ifS
maMk1H6k'23a,2)jem4EfFF-cS-($N!$aI03-d3X)58hY[fH'I6CKB8HK3iTCJB,
9!fB#J%h*jVLDU*B2F&$3q2"6H%ATGBP9,V'+Ne@FV(+H9Fj([Gd6THfSNcB'T50
mbTLm)5!GpQjaiZq!)K$Z8`C,5UDfKk8T2$T3DFN-3U'jNa3DV54k`TBh,XihFH1
0#j11@a0332Rkpq*0LHj`X9+SQ'E-!i`j"@EPMBZC&@#GZA8H$B98r@+Cq!J2*kG
'$&ij(53V[(caMBX3NaM+I@GQD04$AUPre"KmCCC2MDp%!Sc3DX5SjdS!Q3K4-QH
jN!$*mBJ"&%'QJiX-j81QI"HK9(akEE6FCU6qr[ViibS(B&-[4eR&+'S!TeY,["i
0ar"6"4@EdU*DJJ(mU5b-(iBU9ibBr!(ccK3*iX'"!RjDb(35('CU2`M+BddJ%"3
S,AlRrk&20PbZ(G@8kQNb*%*a-C5"XVr-$YmV`H!()G'$h'5m$0e"eF1RVIYIi1X
LaV4F@!*)RCVM4HV8&d"U%ekri2HPBqR@I'Qq0VmcIc$p48VqQdSY`HY!4L56SH%
Si%Kie#&2K6DR'Jimk'-CETC4&QB&RM)4+e)F$K3iLhc&QM'RR1DV@5J4fh$cd+J
(dAQU9&i1K"4'+"mJ4'4br02,jSphL0)54KM'UNXJE#a*iJ)C'0JP#B(D5L&&**6
prbAKl$SEqr&1@J#2j[320dpf$Bf@Rr)83M6A1d5fm",rK58pk!`H+X1$6P[!QI3
k5i1$HG[PF3MTUej"b)Mfm+F2$m$T!*Z0`-B!i39rD3!3k8F@"VS[DrJ[f1EPPlP
jfDpbUG*fC1AYp"`SV5m,T-B5li8N,EKGTGLZf+F!CPXQ`'4ebIRfM2MPS3UC2rM
lIJKUDhI)`Yp'D#b!T(Xr1)8NG)@R1Q4i8)mke!b!!%@T)Qh[PS492k(der`*2Q'
eX5-S`em-M6*9RQ&%pN'KGE44k+8l6N%VSDM,K9JZ[ZM)H,A&cSlml69Y(qd3Q+#
4BFRTiRQV`ETLL!bb8MJF-&p6LP+!103PGb&VSh8RQ3NlN!#+ZamGC6RVD#0PSdK
`dH#MeL03,[4S!+S[CCa4G1S@UQ4fjQcM*-JFeFaqNePb2VNH3X[pl(-lI@T3BAX
Ad'1SE-L3!$`NFikZ4F(K9*dINBmV#kA8GC&!0V'B,qILa'*%NN[$phJkHUBD-ji
3H8UjHcCV8e(H"V8IB6p&!(lZXhb'+hK0F"82G%D!VV3a(9b49Bmmm+8eZ%M%$a!

R!UCaA1ii!+Pl91XZeh%)$KEjSK!ACQ$kRB-3UZ-)#%8+c(8R#kHkFJN"STH3!&k
A%!i&drr+mF9i!%NeY[%THYb6KJq)0j!!j[)6-`EqU0FCi4B&aYBk0bTL1$DTKf[
`NlHU(P8Z")Ghd("V)M0EQ$%q3M(#CJlL3$LS`QIQ6R)0D$)apc`h@a9mQ[f[L!X
Gai9855dcZki-iRVSIX8-VPUfPdm"Q4Cf45ZZ94Xq`kiiK)SjE-2e62KCBUfK"iZ
059CXNRc'(qP#GQY$ENI!,5-*dSml''KCeef-%'2`Q,&faq5Z!p*N6[31U0N%%Bq
ff6D)lMQcM@[cpp)fii9YKK!d)`Smb4Ch3i39jN1XK&ZM3(lA#6a1,&J&jX#$'94
F'F0-`3b5&JpDf'5d-)m'%JP,UrQXpR8mqF'eVl[SNE[G!%SY(mQGjE0FafZ-cq!
ea$@mV(`Lpb3l@X8b"ii&"YThmaRmD2J*$JQ'&UK-@F4`9C@8U9`X-)9#!G6Mi3K
H+LAH@&&kB'`8@md4pK0"m[b2$IT`+a@K1'rHc8@%21'c!%(`idiM+KFZ)mI&eYd
m3T1SU*J@lQNchGaZ@Kk-SJ&jYi4,16k!X"%)84#NK&[RDLfY4rqjbpNEYMabp$G
GeP0JF)GMa)"*CIp46#N2Al3HT%B5)pX*3j!!frZ`(K9T+"r4fBa3*Xfj!2rZJ20
(+b&4Gqa!X9CSNP#f$!d3ejd[S)Rkr3G2GKQ"aJT8@hId4#m*L`((pHMaEX2QGCb
,'VE@D&&rp*V4jh9r%VfMCbdD2Uq+p!VTUa!HHAY,2(da5Z'X+-V,8C39UCFZ3!d
)r("+dZ0R1C!!FMP6A4Adb*C%L"`aABMV2dLJ'9U,d"!K6!T9-+kpdSq`V&hdq$i
F%D2VP4Q[31VGFV#)pDGCN!!UQB'`*#1[de"#k2S'6,Ma%m&N4*kNa&r14SlJJ2I
!2)#1VRYCNbL+#RkiM$McGFCmKTDS(rRbb#q$K'4e,q3L3L$8MP#+8(!Id#9[jaZ
XYP[AEleBUkJ*h[6b[@Ki!ZeNa2#LB-)2"9%4'(VQZ1)$8SFYY`8%Rj!!3i8$i@#
eGq+KfkF3m[J8d%iP4L`SIV'E8$HXeLR%6LaX+43M+K4q#+r58LTkA36MZ'K#RJi
B9FLi'XTA+M#pIi!Q`he)-kKMSk%U*ilD0"#5eCFEM385eJH'QkdR$DIA`1*Dc!+
,C--$%@L&DLX0G(d[a9&GdbD)%HjNpkGFp`DkI1Gr4YIk1lr1YTTpGY!RGEE2-K'
!15[m1pX!5AD*9GiUUGjJbVMZhk`EE[DVfZ8U-fmdETk4JBHA`YA$fZBC!L!T"KL
3!+!8T,233MPH02VYcCN*0&08HJ!G*TDRLJia`XfK2DB,iJlZ#1ACac(24fA)E6M
FJUK`-e,IL"Ec$J3C2&j($5CQR(`PM(p3JY!r-Q%Xq&qA`qbIJa#M%20p0l42V1+
[K+j8FU[E5*ABC#%b9U9eDRIYMmCEpdFcD6`0q%VSPY&[G!@@B)-fb5pR,"3N1EL
5Tkd,6"Fp9lCK+&dFMTBBd[-1,bXlLJh1Bc)$@)pjTaQlQDAd6D'@Y6[#Qkf#-q8
pSN`5%mm%KV"Y4lSlISc#Q4'LC`[E+2QGXQ@dXG($jhdPJ@#qiQXCEdKDQDm%LB*
YrSMMF@jZal5fRH2HGSir""abH)JIUIA"J+4'A`N,*',U#N'G3DCd&C!!,@B06V,
J85q*DTVf$e$!JjLT4'I*SBFA"0ca&"kE&8mI3N)KbPJkfkT+E5mPr[pjkGd8r*L
hSaNq0YSf+2XMQNUh#85@H0VIj0iJrc-"*N5LH%I`Eh@+NJAr@-I)p!0a&DNrBdN
UDhYrRmrd3F4%q%aZQUjI4B)0JM3K8"S)ddU0F"E`Xb3N,ZVkcIr([`iT3[3bi&6
K9*bpjDZcPRC"YN&a(D%A-5a1!B4#q0AqPIJdP9Fl68JTa-JNRVX-)iBP4f%R[r1
VI1&AqF5[iMrJU&rP!&#C(S60*JrciYSHcj%8S"JPPT*9h0R,$K9cpU(lI4D2fX`
BUAN0mr&[8)ccEk8#*Y,!p3-T'i6f#K@m*HC-mR5i&ZLG$Pp&*4qZ!RUhB&[b15b
)(f0ip6d(lYCjbM`+KP5)LN)qY!IrL-L'+aPPcr)L3X+aF+i2`5U4m5Y-$"2PEEl
R-3KYaBSdA9&3r#mM)`2#E"Ak4cAlJDa85,k9X1rP,HbcP9jVX"[80FX)!KAbdCr
2cRcd`Z9[frpmXHHLiprrpq8rRYIEFr&$#L*m1IhFNE['rm'a9NI1K1YrrJpAp(q
R2k1rd$hqp!XeiqmmrR6V``FIIZ,i!`mmX22iq$mYrEZ$hHpFkeVklZIkqmppH*m
HIfkh[Z+j$hA6KBZ,I[l1Mpr9rdPriG3hYKr8Klldfi2k2laliF@Pc3!!2D&"4%0
5!`"TA""9$A4'%3!aihj&IpqfI"R,'NBBFFBdqCacAI1mbk5D8Sc*XS3`4Jj*4k3
4FhAP`*CL%RBM0bIPPdZh2#qJ8Jp&DQf[YaFj(K[3T#(f8%l+i84-P5,e4QXa8'U
T"bR'L0a)-D8Khr[[lr[f[)RBicfrjcmET#FTbS8J#*j!0[8hH&$"1R2qM5k$!ZM
,(d)4lqh2'I)IERbb2HM)J+$8hfhcL[jr$1"6&Ae!f-i9*eIm)'i9MrHr,QD+a`9
9Mk6'mMPEBBVT)(A0e(BPpIPBd2&Upr6kL'LFY@P%+``d[RdZLibI#%`CcK@23`%
Q!--U-J@-BhL)j$jLrB,&EGNCD@*iAbEBcM&RP5AHh-&9QdJU[LFqjK(R04KX1X9
YA"D6&RpX'a#%kZ&U`0cdKdTKQQdjG4*hC[$39CXrH0`6r0PbLmETYb63A9)FjT'
fE6ab-K)mEQkkTG+DD8jEkbUq#br(R1M@N[bdfh'1biFE[eBKcYU4K@bIP1e$GJh
,pYPa,$a%l&9iPDkU8&bQm`JDV"ci@&ReDAFLEAiP&,b0AkZ2cd+K'VErcIihkA@
p@5&f'"0*e5N-9LR1@V`d(03eIITA01!m[*SipY(S)*J32,U,UjT0A2eK4",8dRV
PQCM1M30Y'GELYJbRPXa9Y!e1"eiAQdA'1cG"MGcf)f4f)L(9$$[DXN8[J+,+X,#
1bKLh0lCPHp)cdSMJdT*0f+[dT$%FdE3d6f(+!8Hk$!5a,!HG(Q#G0N9h+UJaHI[
3D%k%Ha[qACbp5GYfL@9@&FLmjXba!"e""HH('L%+')I#ql#Y%SJQ6McNqqfdbB'
f(d&XZHE%!5bqSB'f!cK#Chmh(3LCfCE6"3#[mcm1$P(EEFC!f@$bRb&#pAHMqAB
l$N,+A8-#J*k4U6K9'5T1,HGR+RYjp&C)mB[%jF-"8F@4SMK*UYHXdeEM)a(jm&H
K`REL2m((H4!mbK*ZGhCmdfQl,B0lM(JmEZ[!Bab2)cB4Mj0ir'GE1akVm(MBPX5
M&irGYNJ'N!"Mp-&-`*)!JS"bSaU%1Q,Tb0$%LpZ1")p$qGB$Y+B4UpTH1"Q*1hI
9KYF+QECU!X6irf4)`Q[UD**-KJcT!pddX8irBTfZcY#!r%HN,J0rAm[pYN6c1Gj
NmkhIaVdfIpcT58B0m)aBET&0Jd`@8'B6Qbqmr"B%#1l(VBTl[`LQRcG02F`6%(I
DMD0mZlMQqr18911DG"iDjZeMSecjT&Id@eflR[5f5dIafFHP)CG'ScYcGGi"X6K
*jcE9CfNIkP"p3m14#iFEErA%H9HhaIp%MqV$bbEfXZP4,j[`XSUpV(V8bbUa3`#
-"%mbm,#0ac[8-aE080M31#BdlPA2Q)kS&+%"8cpa(a"*%4kD8$R$k(JeZjfM5Ub
bb8kmX(K4A4Fj+Mfb1+SS&EFD6!i!2DV35EQ0c6PbH4mpc-5i&NZf80r)6dCH+0f
5(UmihrU52E%[fjN0m6)F1,r$CDZ146ENL2jp18K16H,mrTIX0i42@kNjA1B5)fM
1AY&8iG0@'M-B2BUL53Y`56M5`kma&GZej$#IjC'ZEUM6rq$Ki3j#I*6mlNQ"lRZ
#EK`QMJ63r$d`lQ2*)cfeK&BTbqTDU2-1mb`HY(Mj0ZK3Z#UhAdf'Z@LT`XeS5H,
fQ%A'l9RE"*TSp8d-f634X+6+CP*,Akh-Y)@mBCjPUf)C`ea&PNaCE!L41V#$f,3
33+BL(BM-[k%V42bfchL!4"5K@eI"aL@N0!YjT)BPTSCD0$31mb!CB3iTK"$1Aa0
HLAL9Z&USK9'bR6+iLf9iN!!KQlAZEDVX[BUMb@B[IB!NUY$B,1ScK-B*eTK)TH,
66jp2I-D[UclFaY3Qh&DV9EL0U1fiGDRMF+@3!08XS0Jr)f0D2B0E[hSB0ipU[HF
c5$+RF1Y94h'cUG1iR95eZ$R9-66U9*IJ&PGeZ(@Sep&CQNV'mP'fE1F+3e!cEe2
Yl2-cKpDZeArQ3p&Xq#M@2qTqkR#I8ahXBiJH2Cb[C!HMJHaXS%leZR!!DEJa#!C
aKpC4HBq@(6#QDT(9)@ACN6@SpKkPVA5#q%CB$T@M@R82ZZU,H#aD2-a&6Y,')VQ
*Ua'Z($UUMH5ccV-XiicXAN`[MK4lj+-T2")TaQGZj$1cZ5,R#@fN4##BaD%RQ8d
p3`XLG+@HNVUDP"D&1[Y-I9rS6(dIRpp32kA1+VC&6MkK9HHHk!dASTZ5F!CZJA!
k'Ihd#1,2NJ"HPF*KP[kY[99CVKZJLPP)C+N"*2KaHq*Q*%"Ppp3#jFi9S6&#0,)
al1&CUjbAE"UK%[p6TBiUF0Pm!5mf3qK09GBLZITU@RN6"1JGE2,qeGc'Xkj"J+i
&H'm3ZKhBSb`J0DE-PG+Eb@#pQ!4Z('9,$)+fk)HBAYU@HGBRKQrN3&JU69&CCj(
9*&S[80k%Bm1#q3rc!"*8)1Epk(9-Em1`E'J-9IT*Up,Qh)@"Qp$dcH3,riJrLh`
!+%01G3lc0)Yhp@J&R&lN"3a-r""00IK*i#H*(hTp+ejAS2*YYpL"$0Z4*)f8*$9
hdUHj!NGF1X3G!!N)kX0F,UbSF!paXa(XP`mr66!,-+5VU8I5$Gcm'4MeApTaFp#
2SE0Xq[ark1a0["E"R[k51QA(r"11f5&-Jj*NDBR-c2qreEc0r3#,0#$'clKAPA'
6J4jaia%!QBmPh#Ce(,FUPUcE@E)H4l)Z8AB`i*RJIN-&*!JQ81M1Xi`1!+#8"V2

5pMB2f(`'G1J*B@)$5rKaP[!l'"MVe&0GPqFZQjYUA*qi22Pi%@#[iq`e+V1MP,$
kF4Y32ch+*Z!fT,lrRA0U[r)h5cXYX,QTiSUSlDP929JXRI+hK6SmG+MpK8d9lVK
f$5RX&pDmrXRVb3l`AUG18+,`UkHF!'eEh#RE!NBiG$NUfc+,3`4N"N#bFApT$'!
%F&PUK&X$SHA5P9$!,1r[YM44PZJ94k#F@Ej30iE204r5)+cE!,UGJ0(@G6T[PbX
-A5,"KT&J#meU),N$B[(4199Nl+eip'@[LXm!q`c3TbFKM[4G[UF,6B5(3(r1TjQ
Lr`D@(SNjk$bR"La334Xl9,&LQaT%CSap"X!`)[0Z9h`+TV#re,MAI2L*QlfD3+*
T$[J[YLSlm'TMLqXX!FY59*K&B$Nh!P5Dml9iE,l4UQb-Dd(#2p2feR`SPYpl6Te
Jfa5ac8PRCNQH6BBh'6C*Leq*aCH5EQQLDRiP%Nrl2R+C@X&ZTA5,f$dmFJ-EKL"
6LDSNb83DQaH6F#4)RP,94BZ9c!4CVTmHcc1S`c!SL*A%S4Gm"C1"#TBUT4+*Nq*
)6l@LL1'&ZRfAib21UiBN(NjL1r0XikakJl(9NK!ULF,Vc2'Pe#1EJr4!D'-Y5d*
3Z#ceb!I@i(!9Ba!EN!"X)dLF%5J@PP+b6HaGLdqUN!!056$5N!#KQSZJ*X!J%(j
#8X*"e@b4h$NJhQ#R4h[83B#d(m#X)dFEqNH'"KR6KJafA!kS-"`B6Q0)-X')"lF
BUf3')lQ8@#,R+,&%2U0U+C+2fl14i[D1b$N,#EVAHfSMKGJU#%)*)j*rJUY*5KU
4I,$,N3GE$VkGPS%"pb3YJYP2a$%YKEU4PX,MBbq@dNX3[MCmcHaIU-2dE3rDm3h
@XDM[@-c6X8hU@-c6XBL1VBrU9QEGVQDG0ZNlEFV6DCA8DG1M1f@)2H4%0aB5P0[
CiLB20cHYP*4EpII#`BNY"KK"92%"S)5)f"%ZV,K#&6E%pX1@5E%M8Q+SFMe0d8h
818)KFA)a"@MEFQ%V9@dDS+e1jMU$+SBqjPF5F!#a[KILU+L@8eAX1+I+%!'Ac`"
Y$CAMm6d)lNj(CC`6m#fi5&hKN!$Y0XekRI+HTHNSQULG9'8R)!T6!Z,+@CQ-Peb
"LRFja0mX5KC(Hm#mBJ#`[cTP1ETb`2%-l+r01j5&cpAph8,9,&A(*FTD+3Rf'Y1
LP(GhN[+!Q0'#iJ&8"SZSkJDa5Lcp90&2!3#"6UQ#lBJ8@jSNe&$e+X4q6cXK$$1
(N!"d$JY%$KqPp#%-EL!V%RST+8U%*F8JFb$lR1@-d,hU-A5[[[pJhD[pTZl9IN2
hkKc3U$9[p`@fhk[II0LNA&$X*$K"8FAF+XKK#1CNM8l(3aN+9#kaSE3Crj!!I,M
jIeA&(@)j&XPRd4$,fA-h-Cb"'Q)iVm2!$68M$`IKGYSd[c+ZaE(Tq,k[%m+-!jR
XKL1aR!&4*E)CDZl#+F&SFX"XaR'2X!0H%p-U,Z(c#PkHBU5"6XZXrU`5bl##J!J
r1c,8T!j#a`d`06TZa)2NTJ980)QXak4AcaCi"56Pc)6)EkkS)p$%)(I5"bP0m91
0M(I&cVB'IZD%(i1mLk9SFG!2X6Bik04fJEdThaE0b1!"*YMb6d#5d&$DN!"2b#J
G(q1-UG&)`Qebb%IUj@8[Mr'jlNFPHDlHD3FE$H6elTFrr1YHG2)T%Qi35T)X)Mb
%dGJB4i,pP#818TT-JKfTP5TLcYHK'KAa820Upi`IdrX10jDf'@H&DK8EZiaNFCR
8Rh%(+D2'C[ZkE9SNQ-YR9p-8U*p8J%k`iK)Tp8T,aQCY!DQVbd0ANI@AX9P$3h4
&hCG!(GYMXpf-kPZa@jl$8$V&(Me8l)F0&6[Q8*S((3TEarCF@*BZr)cJai'IAUK
+M1*a8Yd1l&1kS)JXai4V8%)kS"TX&dIBUcjP"+q5dUYH4PJG25JMq((JTi[)215
E*98#!r)&p3c%BkKiMkrS)$8M1ZYJC0F`mrlVq"!Y)Ab)iQ98fq@XkH05dmG"'K'
*C[*`m`-[8h)"'[B*#BLKZGY)68'*ci"i"(8B'3e`2!fT+ZPRU)1I0#JVi1hB"k5
TC5a-(`-ZdCDN9j5e`0V9(DhJBLS'3Q43JC&k!iK%,r`M+F*NS3jQQ(',CaLTJqS
c6NkU5SEi[B)!ZXJ93d8[qNdUQJ5hM&#'#PG1ffU'p!XLHX9`G1U#bc-FDX3X,#h
F1(f,(*@,A,4aMeGi(6@!&k*%9E63eqqqflA),BPFK%#QmA-B2aj2SC4iFU3MR6B
(&lPS%`pIC*Z`XJTYK#(QFb4%,h*jT[0-d[9RHMVbC)kE4669j-RfQjX@ZF4`Y!U
@&%2A4p8aFAl`"caK92G0-@9D5(Ld,AhFcK-&e8KBJU6(Ehh*HN@chq)0*5cqArS
Y+a-*KkXUiR"Ie"V9Q%NjP@DD"!5F%#EZUl-N3jLX`H6e%8XeQlcI-,R$S&KD5-k
d'FUVh42VIFq&CZ%4$SG[S+k&V2!"h)PB0E!&MmmJHiICZp#cQPZm-fR2rX6Rm9`
(`P5"eU&1JlL!kJj,Yl$KTPRrrTriRN1LM-T'8[%eM)r0#Lm*P!dZYmSQ!r[08,A
!J*I4G#ME5T3b3Nc6C!a!YSHR0HYI9H,9YQNSjp0H+eK9FapF16"Ja6C1P9dU-GC
qcN6D9$(-@1P@T4,-Y%kT[*&*e5'1@AUiHAH%f*fBJm3#!%C58-02cf,BAJJ!bj8
&3Z8i$I5EGMejBGrm[XG3e9b-Maa3NfmAMRclrh!IASAd,'F6+H+HB%`Qa&3rUIr
9$[cSm(-G!&FP'B%5RR&c1`S%H0NYk8PL8X,`b85c+SRPpK-k5'-'4bUJiHZ+I`c
hlJZMXq6#6mXR--C&m6%Z,'Db4e(!`(&eJc""r(MRKlE)!EMSEIf)h0VhR6KSSB)
@V+0I'-R8m4V3$bT1!h+-cCip+1kl*aH*EP,Fpd3ALMRNBM-KXfmpf#KNjA)IRc!
ReV[b9i1eR*48m[,T3Ee+2SMr*[bhJiPZJNSb`LFpp*!!KJGCb,$r$FJ+k'pl#'V
+bEPZ6mKq$NUAFj`Hf['M`FmN6!S6F&hrY`GrMBF!c%pmUKC)'k5SY3f0r[2a%cm
50NPE42A5J5h'$4X8Cc&N30`(`6")+)8(&ZTS%0j"'NMl1C8+LicD#rrVk`8)&83
R)UF#8kUTUa'!'[id8*(&U"0-Mq-Rb%MpMB-p"ESJ00q,,X6S,M!e5&0TbLX(Ij4
IB%Sl93`&'XHTX620iXH#rRP'h[S4a+52iL03"Cd%Z#3FaCqR%XKmYFDTr6T8&L&
q)*(L*r$a6"V6V,[D[m3j+AU,5CRlal15i$12`cMSTD)J3%meq1#4ANIaMJ5B2Jd
k1qA8GR8$m)e,K[PT-)1Rim2m1E`mM5&2dR#46I4TIPP3id$SAJ#PqFQ1-,)bSFB
j5Dj@P$J0DTc)lQQURJ)3DMD[ae5,GjUaNHUGqU4N"6ZhMb@Q2TDBjMJTB2Z45%j
5)RQSi,#phl!NY,"5FVa154,XjEl#4+8EDVh6+-k5R(TJaf&(&b8LqJ("iDa[#p%
V%(9"`4H@C+5$2me98Zei*X54VXZQC#+S-*!!G%Ek+A[#h(6[0TjN`iPJCNFP&8G
3HSLM#&qbh`@'5FHUYb"%FadqVl221+[XJP6CrGV3$5QXGG,d'0`M)#U0M"SC'2C
PhK)pQ2F@G)DIkdaTZXp#kZ4*!RiB[H5M,aZ$eKiBqT%!b+c@PP0F(IGE-adI(,Z
6CQ5IP+G*L4*rBTH%TLB*66($,e9,j)c)&PJPjpMfD'CVhHEqEJ'45f*EQ55f3F8
$8bh-hXC,8'hpeL6`T*ia#$`CQjNid!I%kF"2lpI*L$k0lT!!'"dPU@HS`S#3!$M
)MJ(KL!P%JQ#84)06dB,4Nk1#B&63e1Ii9C+FE9KKLji(GXb4Nq`5MCLfV`iQ'Kd
FHj&3%U&!C+FliQE&2TiGjil2aFJkPe!-j%8iZ`[0EAF[b4Rj5F)S9A9PU1U-C1b
$+@Im#mY6Z$2(4JCZVMkPVpEHT3fXRN@a1M++[iZAEi!X94E[HT!!q&qjDYEjihj
ap1`VSSML5FZIE`aFB3EVDqC%*C%i44c0+#l`FYUXXPGMiQMKYiZMA`80KIa3&5k
rF80f+3S(4NV@S9VRCqAQc2a)2'dS,$K"8'@iHPEdpF(!jYaPL6b9+IT`I(@Y+hq
cmbe5L%l#6F,QM'FCTT!!di6&Cc"Q&jb#4a&0XdbG%fUf5*AZDP5kr"1RE'PLl&%
C`'5LiCqBUm326%VcU!SrGF!+eBB4UUV5pCNRr@"B6BU2mD(b)8%8@B#U8I`)D!Q
G,#Bd#*@i(iX`Vm"3SM68iepBlNPJXTq-Kf$%GV2LM$"U(VXj9-"J!5fD!S$pVJ$
BT$*)eNH"!A2h!HY-$Pd*X-a9Iphlj3mTi@(4la*F&-Naq)"kZ2NR(S!GUQaR6dN
)l1JPS1-iA#HDIpiAf"1idYm0P0p1JLqQlM8S8p+r0`mZU*la['i#)Cl`8a10b`L
A6BJlmd4[KBX+FiMHqmRYTSb+r8(B+804`"iUT)R+4@![B-bB"9[jmqI'+FRiR'N
`Q[TY9+#cR0J+CGAKjXdliP#L8)CKd3'q"m3ND`$RrXd,Bp3J@D$"+A69MZlVKmT
4%!#1"8mQb-'BP'HX5')U&9%ENXPG4$V)CZDUA#d90+fRk["Vkm'SE3#+f3#R&Kb
,hjN1"a$&$IFJlAHXbVd(1-6('UQ$'JLQLjNUk9iJ*dj1&ZY"F'B)&JqSk5$ef4!
F-'[%cS44bpZUL2c@YkbpkhZ+Uc&)$80M+1#kZ4dUSc5,*jd(Mk2`hZ+c4QH9,@L
%FTd+JPedL5SU(K@#4@5K6T2++r(MX[Edp8*%4hGVHdXUX*cpaTkBPbURhqA3JST
lJPdXi@M&i`'R5'V%-BCF5F"[KfQ43##SRp49B**2l*3Q3A%"eY*,+VcIQ@P4m)'
UqAFRiAE4r22DD&B5C!4!3S@61-)*$&QP@i3NJN*bQcG3`9-)j8A1hT**N!#'8"'
2p"%!EVN,E%H9")*f3TEYLINIL'%*#(hQle9Q%S[RQFJ,KT40M@J5R%4liejbL1d
)hrpG12"9ifFlf2FL5iJjr@$48'!2$1'@$CKB4-"()'EX*3*Xk6S'b+depSU-(3S
FAkM,`1)iHmp1MrSGliS3YPH((EpTGZA(`Ba@fX3N%r*X)5`8QF998Ej4Y`p'FI[
i[PjV$eZSR[8p*6Y-3,cQQ@-!F5p-J%QK@-ZDM@3#T)bS"X&fE'(q"jDaC%N@LJ&
CG!a`Nc1%@U"QH0+hQK*9NkdGT&BB@6BTVTY6U$&F"9F41D!Hb,40jThSe,+*R1G
iV)aS)bc4V#,b$*9(*CTe8&MS@!'*$8)R5$4Y(E-@'$4XR@c*$31lp31R`0ec-9[
bdjKFIlLjjLPKbF()#J$RK%()58k(!,PT"UBq"UBh@0&0QKUMjD@PURNYcq3N@b)
RU@)pNA3#DkCiVGP"j"9!YfDY#A4VYK(SrXjSp%F,"A#@BiA0$R"8TYXL&k6UG*b
fEImE9I(2f*F`Y4U-YAkmi[&cN3X!Q#BXI4V[1mQbH5fb1UJje2hS"XcI1*a*ZTj
`4#i)blKN9ZL!9aj38p5K$ZCXNKiRp8&*[)0l2,N'4BCH$421+fc89L`4P$#G*+D
J`6R@6Ep`3*Z4*N$pd3IP6#&8#,TP(X(8#'%EV'V4aSV@C@mZFMPlEI,DE9!i[S&
(%8205FIa3"#HFkC"J!d*@d(#E%*9j4-ad)V(lGJB%5mCjI3f`DUKJS`NMQY(Yle
$[SDEQ&!PIC+i5``m-C4J$l00l#49rH0kKR*qpe3ZNV[,`,BXQ39aGFPH4@Z*26m
HFjM##Ma)mj%90f&V'L`m+YqY&`QphqULT@$)9XrSQ0chP!X'-)MHbZSIYT9`e&E
@SQTB!6Ilefiqaqd++@VE"XlaAU8-!X3&mrQ&RS*E$E'Y5JAQ#f`!'jdNPdC5Q8*
Xd,mF'[LmGZ[E$*3eH#%XPhQ5&KEXr0C'J9%(QbA6jMbdaEm@2&68JA`,260TY2e
N!HG&TJLNCDp`DT'ib-M@'4mSQiX0P(Q'V@9c`c#qP(N%S35SSjPIGfVR!#V$2AM
C@qC"#)lLXMQBmQic4m"mqr!L(br-j#DK9rH[(!T6&e*6Re!XJ36mrA-3'9E#MC1
-B+Q'cJi4ZUQR(c4C$HA,+TJ68`(XNqb!%diJ!%[lF((CbE+$Z1@@T3qMQl+6'$c
A90`EbBN+U(R*R!N%TIRlhjj-YS@BLPlHqGX6UmaUl'165T3)B6VN)4ZB"T!!*E&
*(#JlZI-LEVNlYh&"9B`AKcUC1T54*2%4(8f[$UePRG%Q+Hc!hD5XBFT*9FL+F1Q
K'3qe`NHBM$qe9)h!"FZ&+9MmKESCZ***h9#4+p%d""@8*B8GQ!'0e13FZB`,M!V
,q,-d6&r8-+jd&&AGKD(3hEJRNDKUqj+4%h-rMi58(XDk%`0AGf*$e1$"K(qZfe3
J9R$9#i&G!c"NNaX"Ci@+5AAjr!5*lN$ZK,#GH1PR$JEqU9+S-Kf%YS8*#h@1G$p
F2ZY$T,!'f#AJCZFMC$ej*HiJT$Cm[1d+412C!Ul41LT8aXRPp-VKjZpB$5pJHVX
#45)Y$AXekCNMCp3V"4FAk$@AKJaHS8HJq+V$M8UpD(dXaE,VF@LCkI(T(lrp%J4
e2(l8[,N)E"`H%pIl-VJ'KdUBf$`"H&Qa'Qr"B8M)TklV43,5rZkcP,M`L86Xe#m
J8eX5D%*m6ik#)1DCH&r(e9MDlX[cX2a'q9FN8'qUU'YfrD[I#[F6X3p9jDClE`L
+&8Z'Z-GkbHLhpJEkVYlJS@3[epT1(H$TI-m#T6,B4`8G31MV5mE*`3ZQp1Y,EMS

BZRpVYSYPhr(6+bih&3'"irhe8#M(&FrZIpfkUlmAi6i5*bT*25Vf3He#l(Gp1T!
!MD61H5Y+m&YVB%4%kd#AXJ!hU#aJ+*`4VB1*h@rXG5%ib*,mT&&'@)mP*-jkI1`
MR6k3!"b+be)S'4@Y!Y*FQX)"rQXKb*&lMbpZa3E)bI",qJem+@S$Ap*[3-B'[N3
EJ*USAXcZEeAU8B4PDAmRLP-e+8Y2V-9@eST@D5Xk-U14D0V9(D-K)2+)Yiek"EB
EhB&GZ--9kSp9LEfLFG5llSV`+S@2U[YGZCpf9)Qlk)9Gkp!+Vj!!I8TA*HkKE&-
B"f5rMf-8p@-S(-5[&*fi%88iZ1JI#T%c*N5Dj%&%-SP"$AUecG([i+XMePf1hp"
RIhmr(ihdG8,Xa'GZIbkIMTcCihL22Y2liHm8kBFV(3+*)'0HrcaNR0)bpLm9`B,
ie6C[I`LCFd*QIA6QFd,Q+P0QPcd*%d)a9c,XciT!fD'988!DSQ-5N!$V%R%%MZL
)JI&%8"8ah1QU["B)lkM,GJemAkQqqbZbqjCclk3riaDcdZrBhK$,H[Vb&9F0h'l
3X#lJhj'*KYm!-HV[hXVpXR[lHcmlXpNYbS@DTaS#mX%N,@emkTBbX4`6-J2P1h,
B"+p5KJPHf4d8cErEiKE68Jj90`bQ(GarIqYPeqEA44R0Fp$m'QZH9#V32#Ql2rq
l1aFXFS[K!llDKSl``IEl'ppbEB'CYp-9++pd"p+N#3PP-bBNC2HI8JlpSXBYqM2
Zf0d3pcrpqMAASVS#@d6i,'8l'QYNpjj,lhEFmVPBIN5cS%&AMU2riJhA-jPL&YY
SPV64%!SLEH8KfGeJl,c+0RU)EA5rY0(hp"Zpa#C-+T@B-#QlPh9q3@8EpE'0YNG
Yp**qSk+b&me&fId0edFeY&&'mM!Mq68L1GZQAfSH9'V32#LlAqqpp4Hd3)cS@3,
4iFk8ZNB+,F!fM!H*q$&P!bE'C,HL[,q6EIN3fr*qYQ@DP-A)Rl8$(fc+S,)58`C
PpdYcYfbNEE-&N!#P"EK%#e"*S4R5T'dEP8fBB*6GRphB(cMQ!Pc5,m"YbM`d[Jd
NqZKr[r"VkFKX+hJ30K1E@[0",0N*0fNX49*DLLA+ACLi4(DrpU1H0pMf$l(Y'jC
LVkkmmj+B4BX461l)CT0'PA@B0#Uljrr5qpJaPU-Ffdi5H9'dU&jf,jeiiM4EKTY
S'4i@PN&Q#jE$'Uf5hCAD&l9V2KH6KEGMq16"mc4mB1VAC4))RjHk@bQlimqGqMi
MGa8MGa-MpdYX@H%)MU2QZ0cN2##llP[lhVE0,T!!1FR)V*()I*i4lM`4$PeZPpf
,KK,rJj(h*L,[``*j"B!0de+Jf3EC(HR9l2[ejq*jGX6c`K'*T'cC-V&KSF0eXV[
QqGeZ4XSU4XSQD60lDFR)H8`mAjR*$VPCG[hUeeqGYm8&%LBC#6@-K#q*5@NlbFT
VV'Q0l(VXTcrH63*%!6+HCd"jAL,NAE,lJbpQ,FT,5)BiSP!"QPE)lP9rq1BPfK!
Mj(Q*N!#[#mNMLT!!HfAAVP1D"ij"b()Td3NERbHlYrl,I@Rr#5(,C(IUdrp@6`[
)MPLZAfS$)3d,8bQl,@FMDiL3!#P9)!i48L"1@#+1,*&aNqckEXI)@d6'p#5)3f4

m8dMUIiHQ1ph#-LZ,rfKR5'q5N!$HIGr&*R,%Y,ph"@6@C+rX[[5rPlVC%KpP5e`
Z%HmhB[R[A3%rD`B!,2lrh`j3iU9U6LFlpYMh--*P"FTIG!A5@$-Xa,,lPb3C-Fi
6-3lHI[rE)-FP-I`2)#pVK)6acXEDANSqkC0dl2ZN#Z&RVN!@Dl*CGKprjVp[CF3
kbSK9VNm@jh(`-'X'3LhprA%2%BU10*MPk,4h-N,*JI-['Ji1!0li$j[-M!$R'G+
rhB$dp86#%XEqlj&hfE%RkGMh5BMQp`BL9F[ZfZHrYCL"c9%'0Z8'p2ic`qB"@RF
pED`cN!!S)$ZQl&2Xf1q*jrr"F'`NHIq9lk3aj('HJIlYd[)+aaC)8#1lepa9m8H
'2)K)iIXZjeRB6E*lpqrqHMp,ENGCFLXh9CAka8@LR&fB8Nm(CmYf2Xqb#83#F*D
pHHB%3mcR'DMIEJ*e9jed+""Ke3m#[Ba-id5Q"r5!lXU8L)"&kHP3[Xb@VTdYR5m
DA355f8M),c)eY1akqm,MIhX'#Dj`2p[!S3,SiMbD*PR6lE)VpB89If6)STb4l+J
*@ELZQ3Kbi[e22f!N'bH52D"(&+iFL4aBSRp+lVh)d%3l3a1qD$34+-HJIMES"TJ
XRPlehhjGL3AIcaEmN!!*6EJZQ8#j,ZGrh-X)9mi)Gr3BK%-#1pY`T2Z(%Ji,965
iHeeH`KR3!b1(3,K9XZ[Ie"i0%5jP2d-2KdcS38m1J24KlrlR@5)VCkMKU)3DSJQ
#K(EV[L2C,('-8q*i3%!1-MZq2Z(rhHV5H`L%-YTar2-ifYYX!rkS$3#%1QkjqrG
%#NB`@5*B*KdI"!XE`2VKDlrq#T'#,D9I@XT,[l[am`EZrdN$ppl5`*-30!dLFD@
"PFMJjN-3pUZfZhHiM'&V$jL#bXIFITiB,ca8kAl-G4ZhpL4l)+c@T2-$+&m#m9S
PPcG5QKFHZZLkflhVJE*0ZdSR83a2H*cMiY809`S2MING(acmjPfCC@lU0'JFj2H
rPH-+CTX2TC4[cYcV%ShjI-19B(JZZmaYH2h6YqSZQJrT`QFZhBN'+@K`d%GG'"S
il(Bl03Q%Zh$Jf&6!1-Nh["3-@l2,A&)MYcRddfeeIcE2&"ikH*iQ"klHpe*ffb$
Ii3Uk#`m&`hdB-1!)2*[2$5pqqP,Q464[BXd4VGA`JK!0[3U'6p'NCrIUAf'3!+f
C&r[U`-,eJK'%+&qd2BVKB%S8J9hPii*#4C8P03%qq*9S4b1*3Ep$BST39%KdQ6*
BBD%ETJ`8&iVkG(pNqRK)%rG,%frN2B+ihm41*5V&r5D@Lci0M"NqlM"P2k3*dT!
!#CG*N6&,+K3BDXXfaDqQU)(``GN0@hGF'`a[[REC(804PJ0U`)qXZJlrPVUhh%G
JQYeq"8PYNT+DH-I1(20-CFl8!aq1aSe*ETi*q0HpY--epF"[4kqe6I+!hclPQ++
-pk5-Jb&dKScIX)aB@Z#1&h1SJlh)L1jJHCi1jNNC`[4hKHRbB&U(rfGeeMh*2Bb
"XiPT6ed*T"fFC3M[Fe('Tm`qh#-rmCTFrj*$j86U2GKdl2MmDTK5MZrFHe+1VrR
ChK1,iap(UF3HT'RJG`@E+ZN82M!Q"E)$B+9$09)jN!#L2Vl,SY32T,cdpSqICUS
p"R+T63LZ8(plLI)eVZ+fQ%G`qbS2ijE+rEJYifQi&A%C0i9RCC!!JlE2%`XHKkY
"-Z&(BE([l4bh6c*Ni-hhKc5f@UK'+53@!T9eG6XeYV[J%&NK(D5T[cXUf'!Y1bS
8,U`ST+6``dCp9&Lre1PNTK5,EjE#*%r$0'@$SU$+(&i,XbJ9E)IM5KHF,#)#)-(
)ZMLTj6SBP$Ti%f@U(#(bT!B+16(bHf"#AV+*4c"3K!ebRAAH1dH',h*,5h810)E
)m$Y%UN9b6%deMUBGfTCVR%f5SAUacHJNXmmi#k3+-T)"dQk"%h6jYPHBJHLLFk#
e"NjDEqh$!c+b-I%Q6,c1*JB0%iG'cGpqj48bkf"b&8fQ&eZ,-DA,,N`PP*UK,,E
im(!'AA$HE0SDe0e[Q[RcJ6Lj`TD5)p(3D0qZIP)[PQjG*X,p3LN9P2Z#Le&mYU$
l2$Y1Pq!qLf!Mp465Y1$KM$d`2&de(-rdmT86q5I)I3e$,FecH!4(lRQJYDER2TM
IB!bkUDHeKKaM25RB`Lb-UJICX%iFH8("`G$C!R5QfIB+Z33R@qQ)bS,md)13!(Q
3!!"Pkca2-$R!PGDDNqe@N!!-5!bh+4aJIbY!'%TPS4N0#XF"`i)ZCJVBiSfaVGp
PYjMGDZq63-a[(q,6%S!HK#Vj60&5-[i8T6BF*%9R`bX`k[&f$!1(&Yi@2MPZa3-
VZ%8U-ljr%rp(@#(`HAShECiQ#DiJ44LfD+PTf)ERk6D%!m)8Xp8iX,($8GRRQN(
BJSf$MXU[il(K"4b80q43f&!mA)C,KIEHBM4-Kr[%DGE*3R`meJ#$(Jli#P1b(d4
KIKD#K!@`*KH8kSD$+$!HM(r-+TNS`pE@e`R-',K2Ne&ApC+"89'fTJ3rKTRP&3S
$E##C)3P3*KCN-5QMX4K0E$&'fI5XJY2eNqXP-qA+VGm9-V'8p8-$VCdXm`dm1XQ
9IZYA5(bJBYYiL-"%ZTXGVB-"`')pQ+4cCDSD+)+fYKe(Z%T(#,8U$hZDD1%$)kc
J'BI6RfpV*J`bXb`imLY#Tf6b-BAT,PTP-,Dd$c6H)5`b22f,fdK0(Q-Z5DDL#pP
!$`[TT61Q[Q#aSm'VNQPm6*L#m,NCp)K#!ZNp#iT@3D&H8V5+XKbjkJ@iS`D&C6+
VAB4URU0ATQjXNh#K5F*Y%L&dN9LRjlUPjM#!4Uic0a8XRbdK1Z(```fEp(6#32@
F)remJN!%bP[C5BBSM60XS9!RrDC1e!@'6(5@)&"PaJ!!+K8DCp-E5kX0aa@kqpT
kjPSB&lDPAU#Ki6+X3a,`jQRk"X*BQEBk6QBVflb(4TMlNm`"-8&Cqj%)e4I5+H$
*'#1'+K#$(0Aea!p&%6pT)#UD*"mk54&#rL'502@A$dC5r[*r4P)6+&(!S2X28-C
hF[Pr+4`+m(5"0%0NHP+&L43ZqrkeV-TVY`4CPjM5Fjpk`G4a!6)Pp&Y8SlHB+"!
`*#S!KeJ`!!F#T&af9&TdR`TZbe@HS'4!mk+l-`"6M5&M"NfaX16+iiX5eCC-MbD
h'2H)hZFR%1cN$6)($ief[A,L)"P+Ykk)cmC(N!#JHS*G'HUq2F8T)*LAA*ZfZcc
qa2MmbN&qi0$bDiN`QE[D14b(JRQEG)!"UDclL,HA'CV"56f0(hU`TMA46Ef*Y)m
jCHhENjmc20,fcP5e1S@$0Na94l,am1BM+EbmV@fB`SSVE5h)[SMXY929i9rMSAQ

U1Nf$KieSpXff(G5XA'NV3hB3fI1QUZ86H0Jl9Che'KiUd+bTl5jUGP9T@i6XYFM
H-PAY[482cda9qjEJi5Nfj'jTb1h)GL#lHUUkr#8mV*bU6Ll(`bV@V&jUYMLkN!!
))D`BBaeN9'#YNh"Q'fJl"31d&XMbGX%a`Pkmmbf2&3&(6MPccMVMIUVd&DR59j4
Kjmir$rIXr!ZD[IC)F9[4cS[faThAB1SED&[Y+0jj!)Da+p34J@a@c+Q&HlAmK`m
qbLaC1c1`mbeNDLM63N&RLJU%TC&%8`TU&T6-S+*G6!3d8(MXhqQ1ZbR-G@#3!)2
9$rb!JmhpeK5-D2Z$9rrG&B4B[c-l!%-%A"Zc,EkRhZ,CP)BpNDIH3Q%+I`%4@#S
1)c&3ZQ1DqjV)d(FX-aq4-#Y%Ki5C,h'!(q6%E25p6YhB'r`bIL+&2(!mi"C9UqY
a"0J3e6jkm)VU'AT)LQSr254%p43pD%4eMKj#)N+biQ%5JSrBj8kk#Cd8VdqKc[B
MqGl@cb[FGlNLf56@"&iFj0pb$h*VAI-PFYl[ImPk,AQ06EPEF0[K#'F8@QFkp#%
L,$03dF'$Jrj)E0![Sb+-H(6@E+(E$V#i0A@4(2SB0)l`aqV`Ffd3$&,&03T65Zc
`LhH)@IXZ83LT(pMpN4rdqQ@iXkid$!43@+8RCTJKh&aqLPhLi"6F)I'DI4afdU1
2'JcRFXr19E3B3`1Bh-aA%c+(19raa1,)SZd-aG3QDM`8Bki5ZF2DRDZk++L#3Sp
Lf"3)RPb#id+SpU3RJFBh)%MIJZ*k#Y$Y4h5%MA!RAY[BQTX2"e[UP)+f-*-i+qb
fU,%eAfT'J48Jp(d&(mb&KdcC!fh1`mh,2f&19JPf5,ZT'm'*J),"S0'1LXbZEPB
mE5f+d!PGDSCm3UA&QUbJVVZk#iBk-SJ6'A!C8Xp%EjV#f$#@TPN*#54#U)R692`
*#dD&Uh*Bq"Z43ZJ8R-L#`Vbc5-ZUiNe*eYa'di0`)"qMUNl,E4&Vck1R!S&IcKX
iDN`Sf1NPCaPEKl1iCGU5Q"PSQDCKEUTi40X#0a*Nfj'%"PT&&*dPJ5fVi9[1aKB
(Fi8&)6&"+aDh1!lIJ1JA-BCRF%N)L3a-q15FR0CiFZ[YiQc5pFV"NcB+UM8M*9a
Xjb!QqSh)`03U0Xh($PJqj)ZA#)`J'lk6(8@,LV,UqblE%Q*m@)&a&1HJ"PK#(iS
hC%&3MZA0!VX`d',IHX51,R$iAJZa%H8NZP*PaME3+fc!c'Hej#J5rpJJm-0j!3H
ea#%bqZ#-0m'1339f%+5(qd`G8`#aRFX-de$S5("Seha+&mm`EIk8Ff$R-XYSBQ"
R%99-$YFBYb1,N9D9Q*&8aV*pPa@Z+YjCY28j&+(ek6mr&S4Z!`',lNV-iY!kaUV
Sp+42#"FBS#h502ZhSJSdY$X(@LBXV!0(FFZ%@,bcr[!06j-"N3SCV"X[)`",GQ#
PEX%eH*SKeh$Q01bP#dh3YP[qQ@kYYe#6!X8Adp84S0pH+VD!N!"%a+6,M%Q2Br%
d%Y-k6KFeNY4C1VU`Km#L3B4Vq[GkYFXL"kd3DcB96&V5j5mD@`kIL10)-B3l%bd
*)EY`S-)pV'djl%N+'A-ZqM4F&Q3S$1!Er5SjcQ`Ah#FE21fcYL9Lm5q@iP)M"m3
ZZ%P%S"6*j6)BIE!D#$p5P"qL)[*i6-e[JPZkV'`I`!5P0N1&i%&Z40XKq-(j0XU

Y53KP4U3Me1+!`S13!+@@a%NN0aG,Y0H*S8E&AB1&f832HGJaL(+mMN3jJF$'m*a
qL+)DJi-I&Fk1#i81UPK4ar%mD)cFJ*LE1TbbU$KRk&%0aS8'6+#&DZ"*RAfJTBq
Ubp+$*1iL1#[#Qe!4G4*2Lh$FHLm3'#T`r!!Y2KNJ&LCYM0$'Rrj#K5iY9JV`&Bf
!R+kZEN0`L(&qdkk@2S-!EhY)hI[aiXN4r+`QdFBf3N@#JFDKiU"LHN1MT`rm5-5
"YaKR@6$1)d`XH@KG(f&NibU%prTqA#`QR4L%HJm0",CP`M!8%P!%5ah(-(G*`i6
kZPQad[a(Y+hM`qFL*eX+FI1dP!cjl"EfkV-C,J3%%"l#QG*$RI3L(`mI8V([)8*
iB5VB(9jUeP)@82b%44iq&cl58N+!""INFV$+!2MN$D"P)N15&F+N)hf%3JJ$V40
Yjb+jPZZXq5"Fi"m06YPSh)ZYhdBG`%93&N"V+)ff6#(lRZaN3-,95GB0[0d%XV!
"Md@-1`9L,%X+a&"2#F43V83-p6!4Jm#-[Ia8f,Ek[N5'E1NK4hTa#KINBU&%F1f
6,jT)%YQ!`Lr4*$R38N*(C3@1IBB&J`0T!6+9R`-$P"DeP-FJ&i,,r3I)aFK%"-%
9J9J5(jH1fPK+46Gp4*!!VkEf%9XIS@4dka)R&paS%AMQ033jf)D#,'ANLQT`3N9
i"ahBcJXN,KS#Sd5!H*4030AlF(JFSH99L`iZXKfX)-T'5`"$2fi*H(A!R*XXij'
5)JAQYj+Gkf$qSpY'MbaN%TNXYb&"AXH2$SHXCiNkJ-HLQ!2,Z"ir[m3@NQ`,TH3
mrU5I&HP+3`!Z)9bB"NHFPSlBCcML`$QeAGQ-flLbEV*UrV[Qb#C#mH&0,LMAF'%
Y"2+``T@*A@!,(jhi@0I96CXh1,ZblXFX4-D!TB-fD`[Hh&ZdEU#Rk#NNfGd-(Cd
E'QMTabFkUD)#i`P893D#j`U&95cYk#S,J3qD$##+PlZ0Xe)iK!03,mBN9rNB)4i
+@h+M!@lFA"!$IqX5a%"E&e5$-DD1R-C#fCQUE4#GR8Ea6$!A5S`&%$LZ60-(h1S
%KrbB&%UJ#jZE`qB'cE'&(YEmF4BSEJ`+Ji%Ihf`Ki419m*16q,'5`rZLh3A$P-i
51eH&UQ-5,SF6#"e*!Q5!&BP(5$H,pa%%b@l9S+S[EY9!k$J$KGfcjQ4PMLh*'S'
K4p+02G,6GYQ3!)&L2!LrSBB%CBMkJL"d6(0b)M8%!%-3%5mHR"#V,k2SPdb&rF&
'SlKmL)SCkj8lXe3`6+C3*"irK6YaG%%!('JT0&3R)%-Ab+Map1EYKTV-aU!HbP@
rm&#lB3R6kpc$P#Uh#FS*9[3ilI5B[ZJa@$$mkqMRNFk@-dM@ih4T+5#3!%0J+4*
ID@`T0(D+ARV`9,%QKNpL@5p(ABjP#e@S)$YG-S-%ckCdRVc+Crr9hlk*cl)L&J`
Bf@2D$%*#((U$!8d9+H(R,e#f`2bLQKTQU($LAEF,lX+SC*)S115(fr$(F1(0C-U
EG@YGCfZY[953!!16YT!!!-"HE-QBq%4,L`-@$Fd3b-VrR4jFVS00!QLYJd)CKI+
KC*BbV5l+RPVT*HIG%D%6K%$U$Iq+A9KVN!!blY@aSP65`CX@XB2lF!%5+bXQYBi

1E!C5-!(M-V["j%[LKBkFH[08k(%YJZP"6#!hBUMaFJd+-i3-Q#h+TA#9+(D#4k%
D5CY!!XiPdB+UF3NKS`"`$#L%%-JbZi!#Pe9(SlpPU`cS%b+&Pa$IXU8frF@hPMe
-50''iN[,(SjUQ*5#83(kSaVA3LA(80LbbiBKk%K$@5c!Gi3TfA`@Ri$J)458-%5
54Be!)M-@D0hBl"3f#KGB!BA[+BM##HN[p6)&#IFETl#9[!MGLB0DC(CSQ4Aqh)L
X@U"@(1T4U(929)%!#McB+R3GAU32m),3*mY5"D5f,29B5+hX63QTp6R4e(,BhPT
8"H6D6NLYL%Y)lEU)kB68K-d999('3&H45)KY@DU!f)U#!hZ+X+NL,L!f6(QF,Xl
fTj!!G#`Y31(EUe'"jf9dij`a#+m5'&#KmR#l*fPJj2(T,F$%lbl!a1Fq#"1IDf$
LG@%6'ppF39XP8Uh+%3i9HI2Bc(ccd[q-Q@qq5f$Qml,3FFl!c&'JF30eKL9i'B*
'SU"`kGa&D)`&+Y95b%!G!HBPaYjIBZbpEYmZE25J%'kCS4DBP"3c!)p#ZU4F4[+
L*%C9-G6CGb8[5B'"5Tb[@mMj@LCKqLCY5amC1[5!#A"9bQj1!3SX!*a2jJZ%85m
3f1V!cK#3!#(`2-*B,V-VkpUVjRpJMM!@$BbDS3)[[fLU`-Z[#4Ai-B%E!'#4H3R
#F'akF,"qG"+)"[,5jF)4H5Q+fX4[lPhfcX#HCDm4B#,C[S11%0*eS@k@XFR,hJ(
*-L!'0lEd@kC*3*!$QH@V13V3lS*$rrKSf[Fli5V[25YhpDcY,&kmGPHqE1eCZkY
iXG5i`ikT",B8&+aPcY+1!6XaS!-0F2(9C3J#lY-!GCrFYkX!@1B,B#N1Y1BM*&m
q,Ck`D$"kE)TH6S!2&GdU+ELXTBkSCBdaiC'RTNBjJa3aYFaSH$Zl*19)pjiCI0"
P8LhpC%`M`%I5DbaG3S8i'0*L6[0NB#0fGrMMPY15fD`+KM4lY#(0YS"-B0BHIGG
KkYM@N!!R1(F5&j%,#UacB+$PY%bUbm%@edP@A0i)953cM'UBZN'M9hI88p(h8@B
UU!HkV-q&L$)*mH5@iH+fcVBaGV[q5'GE%460#9**fiXE1r$cMVfadBkI6G&9Y`8
+R[FTN!$Lk+Ydkk@!Jh')#-PLlQql$15hk)MD%4E6RTp!d43["3&lUJk&f[Rhk[0
V%DcEhM&+(dI)+(-YPYDFH6B5#cZ+'bm-q3e,5Fi)IZ1Z"aS[S)TQ"C)20crGi,5
@e-qJ+2K+,30&cbFj#+KqQBRDceSQcA"*YIL-!beR(*891Ck)k"pL)HTf[p[96DV
b'AP)#0mbJXlQQ2+m1@fF4!4R*SRrmbZV3*!!VhrHUmlr(%%6i3lLc++3!*%`Kj1
63#dTjVpAAq`9MZq*G)5&6[b,k2#kY+%drI%(fZaJ&-fIe!Q6D*!!BQp-QNLEhBN
%jIm,*Sl(Hk1f2G!fMBP,2XP")F4QCae02)Y#M`C#J!#T-`10lf!$de*LI)H4)-K
)-!%5e1P*J)"TBKDVE(#BqhISLC!!*@6j1jdj40Lc(R3r(Y9p"`CIalV[c00j3I+
@Xmjai2YYV(11cXZP,G45dQ'1),aSZ8#QF*Z`lA!$-IAmC54N-)QhVU$Lbr`0*2G
c84@#l#MqfJhmT12(KCmVKaXAHmGQ-HNFFi(*LmaMe)'c"fb6(B!kfDN&NcX*jaD
AVB!#M"R-I-GJ*+qCP$Li8'KMIISM5"kY%e&"!eBD,UY)$MT!5B8P6-fY1Sd3me%
!"H"IFBA%A`#jm*P$BF`T)mlTJLR"emP94DV3E1,!aLD`LIAjF`2&'jZ8e),UFFB
H)DbD4309e"S8bd*PrX#)@5'@PGIN8E62)dGq),[kHbp58@!Di+c-ZUd[d'dp&DN
UrFX53kAUTHC8P3CITdHkj#0YTL22CLKSdbGe(MmpI"NERhTb#EQC*3)S*2C`$MP
UP&5KH1ND"+8#NUeq$@S'aA1GJ8k5K3p!J[fAALaAQ0`((Pd0%l-Z#,HQ`R%ipYM
1"pUZSm"eFGYe!&8R(XBJ#+BcN5R*9(CN2Kkc0VD08DJd8p'JN!!aVp*Y,9XZ1Va
RcNkh-mFNZNmJ$`9JNS*QV6V@F@qp3G1@B*SN0'8JY(-U,K@9DK+@0MD9[-b5M3E
**Y2Q&m-HVj4d-Z2FrMC2IK%P@4'kCa#A`KDreF1$3$)4U32rPh&$FH8B)pQUBj1
-%FaN+L!c$&60YGHBN6%XQ)5MM)aq1(k*`b"-ibq(HaVA!l&AJP900,j*U!Y$3-R
GhdeJ9VZl,eT*bJadA@pe[8A)33UkRd#c5P``qZ2S#c*3q$!fZ0iJR@Gih4j#-IY
+8U&U6L!d%#lEM6,UiK0d533%!q+$pp!&%8,-"1L5$R1UVc[kJJe3miGXi`bd0)b
m6C+5(8'4eMd&)P%Aikc+Up+6*F&#T'%L61*&TJP&bkN#c'"Xa9!2Rj!!A('U#)K
!B)3LjXPlJ96-LBV'&KX9pj*8fR!Y2Y(a`a%4UqCY#(C8hpmp@pak#m*U5DTk3L2
X)X&dQGSN)B5aU`Kf@%pNYPm3NQp,iGR#JH+@3UAHFmi!U$0A65!+Y1#GkH&,N!$
dhj%!GH@a!98!8$428GCJ`N%#h,%'VKd$m"U3!!DafRqS[2H#AS5A%&0a$KQ2'0V
`(4YYX%4IjH`&HN,#hpikdmYA!d%e#3eD#ZqpJ+`PdBjCR!-%QaTIHi3!F4XqI)e
P!-@f+94[*!BE&[V4c4k"Z2cSKQBHl6+ai['S#hZ`3)S`EFKd'5#`Q@piHXR-)cM
9GB4MiC%8,39Lk45GjXk+ZK9")F`!L%YUrj!!ZA2%$qLd5Q`lK@2XA+KMS9HAQ%`
FNZ1&+HaBT`%0$B8K1+m#qNrb$5Zq6kJcNNQALfE"15J)Xm`c+3,(,6JH3-dERH6
)!#*el5)(XM(1"-,jI5-cC+4E%I`B'kYL*Pa5h1)#2k8(k(,[TK"+21S2!!!aL8&
%3e)$!&JL$e80CNB4%#(MlQ(rEEq@U[6QcehIA%rcq&c996e9@lfJH5Ble)d"Zl*
!Vj[*l#cbjl'e2+6MqQCZ)B4`4I[jC3HF-L1Ldb21KF2%QQ3mccUCabe%VfGK28)
i[B%4`[+X`fM!3*0ZdZem-alVlprIrrGe(5#rZb6[*5mr!"9hAL6c)$)L%L(a!"%
L"PpVP-PB$$qbVeN!+5B(X%N)SYRX3H!NXqKm-bI",%8XPH"lmrkmEm))rVUc)1-
pA,eYPL'2D24)bp"(KYjZD*86pm1&LPMX4ppKaB0JVPf00MpV"2[Er4EICiUN%86
i'PB-T%ihN!"&B5"H'%MK(!,T!PpkJNQF,kHf)#!Xl@q9T6JL15B1Pj(AVFmkhZJ
Im!m!E(r%(mI2HA9EFac+SM)DP"EI'%bdX[JI!Cq&q8!X'3%VZ"`QA$UCK!QE-0h
p-"Y%eALC0hZ+rp%@i@)C@UA8J!a16ac`88YmM)Z2U%EmkAI01*!!4SZ[jB",@I4
,b@d!L1[%j4#)bZ050Bh3VcYcb[(P&NGhLQ(2i1aaGGGGmB$fkmk-mN#RrS!fAA,
!CAV%CAbFM+MbT!VDSkfbCd1(VeQG-$4EUfa'-0d-%$P%d(%G3U`kAmDBIpVQm"[
*BQeU58EpMhLDe9SUrUKYkB*Y3)jEaQd`h#SMe0m&J#$-ba$%q@KjL!6bN!#aFE$
E#kJa)k"'&LXUd0q"TICX$i-4`qqa`EpMmC3B3C9!bT4eF'RTBNBK#E`8BC`G)Cc
9HE@`I&[hC*!!8aF)[lr0hGe[HF&T,)F5E((Qe4iMfGB1d(LjmXKajC%SPJCfAam
0pRFC)BF&X1l*qb(ed02[UPT"HqckC&*Ci"F,lZdbNJ,@*`1YB32P-,+3!*-Dc0"
ZDfpXppePNd8#85Z+l2UY1p*N@I!C1@QfRD9LbNPlfpP#IMM(`83f-LNa65@Q56'
GA1i#N!!`'F#P1Hb`-QJb"S2pdqZNkQiBq3U#4"Fc-VcLjR3SG6-@mb80+Qa!LfH













4bZS"3rU)XA%2UkBDEdjD$jdY,(QA(l)B5`5X-EbP(E)!1UNl,XpVJ*5XI2&[@p6
8dP1a1Rr@*8&qZTGe,p5kYBCZ&KC50jShML)+'k+EHE'*P215$-1!!SjZAQKQ*FT
"-F(p,,jdd,$d`1*#VM+p`%3"m3BaYG+dEJHXReALC!46-c'G%00*U4I@ZZH9`UV
+SCLqcHU6bA!A#9immSJLH#P[8b(j@%!qqfKScfqcFDKl16c2aI#U4Ge"PBMke0%
3Ec#,T!Fpm*ji`'hqHJd5)55`(I1mPBD6@bhBG!Z,&iEAEH4cTXI,Pb&Jr04F6SB
&+$LP5GPfPMIQRrH*`Ra)p@Gbd[!NM94E"iYE$3QiN!!,IK)Ald-PZEJR6A4T9Te
KRL+9"-%p$--"Q!4SCI0"90#ECU*9J#82,23,A+8-LRchf85"9rfeLKQGSI)Z&l0
5U2aK6"5U4kr+m85PhD2,ElA#k('jU8ZZJ03'#m%EQ)UJ'$BT3Uj%p9Y`"+TIb+Y
BA-KrbkS[6kXiT6@qGNLTqQ)k4+dR"KMQZF1+!N8"86,dA*ZKlFkFk20cdK5Upp"
FB2cG2Hd8r$!cG#@$K)-5q&3C5dJ"DGaGr"dHcBp%QcJ!#ereDX`m1CIQiMZ#A&c
qNallYFMEMhJbek,iUEJ@a)p,[A34"I2`aXN3U4@)+rB&E0UHN@V[NDqUEbU[9Kh
jUR+&mXSimY@Ah-UV%'hYDFH*9!G[d4GZ3L$eVc,Q0E5KDTL8&d0KGLjXB4$CR#`
GYc9f6*F@Y$hAM5N!AECYRB8VZ3pM9@-IaLVpADMqM64PmaD%"P1q-lm)%3j[C1'
b-LI!1%IJm3#V9Fq)@R54KDC0"SJXX6K6U1S&hRC"UZr[kr@k1mVVr,jHIfQ6mYT
la'Y!X*XAP*FKBMHHCXBL[I+Q523j#Ul#U$5l@U9pjK-3%19`%N)jNmY"GS56G%6
i$,!GB'+#d!pmI!L6,,2++GX5Jr5HX'b(9X0,6%$[MD#H`KYdPk"dPU[J-Mj%"lJ
1Q!SG`jMU'jm-6pT"VMq8,3qD2[1Ff%$#@@)&#+F*NlB,dm0LV5L+lTb$b5icjY'
09Q3rP"cqfe#*-&F')66J+fP9#)QCNIi1!)04lP#'489#KDEYq$&rH38U3[X)kIQ
T[`YEPH$26SRV'Nkb1Hm0%YkPcG(e(0J[EBkmJdR9c`mLU39cL*clq8'IRBkedV%
Y4VYEiS82RD`'J'UYFE9h(!'fI8&'XN,&L656k'4@Fla$T#Ji!H3Brpl"qm,8rKF
1mBTAa3'B8fQa4JE'TV@+c'bF61i#M-qRhK2-d&%PpI!N-pD9rr-qLSd94IHX&b'
)BIi%Re1YNR19P3ZKZDGLeHSi2TMmiAjSVM+f6Ph8Lf+fS,@b`BM$Lj1lkd2jVA,
1"JDe1TS2aN,jFYbU1Y%&+p2!m$SAXF9BhX$K"KHdKBJYX8U4&[RrqAq4rm*rd52
q#bVrDIJ[J2rdJl)@T*!!,-(9KQ8cR+mH`4q#&QS89L6"JX+J06EN2pZV'(,0Rqh
GTb([j03Z'r*rCp(*b+hK&L9*9jI#i9[PG!92IK"Ef2&RHr(!m@%F-aG*Y8YC,UF
0R[aGE-%DXX4L'9QFI+bqV6f%"8lZ#R@p8f`ddJ+)5cXH89em'jCd'e9R8X*-q$B
)pJ5JZA+VUB98UbD9fi"U6EAq)b`Y9VHJ(3qTbH046K2%eXAU+J*JB8)8d&ih"N3
hP&[Cl*kaXI1)adQGDa9e,KGe,KpeV[28ZD5m$(,A#-Eq(hLEd'hrSrqUFCA#llS
D5ShqRhkTT*YCHH40di*(a51*lZ)9Mcc$UIHAlcE%,U'XT@elE98PZB*-,SGK*+0
[S-GbBMA-RCd)'aI,""@)5B869j[P'iM(T$V"N`JVINbLX[$jY)#(Nl#Q[9@qb3i
Fd5XKb4#%&@5$%j4m-m`[PL)5ar,K56SmUNBGFI'+PN5+hpbphTHd%c!6afX[+A$
c*0+ReX'8,j'*-)+je,A8caiTqipI,(&5PbT`a0DrFMi@Ne%9LFH[j$%*Z5-mQIY
34KG4J"X'2&iP(3r`iDX)Dj(-adYQFVDFj"6e9r-b"(E2p((B9hN88li9")5fm`U
c'HFN!XTJl"8QHeP1"rhm)`D09k"3l%DFB)pPF1%%mBRC#UIBPF+6iU3FZhALid%
FrR1IM&E$JHAR)'F'NcH3!$3l#&55Me0PG$G)hFl*i'2A!FcBM#X2+bc#PjQ)6ia
*Z(CZ"2Mr5"a(F&%!mYbqJjMFU8KBfXGLch#"YTdXLT!!%LrM!!Y(rKarAXRD8hQ
%9mc3NY-+1m2X#2jXKJALX&b8$iH8d$Se()SZ,3T",GqpRK`'ee1"Me+"Ab,MJD-
IG6!TGe0hNj%@kR`!)!!dZ,2fiMpZA!*jp'AY[IRLDYX5#(VE$!jQ#2"ip-8r%)0
khEMb9B6M`hB'j`$NKBdCI0!@'FM)iC!!#6V%Ql8lmX84bli1U4Tb50A33f5*[K(
jI2T'LL0$$UNEFNMG%BHXd6FLEk9[T$Jkj*!!fL'(e!ij4"ff$j*@[-M$p8VM3eJ
NRTP&#bHEpkcGH4d`CSB-%fi[Eb-8F8Ia%e80'*i'!l%10Ch+ChA6BC(CK-JQGUr
h@'H@#R*,qlEVcLXI,-@UKqhiUHc2,eT5Bfc!#+RIKZQ8`)Rd&%bMR0dpm@FerU`



%,,LDder-4-C@JhhEbf%5`*BjU+[9-+UY-1A9Z0Rk%dk5`Ed5i@ipf)GP#*YA'ZL
ZX49lAZSpfF"`S%e0TQk`![2PcdR!I5[8(#Z3!&i19EBcXpBh$R*9aL5XGiSlHpp
9I,Dl8q31@S,0V0L!SkGPjAjPkjF3r"R&HGY*hrZiq)T'IYfVG`Fq(+jm8Ee$8$F
!!lB+aDeh!`9ZL+B'P-k3!"`1VPj#d@R8#4"FIkQC1`'+Z18L*8`h0ifF(Za`k2U
@G"K)T1+j#J#mcTbAKDQqUmiTPerYaH9HR3`93SpG*e1r2GLG*bDi1fFN3)068!V
rPH!iG!!8iEHr#Y)+f0D1&fGm53+`cRad%fRDQdJ3G4RcM9d,[qHAk'KM@(3@4G#
!'bm+kkbM2B2N-)#`(Aal22,LldlJb1a`9VkiDAJi,aZAN!#4)1MGj9m9CjMIG68
l[m-be`dch`k`i@aKbR890`FA+f4X&,#*fP`)2(DG0cDAcFS0!l2DBR!-%%N6,VX
`SErdZl25Ymd)SF$Va59"A`IB[5QcFFmQ%1S5*Y3%i*FcD-`2i1EjdBeU45&`0h,
iGb)KJ53Gh"-,!IT3aaqJQ---IZ!bYl!$b3N'+LD,+IZlQlS@E%S"eh$hJd-8Ak#
'(QQ025qPSfXCYMSYBpP"N99[eH&B9YDrb&HA&FQ2VP5AM!E(JZIPc&Ke&C&AXcK
SJa&Aeq*2$3GBaY9R5L3Vp!([q0($dS5*ZNK!%$F-ZTc*3*pZfVS4Pr'0Lmfm"1T
p!++EmXb#Z"JH'(bXI1QTkNUhDIcJceI$A4NQad%1`VmN1Tp,"('aFS!#$+Zfj+5
R`![B&Ghe4fl6Zj@A'5%3"&jX&@k59DQ4dc$&+4B1NiGY$5,eL@VIUpiq'AKB6K+
)Z[`f'b'`NV(Uh@cDU'Dj##80&`!$UhfXZSb*b93NV`%3dVCdS[-2+-jXilqi&lX
Dbi1e(iF,*BcDBbHB+H,MN!!`jBiEcr,QN!!3(&F#D4(@1)L!M"$Km"%CF42a1%k
Nifla4L)SYa"qR[38&lq*Rk,L*(hX+Pl1(e8h&hPe&9M"VdYCADFqPrJ3T3mML3m
DICK+I!M6KiV%K`Kpb)d&e!a-ZV@k4$A'!ZiSLeaYaM4#de51'E!IL@@SYVqkc0&
Y`NKm48MaPK8F)2,2'B%YR6!kebq[5kNSdjeFq!A6R5G6YP#i1rp1af53!*QqYSj
*LDB&8-&YC`#5aKmd26l,DMBRIFe'R02E6QB1Grk%A@Qf(Rd$DV5,e'McHDNc'h#
[#I0'2(,G*YU3!*5e%%8,+dG2NVEplqM+j5*%&d+&X-YBf&-bVlQY,bI@0,%0N!$
BaNPX8fRXG#q*VBr%GS(%9Na#Fj!!d#k3!0"8%PQ[kNJ)kd&#6!-*!De+L#DE%%S
"3[%U3ZP*#-9-##8NK1+NE[Dd$3lXQ8+J[hh$$6MfGAYD$#SLlmBYrh(XU9M[XAm
aCF-E4qY4$201Llr,0j'k`Fk`dq+BImFR+GFD'ad@l[CSS+2GPD)VUk8-RC2b[Xb



G5%"S8!h-,SBG(5YZh(qH!Te)GFRp#39b!86aY4VAD4aK"HLR-C%6,Ye`b)(E'UZ
FacSCJ-B@akTVETkdRE5d9YFk,9&,V$B@`dfGd`*bNpI*$@p*YC,+L1qVq`m&TXQ
&Q"c#@+P4F'#(%h`G1m&lYc+lT#Lq-,SE#hH-K"XQXFkSjq%SMp3#1Db6d`*Ak+N
(QBX+"$GLA'9`*r&!5M!LXP1"l#S1H!!3PM`PALZ(@2GeN5IhkaIaa$q(ce4dpPr
HLe@KqL#'!&@jL1d-D$eTFCdQ!%J!K0mM1$!YY@)51HBZjdG+`M2m$4C(bUA$Vf!
'5&L!Q#ERaBB"@r&(Up(lS+&`8Bd@283`fb"JaN%8QKUKL8NT3@HQMH'ahdQ1DdX
Tk$K1Vi[dB#NfSX#f"T5aQJj2i@G-CSSYB''+*T%HhVJ@PplaS1R6%GGT+!#TlB*
+ZF"GQAkX(YGB8*dVE0abA@HB#bE5MpPC**!!1+%,-(M!fAimmQJhZk$)(BE,RiQ
Xm8Al,cYZS%'5mq2fkCq*`"m*0Ra!Fjq(!)iY`VRUNCRAa-@rh`I6j-@X"NE301+
5r0K)HLE`!!6ir98ZGY&IQ(N0+Qm%CPf-M`AkH"q2M%CDmD'C2XbLH%BjSHCMdmM
`mQSEGiIBb)RpmL&Ud203hfPqDI"K'9RkS1R&Hhcjf!LE1QrH-iCM-l,R3G1L6Ec
bAT)paTIa!&*0q%RqmTl-b@EmC#@#2clqXhb6r#br`%2SB2TRZr6K*bc[q@(d[SR
%"K-ZrV%[RYJI@31bcBjq)qiNNHf9G$0"0kXcI02m3r&!R$iH,2"0k62dFDP%ISb
2EI4!-6h!kRq%b2j@RK+E@di2q1L"l@*KT&@`#(MK&5`[h46STNCjk"h&f@M%I8S
dNU+EHh3$Z$mD*V'@#UDPXAh"6XCQ#SLJ$`D#P,)6Lfaqdc-!KQ)PXm%SRY9'[$M
IGT)*N!!"i$afX1dbEZ`2Q[C[9BL4M+`fl!c('RD3!)PA-Nb8A[R*CE$&Ab6a,ZI
Mm+F04ejL4d1%#fZaZ)F@Zf(kbh$KVEL`Xc!IE@G`JB%MJ!0fRN5P*b@!#3%di1&
b5JCYTk2,(M3G,Q@`&lfiLe4(-9FGM5HmV,6Zcc,mLb*MakA9KL[,cN%e@3X)m58
i)1edaa89+DVH`SfU$$Xkc3Si3Ec5d('dJ3-)T@)(A,TNcC!!5`q3!1%J6HpCG6G
b8H-&KLNYS&`5KCCB+&bJ0aGKFA01rQ)JYS`1q*j2`if+P!0!KYJb6kqbU3P5#(D
!1#Z10R!5-VE5b9@+rk5"+K@r'bQT2eb2VI+$FCl%YZ141Z@4+[%4iKB68e%0*Li
PeqdA&mH8&ihi4p'e8NJ1M(,AqQ$Y#(8YTDZR)03&lTiIh"ijMC[lJehpJl[dD9C
dp!p1JEhm4+L0$piI1Fd%&C952@%LTpp6Qa9@K5VREr!*-RZ)&&U5&"(-&GX2X4*
+Fml+LZBeihZDbFdILDk*)Q0Cqq``Nmc',YrSD2cCVUEfkHLYpN*Jbh81Tk!!iL"



QJFFk1FMl+JT#GMVHNL!(fU@daJbQiLBp`3h@10N!eUR#E64CCZFbmeZlLi`912E
9GLEf&%4NC#FlVIZXSYNC-8RXXS)806Pk@%4$Y("DJb26++,NVl2pXeGS!q'dPl3
"U1,8Rra1DXqmBF`A'Bfij*qmJ82#JqP0Uc8ck#!5T`63a--D%PF+qa!ECSBG$HY
BGFhkcrL'dHfU+1(b(-LAbBj-Acr($a@NVc!crf-d4T!!%I`!'-221KP81GfSF4H
AR1T-&U5rh@HGR$rb8Y@F'*eJ%QLe(Z%J%+iBib3rTeQG[8Jif3YqGmXcYR0)$[9
E1%%r'YcpEe4`Mk1iDm'!GKB#Hkic%*'00pjFX(25X[(QG)SHUX9$MkZc#!'$Khp
(K@mfhVaIDQ`mA-p&cVF,TK&3MTE2hYMpEb#&JipRq,"CGN1U8CE3TqN*-)mhd05
KKTCSI"N)lA'IM&h$T0BcD`6fk%*PX+iZDZ(@AjjN9!'Fe3[C%#I*[B%pD3eBAV8
iHq(5@8FQ!C-VQ%b5Sqfdf13!2QVK!kKTMIdM3*)r+Sp98A(9SF+Tf'F-EJJLd[P
9DB`E`IJjGZ3(Q`Ia1e(8Q5,!14NBQmbLiic*(+A6DpM&KpP#&KB)3#8FcTVGNEh
j#cmG#)ahMrm84FlNhR3J550FYmLGV&*[&N33B![Bj)Qr2`mS[EBJZQfbS#H"cp)
P[m$'a5bDD0JKFcUlpU"Tcfe+QdZIbN`ZQ1mHBjilYYGX2!PR)5Br,5!lJ+6l,h0
&MjkKl32D4TI2UBCKll8dGL``JFVeYXSFJ[EDhM1UlNb9G,c")!G#pP@m&9p"040
(QSpemV(+K91$&jiY*iC0GaEBcZBkKX*%3HE1Sb$aB-B3KFQTq4XSbZhdf@Q`3a1
+NaSF-lXFALV4l%aQSI+E@H@RZ`B"P26Ua8[0!FUXNS([,8Ub(BehVV!$b+h,e%L
,S$iB'6E1#E9#2MX[)&Ji1i9BFBfL3Ec258j-GK,),S3XZij(&@9Db1PLDBT6-a#
6hHF11"C9b"6L9,dGh%aBD85a(Fe*@6PHCcHF"deE$LPNr6RZ-%F[Sb#3!%M)j&8
R&BrCeYeiilj3ipp4arRM$aT8EI%(hqc'*UZ83QqK3M-6!NmPK0-1FH1PSd%mdYJ
U8p1bHZH3!!#P6P%MKCNVLm`-MfEECi+BM*RY[d#B$*3aV+F4f)(,id"PQcNK`J$
CX(#FME5eFp!UH`TjNb(m+"cI4'Ve4dML9rRad5-q2)d2*AJS#%(9CHITJKBp"8*
1TD@N-Nafe[+h8`0e1*QaHeA&HllQ465cPelMZVrAFdd4h(1UJjh"6U+VSVK6jf5



T9&h1UleA9leRaR'C[aAQ`-E`k!dfJ3d@Af'a@cRSK#FR$[+Nc&%CSBTE91X-B&N
eVL5!VX0)d)!ElSIerPjI!8CS%YYKGdFA,A3305!6R9Ca8iN1F8kU9ibI'c*QS%b
bjb@CeJSbq*a"kJ0N[`9N[mAJjQG`T5mfMriRM,lHb)2KC'"VNjUN!,)HIcBTEN0
@+*!!4Qbp"e9p'e[V)3F#cCh&&P4mr!X8bJi82VZU1A(`+kc!U(XTcIP*FI8)a3A
'e3Ib-k-EV$,`3$Nj,Bc&0Z&2[Cld"r[a&fM#dXJK)EUHrD+T1-+1jZ!b!G#L*[B
f`-ZYF&(G(LZ(JqkZ@"QlkFC+m2,*@!hBSD6#L-P)P@&h@"T[c!lJq#IaCcrql1)
K$ll&T8Z'A(U4,id+ELA5mQ3cZT0e,2Ef"Xdhi3r#M!jZ`'G-9XkFm'XHk`E0Bam
11%k)TJYJ6jGpG4QFP54-UFBcc$q0@1l*!1#1a'VBM3VSa%G3%$`Cfi'P`SQ@PJ,
f"1K@YRZF'pZUc05@p`,dc*VlIK!ZiQ8`TUed-DpbX5FpeReYD%B!TmXi91'QSh`
*L#pAL1Y0d1)Xi-A"`$hfbZ4b8N,Pa!3$U2ce26edN!$-AYG"c5`A5NSG)2-cdE#
K6$6)K)T`*K51bUre#i%C0JHV0QIlTQML9qEEM`fe3!eCLF`B#49N3!8C3JA&UN"
31)bU421H'XHCJRh$M@QjlTdKLQLplP*P[#"E-Zbm`Q(1HL,9DkLlE#S5hD@GP'2
lm)I#U4!2e!Y'#FAdLM'PG*F9qqJ1bkJlb1$[S95b5TGS9'A`(@TddhTH%JZdNS&
h0Lr6[#ZY8R%C39#LUcd8Ble3HE%9KA`FkNe*J2D)KU`%ha3)QKXP81k1fNG(2`U
"VP3[c!5K@Kr&Rj@UAeH6`3H+bZp#9`!TQbl9A91#1ijia5Dq8KbS*Y4UN!"CrNF
pe#8FA4"0kkrC)&[riekX9EJGFN%TU[HRH(JP@+q@Q@-JBUdk%8-)$!B+LB[E"Kc
B`I6QmISl5R1!eA#F-jqa)AfVSF(#kJd$#be`#!Se$NcE4`(ES*&!lGl@f(T1$$4
C"K[VarEkT8rcprYq"MBCEMQVZ,JL6AP2b"eYb[[Hjb32M#p)UDQ$p"'X9HcJBjb
i23Jc52&@1'dP2KpY*9$!PM9*E51&H#kD&84R#5EHjVm%BL2PkR-DXefFE,iE4+S
jc)hIZDQTIU56)GA9j'#*+JNAbbf@Tfd-pB,Tbf04k1p(BQfqm*d@Z'AB9'C6Pm%
*i+HSe#&ZF!Kh[A*eKh1UGfT9#j'DlkD4'T(dB')6[K1J!hBSj14XKL(k0UL"0VM
VPkSIdrB$f(kF0iIQ3khRSZMd$%2Br-Gm"@iUi,(MdbEqG#j+61chBQ[8&%dI`P4
'8STDf*K3#M-kk!ded!M&Q5@eB#1eB([3p+-qaCee$4cES5!*e,iX1JDR%f9@[DQ
SKieTbN&Fp$Ym8INU+BL03Mf`8+!FE"cbbbbBb'c@mXeMU-!Z48%BZKRh@ej18FM
-MrLJ%UL,Yp445PU)EVfG1[03aUm-`h*BGB#'MkE1)5Xj*ETQD00jUj98KdQU)k@
!IGm'f1FMX1m2)R6qZTXK6*!!SbC1ChS'+$`H),M[6LDS1JZD![IaKRA!ckN`P9D
`Iqf1$JEh%,VZh$Hi&r'aNfa4a0EZ#5F*T*Ef3A#1KiVKMEb*!B!Bq%0bk`@`bbj
$Z$YD5Dhi#Gir,T,lFK1VUSXIb[F8Plb8!RMEQ9"LN!!,*d&#B2AC!#D4j2bA$"2
+$$F&D2h,,+c,+`Z,r[V,Q-(p"`d,al$`cPpZiGGUPB@+ZbR"d'N!4QEI!)BQ!!b
V04h!!"5Q02@L`8G'5CfdF4&#f(Cfd"ar5SCMfd%BcQIm2,$'HFNKFbEBhk'1)H!
pGRmL%qM['0@HlA*d)hMY36,dZT)BM6BHQfh1"4aGr(Vh[qQ[PR9-2fS%$RHbZhC
f[[(BJJcHjSlHH'aD"Ld&9TK)"+#"a!3V6+J*'6c&kT3'AhS!"9qZ+#S-&D2'5GQ
AUf2q&c#-@)E9-"eDUaaCSKaBTaaBK`0hURZKX-T4UEKq&,0(G"&5PG&A4GI9hF[
h@+"DYi)&Y&$k4)2U!m-`a`m&YeY@bHJ*Y0N04JI3HLbJ0"R#S5,S86DDp2GlC(3
YEa"ESJCPbTDUX+AGl$lD1,$`,#C*N!#03dGX6&(K8BAJ3Lf(KfiYXSZf&U5YfDJ
a%4KJ%PiP5)X0SMAEEKIbaf8ZZ2[e)H),pAINY2*Z4pIZeb'qd1(V#DJ#iZ181Vr
HrEVqUJRL+i6ZDJaT%%J#!8Ef%N`#!8CXIAiMILS-pRNRYZ8DI*4K-D9+1jALMBY
+6&@3!-GJ#PAK45e8P5K9CHA33Ui)4Qr+Q2q%M`dlL6jJ9mHiXR1ShSB6f-J-0K*
[2)'0,!T4#2)T"MA"!U[r"V[pm++RrqpaQI(h6DR@0'1mZ4!Q`lNj'hCd'r('lSA
Gr!2(J")'iNiP1Ih#F,PkM6mN+K4+0jFK&4+1K4&8Ce9LUmHib5jY&88QAaI&)ED
U,qB0Zqd#QPGFkTj@Ri164*XlX-%#"N'$fA!$hUe)Vm8j9DC@m!"Kf6L$FA-@K$h
4(m1K$*-J*N&-!TKSQ)3a#@$bjSrCK3`0+6$Cb%!KKQS4PbSI'U+4`lT959'Pd&a
!!e1MjHaMmmYZH#DJQZ''CAb-SCpZq*`VZZN6S$eM%`m'jBXA'2#$`@,E5AGXJf9
`k#CV'Tb%aJ00%dd-'"RjM-YYrY"f&ki"*S0G9@!H#dCqrHHB@ADkN!#JpXFUGIJ
$lRAR4C+Ki&FAf9&8lL3SNJ()QbiHeUY&54U6Hr#,R6c)KR[l8CX4aX2elY3c0T!
!*T!!Vfhmb"8HS#r9!4%%TPI!%E4C6aK@EqE$I(C@J6!0K(")830JaA"AjHQhdq-
33eA"FHa&H4Q-h4ehC)l"qPV[H&(UZqqkXaL3!!rKL(Hm$`P4[S'c)&iE3I(#k*l
*'`iNDbpc3``-qBA$eSmDUE6'&A9F@+Y%3kb*Zp*)FB&Lb,m6D&LcpN(6(qpLm'i
Z`-0#(6k*+VZB66M8@9J#Hjrd23FeQI4pJC4QPI-&%(a!k8Cm`2)6Lm-#0Uh+C'L
(3CR+KcRG#%&2cQ-3ZVH&qdmf-'ilE+'YZMJ%EqXXj$r"`c+&m!r(VIFcc1!40jp
$`R2#J3XDr!N+$@N,EE!USLN!1f@qX!SE(h2QH3JZ(1r3MqE0HV4qr0#fl95&#E!
f+3(l*MIhR8jVXPLT3pIS`R%`4-aJXjX*8J8)K#8U"##jqQ-"*2YkQ0$5Uc'UE$0
HVK8['CS,Tc@%("cNLN'Pp10aBcd94`8cF%qTj1)fc)a&lCRNLlBS4b0CA$fZA2D
iFPRp*4)Ee6RPjIZ6Y*h%5c4%U$D9Pc2S9"$%,rSb&a0!Cm8eGl'EZpT'G[mbm9J
,TCe$,#"d&iJ@J`2@5HfcR*31%q#BF&89#H,dbL5+b0Gh1Ue3q[T1*e,%qbaL@XL
9(%XXj'SCL9ZZ5*bhhh+VF&(C0SC4flMAGAU`S*'@BY!iM#DKc"#Qe'D#I9`cq3r
bdMS$%)H$ABMJmmbqp*h@'dHBLiB`19iXQ%N6c'3[c1-j9LGq9T1Xe$j@AUeb1rr
+@aJhP[Y5hcapCdA8Q,XirLi5k*aDN!$b#D2I@-CX,a+kB,9kRU!dFpLiRZRRe$-
2)Y6c2#@1+d@5RPeKhPZ$!4h"J2TQ%)M8'XrbrlpLej!!prjF'I,a2EpaF9,U!d#
qGi&[Cel$B99Ld%0Hq0%iUUh0j)J9"&ZjZD323a3D5Cm!QTpAHifN8$AF34SkTmj
c-NmDRf2A$,ph#Li@+DJ4X($iK#BeSJ(4*"UhZ&Yi`XNbFVp%ZS8G'L#@fhfF'Z1
+hN4L$)`h%[QDFAApTb`kTESjT0f#A(M#[F$i[1ZdR[J5aP!N2lN5H3GrEVRP*rR
)Rmjm'&Rl,35l3`L@8YkP*&ii)Z#QL!C[UJGlldGkqL(Zi&XZp*hHKpM,@1a-LV$
G)`@rr8&6q"ShkMj!m)p5`rC(rmUE'6G5qa*qT-2S*H'[*C'I*B&M!%lV8b6`+Y%
&Il9#%IDXF98IUY'leHMp-J3H@8-#4l(pkJX*JI1Y6aIiVm)Nm"U!jMAZr&pj[Ef
IMX04)(cJKZ!LcZEB1`2h!J#K[A!Lk'&494fL`8A,Z-'eBKK5lZ8`f*P(TlUVUh`
d98QB##q2r"i9JPPC$A*3+22fAMNFHCY-"VFJALPX*Krjf$"j)[I#eCT5526jVCP
2R,e-GZ%5mI&N%L5V%XYE*pm80qlLlpT`!j&YEZ0%FN(#V(#a(pHb@IP'NAJl&@P
&e`,$PKkSrMmi*AhMY'K@#*KbCjm`3T!!0'1+M,"+L1$(pIXf3P*)!KCElSNlqiQ
B13b6Qi&Xr)0(+hT)c6jS#Xf#N!#Q`!Bi1(RfBUI4+`J-0b6L`6mh2`'Mkerr+5H
UZ"%m'jaqSEkd#c%$K)2LK9jfNNGea)A@dSAZB$$C5ZkZZ"!U'[Np,Z3iiN)fG1K
q5QU(M&1b"d-*pr*P-bpc@3C6*3h53Zj`P+!!XAp)KFS*0-!!",2f-60VJ`1-YL5
'f')'+V45$'AV#a&VY%X-5FXrk)*@L,51'#Q'(q[F1H(%NHPhArUK64dH$1Ra`"9
XS"X$$&"!cdbDB4i@V&5Y`NVG6V"4082CU,X40B@KLEXp*V0eMJib",@aBhDr2Th
1mk#Za$3eJ'QD8jLQNN%f#4eYm+E%%!aBKm)X055BTGTp-8YF'%8S$#h$V"'k!3p
cfb181$j[B"C6qDc4jh8L&)r9389Z!Z`"mdRVE)G5hGIZII&I!G"h-bRcK088QPq
Qk'G#$49amUX9`a$)8eB)d!5i*Z!9#aha$&ihC$@&MDSDC+23q$0*JbT-%E0cNeL
dkRf`D0A1Uqa##%DYfY0-$4E$F,q&DST-#1@ZXf,SHNjL[hJE5@E!a%B-'QVCb!Q
(03bChHkaTYU4"Ai)+H'8*iAMK)[FU1Zd3JK3&(BR19@JF'*9Z'hQ,TP@e!`NJB@
2VQ3e&&bJ`@b6RQ)U5LMfGE1L)$dUNqZ845P#Le+%ILT#MB[32r"#aCbQX)*3,Qd
0K6`(c8F`JpC%JD8aK()r-i3Y3iBXi(#)ZcB'T$e6F4&EI"hG&0Y5!UfEECFcHGF
8"K01X61bqirIFUbkk)i"D)9+IZNlLaI('I$ZI$M`dU[k"pm)J9%me)V*Jd8A,0`
C-d+mqF4MFe!UrXRjPblc*``P(RdTKNqI,8LKkZQK1*SX3(4IVf*`$@U2e9"X@Gk
M24akkG@QQjJ%AVU9GS!fQ$,@AIcmEf#3!0d`PSlLcamP@$@6"hVJ"lk"i9aMkh#
4j`XA3H6BR@FG'*hUEf+B@SZFV*LqHqhHc#Gik$MqR(I,qNmaZ#fjN9"bi5c58XG
Ml`"dZ6A$!cCq'mlbUk!b,L0eG4i*VZ@H1HXm"Qbjk[8$#NH$K29Mr"JB'X[D&")
jD"$hQd[2,F6@`iQeGIVHrD,B'Kp$p$3dXJGGR3Hc8Tf*amc%Bb&q$%i*G#%--C3
ie(1)&S2!Q*IG6`ZQJVDjJakHBjIE@!XHh`&eCU"D)#i4Q-DF((rA!hEC(0(9V4J
Q9eHhH$8MKK,'JV1Nc%0-6PM"*SB+jTIZa%XNYTfI6bcUSaGK3@J1@,C+Ire,GZl
6dKBDD3[$"bb-$PQBGN&CNVB`GH4#ZAI)`T3cd551AQmDmYT-1rCbfV(f!ikp0Q5
KII"B(VTpqAVMmr`L5Pe3rf4Nm#%aq!L6X`*5d2$jR#r#S,MCH#SIJC1$bqpShp!
aAEZKBeBcNZQ$Mr$!d'!0hbCQQ-'$CQ)9'a'Bj)N&r&!80`d&VF!*iF@l-@ABBM&
m+N(cXHrc!,+4EGm86!GB(&2Tp)XA(pC%&qF"aCP3!(3)hBhKmAU3!)%5'Mi%3m%
2,iYN"E'Bf#T)#!h%HdUD)fMm#'DSb[[RIAmNh&Li-bJ+&#TcSJ`U%dSRH1Qe)5`
SAj!!YbmZLLkkb+c6ZM0`1F8N8NlXRRM9l-i5)cM,"bA0elaL',HA1dVZ%ZcRZR0
p#L-D[$4iR2cBl5,#kJ+lPb,Qf(KY5'"d`)&Ra3#LB*G3B@mr!SkEDmF`V(`rQR*
#HE%c,"qNLDh9[Zc@jN3BY)lBH`*(A&k,1dpEd4#S,#FA(P3r@X1",84cDbD[jMJ
`B5DkFTGH)APC&*0m(dI&9V$La--m2$%8TCNHY!UcFjYS#P0*,V#9"92Y)D+54N!
f[p9hZVqGb%flEhGk%-0'5)aQ[a1$a%09qhNBH,'K,j83$#'raF1I*Kjq)[eKCP"
+&mQP'CG2GBPJXq$LSGrrDIShX`pA5)[bca%!""-NDG9&GTQ+h"2X!`hLcDR8j+L
!#2'2'e$B8IAJYdpdj5iDSGG+-q0#$,c8S`qi0%EK$3`cC3T$jJ1p*JqbJH%fTSa
3Z['Q-L1R#fH,R$pmedKGX0bYY(9NmR!Gepap2+cf"BZY`jR2!2CY1rY*AM44SLR
pdb!d06NXTDQGJ'LH@M'edl3&8bY0$8aED1V%e+"T"P-R6A1BCQLDa64(dafBCQQ
kL1N1QPCJZNM62+B90"h!0%r6F8`(D$U&k6K0ACK1dE3A8aG0qc$YTHN)R-qmQ3!
e&j*rSf8#!afI$%J6IqciBm@I&[`aM-!3mT`N-IU+Ib2%k2bm`XMICU2!2eC`@9F
hZK+Y[TBBdSLELA"h16LjA$H2)#HC8J@`#@$+p4F`IUdfrB91ePGHQlj,C(dYrUa
KXXkKTDFBYffm)AF%`m2ppSR9[!PqKHlGT5rqebrHrmf"Lhfc[+9UE[$AKZiG"FP
G'`Z4Dd#+"X3ed05Me[hQ@T8*V@m1(`dN3RIXDjNlYZpP81C"K1SG5(%91I2#PIp
00aNS3b4YANHaml[r'@F3I&$"eY*MA5-%&94Eq",9Yp%NlR9Q,USEPQJBc1SZ[P`
e*i1ErrjHpHhB#&hqIAk0-(i"KpD,3pH1#9D4Km'(dhU#3*!!JN(5A#F85V(G1LH
G[8S$kVV41!Bd@ZaMjmp+RF&d@BKi6+eh$SEi)%F3&LXV-*HASG3C3Y@`QC&#B+S
Lbk1Eh0afaRY&U&JS4)8PMe5)iAjm8FF0j61VbDF'2b1pN64k(3L*q"+$c15+Qji
iA6#94Z31LN*ah10LUVj'c*@XhXfZ"%06a"HYBf,)jVJB0J5*h1E$ec2fE4f&+k`
ZMB%F$`I@M&3+1bYML"T+CphM`-24cBmdG8fA0AA0XMYbMp'YqSaH(Z"R@BG[F94
c'mpD1$AS0M&NhC34e)Y+f@BPN``8dJQT83VUM,KS!FcA*mHNpK9F"JeCZ8&,NJ%
S#R0kM#iZ"S2FRY26$"I*DC@ljV9,Xm9T#TD"3MM3`N$HBE+ihLqJYJ)B#,K)G%a
V'cVZL`IFp-"34Klr$-LN-X5iPP-5jH1*)daL%KcEISH4Jck8XihYF!$f'm($RF@
AfNlUe981LS1eZL*RGE!a9%cQAkHVJG!#IIKE2K`%cDi60)E8B)BUJ[,EQ6`(m"6
XZ8EC,DN5L5q6!dpM(K!m4-53!1(-PHpIN@(m39,QqbJf1)1%24PbNf,$-M'i8`@
(DCcF@EHCBCf-r$i'lSHTGIJHd+)*,%SHX)MKA9ldD0UL#5cU+6+IH4FNK05JSak
&XE(r"M-@X9-AaB#4U($JB`ScreC80p!i3U6qT6qN$jmN"LI9"IP23`9CSJXbHSZ
K!K*NL5,)8,SJSpISJ5-%'AfI"!R3+6SV""QG5KaK6`L5%eSTAC!!,hB@QdF+-YT
-JNcT)+,feP""DVF5JLa4S"L4dUT*#$2mSK#QHB!`l6$$"LHE`&6K@IkI6#e$`'m
+LGXH#-HFbH-R6S+bcm%!2+0$"I92erlQ0bbSbY)d3GNK+2a$AE5XQBr&d[JqPT*
CI+NXE@Nc,G9SU99CDMpJ+FJK,AdVEDQ9PmUpY,4(@GUmMkAhDDNlE@N2,@fJT5h
+8ZZ4"SQPBVYcD8YEX23#,5apqBArM5kjZ6TYB5N@PJ*1EaAra%M#Q-1k-9IVaX`
Qp%5k-8I,b*K,KKUc'+#N3(#G%8`-mbLJ[@fU)F`"N!"1ceE,0pV"PRi'@q!J+#3
H'6Vib-9&"[fHk#5SCC4CibGZ+f&5#jMGU+FCJ"!23"8fPd'6%E31JT[R6c-)Njp
i3'"ALpX33BU("41NS%1Mikap&-6)-m6L9r)rTLAV!HrkA9I(iZFjR*YA`VQVD-C
qBlTff3hIqh"%d$EFm,P'JlhG82#"SZ#HHTGP5)FTF[Cq&JUHKdaN*`AAeGa'06j
cCDlp+eIBIC!!Q8dkXRYk2alU&!r0)4KcA+EdSbB'6k(0V8%B%rDBR'*k2)l!B)!
rk+%)!6TKHSPd&BD6Uf!Li4RPVQ@ii'4X6l$XqLFcr40qTJ3VrhJ+KD%TX'f9$L6
`)'0i'D)`'8!J-bH2Ka3K52QR*!BTh`'3!%@1H6$JfaNiVP"K@aide@CSUCdArXX
!*d2%j@T(FAc62aqLebRpmcqAdqF1%C66)JYpZT2fD3E(p!kT@Zq3!'T0-3M048c
$RBRNB&,m3db!DL5FlIhVrcH(#$4m+Lrk(+AF`NCF$'A'F%`D["!Nf0VDM)GiX&F
!`@2i9b8i4BG$eim1$XM'$aCrhADbZ1HaHKi`*hU5r9HZQ9YHXQ"BC'Rb"c3[KZX
MdT,#C5Ne#)cc2hl%$9I`m3M)2'S*aU3X0[QI1pRADlD5iTi$Ak-V5[lRm,MCAbc
'4[,NCcM8Cb!dSba'db6TeG+f"[&,ka((m$#T+G&e!3dJ38CZ*LBDLD!"--%9%c$
RGU5EZ2&Mb@"Mi24KZ!#3!b%Q384$8J-!613293Xp"#55E4,rJ`-[H1YF#A'STIU
6R1H&)%FcUFYB0J)525rdS)HeE*D0+0bG'Tl[!+'-kf61J*EDE"H0c@3bEMEVC"0
MJd[8X23fQl'C0*006CBBBkfe$Z23P#4UV3)b2KriI,rrrqrZGh#JDHCphhfI!"Z
Yab6)"5!)!L!bfj!!,m[+m%Iecb9"5TpGH6"GU[)jMP8Xd8RMcDYBiV!02*'L%U!
d&Bj%3jq[fkEXe8$1HBlQ[9$Qe$,[IMY%L48[1faIU`!)G&-"2apL`1kFUTEQ4`q
$rEh4QTcJkm12(KlFAI(KB+IU([-KFipkrfT`GpPF1PMJVE"PUXU*"52S-&D("dJ
)a*1XpqiIKh$8V[THG*!!k1LUYf$[DJ3E%0b-J'p`@f@HGmM4[,f&"Hm,(MhFi`r
Ai-H8kA8fEdQ,CRS6e%11jYC4NeIc&Bj!N!#,EXMJPX+4ecrDNTECai-Qp%&QI9$
-B6Zm')2k-8KIG)YKd9l$SJ9Ed[TQU9jLLhh"PM5(l6XacJ`e1(S"QqjKPVf!Rm8

SeYXRB+)KmHYLr*b#b2X&qh)N8abfbIFSJCqj$Y[hD4,m90K`X"NE2mA'5Yki'6r
h1'bM(NV3*,5XpYYT#)@R,kQBBi8Fm,1&[09Q#SNTXa1#YbE+bX6f2D*!NlmX#KM
@Ze)8k%($SS"RA[5)!PeLLbM3p6i%%el,4&m%i0j9-HI!K2*RAZ2#A'*ZH0,&Q+e
ATj!!S11KNA$h,6$#AZYqZ-qa)RZN$m%iJ%D#6R3kC@(Q9CUXl"Sbp$8Xpr`""8#
X6YQF@B0JC3SaSa1Nf1mm'GhP6%2(4fj95aYiq9fZjIrPqD%4qA!'V8j4!1MD#m@
&#+c[&J'!rMHDETd-%[SB&GN01IjdBQV@eUf"K)a!6LVDV01Rrj!!'%Mkh&9@kYa
$@1JlheiYaFhK!rCb4h0AM5AG&0IQ!ra'+BJM"E!-fXZTX(FERY(Y4'1Bkk1$9Ue
`4(0DVTZZZi4b(M,'X9#1a*J-G2XF0RA(%%!@!0hF03R3EqkD-LQHhY,MEr"M@Nq
'a9[303U6bM2H)4+l)hKeL-&F19aJ$J(b(NbD1%"24rB)aV4q"-V"'Kmp)M%ek9*
H@-[)c82bLic8h+5Y@TlfM&C`-1&kiU96J3L-iB2mh2#PM1Z"T+6F*2dSN!!A6Mf
NRdPfN3KB&rSD@$GPJLP#QarZlRNekQ%f(V$$F%X-'KSTK9fGqL5@1@JDjUS3)4i
BGFE!mT!!!9P!$'rbRre)K6,,jI4J4ld1FPC60K)"D%UB,SKXa1+S*4d2pd#pLTP
)m"1MCFaaH`a$2"L3!%R,)#YB%1L`9a(kC")p4)-cGk&c5X8,Y#J)8X8)JClK)#5
%4*m@ej+p"Bdrd)qp13-+b3N#PXa4)rJB(kk6M!AS"9Y5[!9,0b+4l'KHfLLRE[A
5%c$SRp")(++"C-SGA2IBbp2TRi'Y+S3r(T!!i)UE+$T*ZQQB*EdSmef!1ZS@(TX
*6G)PPp3$b6-J[JD`Df0!h)2!)JQ)`@SA)-S0G@NN5L5$*B`&h3$(+C1B5J*e0*X
cN5hSFbU`f'&r#m&b*j!!4lM2(2rfip%Dc3QNPFBC!eR2(0GLR29LNE1H[CURU,1
N$ieN1MriHE6A(ZTlN3GI[Nf)V)UAbm(JLjP6IFI&35B5p+aAL$KHQI(5G2,4B-f
TQa51(%a%4T!!f@MVeS03L-0j@NjZSTEl4DU@'p@5$ZD&!fHFLE$VHQld1Zr5-e&
18#FACDGT-TPmUD8ZU`E&'&`,h&QXl!Nbl"14#16!j%FJSMc2D)3Z-'N0iX5H8J"
l2GJd)mJ@%E#p"BqpC!A@%eUm$afqNJ'BQDDE0,X!8#cN*LF#IY4q0c!48PYF"+R
Y0!!6,@`MX)KfhbCJV)EaQ`jhmX9fF@%16hK9&NbU!36-UPQGh*!!&YJ'mY,a,,l
'"kjXk&Ab)PSD(mCS-3Lj)a"D)MZ0D6HMDI%!F#AK85ZU2`c8@IDTfeJc`aQZQjQ
%E1,+F*Apc+59VJaAHF6!*0j3Pda+VR4e!*&Y5fe6(ThGP1'1p-SLCma2aDBEk,"
r1Z3Q4Z8i,h5RLaL9aiSXG+-aE8cTK!%3lH,!K[IS`5TS0J+IbDXMeCRjp[Nkm*N
Pm%dKF)qpKUHkUe"[!R83A-j&&fTe!b#$TK["1Y0S3hJCJ'-8S$(I#XeZ4,"D2RZ
kDY@0ZU1NTXUT"[F-+"TBU13QrB!"S`r!XX-ef5%'&Y00A3PB%#pV)T8M[)aG-#+
L)mY2JEcHiH2j460)CXijRe9Hj&PVLPff[1KPmI#GVX!K(FK[3MMMe,XMeZ#G&-M
*2jJ4+)V([QP%&RN"BcCkH)S''X*dd5$qX)3'm@eZm##DF0KQ&JkZ@m@0ifGH08S
Sp$5%mKldT`b&`hTK@#NR&G"Cd%5L9b3F)K%A#BY)Q,d*)6#ke5`@'5Yf-'QP'1Q
0F"mp#kjDSe#',"JqLB4C*-C%BT)5I@&UTQDZ8R00c9(%*KXGp9j04b%*+ZHP"Rp
"6FjSJcrAbie$mpiZf5P5QcL$`mfJ23GC2Pmfcpb3!#F*j0XS-la3Yc'dU`d,AiA
$R4DqN!$cNSfRYXQT1`a60r$8VCMkSTLk9B+lHqS@UkNaY'X46Gd`9fQj"iSc`TN
m0*+VR3Tq[GP8DkmPKS*G&RZ95*V0Y4[44G&#30TX6,f8Ph)`re+@PKIiRRBN2cI
MAUd%PGC+cGHh"4)Z*DB59MIX,AdV1Z(Vf6P1Z$BJUcp)DUP&UU8aqq[U!*(1XR0
S")jGcq$J'A4CeS-K$jTI9eT+m)([)K1rVVDLHc@%cP@[Bm@BJL,e$*al9-kYkBf
rZ"-+lhH9Jj8PJ&PC'ERF9+#TEbZR"(@5&l`[ZN*dh)ZKbrS@dP)1fpR'UDV#%5#
KZf`,Mi"B&IYFa!Sb'&5!Z(Z[5@*9!!`UZPc%#Qif%SZ'lYY$a*+6(hq0e656+"D
De1K-QA)Qir#BeKeIU0fVc&p+mkQHj1LHc(%al(f6JLK"`BP&'3IaY[,2%ITmhi$
URPY@eR-C'pZq2ekQa&9Um'`jb5*H@*A0L)F41cZdQZ`4kFS&4k&JC9@SYQDjlkA
UqE&rXqZ22&mUIk[lrSYr1[UcC6rTrIl9fpVTkFmXCdh(c@p-[6kfB-BqqEAhrqE
GEacil`2rX[8l%rrhQ9[$JhdRacmrI-*laIP4rqmG)d1rL2GFq-1ahaEqZiIq5rC
rHr*kjX%M'9Q"D2M3T@[hjKINjHEmF9*LkKFThd[iNe2rpIbI[r*RrU22*UIGZ2Q
Yp"pIrZNlrr&(rljZaH*A&rl`YApiqerIr1G&rq'&rr6mIelbMmrpRjGIR2Aah1p
qfMcRrlGmXQA(cJmDrPrpYfhrklhrmH&Ilrr"(ApjcqrZqUXlrqIG2erck"2rZr'
a9Bq[I(VeVcIqDY0[0[pb`pmhrHhk[qMimL0IlhcJ`DI@VY[pe6eIfEHhUleYHqX
rECXhHfP&QB6Ih"4Jc#rbY+`[Z-1AC46JUR-#YXYjC%U+r6c1+I8Z3,U@-kRYILM
B+BV-U%(&b-0QAU5$*p3ifpj8mc9P'DYehL$3K3PLil*3JKVYlEPj'`fd!(H)31*
cJ8bR9,cr'QBkl$bD24+0X8N"fHB0+#8c#'V,1Had(Sek&TaJP0*&!kDf$Se!J&G
E$rI$P'"QAM`CVMRqJZJTY3`,DE8p0q!+FH`q,$Ja0'+L"DX-#jjd,IM'h8!f2'e
dESTbhSbUXM'"b($PI8Y%!F`irV*8*A8KkVcRJC`0U[Um4VJ**YJA2'iL!4311R$
3"I64VAGU@E8Sap%b'NlCr+a'Nk+65fMb!)lV(FhYP94!m"N-l69XpS"8#0('fmZ
'4V"Y+`kfBYY1C*Ff$2I4J3[YM+ULKm[S-'4pQ245ie%6R'3mSD6"PU0NH)KH*#)
N*C+lTh@M-fq*!Gh-)A3cEih$YRZf4$IceZ$R8`1kQ@0%0ccd@8Bhk++jK8mHaiS
VZqGeA&NEmTRkdINS0$a[e,'LarrErH2UrQ(e,V[)ZMCf1eC!R%+Z(-CME$'6Q#*
N1-3PXDc&HQ)Re0V`3J*`"1*ihRk(EFpL5K"J("GL0MjH4%+AmUe%@$%"&JFM0@Y
'QK56[ENVJ6[#-f&Lf21'T[4$CYKl$YZk0B*K%$V1Hml3P0jYa6!D'QH'-8KmGPi
%L1"#K%JJdc9E&!"bjAH*!X#aI"Q*I`'bh*!!jZ@QDJIcY-'Na%$HT3a04af",!d
UAH"J`EN3b-Ri55hM8#$MhX3[#V5#5iN&"e-c$Rf(G-XFU*GC"e-2DTF50G(`RK-
CXEVhQP$hrV%%GDmH5'ZI%,k`dZGl!HV9C9,!TY004!j5ldl+"&3fRa1QP+'4U*I
&Ebl'(p+9Sl8A[!A)Z&)j3JD[eJ6MEaCAMTlD*!(9S2$ja$,Gh)AhIRB)hU)a+K5
15&I48i'NA#dh#DT+q'$UTC5!GZ5,D$53!-4D"cLMpA%jN!"e*3mXkf'Z'f9fT6,
YbSL4JeBUTjQBBNN(N!!3!c@T@#jr8bL@eC%85hEHC-85L01c2KdSXV["If38c*j
5-6P9ekUceqL+4"!c"Y$3ZM5ldR$-!K8)q`6`H`MiFmSBl'2Kd+rRUQkpbqekUK2
(dA*fd[*6J8`D1@@Ch6dSB0)Bd(M-ij&ZVFD(ZK9J6i)b6$*KQ#31*EEEPTaPdUV
UEYK*a",MVTE9%mhU0@cKlUkm*X!+er6LZE&r3'KM-NeFdD'&#0RUkUF!eHF%U(j
5!UJf-DL'l&8X9R-$E%hDi,V(G`Q!C6(2kA%$Z+C&!0CV1V!q--XD@*HR#Q#pA"a
B(jL*$+a')-A#h6U`QZm6Z)j`$Sm!V`m$B"rI94aJDreR"V!!43q$DeVBV)AUNZe
%CTmeU3'i(P50F)1[&6!bBFVQ%$2JkKpb)I3)i1TM8(X@6p%"&#*V!YLL$b-!0I2
$-M6HeLm3PpA6#,3bc@3Ui8&Q+2,,h!1Y`,(i``&m@`33rR9N)*`(mb%8'cM$QS4
)cT4f5PNqkS-E++SaC@Zem&L$$J3K8@Y1%1+K9QUJ!%$0lEYBrDiQ!r6kp'rl-fY
NdU6)(B@lG-hY2Ki8qVCd+QeGlhG0&+e(0C6C+P4i1AiMGS-@+EM-$5Y8&6L5IM3
diR+-P3,3db"f+14Q1@F0LcN8dLUEdZ&-'l[b!h2PMV6+0%)'jXRqd#GTTmG$)I0
YpaC8P$%,35TP1FYB+14-#dm2VP8KcmqZl*qZr14Sj9(D6P016rDU(Ak,kNQ,VRq
MMbBbAlFQYed+-'fak1#$%01"YHd3TMqHB%QR2c#5@Y!elHkEJU$"55bhA#r5m6p
FG!28kp%`!p%IG4D1p)A&j,BUR`6kf$-#k#1,kb[X954Q!J(+*0Kk&J(0"R8d#m4
A6Fl(%Q@Dh-a")aJ,pe*6',jSYd*((RBES+S0"V$D,m$Ud4,!DU!SQqB2ZpQdE($
GbKUkpXUD-f*6Ip%0c+CGV+k*V'KNPUp3-QYqH@R-8UiV-F[F9mihC(c+B%YB*-H
&GSf&MR,JZ''JN@9M"PBp)9MeQa*B9@GJ9E8%SCATP[5cE,64R)8M%4Kb93k5Pe4
lk*,C)j'[@!aPa3`S5cbkf""2FD6'cb+5E6U$Cfh5Re@cZV4Rh5kkm$Ia0'QmHVU
QC1-9U`+-fV!K0XAU!,D0!E@C8kLDTQEX%TUKMT!!k5"FIArDJ)SR0p`)0*QV5+J

8-cEVQ`9*(bL"T%e&J"qU1Kk+M+ijKdTJ(B@CGFeGqHFL+"Z#9TbqT%)UK-j+5(X
TA"PIiEUbKkrX,DLr$0,PQ9LNhAj)2VAp5)0rD#4V9*UjfV2&m6%,+V+aBT'!bQm
Z`99jhiYpah()KV#b"$Da922@)GjU8p0&Tk)'L`6--CrK83-4(M91M`RXdUVLIVX
mHSD&qj4mhq)P%am-!aU*rY[(d+%P8hXj1b(SC'-A"*%e6CEd`K'AUE4X2CjD*8%
Bk"!#prBAZ)VG2"+*YbrQlR%X(%e4-$bdb80aLHIL!)2S"%3*!f`UT1!l)RM6IB4
"U,$9h(l+U8J&#BH%5(mp1cG8K@2ZSDRC`Sf"Rr'fjXb'3Q8!K&,-iqdYCf)H9r5
3!,NZ`*)A0`R`DhHbmFM-'BX2TUX@NiX1QfADhbZ8KN*EX*p9M6(ATLc0DNKcH`-
C%LB8)jkhLB('Lj!!SCJD@#d@cQ'LMCX9XKR-Eh#BU1+Mpb@JKHA%T4!e6ZBkGZa
!ma`M80[`#K9jQMX-D$dQf0([UZJP!%j@MZ0U!aqXL3*YC6T*h@er$mYqY'+0jP[
[EdURrf[6'p-l+1-cF&1hA8faQe$rLVZ,$p01VTK&+0"SNVG#rmhYQ`b9H9M8BaE
)"p@)#rRLDkQ5qkSE@l$S%DpNFBQ2mRJ6Xh8(MMlZL*!!5E#@$mTr!dF)ETk9UT!
!"*VZIr91l5A$0$rZm-p`pQdI-!e"f3aY[-(&*jaeR!%NL$bKHD"@SM,JQ$,9e0r
-J,Qd2[R)0TL#UhM!5J(q6A"dR5fRddLTQmmL*RQY!3cbM#hrmSqZl$fN["G)N8-
&H3j0$`eqj4#EVV)9ZS3KEf*-d48UlT!!bp0@D4Kc,h8R#erNCF8NQ1#2cm0&85e
$KH53!(KiXZaik3)fL5*4j5Jf6D*+2bVLVbK-lr&(@dXJeb-'e2kJ31hE)k2ffDT
iil2k()h2U,[a)B86QkDKF&kP6"%H[Idq1HBB"*)!qHb43+HXLPP-35RBdLSIYk1
fK-GjG+F29+H+*8%`jh`fM'ClpGA'PPi9&iTYpGG8d+GDRJdm%PQ9hCikZ1ihD@L
+jV+6M3Fr[T)E,4l+cIhf)k8e@RKfMAMq@b8mIp*!'Q6f[IQk!Z!p&-,"GM5JQjI
*EQV)3`8SJMjai)YS8YY+`miDKU2J)a8aj#0dX[f`E'lEpj@Z)VT8P9$-4DcEEQ9
[EiTlk5VUcXQ1QH(T-&ea4LXhLU6f*NRND@"4Yf$4k4*BP%2+25jc33S'd*K8k!)
!Z4bD#GX[fec,-hLhbJA9KBK-HTFQY+3cQRe3-@0m5K4$92a9GHRXN92"pI-D#pT
'#dGZ+45!P2I0REcY$LJ4J,PrAmZNZmQSQ+8h93L'50&'e5-P#k4SNqRVj!-+&B6
4C9&,C[V#E&3Jjp@G1F'jF96N4a)+5Pl&YTc+ZI%$Ym2p+-`b#%DbGG2@aMS`Z19
@P6"Z`@e5qj!!h3&Sf,(LjUf0j53FZ696X8eHBEQ$ZpklD)[Hj'8Fc#2TD'j1)%q
,AXTRmFGK*'!#apPp%(6mrQ"'FF&(aG[I0'YXEYEBFQSSbBkj0[[%,Ib6IqLL15%
h`pid-1`pCPL$`rEV6$I$'U6,jHdIZ4PQXf)BKUpH6`b65c&"@J`%HGZ`J)dAf))
&P(Z",IKCK!9Qh!Xd@#f!iDZI&34TN35TrC!!#,,dP3J%bB$)+693M#6bp1%3T@4
b2rc*bFKQ)$JZ'(U""5FTHKB+I8KC#0RRl31ha9'Gmb5'p%Yc[C["$Pd3q26c1S0
C'!1hdZmri@E`8(&Ki026a'#"mQ2&@CUIQdJA*SPpXEY6k'&HIDeqG95*mC60KTJ
Z"T'VT`(U46jAE()LQCZJXk*U*b-6-ZU`fVr["B"C2(Dbl&I-M,8'CX4e&i59#ph
-)"2HEVK-hq&QaZ(LEJJV,a)c5*Me'"j##CdKS(5@G&PamB!1(bB,0KX8GJm,BT4
UFLEMcbCYiXr`qB3kBSJr`i%(EM"Fm"lpJSr[j!Y1P"d99hc3BIY*8q6Xa"[HT5X
5Fh@f9MjCM+h2bFc,VZEkJV1%BjlYmA%h3qN$0%eB,XQph*Y@bf(iUVZ-$'8aUa[
%i'SXBBVPaj+PhdZkP"Ti'#cP#35GrQkQ*$'pZe'e"5[CrE#i#2k`R[9@QDa&m&r
G*d6``m@ch@1I-Q[NTc*L4VF9khafEYH9SS*cU",63U@`Pk"5e,R9j6P5D5LL)1`
U@ER9q)-I,AA(B'BeU$%68$E+#CL%iR(4Z!%IBUR8$bE*r,fIPrFE*TMd&Xa1)$'
`R+cXb5(aF"`-8a!0AF'1IS6'$D%KZ3e#[))Gf53L0`3c4E!5KA`%Bd-Z9N`+9Mc
[ZMC2Na!NN@#PVKDV(#K+E55qB9HqL-S`$4!#ZC4c+--jJM"rAJ*K@U`8me(Z"-Q
ZZkffDA$G,l1&)%i+6$f4(d6$K*'Nka`2HN8mk+FP2'LrHh*bDr+43aX5k+i*XdM
FF&`*NDc-+Vd)$C!!fi!)KGbK!B5Z'N)qGqJ#3L&$b1-1jD#cq##68BBdGqJGK"S
0S@&hD"C#$C+J(2+l3kK-8l')36L)6p8e#G0D"bI-UT-5B-$c%9L,5M0#3Ek(&15
+bk)iLi[R4I%G,ZD*BJiA-dAa!KIMSMM!aA&4l1AL!4CdN!"CF8bShj-44IhlK0&
T5R9'3fLi1pcLm&%5KmG)a&pp"#kiNpqTV((-3e8N$I8l#p84G9kpTPV8'Y8CV&3
AFmV`LDqQ62$T,(fF#TqKibP9F)#&3Nq3!0YBF)b$PHjJ,`HhF0#6%a46e+!jkA8
piS+I!ZafYKDK!F2cA+&9#&e`KBCFSAU%FPbK*%rM8AG`%B,[')+D)HK(F*BK11`
1CL&dMbY83bc5&bb1d)GeK,lQQ-%edZ!84`U'08,rq@C#k**!1LT2r*1#)lRjK-b
&$i@VqQaZdZm[(2jpEPBJIq[@F#"9RB(lJdZN#85MXC)BJmV83H6AUP!PB%Se'89
b"-T1J2D64M3YM)p-q)k8i2hdSFC1L)DDBQN%!0%DQ"-l-MeFV)ckY+T'2jVZMY9
XkPkDlKU+jHq8`m,lBF$TK,'c)k)*[b0+MF9FeD4rFXS+!EdM%0#rPS#!0KDT6R5
'$43D0XpT0PRFPkeZ*iIb(Rp5m'mr2MXSK5&`FL[A3MeT%#Ve'Jbd%!Fd*Urfba!
8Jikc*pN4)))3CmHEiUS[4VlU8S1!#5KmS@j``CpZqR3I'DK*Y2APG,X5MUmqGkE
(3dS@eG"N`R3q59F[,-@m3*rYkMFMDhL!('-`-2LQb3J6l$Q+UmHQ1k%8Fb(Dj4*
JNe"#Hd2&'Mp@RXq`6EXNKA#$Hf)+!FpMG44Zq9KeCmcdI3`&%!1Qhh"2Zdal#aq
i5MIjHC*rjLRN)Sqi40bN'KIXdX9l,4$$&JK`-V"iPQ$a"b@`1*-'JL&h5$&+4,$
UTJ'P#IEFKM&EcBE"G4Y#T"U8C"+MX$#*h9Pb3mc)"3+GYPkhHE'jlD)dY,G9'i3
m8-lE3XCRPe4`Q44%ia*MX@U&D&bDfcbPQT&Eb4a+h3AaQ*NKqVKLUqJLd0'dQqf
kiE5jlE$ZJ#l9"6U@(G5fCm8R0kQ3!),+0l*)emZKETX)cA"SV3MeXf&P01aP!`i
GCC'Jf!A`,26S&-(#Fdc8'kehZfALqYNM,RGjq9bGa@,)biBR2frej$F05`eE,C9
Hj-N,5hRbMmiaNG@6fbX-6qE+N!#kD*NfNXQXl9hh*(#pD$2c4iBSF*i$RE,jiN#
V+-6&Jj9k6aaGdiBq@38d4T99C2GZYYK%L5I&jYRZcGfSJ#N2p+fp*3k149HbfkA
mE1NH-K"88MH9+NA[%3rBBRMHTlc0%ldU$TiXm[3B('qpaLUe1Q1FVj+UaZkk,YC
d'9Lcam#D2BCV@Mpj0%`I1*RY[K*AC2,H5f+iY[UL`k1VqPlpr#NJE+F+@5j(HKJ
[HhF2ZF()*c6#&@D2Um+9HUK)j6G$a5jCP8Smi"kBD0%`R"dL9-6+1-5VE4r'Aq8
#)3VkU*QQ2b-I04UfEVf8KiV0UGDeEaj'9E@0HV9$V[*3X%&8aYaHimeA)5&%EYk
Z6L"j(&9b66mPN3+Cl0Uf-HXh#j*d%EM$$%XNfXJ$G[1!MB,"A3CQVjCJ%Hi6"jf
kFE*Y[6MDA'4iGh49*MX!,YdXM,404DSP9ZK%`N@kp3U3!0YV4)A+#LKFh+dFI%T
F+qBLYID4l"LDVNG%aF+m5p9HZ5SHJrB3QIEbZ'Y(&mENq$!d(AJN+EHA'cE%aDA
*R134Ka)FjdZKF&Ypcq)L'dDMMGC,'*q)4V*"0*Cr@8*MQ5iEb`dcT6H@'fE1V,'
mqc`'ee-P*kK6adTS-UId39"AMVNU20fpmPb1IVfZ+U8KhV,0T1T4P3M9KXEdbFJ
8RA[e92#"CUh@S%3GSq*U2hhN'00@ZC`ij5GYp)P6b)PeV+pP3Nq%4-)R%M'4m)K
%YdL-LN6[8()XQ4hG'YJ%U05G@ZJAI[i)UDrHMkrS,-*3-i6k9#N'Qq)Y-H8q#KB
jULab9&AN+&6NU,E)88f4SqAkd9!b",'G!99fU#%YDl6SmpK-hiRLC&pG5K$1#j-
8d[jQBRCMbm6XirKXT9NrI(G#i9#piCqJMlAciI6RfYFQ3Sh%bXp2qbGmBhVJ-!+
q4Q,YB34L-hVJ"!+a4Q,e#33m#c!jM0!83RC(d00)l,q#B$F(@d@`&F(Z4L)*"8F
jf#@#A3L10K+C+#L)T&S,m&%I5Djm%frB)cEX`3Dq(Qm!#`440dQL"Xr2K(la,8R
3i$9L@5mBKSSSa1E*k@X!YmPXp9NbXhXbhT+Ya+!JZF%B"dl63(p[mB'9@Y@&-aP
BT98G1j1")DfUm%`'eQT9$jh*`"UY+V[dJ992qQN`"NP3LcJ-S2HYJ+VBRfPa$eC
@,,cTBQ%mHD`+J,KDSb$3TfNb"KR(+5+)3k[P+MapU-)cc3B#fpi+9TQ!*0U2#3@
,MqR6',5B9K1rL@8XEl8-`"HB*M90JY!hE'Q",9U0dG8!b(103++r+J'*cV*'JVp
,'&chpmI1M36P)'XNq,['qiS%IpG@1K,m#bXNf1L2K!6RZC(Jhc%#P)D14ZV-%4+
F"b6B-SFqS[T[*aUF*p%J2A&C4%5)81#4qiS+c6TU'hHM`R&#K9BS8U*#3T%a+a3
T85'K5)m9LT4Sm)3E$4T4C(%dD%54NG(J!5XdD%5E*D$"%l[R%E+F0%P3Q6bHJqq
QKd65Th`L'9-aNI3SMdKfFk815SkU8C(X9EdRRJ)3kdXmPi)2TK-*%VMbk##@Xdr
f+qQSY0e#"r'@IMb*XL'6CC@SAX(1EpZ[QK3l'A*K5P(e#lR9A'@UVBI)L"A'$E6
T2&A0!R,ikKS*X""iH8@93%)S9(f2%FPAGQ&+N!#!XehcpP'HPKF`+d)RH+lP5cG
m!NaSJB$Sf[(dDD,+UK'aE"+)jHXP)*EkSXil6emHA0INXk4r3hlST84K%!f5+1A
TmqF`$A5+Cl3ERq&FX'-HGlim#,AKQP-rJ3Kaalc#%IQiXKD!cTqHl$kC2Vjpm!q
$IB1[$rp`q)'qGF11iH[$+mEI',iaI',BfcFmr-A`*bGIke[50cEX81)I!!!VaN&
%3e)$!("H%&809$B5!$&LlN3hZjY`'aGC3XM*f##AX#a,L%NDV%e"i'jLG&hmLmX
Q5XUal1EjpQkLHEkG*-E!Dh%ecfG3XBN"%3V@8SH+L%I!j`X@D#SYjBK[al(8@SC
5X5TLe@(%imR3(2IlrIrIZmm['j1)c2c0qmllA"e'05-L%`%4!!%"%I!3)1ErdD*
k,"CmUERP&%MaUh*)4El`1lLN-"%,NB(i0i3RED`c9ZX4%$6&[12"QZ4ZbAG[Y3R
"`4dhDfVYefUX0QASA5NjUFVEM5C)%@r$Kj+d1iKJXF8#Cq!GLq9E,H`L8D)YY49
U8p)lUPVi"#i0mFXBZr5#&&"6CUI!cH+6LVC*AKCX5MVhUY9DNQke2MMmH9Tk5@p
QGTUeY$"0YcfINj1PYEYV8fMT(d')DKbU8$qrRda+`pjjUNX1AGd[U-2I2@p`)db
lAUhhYb&BVFHPG(#E*G&6S'Vmd#D64p++YJ@IJS13!1I*UFa5'0N%3TVR488P'QQ
jhU4D#KMRd8[c(ICYcPfSd*E5eRrC9,60HI+M"e6*Q8+Q!rk`aBZ$a$Df+"`D`iq
'(aGq$2KTadm6IMU-9T19f*fFQC[TJ&dlq&A)Tb%HST&XArdfk0'MB54AX#ljGE(
LbF0UFfdaArLkI@aabk+,BbKR#$DQIR49MDNa%ai'Be+2VBT3hU(4)J,[@+f&DI&
90&TY1V%RqeaZZUl%RPkZ22rHGkh@M1bb`JbG062(ErfH[2rcB@YbCQi3c`IDD0e
ZklQaC(-dRCa+*-KlF('A@1r*@GcVH3QqlL92cV*Vm,UGQNkreJjc%8H'jpYSR-9
G")#BmLUIFNQHFSq!emN1TlbU6,Q(6lNM2U8+Ve-F6VQ(69Rb1%eC8NG68QHaC5d
j6&0kIa8jCFRMbT4(qC3UH3SYDmNDKe-H9DCBq*4Tm5PB9UAUF)U&Ql81[TeRqr6
Y2'p!90d6ZLE0)AGd&RkZ!8QJJV+88-I"+iA%&'qQBZeXim"9Z@25(#q+c4cm6!8
CS!Rc#A&m`QkDF2mcS41f6TUc!*A!C2`X!qM5K0F*EAb#Urq%m+3j0,!mEp*3@Dl
N%`VL%h`1*hKVFZDS(hV8imV,!RU4F"&HTMC#@1,6GXY*N!$J1XY*q0UUT"ldR+4
"E'*M3*P5aDE2lF"fTej$KE'4(lf2QSXIcFRA3bFMMjiVBX,1#Jf9paem!QmX2U'
6*[cR!V-*dc""AkmGh'jCabFBUDRiK$D(%pCLJUY11lM$FKHIS-8Rh14`JPL6-lG

$BBCHTM&8c*fQS1)d8*((8C%A4m98S1)dSB*2@8Y6B,JT3%8"-*!!(UZaef5#M!r
'(djfm("+riG,$MYiZ+Er`dSeqK$XH-K-)&H,MeLYC83J2imJN!$(Yi*XEQG%%QD
AP(KPGRFb`"T1h#T2cK`[*ib9Z&`3[kaLPe4aiC81cP)e(+dP$5S2[IaK,1,K!JF
2Ud)IHR,QLY3FV9QiR"DrA-XZfC5j(If2Qb[f&cehQS1(Dd-I%T+S%SfX3)e@"@%
PI5%-S9I$hKCBEi'f0`A94KHm)RJm6CGHHNk-%q$[B(*QQ9A-c0$4ml-b)6jHPP9
BENd[,ma-6m0MkhElf3c(`SI'+Vc-SI!b%PiQ#kmP!`d%HV,8$PBKFp'Hc*c5FcT
Cm[([-FPTkH@k`T`MVeZZQ)kbDS8G`iC*JHqN[C4EGLa5C63VJTj+bmSqQe1Bqp+
a5L0K8,L`-((RFNYdj@*'pYPV)3k$LNB+RpEZ9JUH2QR`U1VUX9L+YSPY4h'B-m9
i9G852S-KT,M4Kk%CDm4RcPh,Sk1-q%X,bkk+KCNCab,ZV*QiTl2cMadVCkmGH!d
-Z8F#Vl'!aF#L&A6ka`i8I3Tc""3Q(,%B#JeL,0rLG"&)f!!5--B85f-(LM'c-3D
3!"KB@#BI,T2jMJqAZ4RjSYSd1!@'!3p-9pTm1-BCE6XQ@[+FX4d6982&3pN904I
9GQQ,e&NZcEqXLceFjp`&deK+cBq+eb8(a,YV`[m$!rBrr16[Q!Vh`T!![E1e!d,
E[jUL0T8Bi!+efl#KYEY!EAV)f3T(d9H,UNK"Afr5S&keEr0E+J0"9c+QfdC*51l
(8LHUYPl'FN'DreaklV(`DqmKUXKBEJTPf3@@0FFXkiRP,GLN5E'"@2l$Vri!Kq8
9Q@@"YS0K9mNZ-+b"B@VqKjb'1+2e"#C&f`K3JX@Q,EDCVGfFhA(1ESX8N`hYJDF
,dS+kBf3hAJ@JJ,Vm&LMGEB*V3f*4ZHQZqV26MN8Zqq$l)Xh20+mbHl2pZYbFl",
G3%GITD1c4I&BMXi`1qhl*+`NXrb)Lh!-hT+fXCVq*PE2UPi9),1X!e#ADMYK)+P
3fiQ`jIDD1KGdriD!q`B#EZj#8(-rG63+i06Jl3RBG,5lpb&R-BbF)D$GUqlEjYT
TX85!pZD4J2B4KK)pCim!fRfcUbGfBf"@Bki&f)dYk2l$$Ep4!$[+EKbiA36FB&B
lDJED4`(D9#d5D#I-2"S+fTY(!YTM'ML0(,3(PRYMJrE!4amED*qLkSH'Y-%DUS,
Ye8A9T(*D8dd!B,p8G)Q&U2#9b,mfdXG`8c4kJ@2MiYXIV+QQk8Bl#4KF#"AACqJ
"-FBq3"@rLcQdkP3%BBiMA*,)(SaRI*06Q@!jpGl"bJ4kc0f%q5B2G!bPH*ABN66
BU[)"ZEbPjIiHYCH%!kaUiP9LPZ+c4!ad-aRkMN6Q4Na)4SDm93Ii9eX8HD[DpK[
bpR$Nl@'S8GA(PjXKMaHR514pGm6)1d*"'M'SQL([!%0H+1SLJHjfQi+i',di3P`
8EIpl35hlaJ+eG!Uck3NXS,B9RSLIC@UcAKXbJ2bHf[%he@fD5D%M+GPNJ,+@AKd
@E3Hce103ND#[$8%bdEr1A')iV-Re"QNlhjE#99a2199eNE6pQbaef2*2IUKA&GG

CrZP+i$dP-0,`#!+F-%p+2Ac,2'A,2,l&&pq5,b9,GLaXZ%llaQljk6HjPTpD&N2
*C$'TpRT9X9ADJ3mqp6IckCpH#5#`-Qki,#8IY#1BCHI#(mDdKbec%"5CLJHI@qC
LF!IP!6jPlZB!`Zp+Z!A08mR#[M"PI+`f5`PJe3LM+(fYJAVi&U$Uhi'8PD5f%'e
F9&`[qbd`JVk-`E@AXrr[cL%TJ4CHS8PG@1,EbK,IaK+l,09BBJ*Ic")XC3NTQ8(
*1,U-@8V`'FFK#,,!Q2$046#b9K'bpNVJrM"#j1Y9SpM%2pV%2pKd*4#HSJjMZ*K
ZZ)`22VHXjapraKPHccGpaKQ'UKiD[)!'PZ&*Yfk'L61["SALejAXNN,Q4G9N&Jj
2@MRGBkIQ+0KNJqX!P@J+81KabG@ZkI9Z2G['(Q$Vbd8m4)R,+a6![#"3`"fEjT-
S-$BI30pa-"P'AQUQC8ScIB&&IP(HfA)CLLQ[L"9Ba,+RXp4'bhb%YZDlH@J,CTT
LD5H-3`4k-q1JYd81,J9kaBacD9N$PD!qh0QaN3q&l$iA*4qVRVZ@j10'*EEC0aD
a[Bh34FJK4pYc8ADbSmbp["l-lHA-lC@C1hc5j)'*T6k5(3c[kN0**CQhZI(MYUM
a!`3c('GeHi362rEBNd-A(TeGZ$*QIR0"-a@UB0f,UM*`0T4eH!TJ%JXC,0I$`Id
i!(15qm9QEkIS,P#p-E%B,($c8ZC1,cRBlRc9ki2jLP5LSFiG+q$,rRjS#'VXUik
DMYjVP%e(G9#3!11,hH9[JQ*NRGV8dJ"bL)'I+6$dQ4S$D9dBJYDQT-%+$(l0$8V
j4f"8Vj+c5icQ0i1CP,KS[pp!K`9V[1LH&Hc`MQBdX3E[fHM&)@*dkrDKhh(6Xi+
FUa1p!4UZK`JcQTR8fK@c@K--JB)*!r0hGkJBQ,YBmEDD$D((MX-4$+#MjQm&dBC
)4*TN4+k-)V,#aaY$mei)'VcGZ5(0d1`kIb3N#hl,1bf%j220hVCJD22GjDT$piG
f-3DK4SlU!plZM%-4U!kGX)')[0UH$2HII[B%JT+cTJ#G$JUDm8&VZFDVQ%1bil@
QfVQV`1f-0N8Ta,YI9'YM8QF00d6%CL2m-A$6$4qTkH5*&fH55mHQ&'f,NqP--iG
Nl!ejE1l)"VP*HCACKQ+TZPF#U82"[AM8,YVMVZ-`#+q'(cI[j[*a[,(DN`C4BAk
-+R%G+[SU)-1J#(S%9@iM5(dlIJai%A$4a-h&!Si)Bp$3!!-[&(I9Y8hYF%b0Kf+
H8Fp21#K`deV13Lq+@8lX[-9C,hfYkT-r8r8)iKLNUkS4i6QMB440fqPd`9$1$9"
LKReER9Tr%`a1L9K-JdKN"SCb3m`@%(FHa''@kpmKF"XQ`"YF+QQSe+qAYJ`8)X)
f!fhl[d!&XG5md$B6BYSYed"-ZdkeH2Q@L6!P+T[JSV[)*)#+qPi-*5CrNk[HDPQ
058E,-P6LUcd"6`XDIK9RNMUU4GP%ja&mG*Y6S1SG(8IdbCXiZdhd!!B4Sff6DLb
HCeR"Kb`Vi,icaHC9-ZZBIKH*J!,(E9!(TN(A8Sk#0MjPY5h`Q,)d$*jSH91*+I9
8C#'QlJ*+-Gi3,FB`T4ZF*9,2H`DZTX+,fT1EQ@)m+I4c9BNKMZ*I,9iI4r%0(-@
rNRU1L1)EiLM1XR9c"%q&N!"fAC@#hUPX!`DB2fFS$TVHUe0[09[+,,k8@A`TEAb
JqA-`qR0He4MB40kP,`DcM5YHi"ih$kH2[F4PUR)Pb44-6+35K+D@GR1d&e%a%[8
Fe'XSD-JI$`&Bq4"Hea+[4[#aXd)TD,&5fYD4[*ik%b(3f%BI',S9!9$ji1&S&S`
jh#q-2+,9KeDF[-M[3j(Aa,eMVq+$[+#VXd1*R&,SBmU&TPbi5(L`,Li-)AFSIPV
HSL%"%c16@!@SSKXA"9qPhFi#)TLF-"&5,R*8'SEHCBhqc#S63R016b6ikKe8jGj
aG1Pj&i%b2R'SfU4b-r)Z@95iQ%6&QiLK@"NdRcXff'#$jMN1L'Xj4h8@4h8T32T
RF@3EcC%0S&l!JAS"%-j!qQF!kCmaY,[eBd%lS4"&5V2F&`d"JU$F4iJ'39[*NAV
)1mpb(a'(pe3CZD3F"[4Qp5-1'a8%ciNL'!4RSf8UK'c-PSJa444ea9936Z)idTY
#0LM)CdGa4PFb*$8R`5Qper*V$M*Umf'PBSj4efU6jMI-VaDeMbj#6l-a2fEVMV-
qV4IQIFXX1"beK!+`55mF$E`3cB0)AZfS!HI&rTA-Lp#%#+PNGXQ9$%G9#YYFXVP
S@leD3BA5C4J&BQ1@dlCZ8P,DHKV(%k,cd,(iY"V$9ai8YlB`NZ#&d'#jhl!iS'X
!)+1V5AB*d$E9XXcT!4K5PaS&9B`S%,+#3rbBFAl-0ECZ[-E#er5U8)qJJa*aa$A
mS%3FY)-cDD4U!iKFTQ[MKj'#mXSiU6[Fch3f3S"@9A,NT%`dacd8RQCLqaRh4La
@*U#XQ!aH$f)3'-(`1iBT5A`Bf"Sa"+32M[,"XPFHG'ApL9b3!+$le9Y3D!BFB%X
2a%PXEeP'GTVZ@!R!CYN0K#-mZmB,4H8"P13!a+5+`e6cZ!,H'*Ac0NH,BAM5,a1
B8dl1l`GFC9!*DqVjK9i9Z+)#$F#'U+-b("!Ya"QGTMLMTf9RP!Z+1U5RQ80+Mp(
9fp`TEH),ZLqk)(iB(&1Qi+)iTcf1h2!aU%@`6ljVhEje5jFk0KIllaVBHSblf)r
*,[C6cQ[KBMmi4KGlK#SB4hDaZG*T#2"6'J#,CGpqGl(l8['iX9eXFdCl96+kl6Z
bLfd2GE'heZeA&pXqBKGl[jLSi#+-cF9H25BAqe#)Lhh!(-P3XMrT%KLDqcRC'mf
FE(ZSNkdJ1h6#r(j1GTfc%8lfd3JR@qrBZ,NQB1Cb1dISFMFHU5QM,VGH--dFSF1
p[mer6d3-#M95kh'U2Lp3E!X@FCIE&KqU(Bp`ZGmbFlRILR#jC9'UQG0YMc[GGKc
b)!C8Fa5RHf%[GlUTHr"qFER[jLjh'eq)Zc&'S#@@FTG`)AHkNf5R1l6TdDNJel+
`EaFmG0+X!,Q$M''h)B'jj0-8PlaHF4UR1CVNbV9BiJlk2H5J2ieLTMMS8lLLk1S
3phc+!1lj&$2hI-S!l[Q8!Ghc2r%"ljm8G-ASB%+BiU$IJf%qPYGmJ$(CA0p['(j
+)302Q,RSL*T,28r5iDGB8He5j@,1(@2@)0Ga&ce*GY(l0FKeI6[X!c@)'NKJ,[a
%lX+Vk-R''Q5LSdRNdV0'#4V4"FGPY[$CmB@(1[3-DDeXSUK*H&99#R)dMXLaleY
*,L)p!R2XfH&C9&c&4PkJ+P#!I(l,SS$bi4DjD)3iq#EqdA$Fa@GEDrD!B('9#ql
N0hE65j`K5RVJNp-LM-(9ld1"N!"A,*,LkYZ#,h!(Y'MX3ifJ3Q$8G@0fpKY$RIf
RN!"[LkYFbS)SZ+14SMSTSj!!UVVc2"&VjJ6`64NF`9'(AcTk*)Grp8!1rijC4md
FrZd**)UM@bCA2MQC3amZIepQXNT(j0epL5-pk[6I(NGlMB0+q6kP8QC!IcZ!rRB
Cr@jKM%krR6Z*Gm5VNK53!+Nl'XRP2mR45Llr(4%Z[i5M9cYdq9FT++k-F2PAFCG
rPCR,[dT'1SPcl2*[6f"(83'fV*D4e#bLZpeUbcV&k8q3!*eqNlEa"2e02,'JHP8
hZNM-3J#JQ`F!YL!!i)i'!#6IV%"iQNC"J,[Jq0FT3B#l3S-!5+1bMP@$kVJcppS
(!4T(iCMMB"B+B)%!VDp!3$jhcUmiFhNJ)%X*"'`*$36XQ-8'`$`3X*dI04jbe$8
X'+#0*"L`R#UC%33$qP4[MJ`'K",h-3B'aU#kIH6!3"p1Ja`BX-Z"!@AB+JF'l$G
DB+![-K%5'2MPri(!`-VAqJJ-f11"!9YSB%"aSDFT,[4TfBAH,i'""mFH'1M62"m
5''"J3mVG81&@3UUK4Eb!LRJ&L[KkTBLMU#$F,"Ia&,Q)Qe5pca66qkJ+9kS*bBZ
"3,!*A850FJMI4Y9l5#8LJ`Hd"%Uq0h*q5Qmd&LJBF)!cd0U2J@M3Hbc,(cK+%er
qJ9kNaY5mReBfL#Qf6bZ,[XkT,+TX-"fXE*!!GZVYaLf5Eci![Z3!8eTYN!!NhiV
U'R[iIfQUb@0-PP*35&@e*GTjeFJkVaUJK,25b!Y,H0++)@1eY00N0cqQ(XH!1,I
0KjZRDrANV,a2DV-&i$bb$UpN(R)a3MlkP03T(kchQ,ESNb8AMM%PVe9MBNcDiR3
2APqKkE[3LDqBGGj63"ZGN[CY!mTM*R6UVM8iBS*emHeJJCIY9ZXj%!ZaX%bA,RF
l,8YrbDqM4VGDkB&jD%M"m6#+49Bf+%djqRrf3qq-%-CR!,dc4S$HMrZKei9`#3H
Hj)H4YS+K0Z))S(E'rmG3qrrh4bhJ%Vjf@AikB",+P#2$X$Q+*i3JB!*32'%rSIL
e1)SMMJ#+*rbRK1+cai4L*03N&)2!)C'9bqrk1&$'$)$A82)8$`p"8`T8T&0m%cm
'6iDUVkf29bbZT-%Q*%LM,LJ8U!8*I%B*1VAK4h2fFQ%EcMFM)HMT-*6NS4JiJ$2
VG#'-`K24TPjIrb1%8KZb5k$HHGUBS4TE(r*dHflS6hlc+6!5*Em'QIc#4)XP)6#
5`SJVZI`9UUQcJMQ(4'4hf8lBaLXEFTEc8*NKMZ4RcTCRTZZ'Mm''bj+16*%6K*e
AmjYI9&dqM+B4`0[+%@#jQ44Akc5rLea8EPj6(9FXq@1X@23U95ZQ'$HBXUDECjX
TGGT'#Ce[MQZ8SR9+l8hiZKNr%fYG(Rq@kVQ+C[`khSb'IXeS3[2Y8TUahGN%`AZ
9jTP)cH0XJe(`Y19QBJrTeSCjC9CRkN5DD4*X61kQlBE'AT98,'T9X`SZaGXYVZ1
KQCZM#T&8dAeqM"8GSGdK'#Hq5)$NP!&T[b,kNGCa!0(SSSDF$B4NTDK`0"2l(0(
d-,,)p%Gf8dL4DD1`Ue0Jk!9D$8"V'eJJ%@0!Dfi8V3bF[d0S24CS,QAN)9&'E(k
c!XUr`L)5!FDaHSdZqB#B8MkhN3R(M0Pf'RBHmP'3!",-YS2CiK$!mMYcS8+4MXC
*P"j!3U'mNKGiBIrfY5rXV,Q8`CEU0#b"H0h$VNi1VPj+Z#XAph1jD9QCB[Ua'KA

lNdmjT$+Y(`%Y(K-"24`#$LR1Ca4a'mklib6823)5+Yj)**30Xed+%9h61!)51[#
)1r2X%8MSDS@%8M)"Yd*#jA"&E$m58EN"j`p!4UH0J)cUdBJ'T6&ERBHiD$0#qM3
9p@N+)DhRK,54%p++2JJTD`)0T(3"JJR6aNK)qh"h(""5'5&jR*5@lQG5+SYI%bH
Q$iF3dfNM*UD()SBI,LjHB%MQj,54Np1+2XKT(,Qj-R,(3Nk2!0RrK5#RIB9L%Vd
(+rmLlT39",`Y(!djPFqa8!XZrG40Brb`r$$4%kNm3'PQ+[m#p"`)6m)@5R*8PP'
B4SZ`4Jb)C80k)M%+jm$Jf$RBZa-TE&,N"598)VPJ)Z[BYL,JYpJ#hLEaEK05Vp-
$G#[KNrCXi'S2GFcKq0DQb#950`M6HbaKaU-jK9GeeS&A+#H3!`I)T+5E"@&X0rB
XRPQLIl+BTB9*UTDmJcI8D"ZITEq*cmkZARAjh`*0DX+PZ8[hEG1Yije1@$$KD%N
fHV4CcIhH(ZVk5[qBXI4lMH`6RVdMTc$YDXK5Q#Qm'1'bA8X@PKR4!4d,`e*FE#Q
Y+S&2blKATC!!1CC`Lfi9Gf$B!Tl"!Y,+#R-GVf+!ipRLMQd4`Ik,H&aH4'jfqXK
A38"c8JNB8X)j`paE5[4(LedpcDSZeZKcY[2%F%KRFdhMdhj0YC`NBmVa!&r'1Kk
bC#'f'L`M2IZFh`pAc%&lb#b2lE#*BcN-dH8M(iBd&*5%JS-C3T6YAbdY56%dH3,
$,9mYeCf5YZJjd!BqK,LcQ5@kA)G`9%ErSLBl"Va'4@`V9",!51[FT590lrQH2!5
&!NEDMS1dYFaGDYqQ@aB#VKrKU0c#m[*S@,`Ib*ECbq+([8Hh0R!4HNVLU*RDf0L
SUD6Z3-Sh)(4YIJd$KZd1YrRNE@55EP)GEQS,hA3)T*L-+95"G-3m$ClV@KT`4$-
UY*8(1MdA2,qAfPSZi*'Ee()0-ANcIdKU'Qmj2%5+,cI*i3C$I%2-hqJXF,K*#0R
NG#BB$U[,R8PpEK@F&Aa6Dq3QISZ'J)a##!X`95D9T8PL&%amb8%cbD"3`m2V[ej
C8rdKLLk&$*I0jbmZ9AX)S!%Mj4F`alP!5+p3"q'K,f%ffFV"B$Jd'+h),U21qJ-
8eG)p'@DTQBET1'-eM!qZ)+8LB)'J4S4@8S*Y,)`j8%UMb)5!mG0$%TH%&Xl@BUT
XikV,P-!49F2I'Y'GX4'G!T[E!lDa%i)bJR)U6b-jE%VIKcNL"2d11d!KEi14NQZ
$&!cH%QRi`d0TF#&#@VjeiqI94H-PK[20TXj9*l!8Yr-`2Dlai[Bb!kEki-C"T(F
%@$5K-qFd$edDDkS0E9JX'dTmMX9QRi[MhMc-eE2GPXP)J)fq33GXSD5Jhr,pc5h
G39TH&PZmAYXiNriQcPaA[@Um`RGHVB[GGZ'YlK,AqHD+Qd`hL4TMCG9-cXU!D9V
#0rFUE%JaC[!-BB80b)HTdXdp-LH%HaXRRAC`G$B8J%QKNJdX%L3!FM8#l9ll0JD
HI`dY'qDLYdF@K"""'H&*pkiGJk#b5%&N)UUKK"K[cUr+D+1U`KQ68fbPjS$(c'M
`-42r("4p&brkKi!Z9VMeS5F2IflGSF[9P@-X0!!VrBAG1c4QB4(X)#flNXc61)m
Eq@,S+Tf('c*j-4L-456Ta%ed6!'SUFDFG3j5AXk+QY,LAD+A+4fc[A+LcF$C##+
frj0FfJIi,#**(CQdSF$)LGcG468f#Mp3-e,DY!',UTH-hJa-!Jm5R3r'BIQlhiR
h`X8#"`k9b,(R`JaDA(TfZCa'D%q'-U"5&[JlfG6jdmQb#4BT+qq)JZlHMi&HQ&"
A21Ha+qQbA*bG*U@$XD3X9BU!D(1da!&+(NlU@I*J!a,3eNZa&G9+eh'i!epk9Hh
,R@T-2fk+`Ch5[1-!#FfB@R3TZ9Y-M!iU3c1TIYjVYHEVbSK6IhD*G8q'[*!!ck-
S`&0DKkeRMjb%"5l02Xp,j#)SL3QcQ-X46D%*jfJk'4h%0ZlQ6-H$9j@A9r%b@AQ
CM*GAP*GAm2+bm[)bA[kZ[2`G,imS,irJj9(Pj9'mV&&HeZ$PVmV,Ar'bA(PCMTG
I+#qrL#Ie,8!r%A)[Ar!hIbe82L`r+'UN,D1&TGRPkBa4Q&NH&SrLkiRX3mRiNJj
@2V%#hG6I@5aK%)Xd[hLBZjSVQFl$blaJLT4615qTDJJ[-S!80C!!f(&G3@Dk'KH
lRJYF$i(V5@"P91$kh0AiHTq,HTq,H[q,db5L`@S0%5+V!C!!UqAh"EU4ZYIe%93
!HK0h3-&Kk(IN&2UAcHTQ*L"9I@df[@+EjNpX)9@"pl8m)L[di3r*203K9ler(N,
$A`8TbN9K19H@(PGSiq"(0a+"L,8!`R3YMlUV35AL0H-$qBRATHTpLdG,$KLKFS,
A#CAG*@kpEqiY)J'PKQh(&ir#ZI&9MCEE8B"G5,A%MrpA)p*rFC&IBQ&B9JTcMPk
l5%4I6T8dJbdVl9`T[iUL3ADak0"8rhrm1,8,eCcr@cqHm"'5qM2"ADHe2&0aX&I
UH4GT*6(-ZXU9%&c[fLK9-#iei`NF@mbAXpPB,ErX5b$e@+6i1r%Z0Z%(KdLfkkS
@Ve@eXYLA26cj*NID*EDmM-aFH@P))l9EVe4#jBQE"rhZbi2qf1@[QP5fU"eBe0Z
r&@1Q,e3A,V5Ke#')4A*k%,S2-[NbmB9,&e"YCHl-6(E-ZGb3!)0i48H0dKb!dMP
Z("U6,L2a8MZUJYMP+P`f36AEIEN+Vr1ES"Vi`H@Q2")f)9P"C@K,bd-5(Y#%!VR
VI+,qSDAMIRI,Z1`1Q05ZQ`Y8rmN@'"TaHcbIr%'&@U[kBbhMYF6k66,3SC'48%Y
UUlT3UkK`[6DETmE@"eZ4CYR&%PCp!-,e%D(BL`GH16Ji)ll%0(p'#1#lZ*)F"m4
Bb`4aRl%#$HeZZB*Nc9iR&(0HhHbrkFHTrN5JIF,X+jX$hDRi1&9-+8LmIX+k+qq
1Hr+N,U0KcL@S5`l9G09X8KCaNC!!$M8XP`65qF%@ZVND9"YS1C`XT-DANk-V$qU
X51!I(eM(QZ3EXVfBZ$#ejqBLh1c,q'E,&G''49bC2FS@e(,j-PY+l&dd!Vr8!+K
[0j%#DZ`b,N`*5rjCM1Nr!dMF*EU(ARF%$&YqeL3j@P#ZVL!p1[$`IVTS0C*Yj#a
DA9-P2IM"9MAf)9i!(2L5R[ekkk,9cK6kURRf`kdXQG9i+2$Z*SCUN!!'qqeE4(I
U2bqCY'Le'+-*dSq#@NdU%dR+m%1TdPBfE+Lf4J)QKDVS4UGYhDTUq$GhY`9DCUj
Z@"$9NMEFB+LCEJ()LE!*BD`84E@UUGE(`+4S)E[BYj*AkLij#$@$MJ#cCkfPN@5
JN3j$SpmkZhYc`06XYbm1P,Mcl4`4EF5f8`N4rZ!Le&XmaJF8dT8%9@1Y0(l`$jr

"3'Uh(D'BVlfB9!pL&TY,l+q6TiFXYcKdQReEq'p4TD4APGS6jZrbl"aVIL&9VpN
CDC%T*"mm`3S5EYX6*m9q0bPMYh3MX&[-5$AGYK5!e2eq3%lE6X&80Z%(*L931N5
NNKhq5SQZMq-2m!+16LUZGmQGT8l0l5ZUZbBYfpJ&T`"N86-9&hAMF8F0ClXcKYJ
V()F#9HT-TPZd0TcrPcY'k38hDEYF9Y5&$Sck%aKqa26HApq`2blY-06S0Y%4PB'
5eY!$E12XX@k+rJ3Y[0c&ZRL%*beD$,A'')C"GU!8K%m1p%lBRPN`%+RVi#'II*@
BGmD+,YQk+bH8*NSq-l&3EU#`YplMV4,hHJTZAFk4[b!%'*,mcH%TPV`+VD9+6*'
k*$Y8+$8RVf`YL3m'S-jpHKD))cUEZ3!f$p'`L6@G&HS8T1TQ60"M'%PT3k'i&j1
V[9FLQe,-,0#94$BQ$eUjc&NJ%[R$5rdCd60'Y)q!*'QRG!P+(jSS'4-3A+!1(BV
Dm`X09%$!fP33SCe$9I,3mHrQS09[3A+ajdLTmHpF(#MGaBU1FjI4!mI$T45N"I3
UHH@#hC!!`b@E$@k`V'Imc6Z!@#+@5&J9J93NA981B-YfcS)#BiV-3P'm3)b,j6T
GR,69TJ"9ec3HEQjT!F0628&P5YDI3"Lm+2"E[&qVZi++XNcK%eMd)II9NdrLPJ"
Ae4DJ,5@BJZ$-VL!4`#e5LMK(GTa1B"c206["5a3G['P#$c5`!ePhZk!lhd+(3Y!
GNNp'"d5aI%Ya89aK&K@-d5#jNkq!!038[qPU9Zm8fiSrKU*d#Pj5a"KHlV3pblD
)YbNK)8!pHM1NXaB$k33*eD8G8@`+&hXR&hXR&jX5+ID0U0MdE$1KA-%6LB&9)li
NU)RUdF&[NeSr#*942'T#q"3LRVG5$HUh`XiLkXV0KV5jXJY99ZT[TV59e-dI5YX
3Ki#B"i@),MTULe&a(dkU!L#i&`Gi4bCb`r4)Y"mcND%)346*jk`K`a%kM$6KTZF
qY9-db!,i%EX`q&4P8(QHI+r#NJ'A4@BR+*ChQ,4JdNFpUYk4b&*bJXbA+G!bTGf
db)M&YFZ,Lc1X4J&hKJ`'mRVN)XqlBK#V!-3l49F8Z"49Mmd`-L"`1-8&Xf8cdN$
Xm[GLI"CEV9%k00(!1h6G53,ipYIp[X@"R$T$,&RpQiEl!Qpd9d$IAVX-%I344hd
Md1Tl,)"`hE$fTY6XI)&Y8ZNfmKT,6Uq`m!K2N!!!Y`q+ehV44!X3AG%MR3BfP6p
b+BX`N!"C,p3!L`i9R1"FXPU4,p4+,RS)qh+3!"i*GSR0hIh0K4#D`9R(%*(5B-6
9@2F55aN5@0,c@jlSii`iHF*H,Y!TX3ZElfqlh6iC)4FUSPX)'IH2Dfp#%Ga&#@,
N"6HFbm@#ba`XPYp5XH8kDUB(iNdAJcQF0GP*!Q'4Tqr,F4[S%%hFlRIRpej($EF
EiF"H$(DlJqM16Khk',[aVScS[N3T!H2-5!LJ+3"9Y)f*5eD$jJerbGp'B,&+fk-
bmcH"0T6M*9'+0QM*-+%dZ#YLFP*SJaR'mpYSQDYf`dMX$YC"HEl0R`+%pb@'Jh!
SqY$Fb)8EfYa%2N%#2[eNLNJhKiBMMXXkKLEFjSM5[VQm3J+#((lhem)R8jc&iIp
+YrMjfP2j2VRfRdc*EbDbbJYh@CC1'30NbpfRH5L(+c)'jhN$r"!ph85%%HMDBJV
Qm'2d4KK3jdq3!*dG3VXb),9DbFSHP6Z3!1#1%(%()XA*JFdr@keF&b9bN5`0qTr
PbLAL3jNBS2SJm,D(N!!#'LS+FP8$Sbq4SCe*9EL[p8@Uc)BQJ(M&N!"qEaXh-R6
)P4e!NQjX&1hqc3"Ej+H($1f9BrN"TEN!Tm8$%+-e-[&*9N8'U$-C5,T`chDG+j5
3!,!2pUL-M-F"0i9Y`Q3l[df@FN!b'`iVeII&QD5dhJI)+F3(T,Z*!9pmq#&b5KY
LrKN')jXcFG"@9)*)BiN[0iMDPqUGk$Mm)8"V)J6@Yhq*4D+kP,j%9i8$F0+-k0$
58I1PHRafYFX0"LNPMAY2B%*!DQBK($&GPa&bN`BH),TSj'%Rj61cT%#'+%S*KB4
QN!!eH3PUXbBM5Y6hBlmeK2hi&(8"*mUi8E##1U0Hr30F!D3Q"a%+LR+$2DB'Af2
9L#Z'JYf',jrSSI4(8'"Z+NR"6E#19f*LQFE3LLk+q,"U()$@3800G*XbSRTVUX)
QZUe8D&-lfpLV3ZS%$$el8@eA8-8*"3FD!"3RTA,bCJLf1f$$3+5AhpK+D8Uj!`*
36$fTSbJfm)#XM1SR'+VC(NGE-RTP)d&$MLi(0q+)+RCc`!""TjYb)i'8Ai)63Q6
89r'MRD-,8GP-(T@ffTieG#H2LUG3`EG+2Sm`*06idTY@I(%P)2PZV`jFEJM8akC
!&GlE%$`ZE5ek9ZSHqaF%,chrhY,aP8a!5[ca+Er[qJ#+EBUbJ((a&-bG"3T4K6T
,"S)%13SV4#)Ykd!LjbN%$-(Hc'`Va[64i#+D8[[&!@8SQ[C5QP8CRFX$[1A[+F,
T`j!!iAAF%3H)jE6jfaE66IfKdN4+iMXQI6)00dR,-bElQqHf"0e$UI`LKFJ)"dN
UcUhd1[3l&Sa&XP0IdS63)G%S`[4TZZK#M(3M#[b2F2"#NK8RI%2q4[5Il9bQFH@
U4[cSRIAH+pQlh(VerkQGU2`PYG0Tm&l*F-8I'G61'VHcV4cr#`,P&PCF4dA5()J
F+T2jiCI9!aSJZ((R`PQJZm`2e4rmpd1KCmeU)@(Q'jFqZA!Kl,ZArJ[R,PZfl!E
mK!Zrp5fK[1Zc3@'0d$!B[[2-*i)(2e8A*JZr%)*9`RTK3rLAi4H%qH&j`Jr19#i
@-[R$)9pi92JUr'2q-(c`#H(C$F,c'lVHZA4KqIS,3cpjIXMhj`ZMSm)f)IMC(fG
kRKSDa%*-i8rZ[9IiblhhlPL+dei92[fI`VSh4VZ&'8*Zq'GG3H&Uq0kZ4H%hcUc
j@2MYQH@,K0rJYkZbkjU`VbGAH2!c!AF*92mK&'("K3hK@jNXBBrJ@EC-b+'[F$-
q@a+Z(FS3cSCh#fXQ#+2Khcph3rL0#F),9B*IH+j+q'q9Mi3lcc`[[('Q@mJlmdI
KVm,b4ji9RK8q2R0eKK#H,[cfHH'&KUq%IeAf2r'24m,I2R0@q1a-6VMqc!EK%f%
6pPm5IRr'182`6KGqc[E[QrlkNZQT12-ViEl*`TlT`Q2#MZP#N[$I*`ZTNi@pdi8
I#TlTJKd2hK,#&e)VK5jKU#GR3rJ(`NY#8I9R3Xq-ImcmBi1`rP5iq-5ii,Ppr3T
"Q$`Z,2STNSGG@0r`bSP2K3PIIE&'+2b(82V'S,$cjm+@m3h20MakUI,e4i5KDQ(

[&p1&r%(K*`#3!aJ!!"mS!!"6i!#3!`J!N!-J!!!r2!!(UI!!N!-+@-!!AF!!!&h
!!*!$'Qi!N!-"GJ"1F8U$CL*"l3!J)$`r2!!!)MbTm!!"5N&Q"%T!C`T)3%K"))!
K33!%3UG"q[r1d2`"!#m),c`!!"PZ,`0K!!+X9)pR3%)i#Pj#Tbmm4%&836mm"0@
S(h!"%F!+ANUICaK1F6!mUA#R4N2k!#SLL%(k!#!`2+P`TNG+JfF%F!&1G8lY!#*
1F8U$CJ+Tp(!!6R9J"J#3"3&1F4mkrrC+(fB551IJi%(krqT3d%kk"Dj-h`F(,cV
rhNjeB(*"6%&%4%008!!$!*!d8(*"E8MRB2"d8*r#,dJ!)#"2)P3aD3!8!"JK3!!
N-A`!!3!XdT%K33!ZS!,I`NcI$`C1G8Si#PjR$#!U!!KR$#"!)""R"Lmkri41G8M
R(`C"q[qHF!`L+J!%`VJ$'Q'NCJ!"2NKkrij1ZJGZ@%q`H[pDCJ!"$U%D,JJ)+J"
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806

3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
C`#e-rr4#3$`!0JDf4@3XH!!i!be%rrMBLL"%%"!L,[ridUlrm#""%)!J,[rid)$
3V[rd)%!`Je*'B-i[,[rd,blrm$m&3QG1Z[fb6qm!$%*!2!!f"VC&C"*`!$!$d+l
rm#"!5K"Q"&*'B1K`!#e!rq3f"VC&C!!!U%T$Cc)J,[rNH!!i!be%rrcBV[r`)%3
8%()!%J)Q,[rm8i2@V[r`)%-@%(3!&!15JZ1S,8$rj$3'FJ!b!Y+Zrr!J34)3F!!
3!6i!,@lrj2rXF!!Y32rS-!G64dT!Cb!J,[rSiiJL,[rXG!(#JS#",8$rk#!Zrqc
LL#e!rqaJf$3'FJ!b!Y+"dUlrp#""-K"`!$!"jB$3Lb"!)+lrk&*'8Ulrj'!!re4
-haci6Pj1G5*I)&qJ*5k!DJ*#Pdl4)Pm5(c!I5J&R"+G'B!+M4Lk)6Y%LAa)I-"m
JAdS"C`5Q4f!#SNG1d3#3!`S!1+!"!!8!N!B"!!!"SiS!!D++!!!&5e028P3'GJ#
!!"`%FJ!@38a59!!+!,T"9A-b!!!"2N*14%`!!3&+3dj86!!!!@*$6d4&!!F"EN4
"9%%!!!(14%P86!!2!GT%6%p(!!3#QNC548B!"!,@4Q9KG!!!!a**3diM!!3$(NP
$6di!!!0D8%P$9!!%!fC3Ff9d!!!$SP0*@N8!!!1Z8e45)!!"!lT69&)M!!!$dQ&
eFh3!!32HBfPMEJ!!!rCNBh4L!!%%!Q4XChJ!!33DD@0X1!!!"$*fCA*c!!%%2J#
!rrmJ!*!)JIrr)!!!%!#3"B,rrb!!!#!!N!@&rrmN!!!`!8$85!#'rrmN!!"!!8$
6d!#(rrmJ!!"3!*!&L2rr)!!!B!#3"!)!rrmJ!!"b!*!%!J(rrb!!!))!N!3%!Ir
r)!!!NJ#3"!5[rrm!!"KB!*!((J!!''J!N!@!rrm!!"L-!*!%!3$rr`!!'-3!N!3
"#2rr)!!Bj!#3"[rr+!'(i!#3"3%!R4`!*Um")kkB!!)!Ta`!X(`"303i!!-!X4`
!cCm"303`!!3!Za`"#E%"304F!!8!a4`"1ci"304J!!B!ca`"@r%"304B!!Irr`!
"L!S!N!ErrbJ!JH`!N!@!rrm!N!1L!*!&J[rr!!!"!*!'KIrr*!!"AJ%"@V!!K[r
r*!!"Y!&!iQ`!Krrr!!!#03#3"BMrr`!!!S8!N!@errmJ!!0G!*!%!3Arrb!!!mm
!N!3""rrr)!!Br`#3"!%)rrmJ!"QJ!*!%!J$rr`!!"(`!N!3#!Irr!!!%ZJ#3"!2
SrrmJ!!8'!*!%"!(rrb!!"6)!N!3%5`!Y"!!D3`&!e+3%Vrrr!!!DN`#3"!%&!!!
J!!@b!*!%!3F!15!!'Y%!N!3"#!"+)!!Dl3#3"!2SrrmJ!!A8!*!%"%X!CJ3!'`N
"304d!)$rr`!!'b)!N!@"rrm!!"XY!*!&J[rr!!!E1!#3"B2rr`!!'d-!N!@%rrm
!!"Y1!*!'rrm!!D*m!*!&J2rr!!!E@3#3"B(rr`!!(&d!N!@#rrm!!"eK!*!&Jrr

r!!!HC3#3"B6rr`!!(fN!N!3%5rrr"!!JE3&!e(!!J[rr!!!&m!#3"!2Srrm!!!F
6!*!%"%crr`!!$L%!N!3%6Irr!!!2fJ#3"!41rrm!!"'6!*!&J2rr!!!6)3#3"2q
3"!!"Kr`!N!3#!!!()!!A@!#3"!)"!!iJ!"GS!*!&J2rr!!!AG!#3"h)!!#$S!*!
&K2rr!!!K3`#3"!4,rrm%!#&(!8"Ni!%&rrm!!"Hd!*!%!3Mrr`!!)Qd!N!3""3!
A!!!Aj3#3"!%)!)%!!#+K!*!&K2rr!!!LU`#3"3(rrb!!&qm!N!8#rrmJ!"Jb!*!
%"P0dBA4eF`C`FQpYF(3)a#"cG@CQDAJ'8h4KG(9c$NphEQ9b)(*PFfpeFQ0P#dP
ZFf9bG#"%DA0V%%9iDA0dD@jR8'&cFhG[FQ3E4AKTFh4TEQG3BA0cGfpbC#e"F("
PBA*KEQ0P#dPZFf9bG#"%DA0V$NphEQ9b)(*PFfpeFQ0P'd9iDA0dD@jR8'&cFhG
[FQ3Y3A"`C@&bB@jMC3P6C@GYC@jd)$%*8f9RE@9ZG#!b#90PCfePER3J-`P6C@G
YC@jd)$8*8f9RE@9ZG#!f#90PCfePER3J0RqK:







|




|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743

3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
C`#e-rr4#3$`!0JDf4@3XH!!i!be%rrMBLL"%%"!L,[ridUlrm#""%)!J,[rid)$
3V[rd)%!`Je*'B-i[,[rd,blrm$m&3QG1Z[fb6qm!$%*!2!!f"VC&C"*`!$!$d+l
rm#"!5K"Q"&*'B1K`!#e!rq3f"VC&C!!!U%T$Cc)J,[rNH!!i!be%rrcBV[r`)%3
8%()!%J)Q,[rm8i2@V[r`)%-@%(3!&!15JZ1S,8$rj$3'FJ!b!Y+Zrr!J34)3F!!
3!6i!,@lrj2rXF!!Y32rS-!G64dT!Cb!J,[rSiiJL,[rXG!(#JS#",8$rk#!Zrqc
LL#e!rqaJf$3'FJ!b!Y+"dUlrp#""-K"`!$!"jB$3Lb"!)+lrk&*'8Ulrj'!!re4
-haci6Pj1G5*I)&qJ*5k!DJ*#Pdl4)Pm5(c!I5J&R"+G'B!+M4Lk)6Y%LAa)I-"m
JAdS"C`5Q4f!#SNG1d3#3!`S!1+!"!!8!N!B"!!!"Pi!!!CD!!!!&5e028P3'aJ#
!!"`%FJ!@38a59!!+!,T"9A-b!!!"2N*14%`!!3&+3dj86!!!!@*$6d4&!!F"EN4
"9%%!!!(14%P86!!2!GT%6%p(!!3#QNC548B!"!,@4Q9KG!!!!a**3diM!!3$(NP
$6di!!!0D8%P$9!!%!fC3Ff9d!!!$SP0*@N8!!!1Z8e45)!!"!lT69&)M!!!$dQ&
eFh3!!32HBfPMEJ!!!rCNBh4L!!%%!Q4XChJ!!33DD@0X1!!!"$*fCA*c!!%%2J#
!rrmJ!*!)JIrr)!!!%!#3"B,rrb!!!#!!N!@&rrmN!!!`!5Cim!#'rrmN!!"!!3!
HX!#(rrmJ!!"3!*!&L2rr)!!!B!#3"!)!rrmJ!!"b!*!%!J(rrb!!!))!N!3%!Ir
r)!!!NJ#3"!5[rrm!!"K#!*!((J!!'&)!N!@!rrm!!"Kf!*!%!3$rr`!!'+i!N!3
"#2rr)!!BcJ#3"[rr+!&leJ#3"3%!R4`!*TN"!#-8!!)!Ta`!S[S"!#-3!!-!X4`
![l!"!#,m!!3!Za`!r98"!#,`!!8!a4`",Z)"!#,d!!B!ca`"8!`"!#,i!!Irr`!
"I!#3"rrr+!"e*3#3"B$rr`#3!k)!N!@#rrm!!!%!N!D&rrmN!!&H!3!M)!#'rrm
N!!'d!5K#Y!#(rrm!!!)e!*!&L2rr!!!#K3#3"EArrb!!!ed!N!3""Irr)!!$c`#
3"!%(rrmJ!"MT!*!%!3Mrrb!!'BS!N!3#!2rr!!!%I!#3"!)"rrm!!!5k!*!%!qM
rrb!!"3B!N!3%!Irr)!!&(!#3"!4,!#d%!"SY!5H6f!5[rrm!!"Tp!*!%!38!!#!
!"C`!N!3""`!j)!!DZ`#3"!%)!%SJ!"VA!*!%!qMrrb!!"Ei!N!3%5`"Q"!!Dm`%

QH5J!J2rr!!!E$!#3"B(rr`!!'aF!N!@#rrm!!"XL!*!&Jrrr!!!E,3#3"B6rr`!
!'cJ!N!Err`!"PR)!N!@!rrm!!"Y$!*!&JIrr!!!F4`#3"B,rr`!!(8X!N!@$rrm
!!"j2!*!&K2rr!!!I8`#3"!4,rrm%!#"A!3!M*!##rrm!!!AD!*!%!qMrr`!!"[d
!N!3%62rr!!!1#`#3"!40rrm!!!r%!*!%"%lrr`!!%Ad!N!@!rrm!!"-,!*!%rj!
%!!&lmJ#3"!)!!!FJ!"G#!*!%!J%!$L!!&e)!N!@!rrm!!"GH!*!(FJ!!)0)!N!@
%rrm!!#%Y!*!%"%[rr`3!)6%"!#-B!3Arr`!!&ji!N!3"#2rr!!!L9`#3"!%&!"F
!!"I2!*!%!3J!J3!!)SX!N!@%rrm!!#+9!*!&!Irr)!!Af3#3"3,rrb!!'"`!N!3
'8h4KG(9c"R"bEfe`G!M%)(0eCQCTH!C6G'&dGA-16hGZCA)JFQ9cEh9bBf8,5@j
cCA*d)%4TFfX34AKTFh4TEQG3BA0cGfpbC"Y&H'PcG'PZCe"KFh0hEh*N,8&`F'9
KFQ&ZBf8,5@jcCA*d)%4TFfX16hGZCA)JFQ9cEh9bBf8E4AKTFh4TEQG3BA0cGfp
bC#e"F("PBA*KEQ0P#90PCfePER3J-3P6C@GYC@jd)$)*8f9RE@9ZG#!c#90PCfe
PER3J03P6C@GYC@jd)$B*8f9RE@9ZG#!fUl3:
Changes to mac/tkMacResource.r.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
 * tkMacResources.r --
 *
 *	This file creates resources for use in a simple shell.
 *	This is designed to be an example of using the Tcl/Tk 
 *	libraries in a Macintosh Application.
 *
 * Copyright (c) 1993-1994 Lockheed Missle & Space Company, AI Center
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacResource.r,v 1.6.8.1 2002/02/05 02:25:17 wolfsuit Exp $
 */

/*
 * We define SystemSevenOrLater so that our dialogs may use the 
 * auto center feature.
 */
#define SystemSevenOrLater 1

#include <Types.r>
#include <SysTypes.r>

/*
 * The folowing include and defines help construct
 * the version string for Tcl.
 */

#define RESOURCE_INCLUDED
#include "tcl.h"
#include "tk.h"

#define TK_LIBRARY_RESOURCES 3000

/* 
 * The mechanisim below loads Tcl source into the resource fork of the
 * application.  The example below creates a TEXT resource named
 * "Init" from the file "init.tcl".  This allows applications to use
 * Tcl to define the behavior of the application without having to
 * require some predetermined file structure - all needed Tcl "files"
 * are located within the application.  To source a file for the
 * resource fork the source command has been modified to support
 * sourcing from resources.  In the below case "source -rsrc {Init}"
 * will load the TEXT resource named "Init".
 */

read 'TEXT' (TK_LIBRARY_RESOURCES+1, "tk", purgeable,preload) 
	"::library:tk.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+2, "button", purgeable) 
	"::library:button.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+3, "dialog", purgeable) 
	"::library:dialog.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+4, "entry", purgeable) 
	"::library:entry.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+5, "focus", purgeable) 
	"::library:focus.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+6, "listbox", purgeable) 
	"::library:listbox.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+7, "menu", purgeable) 
	"::library:menu.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+8, "optMenu", purgeable) 
	"::library:optMenu.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+9, "palette", purgeable) 
	"::library:palette.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+10, "scale", purgeable) 
	"::library:scale.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+11, "scrlbar", purgeable) 
	"::library:scrlbar.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+12, "tearoff", purgeable) 
	"::library:tearoff.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+13, "text", purgeable) 
	"::library:text.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+14, "bgerror", purgeable) 
	"::library:bgerror.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+15, "console", purgeable) 
	"::library:console.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+16, "msgbox", purgeable) 
	"::library:msgbox.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+17, "comdlg", purgeable) 
	"::library:comdlg.tcl";
read 'TEXT' (TK_LIBRARY_RESOURCES+18, "spinbox", purgeable) 
	"::library:spinbox.tcl";


/*
 * The following two resources define the default "About Box" for Mac Tk.
 * This dialog appears if the "About Tk..." menu item is selected from
 * the Apple menu.  This dialog may be overridden by defining a Tcl procedure
 * with the name of "tkAboutDialog".  If this procedure is defined the
 * default dialog will not be shown and the Tcl procedure is expected to













|




















<
<












|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34


35
36
37
38
39
40
41
42
43
44
45
46
47
48


































49
50
51
52
53
54
55
56
/*
 * tkMacResources.r --
 *
 *	This file creates resources for use in a simple shell.
 *	This is designed to be an example of using the Tcl/Tk 
 *	libraries in a Macintosh Application.
 *
 * Copyright (c) 1993-1994 Lockheed Missle & Space Company, AI Center
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacResource.r,v 1.6.8.2 2002/06/10 05:38:25 wolfsuit Exp $
 */

/*
 * We define SystemSevenOrLater so that our dialogs may use the 
 * auto center feature.
 */
#define SystemSevenOrLater 1

#include <Types.r>
#include <SysTypes.r>

/*
 * The folowing include and defines help construct
 * the version string for Tcl.
 */

#define RESOURCE_INCLUDED
#include "tcl.h"
#include "tk.h"



/* 
 * The mechanisim below loads Tcl source into the resource fork of the
 * application.  The example below creates a TEXT resource named
 * "Init" from the file "init.tcl".  This allows applications to use
 * Tcl to define the behavior of the application without having to
 * require some predetermined file structure - all needed Tcl "files"
 * are located within the application.  To source a file for the
 * resource fork the source command has been modified to support
 * sourcing from resources.  In the below case "source -rsrc {Init}"
 * will load the TEXT resource named "Init".
 */

#ifndef TCLTK_NO_LIBRARY_TEXT_RESOURCES
#include "tkMacTclCode.r"


































#endif

/*
 * The following two resources define the default "About Box" for Mac Tk.
 * This dialog appears if the "About Tk..." menu item is selected from
 * the Apple menu.  This dialog may be overridden by defining a Tcl procedure
 * with the name of "tkAboutDialog".  If this procedure is defined the
 * default dialog will not be shown and the Tcl procedure is expected to
Changes to mac/tkMacWm.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkMacWm.c --
 *
 *	This module takes care of the interactions between a Tk-based
 *	application and the window manager.  Among other things, it
 *	implements the "wm" command and passes geometry information
 *	to the window manager.
 *
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacWm.c,v 1.11.2.1 2002/02/05 02:25:17 wolfsuit Exp $
 */

#include <Gestalt.h>
#include <QDOffscreen.h>
#include <Windows.h>
#include <ToolUtils.h>














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkMacWm.c --
 *
 *	This module takes care of the interactions between a Tk-based
 *	application and the window manager.  Among other things, it
 *	implements the "wm" command and passes geometry information
 *	to the window manager.
 *
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacWm.c,v 1.11.2.2 2002/06/10 05:38:25 wolfsuit Exp $
 */

#include <Gestalt.h>
#include <QDOffscreen.h>
#include <Windows.h>
#include <ToolUtils.h>

1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
    } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
	    && (length >= 2)) {
	TkWindow **windows, **window_ptr;

	if ((argc != 3) && (argc != 5)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0],
		    " stackorder window ?isabove|isbelow? ?window?\"",
		    (char *) NULL);
	    return TCL_ERROR;
	}

	if (argc == 3) {
            windows = TkWmStackorderToplevel(winPtr);
            if (windows == NULL) {







|







1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
    } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
	    && (length >= 2)) {
	TkWindow **windows, **window_ptr;

	if ((argc != 3) && (argc != 5)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0],
		    " stackorder window ?isabove|isbelow window?\"",
		    (char *) NULL);
	    return TCL_ERROR;
	}

	if (argc == 3) {
            windows = TkWmStackorderToplevel(winPtr);
            if (windows == NULL) {
1740
1741
1742
1743
1744
1745
1746

1747
1748
1749
1750
1751
1752
1753
	    if (!(wmPtr->flags & WM_NEVER_MAPPED) && !Tk_IsEmbedded(winPtr)) {
		TkSetWMName(winPtr, wmPtr->titleUid);
	    }
	}
    } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0)
	    && (length >= 3)) {
	Tk_Window master;


	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " transient window ?master?\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (argc == 3) {







>







1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
	    if (!(wmPtr->flags & WM_NEVER_MAPPED) && !Tk_IsEmbedded(winPtr)) {
		TkSetWMName(winPtr, wmPtr->titleUid);
	    }
	}
    } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0)
	    && (length >= 3)) {
	Tk_Window master;
	WmInfo *wmPtr2;

	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " transient window ?master?\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (argc == 3) {
1765
1766
1767
1768
1769
1770
1771



















1772
1773
1774
1775
1776
1777
1778
	    wmPtr->style = documentProc;
	} else {
	    master = Tk_NameToWindow(interp, argv[3], tkwin);
	    if (master == NULL) {
		return TCL_ERROR;
	    }
	    Tk_MakeWindowExist(master);



















	    wmPtr->master = Tk_WindowId(master);
	    wmPtr->masterWindowName = ckalloc((unsigned) (strlen(argv[3])+1));
	    strcpy(wmPtr->masterWindowName, argv[3]);
	    wmPtr->style = plainDBox;
	}
    } else if ((c == 'w') && (strncmp(argv[1], "withdraw", length) == 0)) {
	if (argc != 3) {







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
	    wmPtr->style = documentProc;
	} else {
	    master = Tk_NameToWindow(interp, argv[3], tkwin);
	    if (master == NULL) {
		return TCL_ERROR;
	    }
	    Tk_MakeWindowExist(master);

	    if (wmPtr->iconFor != NULL) {
	        Tcl_AppendResult(interp, "can't make \"", argv[2],
	    	        "\" a transient: it is an icon for ",
	                Tk_PathName(wmPtr->iconFor),
	                (char *) NULL);
	        return TCL_ERROR;
	    }

	    wmPtr2 = ((TkWindow *) master)->wmInfoPtr;

	    if (wmPtr2->iconFor != NULL) {
	        Tcl_AppendResult(interp, "can't make \"", argv[3],
	                "\" a master: it is an icon for ",
	                Tk_PathName(wmPtr2->iconFor),
	                (char *) NULL);
	        return TCL_ERROR;
	    }

	    wmPtr->master = Tk_WindowId(master);
	    wmPtr->masterWindowName = ckalloc((unsigned) (strlen(argv[3])+1));
	    strcpy(wmPtr->masterWindowName, argv[3]);
	    wmPtr->style = plainDBox;
	}
    } else if ((c == 'w') && (strncmp(argv[1], "withdraw", length) == 0)) {
	if (argc != 3) {
3043
3044
3045
3046
3047
3048
3049
3050

3051
3052
3053
3054
3055
3056
3057
    Tcl_HashTable *table;			/* Maps mac window to TkWindow */
{
    TkWindow *childPtr;
    Tcl_HashEntry *hPtr;
    WindowPeek wrapper;
    int newEntry;

    if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) {

        wrapper = (WindowPeek) TkMacGetDrawablePort(winPtr->window);

        hPtr = Tcl_CreateHashEntry(table,
            (char *) wrapper, &newEntry);
        Tcl_SetHashValue(hPtr, winPtr);
    }








|
>







3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
    Tcl_HashTable *table;			/* Maps mac window to TkWindow */
{
    TkWindow *childPtr;
    Tcl_HashEntry *hPtr;
    WindowPeek wrapper;
    int newEntry;

    if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr) &&
            !Tk_IsEmbedded(winPtr)) {
        wrapper = (WindowPeek) TkMacGetDrawablePort(winPtr->window);

        hPtr = Tcl_CreateHashEntry(table,
            (char *) wrapper, &newEntry);
        Tcl_SetHashValue(hPtr, winPtr);
    }

Changes to mac/tkMacXStubs.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkMacXStubs.c --
 *
 *	This file contains most of the X calls called by Tk.  Many of
 * these calls are just stubs and either don't make sense on the
 * Macintosh or thier implamentation just doesn't do anything.  Other
 * calls will eventually be moved into other files.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacXStubs.c,v 1.10.8.1 2002/02/05 02:25:17 wolfsuit Exp $
 */

#include "tkInt.h"
#include <X.h>
#include <Xlib.h>
#include <stdio.h>
#include <tcl.h>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkMacXStubs.c --
 *
 *	This file contains most of the X calls called by Tk.  Many of
 * these calls are just stubs and either don't make sense on the
 * Macintosh or thier implamentation just doesn't do anything.  Other
 * calls will eventually be moved into other files.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacXStubs.c,v 1.10.8.2 2002/06/10 05:38:26 wolfsuit Exp $
 */

#include "tkInt.h"
#include <X.h>
#include <Xlib.h>
#include <stdio.h>
#include <tcl.h>
102
103
104
105
106
107
108

109
110
111
112
113
114
115
	} else {
	    return NULL;
	}
    }

    graphicsDevice = GetMainDevice();
    display = (Display *) ckalloc(sizeof(Display));

    display->resource_alloc = MacXIdAlloc;
    screen = (Screen *) ckalloc(sizeof(Screen) * 2);
    display->default_screen = 0;
    display->request = 0;
    display->nscreens = 1;
    display->screens = screen;
    display->display_name = macScreenName;







>







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
	} else {
	    return NULL;
	}
    }

    graphicsDevice = GetMainDevice();
    display = (Display *) ckalloc(sizeof(Display));
    memset(display, 0, sizeof(Display));
    display->resource_alloc = MacXIdAlloc;
    screen = (Screen *) ckalloc(sizeof(Screen) * 2);
    display->default_screen = 0;
    display->request = 0;
    display->nscreens = 1;
    display->screens = screen;
    display->display_name = macScreenName;
134
135
136
137
138
139
140

141
142
143
144
145
146
147
    screen->root_visual->red_mask = 0x00FF0000;
    screen->root_visual->green_mask = 0x0000FF00;
    screen->root_visual->blue_mask = 0x000000FF;
    screen->root_visual->bits_per_rgb = 24;
    screen->root_visual->map_entries = 2 ^ 8;

    gMacDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay));

    gMacDisplay->display = display;
    return gMacDisplay;
}

/*
 *----------------------------------------------------------------------
 *







>







135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
    screen->root_visual->red_mask = 0x00FF0000;
    screen->root_visual->green_mask = 0x0000FF00;
    screen->root_visual->blue_mask = 0x000000FF;
    screen->root_visual->bits_per_rgb = 24;
    screen->root_visual->map_entries = 2 ^ 8;

    gMacDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay));
    memset(gMacDisplay, 0, sizeof(TkDisplay));
    gMacDisplay->display = display;
    return gMacDisplay;
}

/*
 *----------------------------------------------------------------------
 *
799
800
801
802
803
804
805

















    CONST char *screenName)	/* If NULL, use default string. */
{
    if ((screenName == NULL) || (screenName[0] == '\0')) {
	screenName = macScreenName;
    }
    return screenName;
}
























>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
    CONST char *screenName)	/* If NULL, use default string. */
{
    if ((screenName == NULL) || (screenName[0] == '\0')) {
	screenName = macScreenName;
    }
    return screenName;
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_SetCaretPos --
 *
 *	This indicates the cursor position to Tk.  This is not used
 *	on the Mac currently.
 *
 *----------------------------------------------------------------------
 */

void
Tk_SetCaretPos(Tk_Window tkwin, int x, int y, int height)
{
    return;
}
Changes to macosx/Wish.pbproj/jingham.pbxuser.
1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
// !$*UTF8*$!
{
	F50D961501961F0201DC9062 = {
		fileReference = F5375551016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 902;
		state = 2;
	};
	F537552A016C352C01DC9062 = {
		activeBuildStyle = F537552C016C352C01DC9062;

		activeTarget = F53756A0016C4DD401DC9062;
		addToTargets = (
			F53755DF016C38D201DC9062,
			F53756A0016C4DD401DC9062,
		);
		breakpoints = (
			F5B2CDC10175829501DC9062,










>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// !$*UTF8*$!
{
	F50D961501961F0201DC9062 = {
		fileReference = F5375551016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 902;
		state = 2;
	};
	F537552A016C352C01DC9062 = {
		activeBuildStyle = F537552C016C352C01DC9062;
		activeExecutable = F53756AB016C4DD401DC9062;
		activeTarget = F53756A0016C4DD401DC9062;
		addToTargets = (
			F53755DF016C38D201DC9062,
			F53756A0016C4DD401DC9062,
		);
		breakpoints = (
			F5B2CDC10175829501DC9062,
29
30
31
32
33
34
35





36
37



38
39


40
41



42



















































43








44































45












46














47






























48





































49



























































50
51
52
53
54
55
56
57
58
59
60








61
62
63
64
65
66
67
68










































































































































69
70

71








72
73





















































74












75
76
77
78
79





















































80


























81
82









83

































84
85
86
87
88

















































89

















90
91









92

93

















94























95
96
97
98







































99






100
101








102
103


104
105






106
107

















108






































109
110
111























































































112






113
114
115
116





































117
118































































119
120


121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152

153
154
155
156






















































































































































































































































































































































































































































































157
158
159
160
161
162
163
164
165
166
167
168
			F58907C5018DD1C301DC9062,
			F50D961501961F0201DC9062,
			F566083B0197283B01DC9062,
			F566083C0197823801DC9062,
			F5A5146F01D05DC201DC9062,
			F5A5147001D0758C01DC9062,
			F5A852D6020F6C6C01DC9062,





		);
		intermediatesDirectory = /Volumes/CodeBits/jingham/Tcl/Build;



		perUserDictionary = {
			PBXWorkspaceConfiguration = {


				ContentSize = "{906, 681}";
				LeftSlideOut = {



					ActiveTab = 0;



















































					Frame = "{{0, 23}, {906, 658}}";








					Split0 = {































						ActiveTab = 2;












						Frame = "{{259, 0}, {647, 658}}";














						Split0 = {






























							Frame = "{{0, 307}, {647, 351}}";





































						};



























































						SplitCount = 1;
						Tab0 = {
							Debugger = {
								ActiveTab = 0;
								Frame = "{{0, 0}, {647, 264}}";
								Split0 = {
									Frame = "{{0, 136}, {647, 128}}";
									Split0 = {
										Frame = "{{0, 0}, {187, 128}}";
									};
									Split1 = {








										Frame = "{{196, 0}, {451, 128}}";
									};
									SplitCount = 2;
								};
								SplitCount = 1;
								Tab0 = {
									Frame = "{{0, 0}, {647, 112}}";
								};










































































































































								Tab1 = {
									Frame = "{{0, 0}, {647, 114}}";

								};








								TabCount = 2;
							};





















































							Frame = "{{0, 0}, {647, 264}}";












							LauncherConfigVersion = 4;
						};
						Tab1 = {
							Frame = "{{0, 0}, {647, 133}}";
							LauncherConfigVersion = 3;





















































							Runner = {


























								Frame = "{{0, 0}, {647, 133}}";
							};









						};

































						Tab2 = {
							BuildMessageFrame = "{{0, 0}, {649, 118}}";
							BuildTranscriptFrame = "{{0, 127}, {649, 158}}";
							Frame = "{{0, 0}, {647, 283}}";
						};

















































						Tab3 = {

















							Frame = "{{0, 0}, {647, 225}}";
						};









						TabCount = 4;

					};

















					SplitCount = 1;























					Tab0 = {
						Frame = "{{0, 0}, {235, 658}}";
					};
					Tab1 = {







































						ClassesFrame = "{{0, 0}, {202, 56}}";






						Frame = "{{0, 0}, {200, 100}}";
						MembersFrame = "{{0, 65}, {202, 35}}";








						OptionsSetName = "Default Options";
					};


					Tab2 = {
						Frame = "{{0, 0}, {200, 644}}";






					};
					Tab3 = {

















						Frame = "{{0, 0}, {177, 658}}";






































						Split0 = {
							Frame = "{{0, 0}, {177, 314}}";
						};























































































						Split1 = {






							Frame = "{{0, 323}, {177, 335}}";
						};
						SplitCount = 2;
					};





































					Tab4 = {
						Frame = "{{0, 0}, {250, 658}}";































































					};
					TabCount = 5;


				};
			};
		};
		productDirectory = /Volumes/CodeBits/jingham/Tcl/Products;
		wantsIndex = 1;
		wantsSCM = -1;
	};
	F53755DF016C38D201DC9062 = {
		activeExec = 0;
		customExecs = {
		};
	};
	F53756A0016C4DD401DC9062 = {
		activeExec = 0;
		customExecs = {
		};
		targetExecs = {
			macosx = (
				F53756AB016C4DD401DC9062,
			);
		};
	};
	F53756AB016C4DD401DC9062 = {
		activeArgIndex = 2147483647;
		argumentStrings = (
		);
		debuggerPlugin = GDBDebugging;
		dylibVariantSuffix = "";
		enableDebugStr = 1;
		environmentEntries = (
		);
		isa = PBXExecutable;

		shlibInfoDictList = (
		);
		sourceDirectories = (
		);






















































































































































































































































































































































































































































































	};
	F566083B0197283B01DC9062 = {
		fileReference = F5375548016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 208;
		state = 2;
	};
	F566083C0197823801DC9062 = {
		isa = PBXSymbolicBreakpoint;
		state = 2;
		symbolName = Tcl_CreateObjCommand;
	};







>
>
>
>
>

<
>
>
>

<
>
>
|

>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>



|
|

|

|


>
>
>
>
>
>
>
>
|





|

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>

>
>
>
>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
<
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|

>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|

>
>
>
>
>
>
>
>
>
|
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
|
|
>
>
|
|
>
>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
>
|
<
<
<





<
|
<


<
<
<
|
|
|
<











>




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




|







30
31
32
33
34
35
36
37
38
39
40
41
42

43
44
45
46

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551

552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142



1143
1144
1145
1146
1147

1148

1149
1150



1151
1152
1153

1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
			F58907C5018DD1C301DC9062,
			F50D961501961F0201DC9062,
			F566083B0197283B01DC9062,
			F566083C0197823801DC9062,
			F5A5146F01D05DC201DC9062,
			F5A5147001D0758C01DC9062,
			F5A852D6020F6C6C01DC9062,
			F5A439C0029B609C01DC9064,
			F5A439C2029B60ED01DC9064,
			F5A439CA029B620901DC9064,
			F55BC4B602B2DFB901DC9062,
			F5978FD602B3190701DC9062,
		);

		executables = (
			F53756AB016C4DD401DC9062,
		);
		perUserDictionary = {

			PBXPerProjectTemplateStateSaveDate = 45284733;
			"PBXTemplateGeometry-F5314676015831810DCA290F" = {
				ContentSize = "{716, 618}";
				LeftSlideOut = {
					Collapsed = NO;
					Frame = "{{0, 23}, {716, 595}}";
					Split0 = {
						ActiveTab = 2;
						Collapsed = NO;
						Frame = "{{0, 0}, {716, 595}}";
						Split0 = {
							Frame = "{{0, 249}, {716, 346}}";
						};
						SplitCount = 1;
						Tab0 = {
							Debugger = {
								Collapsed = NO;
								Frame = "{{0, 0}, {952, 321}}";
								Split0 = {
									Frame = "{{0, 24}, {952, 297}}";
									Split0 = {
										Frame = "{{0, 0}, {468, 297}}";
									};
									Split1 = {
										DebugVariablesTableConfiguration = (
											Name,
											126.803,
											Value,
											150.074,
											Summary,
											172.123,
										);
										Frame = "{{477, 0}, {475, 297}}";
									};
									SplitCount = 2;
								};
								SplitCount = 1;
								Tab0 = {
									Frame = "{{0, 0}, {100, 50}}";
								};
								Tab1 = {
									Frame = "{{0, 0}, {100, 50}}";
								};
								TabCount = 2;
								TabsVisible = YES;
							};
							Frame = "{{0, 0}, {952, 321}}";
							LauncherConfigVersion = 7;
						};
						Tab1 = {
							Frame = "{{0, 0}, {781, 452}}";
							LauncherConfigVersion = 3;
							Runner = {
								Frame = "{{0, 0}, {781, 452}}";
							};
						};
						Tab2 = {
							BuildMessageFrame = "{{0, 0}, {718, 85}}";
							BuildTranscriptFrame = "{{0, 94}, {718, 151}}";
							Frame = "{{0, 0}, {716, 243}}";
						};
						Tab3 = {
							Frame = "{{0, 0}, {612, 295}}";
						};
						TabCount = 4;
						TabsVisible = NO;
					};
					SplitCount = 1;
					Tab0 = {
						Frame = "{{0, 0}, {300, 533}}";
						GroupTreeTableConfiguration = (
							TargetStatusColumn,
							18,
							MainColumn,
							267,
						);
					};
					Tab1 = {
						ClassesFrame = "{{0, 0}, {280, 398}}";
						ClassesTreeTableConfiguration = (
							PBXBookColumnIdentifier,
							20,
							PBXClassColumnIdentifier,
							237,
						);
						Frame = "{{0, 0}, {278, 659}}";
						MembersFrame = "{{0, 407}, {280, 252}}";
						MembersTreeTableConfiguration = (
							PBXBookColumnIdentifier,
							20,
							PBXMethodColumnIdentifier,
							236,
						);
					};
					Tab2 = {
						Frame = "{{0, 0}, {200, 100}}";
					};
					Tab3 = {
						Frame = "{{0, 0}, {200, 100}}";
						TargetTableConfiguration = (
							ActiveObject,
							16,
							ObjectNames,
							202.296,
						);
					};
					Tab4 = {
						BreakpointsTreeTableConfiguration = (
							breakpointColumn,
							197,
							enabledColumn,
							31,
						);
						Frame = "{{0, 0}, {250, 100}}";
					};
					TabCount = 5;
					TabsVisible = NO;
				};
				StatusViewVisible = YES;
				Template = F5314676015831810DCA290F;
				ToolbarVisible = YES;
				WindowLocation = "{217, 66}";
			};
			"PBXTemplateGeometry-F5CA7ECB015C094F0DCA290F" = {
				ContentSize = "{668, 621}";
				LeftSlideOut = {
					Collapsed = NO;
					Frame = "{{0, 0}, {668, 621}}";
					Split0 = {
						Collapsed = NO;
						Frame = "{{0, 0}, {668, 621}}";
						Split0 = {
							Frame = "{{0, 0}, {668, 621}}";
						};
						SplitCount = 1;
						Tab0 = {
							Debugger = {
								Collapsed = NO;
								Frame = "{{0, 0}, {484, 208}}";
								Split0 = {
									Frame = "{{0, 24}, {484, 184}}";
									Split0 = {
										Frame = "{{0, 0}, {236, 184}}";
									};
									Split1 = {
										DebugVariablesTableConfiguration = (
											Name,
											123,
											Value,
											85,
											Summary,
											62.123,
										);
										Frame = "{{245, 0}, {239, 184}}";
									};
									SplitCount = 2;
								};
								SplitCount = 1;
								Tab0 = {
									Frame = "{{0, 0}, {100, 50}}";
								};
								Tab1 = {
									Frame = "{{0, 0}, {100, 50}}";
								};
								TabCount = 2;
								TabsVisible = YES;
							};
							Frame = "{{0, 0}, {484, 208}}";
							LauncherConfigVersion = 7;
						};
						Tab1 = {
							Frame = "{{0, 0}, {664, 208}}";
							LauncherConfigVersion = 3;
							Runner = {
								Frame = "{{0, 0}, {664, 208}}";
							};
						};
						Tab2 = {
							BuildMessageFrame = "{{0, 0}, {666, 43}}";
							BuildTranscriptFrame = "{{0, 52}, {666, 0}}";
							Frame = "{{0, 0}, {664, 50}}";
						};
						Tab3 = {
							Frame = "{{0, 0}, {612, 295}}";
						};
						TabCount = 4;
						TabsVisible = NO;
					};
					SplitCount = 1;
					Tab0 = {
						Frame = "{{0, 0}, {313, 531}}";
						GroupTreeTableConfiguration = (
							TargetStatusColumn,
							18,
							MainColumn,
							280,
						);
					};
					Tab1 = {
						ClassesFrame = "{{0, 0}, {280, 398}}";
						ClassesTreeTableConfiguration = (
							PBXBookColumnIdentifier,
							20,
							PBXClassColumnIdentifier,
							237,
						);
						Frame = "{{0, 0}, {278, 659}}";
						MembersFrame = "{{0, 407}, {280, 252}}";
						MembersTreeTableConfiguration = (
							PBXBookColumnIdentifier,
							20,
							PBXMethodColumnIdentifier,
							236,
						);
					};
					Tab2 = {
						Frame = "{{0, 0}, {200, 100}}";
					};
					Tab3 = {
						Frame = "{{0, 0}, {200, 557}}";
						TargetTableConfiguration = (
							ActiveObject,
							16,
							ObjectNames,
							202.296,
						);
					};
					Tab4 = {
						BreakpointsTreeTableConfiguration = (
							breakpointColumn,
							197,
							enabledColumn,
							31,
						);
						Frame = "{{0, 0}, {250, 100}}";
					};
					TabCount = 5;
					TabsVisible = NO;
				};
				StatusViewVisible = NO;
				Template = F5CA7ECB015C094F0DCA290F;
				ToolbarVisible = NO;
				WindowLocation = "{48, 103}";
			};
			"PBXTemplateGeometry-F5CA7ECC015C09990DCA290F" = {
				ContentSize = "{773, 558}";
				LeftSlideOut = {
					ActiveTab = 3;
					Collapsed = NO;
					Frame = "{{0, 23}, {773, 535}}";
					Split0 = {
						ActiveTab = 0;
						Collapsed = NO;
						Frame = "{{224, 0}, {549, 535}}";
						Split0 = {
							Frame = "{{0, 156}, {549, 379}}";
						};
						SplitCount = 1;
						Tab0 = {
							Debugger = {
								Collapsed = NO;
								Frame = "{{0, 0}, {549, 150}}";
								Split0 = {
									Frame = "{{0, 24}, {549, 126}}";
									Split0 = {
										Frame = "{{0, 0}, {267, 126}}";
									};
									Split1 = {
										DebugVariablesTableConfiguration = (
											Name,
											93.80298,
											Value,
											116.074,
											Summary,
											62.123,
										);
										Frame = "{{276, 0}, {273, 126}}";
									};
									SplitCount = 2;
								};
								SplitCount = 1;
								Tab0 = {
									Frame = "{{0, 0}, {100, 50}}";
								};
								Tab1 = {
									Frame = "{{0, 0}, {549, 243}}";
								};
								TabCount = 2;
								TabsVisible = YES;
							};
							Frame = "{{0, 0}, {549, 150}}";
							LauncherConfigVersion = 7;
						};
						Tab1 = {
							Frame = "{{0, 0}, {664, 208}}";
							LauncherConfigVersion = 3;
							Runner = {
								Frame = "{{0, 0}, {664, 208}}";
							};
						};
						Tab2 = {
							BuildMessageFrame = "{{0, 0}, {666, 43}}";
							BuildTranscriptFrame = "{{0, 52}, {666, 0}}";
							Frame = "{{0, 0}, {664, 50}}";
						};
						Tab3 = {
							Frame = "{{0, 0}, {612, 295}}";
						};
						TabCount = 4;
						TabsVisible = NO;
					};
					SplitCount = 1;
					Tab0 = {
						Frame = "{{0, 0}, {313, 531}}";
						GroupTreeTableConfiguration = (
							SCMStatusColumn,
							22,
							TargetStatusColumn,
							18,
							MainColumn,
							258,
						);
					};
					Tab1 = {
						ClassesFrame = "{{0, 0}, {280, 398}}";
						ClassesTreeTableConfiguration = (
							PBXBookColumnIdentifier,
							20,
							PBXClassColumnIdentifier,
							237,
						);
						Frame = "{{0, 0}, {278, 659}}";
						MembersFrame = "{{0, 407}, {280, 252}}";
						MembersTreeTableConfiguration = (
							PBXBookColumnIdentifier,
							20,
							PBXMethodColumnIdentifier,
							236,
						);
					};
					Tab2 = {
						Frame = "{{0, 0}, {200, 100}}";
					};
					Tab3 = {
						Frame = "{{0, 0}, {200, 535}}";
						TargetTableConfiguration = (
							ActiveObject,
							16,
							ObjectNames,
							202.296,
						);
					};
					Tab4 = {
						BreakpointsTreeTableConfiguration = (
							breakpointColumn,
							197,
							enabledColumn,
							31,
						);
						Frame = "{{0, 0}, {250, 100}}";
					};
					TabCount = 5;
					TabsVisible = YES;
				};
				StatusViewVisible = YES;
				Template = F5CA7ECC015C09990DCA290F;
				ToolbarVisible = YES;
				WindowLocation = "{148, 126}";
			};
			PBXWorkspaceContents = (
				{
					LeftSlideOut = {
						Split0 = {
							Split0 = {
								NavContent0 = {
									bookmark = F55BC4C802B2E09101DC9062;
									history = (
										F5A439CE029B6B5501DC9064,
										F5A439D0029B6B5501DC9064,
										F5A439D1029B6B5501DC9064,
										F5A439D2029B6B5501DC9064,
										F5A439D3029B6B5501DC9064,
										F5A439D4029B6B5501DC9064,
										F5A439D5029B6B5501DC9064,
										F5A439D6029B6B5501DC9064,
										F5A439D7029B6B5501DC9064,
										F5BE671E029B6FEE01DC9064,
										F55BC4B902B2E09101DC9062,
										F55BC4BA02B2E09101DC9062,
										F55BC4BB02B2E09101DC9062,
										F55BC4BC02B2E09101DC9062,
										F55BC4BD02B2E09101DC9062,
										F55BC4BE02B2E09101DC9062,
									);
									prevStack = (
										F5A439D9029B6B5501DC9064,
										F5A439DA029B6B5501DC9064,
										F5A439DB029B6B5501DC9064,
										F5A439DE029B6B5501DC9064,
										F5A439DF029B6B5501DC9064,
										F5A439E0029B6B5501DC9064,
										F5A439E1029B6B5501DC9064,
										F5A439E2029B6B5501DC9064,
										F5A439E3029B6B5501DC9064,
										F5A439E4029B6B5501DC9064,
										F5A439E5029B6B5501DC9064,
										F5A439E6029B6B5501DC9064,
										F5A439E7029B6B5501DC9064,
										F5A439E8029B6B5501DC9064,
										F5BE671F029B6FEE01DC9064,
										F55BC4BF02B2E09101DC9062,
										F55BC4C002B2E09101DC9062,
										F55BC4C102B2E09101DC9062,
										F55BC4C202B2E09101DC9062,
										F55BC4C302B2E09101DC9062,
										F55BC4C402B2E09101DC9062,
										F55BC4C502B2E09101DC9062,
										F55BC4C602B2E09101DC9062,
										F55BC4C702B2E09101DC9062,
									);
								};
								NavCount = 1;
								NavGeometry0 = {
									Frame = "{{0, 0}, {645, 651}}";
									NavBarVisible = YES;
								};
							};
							SplitCount = 1;
							Tab0 = {
								Debugger = {
									Split0 = {
										SplitCount = 2;
									};
									SplitCount = 1;
									TabCount = 2;
								};
								LauncherConfigVersion = 7;
							};
							Tab1 = {
								LauncherConfigVersion = 3;
								Runner = {
								};
							};
							TabCount = 4;
						};
						SplitCount = 1;
						Tab1 = {
							OptionsSetName = "Default Options";
						};
						Tab3 = {
							SplitCount = 2;
						};
						TabCount = 6;
					};
				},
				{
					LeftSlideOut = {
						Split0 = {
							Split0 = {
								NavContent0 = {
									bookmark = F55BC4DE02B2E09101DC9062;
									history = (
										F55BC4C902B2E09101DC9062,
										F55BC4CA02B2E09101DC9062,
										F55BC4CB02B2E09101DC9062,
										F55BC4CC02B2E09101DC9062,
										F55BC4CD02B2E09101DC9062,
										F55BC4CE02B2E09101DC9062,
										F55BC4CF02B2E09101DC9062,
										F55BC4D002B2E09101DC9062,
										F55BC4D102B2E09101DC9062,
										F55BC4D202B2E09101DC9062,
										F55BC4D302B2E09101DC9062,
									);
									prevStack = (
										F55BC4D402B2E09101DC9062,
										F55BC4D502B2E09101DC9062,
										F55BC4D602B2E09101DC9062,
										F55BC4D702B2E09101DC9062,
										F55BC4D802B2E09101DC9062,
										F55BC4D902B2E09101DC9062,
										F55BC4DA02B2E09101DC9062,
										F55BC4DB02B2E09101DC9062,
										F55BC4DC02B2E09101DC9062,
										F55BC4DD02B2E09101DC9062,
									);
								};
								NavCount = 1;
								NavGeometry0 = {
									Frame = "{{0, 0}, {716, 346}}";
									NavBarVisible = YES;
								};
							};
							SplitCount = 1;
							Tab0 = {
								Debugger = {
									Split0 = {
										SplitCount = 2;
									};
									SplitCount = 1;
									TabCount = 2;
								};
								LauncherConfigVersion = 7;
							};
							Tab1 = {

								LauncherConfigVersion = 3;
								Runner = {
								};
							};
							TabCount = 4;
						};
						SplitCount = 1;
						Tab1 = {
							OptionsSetName = "Default Options";
						};
						Tab3 = {
							SplitCount = 2;
						};
						TabCount = 6;
					};
				},
				{
					LeftSlideOut = {
						Split0 = {
							Split0 = {
								NavContent0 = {
									bookmark = F55BC4E702B2E09101DC9062;
									history = (
										F55BC4DF02B2E09101DC9062,
										F55BC4E002B2E09101DC9062,
										F55BC4E102B2E09101DC9062,
									);
									prevStack = (
										F55BC4E202B2E09101DC9062,
										F55BC4E302B2E09101DC9062,
										F55BC4E402B2E09101DC9062,
										F55BC4E502B2E09101DC9062,
										F55BC4E602B2E09101DC9062,
									);
								};
								NavCount = 1;
								NavGeometry0 = {
									Frame = "{{0, 0}, {749, 262}}";
									NavBarVisible = YES;
								};
							};
							SplitCount = 1;
							Tab0 = {
								Debugger = {
									Split0 = {
										SplitCount = 2;
									};
									SplitCount = 1;
									TabCount = 2;
								};
								LauncherConfigVersion = 7;
							};
							Tab1 = {
								LauncherConfigVersion = 3;
								Runner = {
								};
							};
							TabCount = 4;
						};
						SplitCount = 1;
						Tab1 = {
							OptionsSetName = "Default Options";
						};
						Tab3 = {
							SplitCount = 2;
						};
						TabCount = 6;
					};
				},
			);
			PBXWorkspaceGeometries = (
				{
					ContentSize = "{929, 674}";
					LeftSlideOut = {
						ActiveTab = 0;
						Collapsed = NO;
						Frame = "{{0, 23}, {929, 651}}";
						Split0 = {
							Collapsed = NO;
							Frame = "{{284, 0}, {645, 651}}";
							Split0 = {
								Frame = "{{0, 0}, {645, 651}}";
							};
							SplitCount = 1;
							Tab0 = {
								Debugger = {
									Collapsed = NO;
									Frame = "{{0, 0}, {681, 289}}";
									Split0 = {
										Frame = "{{0, 24}, {681, 265}}";
										Split0 = {
											Frame = "{{0, 0}, {333, 265}}";
										};
										Split1 = {
											DebugVariablesTableConfiguration = (
												Name,
												82.80298,
												Value,
												104.074,
												Summary,
												126.123,
											);
											Frame = "{{342, 0}, {339, 265}}";
										};
										SplitCount = 2;
									};
									SplitCount = 1;
									Tab0 = {
										Frame = "{{0, 0}, {100, 50}}";
									};
									Tab1 = {
										Frame = "{{0, 0}, {100, 50}}";
									};
									TabCount = 2;
									TabsVisible = YES;
								};
								Frame = "{{0, 0}, {681, 289}}";
								LauncherConfigVersion = 7;
							};
							Tab1 = {
								Frame = "{{0, 0}, {681, 120}}";
								LauncherConfigVersion = 3;
								Runner = {
									Frame = "{{0, 0}, {681, 120}}";
								};
							};
							Tab2 = {
								BuildMessageFrame = "{{0, 0}, {683, 127}}";
								BuildTranscriptFrame = "{{0, 136}, {683, 100}}";
								Frame = "{{0, 0}, {681, 234}}";
							};
							Tab3 = {
								Frame = "{{0, 0}, {681, 238}}";
							};
							TabCount = 4;
							TabsVisible = NO;
						};
						SplitCount = 1;
						Tab0 = {
							Frame = "{{0, 0}, {260, 651}}";
							GroupTreeTableConfiguration = (
								SCMStatusColumn,
								22,
								TargetStatusColumn,
								18,
								MainColumn,
								205,
							);
						};
						Tab1 = {
							ClassesFrame = "{{0, 0}, {250, 333}}";
							ClassesTreeTableConfiguration = (
								PBXBookColumnIdentifier,
								20,
								PBXClassColumnIdentifier,
								207,
							);
							Frame = "{{0, 0}, {248, 554}}";
							MembersFrame = "{{0, 342}, {250, 212}}";
							MembersTreeTableConfiguration = (
								PBXBookColumnIdentifier,
								20,
								PBXMethodColumnIdentifier,
								206,
							);
						};
						Tab2 = {
							Frame = "{{0, 0}, {217, 554}}";
						};
						Tab3 = {
							Frame = "{{0, 0}, {239, 651}}";
							Split0 = {
								Frame = "{{0, 0}, {239, 317}}";
								TargetTreeTableConfiguration = (
									ActiveTarget,
									16,
									TargetName,
									207,
								);
							};
							Split1 = {
								BuildStyleTreeTableConfiguration = (
									IsActive,
									16,
									Name,
									208,
								);
								Frame = "{{0, 326}, {239, 325}}";
							};
							SplitCount = 2;
						};
						Tab4 = {
							ExecutableTreeTableConfiguration = (
								ActiveExecutable,
								16,
								ExecutableName,
								217,
							);
							Frame = "{{0, 0}, {250, 554}}";
						};
						Tab5 = {
							BreakpointsTreeTableConfiguration = (
								breakpointColumn,
								197,
								enabledColumn,
								31,
							);
							Frame = "{{0, 0}, {250, 100}}";
						};
						TabCount = 6;
						TabsVisible = YES;
					};
					StatusViewVisible = YES;
					Template = 64ABBB4501FA494900185B06;
					ToolbarVisible = YES;
					WindowLocation = "{79, 10}";
				},
				{
					ContentSize = "{716, 618}";
					LeftSlideOut = {
						Collapsed = NO;
						Frame = "{{0, 23}, {716, 595}}";
						Split0 = {
							ActiveTab = 2;
							Collapsed = NO;
							Frame = "{{0, 0}, {716, 595}}";
							Split0 = {
								Frame = "{{0, 249}, {716, 346}}";
							};
							SplitCount = 1;
							Tab0 = {
								Debugger = {
									Collapsed = NO;
									Frame = "{{0, 0}, {952, 321}}";
									Split0 = {
										Frame = "{{0, 24}, {952, 297}}";
										Split0 = {
											Frame = "{{0, 0}, {468, 297}}";
										};
										Split1 = {
											DebugVariablesTableConfiguration = (
												Name,
												126.803,
												Value,
												150.074,
												Summary,
												172.123,
											);
											Frame = "{{477, 0}, {475, 297}}";
										};
										SplitCount = 2;
									};
									SplitCount = 1;
									Tab0 = {
										Frame = "{{0, 0}, {100, 50}}";
									};
									Tab1 = {
										Frame = "{{0, 0}, {100, 50}}";
									};
									TabCount = 2;
									TabsVisible = YES;
								};
								Frame = "{{0, 0}, {952, 321}}";
								LauncherConfigVersion = 7;
							};
							Tab1 = {
								Frame = "{{0, 0}, {781, 452}}";
								LauncherConfigVersion = 3;
								Runner = {
									Frame = "{{0, 0}, {781, 452}}";
								};
							};
							Tab2 = {
								BuildMessageFrame = "{{0, 0}, {718, 85}}";
								BuildTranscriptFrame = "{{0, 94}, {718, 151}}";
								Frame = "{{0, 0}, {716, 243}}";
							};
							Tab3 = {
								Frame = "{{0, 0}, {612, 295}}";
							};
							TabCount = 4;
							TabsVisible = NO;
						};
						SplitCount = 1;
						Tab0 = {
							Frame = "{{0, 0}, {300, 533}}";
							GroupTreeTableConfiguration = (
								SCMStatusColumn,
								22,
								TargetStatusColumn,
								18,
								MainColumn,
								245,
							);
						};
						Tab1 = {
							ClassesFrame = "{{0, 0}, {280, 398}}";
							ClassesTreeTableConfiguration = (
								PBXBookColumnIdentifier,
								20,
								PBXClassColumnIdentifier,
								237,
							);
							Frame = "{{0, 0}, {278, 659}}";
							MembersFrame = "{{0, 407}, {280, 252}}";
							MembersTreeTableConfiguration = (
								PBXBookColumnIdentifier,
								20,
								PBXMethodColumnIdentifier,
								236,
							);
						};
						Tab2 = {
							Frame = "{{0, 0}, {200, 100}}";
						};
						Tab3 = {
							Frame = "{{0, 0}, {200, 100}}";
							Split0 = {
								Frame = "{{0, 0}, {200, 45}}";
								TargetTreeTableConfiguration = (
									ActiveTarget,
									16,
									TargetName,
									168,
								);
							};
							Split1 = {
								BuildStyleTreeTableConfiguration = (
									IsActive,
									16,
									Name,
									169,
								);
								Frame = "{{0, 54}, {200, 46}}";
							};
							SplitCount = 2;
						};
						Tab4 = {
							ExecutableTreeTableConfiguration = (
								ActiveExecutable,
								16,
								ExecutableName,
								217,
							);
							Frame = "{{0, 0}, {250, 100}}";
						};
						Tab5 = {
							BreakpointsTreeTableConfiguration = (
								breakpointColumn,
								197,
								enabledColumn,
								31,
							);
							Frame = "{{0, 0}, {250, 100}}";
						};
						TabCount = 6;
						TabsVisible = NO;
					};
					StatusViewVisible = YES;
					Template = F5314676015831810DCA290F;
					ToolbarVisible = YES;
					WindowLocation = "{17, 66}";
				},
				{
					ContentSize = "{773, 558}";
					LeftSlideOut = {
						Collapsed = NO;
						Frame = "{{0, 23}, {773, 535}}";
						Split0 = {
							ActiveTab = 0;
							Collapsed = NO;
							Frame = "{{24, 0}, {749, 535}}";
							Split0 = {
								Frame = "{{0, 273}, {749, 262}}";
							};
							SplitCount = 1;
							Tab0 = {
								Debugger = {
									ActiveTab = 1;
									Collapsed = NO;
									Frame = "{{0, 0}, {749, 267}}";
									Split0 = {
										Frame = "{{0, 268}, {749, -1}}";
										Split0 = {
											Frame = "{{0, 0}, {366, -1}}";
										};
										Split1 = {
											DebugVariablesTableConfiguration = (
												Name,
												93.80298,
												Value,
												116.074,
												Summary,
												138.123,
											);
											Frame = "{{375, 0}, {374, -1}}";
										};
										SplitCount = 2;
									};
									SplitCount = 1;
									Tab0 = {
										Frame = "{{0, 0}, {100, 50}}";
									};
									Tab1 = {
										Frame = "{{0, 0}, {749, 244}}";
									};
									TabCount = 2;
									TabsVisible = YES;
								};
								Frame = "{{0, 0}, {749, 267}}";
								LauncherConfigVersion = 7;
							};
							Tab1 = {
								Frame = "{{0, 0}, {664, 208}}";
								LauncherConfigVersion = 3;
								Runner = {
									Frame = "{{0, 0}, {664, 208}}";
								};
							};
							Tab2 = {
								BuildMessageFrame = "{{0, 0}, {666, 43}}";
								BuildTranscriptFrame = "{{0, 52}, {666, 0}}";
								Frame = "{{0, 0}, {664, 50}}";
							};
							Tab3 = {
								Frame = "{{0, 0}, {612, 295}}";
							};
							TabCount = 4;
							TabsVisible = NO;
						};
						SplitCount = 1;
						Tab0 = {
							Frame = "{{0, 0}, {313, 531}}";
							GroupTreeTableConfiguration = (
								SCMStatusColumn,
								22,
								TargetStatusColumn,
								18,
								MainColumn,
								258,
							);
						};
						Tab1 = {
							ClassesFrame = "{{0, 0}, {280, 398}}";
							ClassesTreeTableConfiguration = (
								PBXBookColumnIdentifier,
								20,
								PBXClassColumnIdentifier,
								237,
							);
							Frame = "{{0, 0}, {278, 659}}";
							MembersFrame = "{{0, 407}, {280, 252}}";
							MembersTreeTableConfiguration = (
								PBXBookColumnIdentifier,
								20,
								PBXMethodColumnIdentifier,
								236,
							);
						};
						Tab2 = {
							Frame = "{{0, 0}, {200, 100}}";
						};
						Tab3 = {
							Frame = "{{0, 0}, {200, 557}}";
							Split0 = {
								Frame = "{{0, 0}, {200, 270}}";
								TargetTreeTableConfiguration = (
									ActiveTarget,
									16,
									TargetName,
									168,
								);
							};
							Split1 = {
								BuildStyleTreeTableConfiguration = (
									IsActive,
									16,
									Name,
									169,
								);
								Frame = "{{0, 279}, {200, 278}}";
							};
							SplitCount = 2;
						};
						Tab4 = {
							ExecutableTreeTableConfiguration = (
								ActiveExecutable,
								16,
								ExecutableName,
								217,
							);
							Frame = "{{0, 0}, {250, 100}}";
						};
						Tab5 = {
							BreakpointsTreeTableConfiguration = (
								breakpointColumn,
								197,
								enabledColumn,
								31,
							);
							Frame = "{{0, 0}, {250, 100}}";
						};
						TabCount = 6;
						TabsVisible = YES;
					};
					StatusViewVisible = YES;
					Template = F5CA7ECC015C09990DCA290F;
					ToolbarVisible = YES;
					WindowLocation = "{148, 126}";
				},
			);
			PBXWorkspaceStateSaveDate = 45284733;
		};
		perUserProjectItems = {
			F55BC4B902B2E09101DC9062 = F55BC4B902B2E09101DC9062;
			F55BC4BA02B2E09101DC9062 = F55BC4BA02B2E09101DC9062;
			F55BC4BB02B2E09101DC9062 = F55BC4BB02B2E09101DC9062;
			F55BC4BC02B2E09101DC9062 = F55BC4BC02B2E09101DC9062;
			F55BC4BD02B2E09101DC9062 = F55BC4BD02B2E09101DC9062;
			F55BC4BE02B2E09101DC9062 = F55BC4BE02B2E09101DC9062;
			F55BC4BF02B2E09101DC9062 = F55BC4BF02B2E09101DC9062;
			F55BC4C002B2E09101DC9062 = F55BC4C002B2E09101DC9062;
			F55BC4C102B2E09101DC9062 = F55BC4C102B2E09101DC9062;
			F55BC4C202B2E09101DC9062 = F55BC4C202B2E09101DC9062;
			F55BC4C302B2E09101DC9062 = F55BC4C302B2E09101DC9062;
			F55BC4C402B2E09101DC9062 = F55BC4C402B2E09101DC9062;
			F55BC4C502B2E09101DC9062 = F55BC4C502B2E09101DC9062;
			F55BC4C602B2E09101DC9062 = F55BC4C602B2E09101DC9062;
			F55BC4C702B2E09101DC9062 = F55BC4C702B2E09101DC9062;
			F55BC4C802B2E09101DC9062 = F55BC4C802B2E09101DC9062;
			F55BC4C902B2E09101DC9062 = F55BC4C902B2E09101DC9062;
			F55BC4CA02B2E09101DC9062 = F55BC4CA02B2E09101DC9062;
			F55BC4CB02B2E09101DC9062 = F55BC4CB02B2E09101DC9062;
			F55BC4CC02B2E09101DC9062 = F55BC4CC02B2E09101DC9062;
			F55BC4CD02B2E09101DC9062 = F55BC4CD02B2E09101DC9062;
			F55BC4CE02B2E09101DC9062 = F55BC4CE02B2E09101DC9062;
			F55BC4CF02B2E09101DC9062 = F55BC4CF02B2E09101DC9062;
			F55BC4D002B2E09101DC9062 = F55BC4D002B2E09101DC9062;
			F55BC4D102B2E09101DC9062 = F55BC4D102B2E09101DC9062;
			F55BC4D202B2E09101DC9062 = F55BC4D202B2E09101DC9062;
			F55BC4D302B2E09101DC9062 = F55BC4D302B2E09101DC9062;
			F55BC4D402B2E09101DC9062 = F55BC4D402B2E09101DC9062;
			F55BC4D502B2E09101DC9062 = F55BC4D502B2E09101DC9062;
			F55BC4D602B2E09101DC9062 = F55BC4D602B2E09101DC9062;
			F55BC4D702B2E09101DC9062 = F55BC4D702B2E09101DC9062;
			F55BC4D802B2E09101DC9062 = F55BC4D802B2E09101DC9062;
			F55BC4D902B2E09101DC9062 = F55BC4D902B2E09101DC9062;
			F55BC4DA02B2E09101DC9062 = F55BC4DA02B2E09101DC9062;
			F55BC4DB02B2E09101DC9062 = F55BC4DB02B2E09101DC9062;
			F55BC4DC02B2E09101DC9062 = F55BC4DC02B2E09101DC9062;
			F55BC4DD02B2E09101DC9062 = F55BC4DD02B2E09101DC9062;
			F55BC4DE02B2E09101DC9062 = F55BC4DE02B2E09101DC9062;
			F55BC4DF02B2E09101DC9062 = F55BC4DF02B2E09101DC9062;
			F55BC4E002B2E09101DC9062 = F55BC4E002B2E09101DC9062;
			F55BC4E102B2E09101DC9062 = F55BC4E102B2E09101DC9062;
			F55BC4E202B2E09101DC9062 = F55BC4E202B2E09101DC9062;
			F55BC4E302B2E09101DC9062 = F55BC4E302B2E09101DC9062;
			F55BC4E402B2E09101DC9062 = F55BC4E402B2E09101DC9062;
			F55BC4E502B2E09101DC9062 = F55BC4E502B2E09101DC9062;
			F55BC4E602B2E09101DC9062 = F55BC4E602B2E09101DC9062;
			F55BC4E702B2E09101DC9062 = F55BC4E702B2E09101DC9062;
			F5A439CE029B6B5501DC9064 = F5A439CE029B6B5501DC9064;
			F5A439D0029B6B5501DC9064 = F5A439D0029B6B5501DC9064;
			F5A439D1029B6B5501DC9064 = F5A439D1029B6B5501DC9064;
			F5A439D2029B6B5501DC9064 = F5A439D2029B6B5501DC9064;
			F5A439D3029B6B5501DC9064 = F5A439D3029B6B5501DC9064;
			F5A439D4029B6B5501DC9064 = F5A439D4029B6B5501DC9064;
			F5A439D5029B6B5501DC9064 = F5A439D5029B6B5501DC9064;
			F5A439D6029B6B5501DC9064 = F5A439D6029B6B5501DC9064;
			F5A439D7029B6B5501DC9064 = F5A439D7029B6B5501DC9064;
			F5A439D9029B6B5501DC9064 = F5A439D9029B6B5501DC9064;
			F5A439DA029B6B5501DC9064 = F5A439DA029B6B5501DC9064;
			F5A439DB029B6B5501DC9064 = F5A439DB029B6B5501DC9064;
			F5A439DE029B6B5501DC9064 = F5A439DE029B6B5501DC9064;
			F5A439DF029B6B5501DC9064 = F5A439DF029B6B5501DC9064;
			F5A439E0029B6B5501DC9064 = F5A439E0029B6B5501DC9064;
			F5A439E1029B6B5501DC9064 = F5A439E1029B6B5501DC9064;
			F5A439E2029B6B5501DC9064 = F5A439E2029B6B5501DC9064;
			F5A439E3029B6B5501DC9064 = F5A439E3029B6B5501DC9064;
			F5A439E4029B6B5501DC9064 = F5A439E4029B6B5501DC9064;
			F5A439E5029B6B5501DC9064 = F5A439E5029B6B5501DC9064;
			F5A439E6029B6B5501DC9064 = F5A439E6029B6B5501DC9064;
			F5A439E7029B6B5501DC9064 = F5A439E7029B6B5501DC9064;
			F5A439E8029B6B5501DC9064 = F5A439E8029B6B5501DC9064;
			F5BE671E029B6FEE01DC9064 = F5BE671E029B6FEE01DC9064;
			F5BE671F029B6FEE01DC9064 = F5BE671F029B6FEE01DC9064;
		};
		projectwideBuildSettings = {
			OBJROOT = "/Volumes/CodeBits/jingham/Tcl/Merge-Build";
			SYMROOT = "/Volumes/CodeBits/jingham/Tcl/Merge-Products";
		};



		wantsIndex = 1;
		wantsSCM = -1;
	};
	F53755DF016C38D201DC9062 = {
		activeExec = 0;

	};

	F53756A0016C4DD401DC9062 = {
		activeExec = 0;



		executables = (
			F53756AB016C4DD401DC9062,
		);

	};
	F53756AB016C4DD401DC9062 = {
		activeArgIndex = 2147483647;
		argumentStrings = (
		);
		debuggerPlugin = GDBDebugging;
		dylibVariantSuffix = "";
		enableDebugStr = 1;
		environmentEntries = (
		);
		isa = PBXExecutable;
		name = "Wish Shell";
		shlibInfoDictList = (
		);
		sourceDirectories = (
		);
	};
	F55BC4B602B2DFB901DC9062 = {
		fileReference = F5375580016C389901DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 201;
		state = 2;
	};
	F55BC4B902B2E09101DC9062 = {
		fRef = F5375553016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXEvent.c: 242";
		rLen = 0;
		rLoc = 6185;
		rType = 0;
		vrLen = 1438;
		vrLoc = 5937;
	};
	F55BC4BA02B2E09101DC9062 = {
		fRef = F55BC46A02B2D3F301DC9062;
		isa = PBXTextBookmark;
		name = "panedwindow.tcl: 1";
		rLen = 0;
		rLoc = 0;
		rType = 0;
		vrLen = 1395;
		vrLoc = 0;
	};
	F55BC4BB02B2E09101DC9062 = {
		fRef = F55BC4EA02B2E09101DC9062;
		isa = PBXTextBookmark;
		name = "tclDecls.h: 140";
		rLen = 7;
		rLoc = 4620;
		rType = 0;
		vrLen = 1564;
		vrLoc = 3873;
	};
	F55BC4BC02B2E09101DC9062 = {
		fRef = F55BC4EB02B2E09101DC9062;
		isa = PBXTextBookmark;
		name = "tcl.h: 282";
		rLen = 0;
		rLoc = 7897;
		rType = 0;
		vrLen = 946;
		vrLoc = 7395;
	};
	F55BC4BD02B2E09101DC9062 = {
		bstl = F537552C016C352C01DC9062;
		isa = PBXBuildStyleBookmark;
	};
	F55BC4BE02B2E09101DC9062 = {
		isa = PBXTargetBookmark;
		trg = F53755DF016C38D201DC9062;
	};
	F55BC4BF02B2E09101DC9062 = {
		fRef = F5375553016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXEvent.c: 242";
		rLen = 0;
		rLoc = 6185;
		rType = 0;
		vrLen = 1438;
		vrLoc = 5937;
	};
	F55BC4C002B2E09101DC9062 = {
		isa = PBXTargetBookmark;
		trg = F53755DF016C38D201DC9062;
	};
	F55BC4C102B2E09101DC9062 = {
		fRef = F55BC46A02B2D3F301DC9062;
		isa = PBXTextBookmark;
		name = "panedwindow.tcl: 1";
		rLen = 0;
		rLoc = 0;
		rType = 0;
		vrLen = 1395;
		vrLoc = 0;
	};
	F55BC4C202B2E09101DC9062 = {
		isa = PBXTargetBookmark;
		trg = F53755DF016C38D201DC9062;
	};
	F55BC4C302B2E09101DC9062 = {
		fRef = F55BC46A02B2D3F301DC9062;
		isa = PBXTextBookmark;
		name = "panedwindow.tcl: 1";
		rLen = 0;
		rLoc = 0;
		rType = 0;
		vrLen = 1395;
		vrLoc = 0;
	};
	F55BC4C402B2E09101DC9062 = {
		isa = PBXTargetBookmark;
		trg = F53755DF016C38D201DC9062;
	};
	F55BC4C502B2E09101DC9062 = {
		fRef = F55BC4E802B2E09101DC9062;
		isa = PBXTextBookmark;
		name = "tclDecls.h: 140";
		rLen = 7;
		rLoc = 4620;
		rType = 0;
		vrLen = 1564;
		vrLoc = 3873;
	};
	F55BC4C602B2E09101DC9062 = {
		fRef = F55BC4E902B2E09101DC9062;
		isa = PBXTextBookmark;
		name = "tcl.h: 282";
		rLen = 0;
		rLoc = 7897;
		rType = 0;
		vrLen = 946;
		vrLoc = 7395;
	};
	F55BC4C702B2E09101DC9062 = {
		bstl = F537552C016C352C01DC9062;
		isa = PBXBuildStyleBookmark;
	};
	F55BC4C802B2E09101DC9062 = {
		isa = PBXTargetBookmark;
		trg = F53755DF016C38D201DC9062;
	};
	F55BC4C902B2E09101DC9062 = {
		fRef = F537554A016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXButton.c: hilitePart";
		rLen = 32;
		rLoc = 30847;
		rType = 0;
		vrLen = 569;
		vrLoc = 30571;
	};
	F55BC4CA02B2E09101DC9062 = {
		fRef = F53755BE016C389901DC9062;
		isa = PBXTextBookmark;
		name = "tkTextBTree.c: tagPtr";
		rLen = 32;
		rLoc = 71434;
		rType = 0;
		vrLen = 612;
		vrLoc = 71152;
	};
	F55BC4CB02B2E09101DC9062 = {
		fRef = F537554C016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXColor.c: TkpGetColor";
		rLen = 76;
		rLoc = 6526;
		rType = 0;
		vrLen = 834;
		vrLoc = 6146;
	};
	F55BC4CC02B2E09101DC9062 = {
		fRef = F5375550016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXDialog.c: Tk_ChooseDirectoryObjCmd";
		rLen = 48;
		rLoc = 18681;
		rType = 0;
		vrLen = 585;
		vrLoc = 18448;
	};
	F55BC4CD02B2E09101DC9062 = {
		fRef = F5375557016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXKeyboard.c: InitKeyMaps";
		rLen = 67;
		rLoc = 2187;
		rType = 0;
		vrLen = 563;
		vrLoc = 1984;
	};
	F55BC4CE02B2E09101DC9062 = {
		fRef = F5375559016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXMenu.c: index";
		rLen = 30;
		rLoc = 28077;
		rType = 0;
		vrLen = 523;
		vrLoc = 27873;
	};
	F55BC4CF02B2E09101DC9062 = {
		fRef = F537555B016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXMenus.c: SourceDialog";
		rLen = 41;
		rLoc = 8301;
		rType = 0;
		vrLen = 463;
		vrLoc = 8060;
	};
	F55BC4D002B2E09101DC9062 = {
		fRef = F537553E016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSX.h: 18";
		rLen = 27;
		rLoc = 385;
		rType = 0;
		vrLen = 517;
		vrLoc = 195;
	};
	F55BC4D102B2E09101DC9062 = {
		fRef = F5375561016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXSend.c: RegOpen";
		rLen = 38;
		rLoc = 8016;
		rType = 0;
		vrLen = 974;
		vrLoc = 7563;
	};
	F55BC4D202B2E09101DC9062 = {
		fRef = F5375567016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXWm.c: Tk_WmCmd";
		rLen = 62;
		rLoc = 16028;
		rType = 0;
		vrLen = 571;
		vrLoc = 15789;
	};
	F55BC4D302B2E09101DC9062 = {
		fRef = F55BC46802B2D38B01DC9062;
		isa = PBXTextBookmark;
		rLen = 1;
		rLoc = 283;
		rType = 1;
	};
	F55BC4D402B2E09101DC9062 = {
		fRef = F537554A016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXButton.c: hilitePart";
		rLen = 32;
		rLoc = 30847;
		rType = 0;
		vrLen = 569;
		vrLoc = 30571;
	};
	F55BC4D502B2E09101DC9062 = {
		fRef = F53755BE016C389901DC9062;
		isa = PBXTextBookmark;
		name = "tkTextBTree.c: tagPtr";
		rLen = 32;
		rLoc = 71434;
		rType = 0;
		vrLen = 612;
		vrLoc = 71152;
	};
	F55BC4D602B2E09101DC9062 = {
		fRef = F537554C016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXColor.c: TkpGetColor";
		rLen = 76;
		rLoc = 6526;
		rType = 0;
		vrLen = 834;
		vrLoc = 6146;
	};
	F55BC4D702B2E09101DC9062 = {
		fRef = F5375550016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXDialog.c: Tk_ChooseDirectoryObjCmd";
		rLen = 48;
		rLoc = 18681;
		rType = 0;
		vrLen = 585;
		vrLoc = 18448;
	};
	F55BC4D802B2E09101DC9062 = {
		fRef = F5375557016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXKeyboard.c: InitKeyMaps";
		rLen = 67;
		rLoc = 2187;
		rType = 0;
		vrLen = 563;
		vrLoc = 1984;
	};
	F55BC4D902B2E09101DC9062 = {
		fRef = F5375559016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXMenu.c: index";
		rLen = 30;
		rLoc = 28077;
		rType = 0;
		vrLen = 523;
		vrLoc = 27873;
	};
	F55BC4DA02B2E09101DC9062 = {
		fRef = F537555B016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXMenus.c: SourceDialog";
		rLen = 41;
		rLoc = 8301;
		rType = 0;
		vrLen = 463;
		vrLoc = 8060;
	};
	F55BC4DB02B2E09101DC9062 = {
		fRef = F537553E016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSX.h: 18";
		rLen = 27;
		rLoc = 385;
		rType = 0;
		vrLen = 517;
		vrLoc = 195;
	};
	F55BC4DC02B2E09101DC9062 = {
		fRef = F5375561016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXSend.c: RegOpen";
		rLen = 38;
		rLoc = 8016;
		rType = 0;
		vrLen = 974;
		vrLoc = 7563;
	};
	F55BC4DD02B2E09101DC9062 = {
		fRef = F5375567016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXWm.c: Tk_WmCmd";
		rLen = 62;
		rLoc = 16028;
		rType = 0;
		vrLen = 571;
		vrLoc = 15789;
	};
	F55BC4DE02B2E09101DC9062 = {
		fRef = F55BC46802B2D38B01DC9062;
		isa = PBXTextBookmark;
		name = "tkPanedWindow.c: 279";
		rLen = 0;
		rLoc = 11411;
		rType = 0;
		vrLen = 999;
		vrLoc = 11180;
	};
	F55BC4DF02B2E09101DC9062 = {
		fRef = F55BC4ED02B2E09101DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXAppInit.c: 155";
		rLen = 0;
		rLoc = 4698;
		rType = 0;
		vrLen = 383;
		vrLoc = 4567;
	};
	F55BC4E002B2E09101DC9062 = {
		fRef = F5375593016C389901DC9062;
		isa = PBXTextBookmark;
		name = "tkConfig.c: DoObjConfig";
		rLen = 0;
		rLoc = 24585;
		rType = 0;
		vrLen = 404;
		vrLoc = 24440;
	};
	F55BC4E102B2E09101DC9062 = {
		fRef = F5375580016C389901DC9062;
		isa = PBXTextBookmark;
		rLen = 0;
		rLoc = 204;
		rType = 1;
	};
	F55BC4E202B2E09101DC9062 = {
		fRef = F55BC4EE02B2E09101DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXAppInit.c: 155";
		rLen = 0;
		rLoc = 4698;
		rType = 0;
		vrLen = 388;
		vrLoc = 4639;
	};
	F55BC4E302B2E09101DC9062 = {
		fRef = F5375580016C389901DC9062;
		isa = PBXTextBookmark;
		name = "tk3d.c: Tk_Get3DBorder";
		rLen = 0;
		rLoc = 6396;
		rType = 0;
		vrLen = 548;
		vrLoc = 6264;
	};
	F55BC4E402B2E09101DC9062 = {
		fRef = F55BC4EC02B2E09101DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXAppInit.c: 155";
		rLen = 0;
		rLoc = 4698;
		rType = 0;
		vrLen = 383;
		vrLoc = 4567;
	};
	F55BC4E502B2E09101DC9062 = {
		fRef = F5375580016C389901DC9062;
		isa = PBXTextBookmark;
		name = "tk3d.c: Tk_Get3DBorder";
		rLen = 0;
		rLoc = 6335;
		rType = 0;
		vrLen = 482;
		vrLoc = 6158;
	};
	F55BC4E602B2E09101DC9062 = {
		fRef = F5375593016C389901DC9062;
		isa = PBXTextBookmark;
		name = "tkConfig.c: DoObjConfig";
		rLen = 0;
		rLoc = 24585;
		rType = 0;
		vrLen = 404;
		vrLoc = 24440;
	};
	F55BC4E702B2E09101DC9062 = {
		fRef = F5375580016C389901DC9062;
		isa = PBXTextBookmark;
		name = "tk3d.c: Tk_Get3DBorder";
		rLen = 0;
		rLoc = 6396;
		rType = 0;
		vrLen = 482;
		vrLoc = 6158;
	};
	F55BC4E802B2E09101DC9062 = {
		isa = PBXFileReference;
		name = tclDecls.h;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tclDecls.h;
		refType = 0;
	};
	F55BC4E902B2E09101DC9062 = {
		isa = PBXFileReference;
		name = tcl.h;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tcl.h;
		refType = 0;
	};
	F55BC4EA02B2E09101DC9062 = {
		isa = PBXFileReference;
		name = tclDecls.h;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tclDecls.h;
		refType = 0;
	};
	F55BC4EB02B2E09101DC9062 = {
		isa = PBXFileReference;
		name = tcl.h;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tcl.h;
		refType = 0;
	};
	F55BC4EC02B2E09101DC9062 = {
		isa = PBXFileReference;
		name = tkMacOSXAppInit.c;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tk/macosx/tkMacOSXAppInit.c;
		refType = 0;
	};
	F55BC4ED02B2E09101DC9062 = {
		isa = PBXFileReference;
		name = tkMacOSXAppInit.c;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tk/macosx/tkMacOSXAppInit.c;
		refType = 0;
	};
	F55BC4EE02B2E09101DC9062 = {
		isa = PBXFileReference;
		name = tkMacOSXAppInit.c;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tk/macosx/tkMacOSXAppInit.c;
		refType = 0;
	};
	F566083B0197283B01DC9062 = {
		fileReference = F5375548016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 214;
		state = 2;
	};
	F566083C0197823801DC9062 = {
		isa = PBXSymbolicBreakpoint;
		state = 2;
		symbolName = Tcl_CreateObjCommand;
	};
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239




























































































































































































































































































240
241
242
243
244
245
246
		isa = PBXFileBreakpoint;
		lineNumber = 1478;
		state = 2;
	};
	F58907BE018DCE8F01DC9062 = {
		fileReference = F5375548016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 190;
		state = 2;
	};
	F58907C5018DD1C301DC9062 = {
		fileReference = F5375551016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 502;
		state = 2;




























































































































































































































































































	};
	F5A5146F01D05DC201DC9062 = {
		fileReference = F5375550016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 651;
		state = 1;
	};







|







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
		isa = PBXFileBreakpoint;
		lineNumber = 1478;
		state = 2;
	};
	F58907BE018DCE8F01DC9062 = {
		fileReference = F5375548016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 196;
		state = 2;
	};
	F58907C5018DD1C301DC9062 = {
		fileReference = F5375551016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 502;
		state = 2;
	};
	F5978FD602B3190701DC9062 = {
		fileReference = F5375580016C389901DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 224;
		state = 2;
	};
	F5A439C0029B609C01DC9064 = {
		fileReference = F5375548016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 74;
		state = 1;
	};
	F5A439C2029B60ED01DC9064 = {
		fileReference = F5375548016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 155;
		state = 1;
	};
	F5A439CA029B620901DC9064 = {
		fileReference = F5375548016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 306;
		state = 1;
	};
	F5A439CE029B6B5501DC9064 = {
		fRef = F537555C016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXMouseEvent.c: TkMacOSXProcessMouseEvent";
		rLen = 0;
		rLoc = 6187;
		rType = 0;
		vrLen = 1476;
		vrLoc = 5157;
	};
	F5A439D0029B6B5501DC9064 = {
		fRef = F5375567016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXWm.c: TkMacOSXMakeRealWindowExist";
		rLen = 15;
		rLoc = 113034;
		rType = 0;
		vrLen = 695;
		vrLoc = 112860;
	};
	F5A439D1029B6B5501DC9064 = {
		fRef = F5A439F3029B6B5601DC9064;
		isa = PBXTextBookmark;
		name = "CarbonEvents.h: 4483";
		rLen = 19;
		rLoc = 173576;
		rType = 0;
		vrLen = 804;
		vrLoc = 173125;
	};
	F5A439D2029B6B5501DC9064 = {
		fRef = F5375548016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXAppInit.c: Tcl_AppInit";
		rLen = 0;
		rLoc = 9908;
		rType = 0;
		vrLen = 1370;
		vrLoc = 8362;
	};
	F5A439D3029B6B5501DC9064 = {
		fRef = F5A439F4029B6B5601DC9064;
		isa = PBXTextBookmark;
		name = "MacWindows.h: 1410";
		rLen = 105;
		rLoc = 57285;
		rType = 0;
		vrLen = 1155;
		vrLoc = 56795;
	};
	F5A439D4029B6B5501DC9064 = {
		fRef = F5A439F5029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439D5029B6B5501DC9064 = {
		fRef = F5A439F6029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439D6029B6B5501DC9064 = {
		fRef = F5A439F7029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439D7029B6B5501DC9064 = {
		fRef = F5A439F8029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439D9029B6B5501DC9064 = {
		fRef = F5A439FA029B6B5601DC9064;
		isa = PBXTextBookmark;
		name = "tclDecls.h: 788";
		rLen = 7;
		rLoc = 27156;
		rType = 0;
		vrLen = 1281;
		vrLoc = 26408;
	};
	F5A439DA029B6B5501DC9064 = {
		fRef = F5375553016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXEvent.c: TkMacOSXProcessEvent";
		rLen = 25;
		rLoc = 4656;
		rType = 0;
		vrLen = 1260;
		vrLoc = 4407;
	};
	F5A439DB029B6B5501DC9064 = {
		fRef = F537555C016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXMouseEvent.c: TkMacOSXProcessMouseEvent";
		rLen = 0;
		rLoc = 6037;
		rType = 0;
		vrLen = 1438;
		vrLoc = 5075;
	};
	F5A439DE029B6B5501DC9064 = {
		fRef = F5375553016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXEvent.c: ReceiveAndProcessEvent";
		rLen = 0;
		rLoc = 7098;
		rType = 0;
		vrLen = 1455;
		vrLoc = 5920;
	};
	F5A439DF029B6B5501DC9064 = {
		fRef = F5375548016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXAppInit.c: Tcl_AppInit";
		rLen = 0;
		rLoc = 9908;
		rType = 0;
		vrLen = 673;
		vrLoc = 7806;
	};
	F5A439E0029B6B5501DC9064 = {
		fRef = F5375567016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXWm.c: TkMacOSXMakeRealWindowExist";
		rLen = 15;
		rLoc = 113034;
		rType = 0;
		vrLen = 695;
		vrLoc = 112860;
	};
	F5A439E1029B6B5501DC9064 = {
		fRef = F5A439FB029B6B5601DC9064;
		isa = PBXTextBookmark;
		name = "MacWindows.h: 1410";
		rLen = 0;
		rLoc = 57304;
		rType = 0;
		vrLen = 659;
		vrLoc = 56953;
	};
	F5A439E2029B6B5501DC9064 = {
		fRef = F5375548016C376E01DC9062;
		isa = PBXTextBookmark;
		name = "tkMacOSXAppInit.c: Tcl_AppInit";
		rLen = 0;
		rLoc = 9908;
		rType = 0;
		vrLen = 1370;
		vrLoc = 8362;
	};
	F5A439E3029B6B5501DC9064 = {
		fRef = F5A439EF029B6B5601DC9064;
		isa = PBXTextBookmark;
		name = "MacWindows.h: 1410";
		rLen = 105;
		rLoc = 57285;
		rType = 0;
		vrLen = 1155;
		vrLoc = 56795;
	};
	F5A439E4029B6B5501DC9064 = {
		fRef = F5A439F1029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439E5029B6B5501DC9064 = {
		fRef = F5A439FD029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439E6029B6B5501DC9064 = {
		fRef = F5A439FE029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439E7029B6B5501DC9064 = {
		fRef = F5A439EE029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439E8029B6B5501DC9064 = {
		fRef = F5A439F2029B6B5601DC9064;
		isa = PBXBookmark;
	};
	F5A439EE029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = Carbon.html;
		path = /Developer/Documentation/Carbon/Carbon.html;
		refType = 0;
	};
	F5A439EF029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = MacWindows.h;
		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacWindows.h;
		refType = 0;
	};
	F5A439F1029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = Carbon.html;
		path = /Developer/Documentation/Carbon/Carbon.html;
		refType = 0;
	};
	F5A439F2029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = carboneventmanager.html;
		path = /Developer/Documentation/Carbon/oss/CarbonEventManager/carboneventmanager.html;
		refType = 0;
	};
	F5A439F3029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = CarbonEvents.h;
		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/CarbonEvents.h;
		refType = 0;
	};
	F5A439F4029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = MacWindows.h;
		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacWindows.h;
		refType = 0;
	};
	F5A439F5029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = windowmanager.html;
		path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/windowmanager.html;
		refType = 0;
	};
	F5A439F6029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = index.html;
		path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/Window_Manager/index.html;
		refType = 0;
	};
	F5A439F7029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = Carbon.html;
		path = /Developer/Documentation/Carbon/Carbon.html;
		refType = 0;
	};
	F5A439F8029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = carboneventmanager.html;
		path = /Developer/Documentation/Carbon/oss/CarbonEventManager/carboneventmanager.html;
		refType = 0;
	};
	F5A439FA029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = tclDecls.h;
		path = /Volumes/CodeBits/jingham/Tcl/Source/tcl/generic/tclDecls.h;
		refType = 0;
	};
	F5A439FB029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = MacWindows.h;
		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacWindows.h;
		refType = 0;
	};
	F5A439FD029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = windowmanager.html;
		path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/windowmanager.html;
		refType = 0;
	};
	F5A439FE029B6B5601DC9064 = {
		isa = PBXFileReference;
		name = index.html;
		path = /Developer/Documentation/Carbon/HumanInterfaceToolbox/WindowManager/Window_Manager/index.html;
		refType = 0;
	};
	F5A5146F01D05DC201DC9062 = {
		fileReference = F5375550016C376E01DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 651;
		state = 1;
	};
257
258
259
260
261
262
263
264




















265
		state = 1;
	};
	F5B2CDC10175829501DC9062 = {
		fileReference = F5375583016C389901DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 2584;
		state = 2;
	};




















}








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
		state = 1;
	};
	F5B2CDC10175829501DC9062 = {
		fileReference = F5375583016C389901DC9062;
		isa = PBXFileBreakpoint;
		lineNumber = 2584;
		state = 2;
	};
	F5BE671E029B6FEE01DC9064 = {
		fRef = F5BE6723029B6FEE01DC9064;
		isa = PBXBookmark;
	};
	F5BE671F029B6FEE01DC9064 = {
		fRef = F5BE6722029B6FEE01DC9064;
		isa = PBXBookmark;
	};
	F5BE6722029B6FEE01DC9064 = {
		isa = PBXFileReference;
		name = index.html;
		path = /Developer/Documentation/Carbon/oss/CarbonEventManager/Carbon_Event_Manager_Ref/index.html;
		refType = 0;
	};
	F5BE6723029B6FEE01DC9064 = {
		isa = PBXFileReference;
		name = index.html;
		path = /Developer/Documentation/Carbon/oss/CarbonEventManager/Carbon_Event_Manager_Ref/index.html;
		refType = 0;
	};
}
Changes to macosx/Wish.pbproj/project.pbxproj.
1
2
3
4
5
6
7
8
9
10
11
12
13
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 34;
	objects = {
		F50D96120196176E01DC9062 = {
			isa = PBXFrameworkReference;
			name = ApplicationServices.framework;
			path = /System/Library/Frameworks/ApplicationServices.framework;
			refType = 0;
		};





|







1
2
3
4
5
6
7
8
9
10
11
12
13
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 38;
	objects = {
		F50D96120196176E01DC9062 = {
			isa = PBXFrameworkReference;
			name = ApplicationServices.framework;
			path = /System/Library/Frameworks/ApplicationServices.framework;
			refType = 0;
		};
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
				F51D9044018149FD01DC9062,
				F51D9045018149FD01DC9062,
				F51D9046018149FD01DC9062,
				F51D9047018149FD01DC9062,
				F51D9048018149FD01DC9062,
			);
			isa = PBXCopyFilesBuildPhase;
			name = "Copy Files";
		};
		F51D9040018149FD01DC9062 = {
			fileRef = F53755CE016C389901DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
				F51D9044018149FD01DC9062,
				F51D9045018149FD01DC9062,
				F51D9046018149FD01DC9062,
				F51D9047018149FD01DC9062,
				F51D9048018149FD01DC9062,
			);
			isa = PBXCopyFilesBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F51D9040018149FD01DC9062 = {
			fileRef = F53755CE016C389901DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
238
239
240
241
242
243
244

245
246
247
248
249
250
251
				F53755AC016C389901DC9062,
				F53755AD016C389901DC9062,
				F53755AE016C389901DC9062,
				F53755AF016C389901DC9062,
				F53755B0016C389901DC9062,
				F53755B1016C389901DC9062,
				F53755B2016C389901DC9062,

				F53755B3016C389901DC9062,
				F53755B4016C389901DC9062,
				F53755B5016C389901DC9062,
				F53755B6016C389901DC9062,
				F53755B7016C389901DC9062,
				F53755B8016C389901DC9062,
				F53755B9016C389901DC9062,







>







238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
				F53755AC016C389901DC9062,
				F53755AD016C389901DC9062,
				F53755AE016C389901DC9062,
				F53755AF016C389901DC9062,
				F53755B0016C389901DC9062,
				F53755B1016C389901DC9062,
				F53755B2016C389901DC9062,
				F55BC46802B2D38B01DC9062,
				F53755B3016C389901DC9062,
				F53755B4016C389901DC9062,
				F53755B5016C389901DC9062,
				F53755B6016C389901DC9062,
				F53755B7016C389901DC9062,
				F53755B8016C389901DC9062,
				F53755B9016C389901DC9062,
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354

1355
1356
1357
1358
1359
1360
1361
				DYLIB_CURRENT_VERSION = 8.4;
				FRAMEWORK_SEARCH_PATHS = "\"$(SYMROOT)\"";
				FRAMEWORK_VERSION = 8.4;
				HEADER_SEARCH_PATHS = "../../tcl/generic ../../tcl/unix ../bitmaps ../generic ../xlib";
				INSTALL_PATH = /Library/Frameworks;
				LIBRARY_SEARCH_PATHS = "";
				OPTIMIZATION_CFLAGS = "-O0";
				OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1";
				OTHER_LDFLAGS = "-seg1addr 0x400000";
				OTHER_LIBTOOL_FLAGS = "";
				OTHER_REZFLAGS = "-i \"../../tcl/generic\" -i \"../generic\"";
				PRINCIPAL_CLASS = "";
				PRODUCT_NAME = Tk;
				SECTORDER_FLAGS = "";
				TK_MAJOR_VERSION = 8;
				TK_MINOR_VERSION = 4;
				TK_PATCH_LEVEL = a4;

				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
				WRAPPER_EXTENSION = framework;
			};
			dependencies = (
			);
			isa = PBXFrameworkTarget;
			name = TkLibrary;







|









>







1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
				DYLIB_CURRENT_VERSION = 8.4;
				FRAMEWORK_SEARCH_PATHS = "\"$(SYMROOT)\"";
				FRAMEWORK_VERSION = 8.4;
				HEADER_SEARCH_PATHS = "../../tcl/generic ../../tcl/unix ../bitmaps ../generic ../xlib";
				INSTALL_PATH = /Library/Frameworks;
				LIBRARY_SEARCH_PATHS = "";
				OPTIMIZATION_CFLAGS = "-O0";
				OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\"  -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DTCL_WIDE_INT_TYPE=\"long long\" -DWORDS_BIGENDIAN=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1-DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1";
				OTHER_LDFLAGS = "-seg1addr 0x400000";
				OTHER_LIBTOOL_FLAGS = "";
				OTHER_REZFLAGS = "-i \"../../tcl/generic\" -i \"../generic\"";
				PRINCIPAL_CLASS = "";
				PRODUCT_NAME = Tk;
				SECTORDER_FLAGS = "";
				TK_MAJOR_VERSION = 8;
				TK_MINOR_VERSION = 4;
				TK_PATCH_LEVEL = a4;
				USE_GCC3_PFE_SUPPORT = NO;
				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
				WRAPPER_EXTENSION = framework;
			};
			dependencies = (
			);
			isa = PBXFrameworkTarget;
			name = TkLibrary;
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
				F5375698016C3F1001DC9062,
				F5375699016C3F1001DC9062,
				F537569A016C3F1001DC9062,
				F537569B016C3F1001DC9062,
				F537569C016C3F1001DC9062,
			);
			isa = PBXHeadersBuildPhase;
			name = Headers;
		};
		F53755E1016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F5C8865C017D625C01DC9062,
				F5C8865D017D625C01DC9062,
			);
			isa = PBXResourcesBuildPhase;
			name = "Bundle Resources";
		};
		F53755E2016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F5375604016C397D01DC9062,
				F5375605016C397D01DC9062,
				F5375606016C397D01DC9062,







|








|







1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
				F5375698016C3F1001DC9062,
				F5375699016C3F1001DC9062,
				F537569A016C3F1001DC9062,
				F537569B016C3F1001DC9062,
				F537569C016C3F1001DC9062,
			);
			isa = PBXHeadersBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53755E1016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F5C8865C017D625C01DC9062,
				F5C8865D017D625C01DC9062,
			);
			isa = PBXResourcesBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53755E2016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F5375604016C397D01DC9062,
				F5375605016C397D01DC9062,
				F5375606016C397D01DC9062,
1568
1569
1570
1571
1572
1573
1574

1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
				F537566D016C39F201DC9062,
				F5375677016C3A6D01DC9062,
				F5375678016C3A6D01DC9062,
				F5375679016C3A6D01DC9062,
				F537567A016C3A6D01DC9062,
				F537567B016C3A6D01DC9062,
				F537569E016C49C301DC9062,

			);
			isa = PBXSourcesBuildPhase;
			name = Sources;
		};
		F53755E3016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F51D903E0181474301DC9062,
				F537567E016C3ADB01DC9062,
				F50D96130196176E01DC9062,
			);
			isa = PBXFrameworksBuildPhase;
			name = "Frameworks & Libraries";
		};
		F53755E4016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F537567F016C3ADB01DC9062,
				F5375680016C3ADB01DC9062,
				F5375681016C3ADB01DC9062,
				F5375682016C3ADB01DC9062,
			);
			isa = PBXRezBuildPhase;
			name = "ResourceManager Resources";
		};
		F53755E5016C390401DC9062 = {
			fileRef = F5375569016C37A601DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};







>


|









|










|







1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
				F537566D016C39F201DC9062,
				F5375677016C3A6D01DC9062,
				F5375678016C3A6D01DC9062,
				F5375679016C3A6D01DC9062,
				F537567A016C3A6D01DC9062,
				F537567B016C3A6D01DC9062,
				F537569E016C49C301DC9062,
				F55BC46902B2D38B01DC9062,
			);
			isa = PBXSourcesBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53755E3016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F51D903E0181474301DC9062,
				F537567E016C3ADB01DC9062,
				F50D96130196176E01DC9062,
			);
			isa = PBXFrameworksBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53755E4016C38D301DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F537567F016C3ADB01DC9062,
				F5375680016C3ADB01DC9062,
				F5375681016C3ADB01DC9062,
				F5375682016C3ADB01DC9062,
			);
			isa = PBXRezBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53755E5016C390401DC9062 = {
			fileRef = F5375569016C37A601DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721

2722
2723
2724
2725
2726
2727
2728
				F5FBD6E30173513601DC9062,
			);
			buildSettings = {
				FRAMEWORK_SEARCH_PATHS = "\"$(SYMROOT)\"";
				HEADER_SEARCH_PATHS = "../../tcl/generic ../../tcl/unix ../generic ../xlib";
				LIBRARY_SEARCH_PATHS = "";
				OPTIMIZATION_CFLAGS = "-O0";
				OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1";
				OTHER_LDFLAGS = "";
				OTHER_REZFLAGS = "-i \"../../tcl/generic\" -i \"../generic\"";
				PRODUCT_NAME = "Wish Shell";
				SECTORDER_FLAGS = "";

				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
				WRAPPER_EXTENSION = app;
			};
			dependencies = (
				F53756B2016C525F01DC9062,
			);
			isa = PBXApplicationTarget;







|




>







2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
				F5FBD6E30173513601DC9062,
			);
			buildSettings = {
				FRAMEWORK_SEARCH_PATHS = "\"$(SYMROOT)\"";
				HEADER_SEARCH_PATHS = "../../tcl/generic ../../tcl/unix ../generic ../xlib";
				LIBRARY_SEARCH_PATHS = "";
				OPTIMIZATION_CFLAGS = "-O0";
				OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DTCL_DEFAULT_ENCODING=\\\"utf-8\\\"  -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DTCL_WIDE_INT_TYPE=\"long long\" -DWORDS_BIGENDIAN=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1-DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1";
				OTHER_LDFLAGS = "";
				OTHER_REZFLAGS = "-i \"../../tcl/generic\" -i \"../generic\"";
				PRODUCT_NAME = "Wish Shell";
				SECTORDER_FLAGS = "";
				USE_GCC3_PFE_SUPPORT = NO;
				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
				WRAPPER_EXTENSION = app;
			};
			dependencies = (
				F53756B2016C525F01DC9062,
			);
			isa = PBXApplicationTarget;
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
			buildActionMask = 2147483647;
			files = (
				F53756AC016C4E1D01DC9062,
				F53756AD016C4E1D01DC9062,
				F53756AE016C4E1D01DC9062,
			);
			isa = PBXHeadersBuildPhase;
			name = Headers;
		};
		F53756A2016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F53756A3016C4DD401DC9062,
				F5C8865E017D625C01DC9062,
				F5C8865F017D625C01DC9062,
			);
			isa = PBXResourcesBuildPhase;
			name = "Bundle Resources";
		};
		F53756A3016C4DD401DC9062 = {
			fileRef = F537553B016C376E01DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756A4016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F53756A5016C4DD401DC9062,
			);
			isa = PBXSourcesBuildPhase;
			name = Sources;
		};
		F53756A5016C4DD401DC9062 = {
			fileRef = F5375548016C376E01DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756A6016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F53756A8016C4DD401DC9062,
				F5875C7D016FEF1D01DC9062,
				F53756A7016C4DD401DC9062,
				F50D96140196176E01DC9062,
			);
			isa = PBXFrameworksBuildPhase;
			name = "Frameworks & Libraries";
		};
		F53756A7016C4DD401DC9062 = {
			fileRef = F53755DE016C38D201DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756A8016C4DD401DC9062 = {
			fileRef = F537567D016C3ADB01DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756AA016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
			);
			isa = PBXRezBuildPhase;
			name = "ResourceManager Resources";
		};
		F53756AC016C4E1D01DC9062 = {
			fileRef = F537556B016C37A601DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};







|









|













|
















|


















|







2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
			buildActionMask = 2147483647;
			files = (
				F53756AC016C4E1D01DC9062,
				F53756AD016C4E1D01DC9062,
				F53756AE016C4E1D01DC9062,
			);
			isa = PBXHeadersBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53756A2016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F53756A3016C4DD401DC9062,
				F5C8865E017D625C01DC9062,
				F5C8865F017D625C01DC9062,
			);
			isa = PBXResourcesBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53756A3016C4DD401DC9062 = {
			fileRef = F537553B016C376E01DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756A4016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F53756A5016C4DD401DC9062,
			);
			isa = PBXSourcesBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53756A5016C4DD401DC9062 = {
			fileRef = F5375548016C376E01DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756A6016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
				F53756A8016C4DD401DC9062,
				F5875C7D016FEF1D01DC9062,
				F53756A7016C4DD401DC9062,
				F50D96140196176E01DC9062,
			);
			isa = PBXFrameworksBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53756A7016C4DD401DC9062 = {
			fileRef = F53755DE016C38D201DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756A8016C4DD401DC9062 = {
			fileRef = F537567D016C3ADB01DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756AA016C4DD401DC9062 = {
			buildActionMask = 2147483647;
			files = (
			);
			isa = PBXRezBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F53756AC016C4E1D01DC9062 = {
			fileRef = F537556B016C37A601DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
2851
2852
2853
2854
2855
2856
2857
























2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868

2869
2870
2871
2872
2873
2874
2875
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756B2016C525F01DC9062 = {
			isa = PBXTargetDependency;
			target = F53755DF016C38D201DC9062;
























		};
		F56570CF01722FA201DC9062 = {
			buildActionMask = 2147483647;
			files = (
			);
			generatedFileNames = (
			);
			isa = PBXShellScriptBuildPhase;
			name = "Shell Script";
			neededFileNames = (
			);

			shellPath = /bin/sh;
			shellScript = "rm -rf \"${SYMROOT}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}/Versions/A\"";
		};
		F5875C7B016FEF1D01DC9062 = {
			isa = PBXFrameworkReference;
			path = Tcl.framework;
			refType = 3;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>








<


>







2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893

2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
			isa = PBXBuildFile;
			settings = {
			};
		};
		F53756B2016C525F01DC9062 = {
			isa = PBXTargetDependency;
			target = F53755DF016C38D201DC9062;
		};
		F55BC46802B2D38B01DC9062 = {
			isa = PBXFileReference;
			name = tkPanedWindow.c;
			path = ../generic/tkPanedWindow.c;
			refType = 2;
		};
		F55BC46902B2D38B01DC9062 = {
			fileRef = F55BC46802B2D38B01DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F55BC46A02B2D3F301DC9062 = {
			isa = PBXFileReference;
			name = panedwindow.tcl;
			path = ../library/panedwindow.tcl;
			refType = 2;
		};
		F55BC46B02B2D3F301DC9062 = {
			fileRef = F55BC46A02B2D3F301DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F56570CF01722FA201DC9062 = {
			buildActionMask = 2147483647;
			files = (
			);
			generatedFileNames = (
			);
			isa = PBXShellScriptBuildPhase;

			neededFileNames = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "rm -rf \"${SYMROOT}/${PRODUCT_NAME}.${WRAPPER_EXTENSION}/Versions/A\"";
		};
		F5875C7B016FEF1D01DC9062 = {
			isa = PBXFrameworkReference;
			path = Tcl.framework;
			refType = 3;
2899
2900
2901
2902
2903
2904
2905

2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
				F5B1FC14016FFE3501DC9062,
				F5B1FC15016FFE3501DC9062,
				F5B1FC16016FFE3501DC9062,
				F5B1FC17016FFE3501DC9062,
				F5B1FC18016FFE3501DC9062,
				F5B1FC19016FFE3501DC9062,
				F5B1FC1A016FFE3501DC9062,

				F5B1FC1B016FFE3501DC9062,
				F5B1FC1C016FFE3501DC9062,
				F5B1FC1D016FFE3501DC9062,
				F5B1FC1E016FFE3501DC9062,
				F5B1FC1F016FFE3501DC9062,
				F5B1FC20016FFE3501DC9062,
				F5B1FC21016FFE3501DC9062,
				F5B1FC22016FFE3501DC9062,
				F5B1FC23016FFE3501DC9062,
				F5B1FC24016FFE3501DC9062,
				F5B1FC25016FFE3501DC9062,
				F5B1FC26016FFE3501DC9062,
			);
			isa = PBXCopyFilesBuildPhase;
			name = "Copy Files";
		};
		F5B1FC09016FFE3501DC9062 = {
			fileRef = F5DF0928016CD3F901DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};







>














|







2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
				F5B1FC14016FFE3501DC9062,
				F5B1FC15016FFE3501DC9062,
				F5B1FC16016FFE3501DC9062,
				F5B1FC17016FFE3501DC9062,
				F5B1FC18016FFE3501DC9062,
				F5B1FC19016FFE3501DC9062,
				F5B1FC1A016FFE3501DC9062,
				F55BC46B02B2D3F301DC9062,
				F5B1FC1B016FFE3501DC9062,
				F5B1FC1C016FFE3501DC9062,
				F5B1FC1D016FFE3501DC9062,
				F5B1FC1E016FFE3501DC9062,
				F5B1FC1F016FFE3501DC9062,
				F5B1FC20016FFE3501DC9062,
				F5B1FC21016FFE3501DC9062,
				F5B1FC22016FFE3501DC9062,
				F5B1FC23016FFE3501DC9062,
				F5B1FC24016FFE3501DC9062,
				F5B1FC25016FFE3501DC9062,
				F5B1FC26016FFE3501DC9062,
			);
			isa = PBXCopyFilesBuildPhase;
			runOnlyForDeploymentPostprocessing = 0;
		};
		F5B1FC09016FFE3501DC9062 = {
			fileRef = F5DF0928016CD3F901DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111

3112
3113
3114
3115
3116
3117
3118
		F5B1FC26016FFE3501DC9062 = {
			fileRef = F5DF0945016CD3F901DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F5C1D51901B88F9A01DC9062 = {
			buildActionMask = 2147483647;
			files = (
			);
			generatedFileNames = (
			);
			isa = PBXShellScriptBuildPhase;
			name = "Shell Script";
			neededFileNames = (
			);

			shellPath = /bin/sh;
			shellScript = "source buildConfig";
		};
		F5C88659017D625C01DC9062 = {
			children = (
				F5C8865A017D625C01DC9062,
				F5C8865B017D625C01DC9062,







|





<


>







3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137

3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
		F5B1FC26016FFE3501DC9062 = {
			fileRef = F5DF0945016CD3F901DC9062;
			isa = PBXBuildFile;
			settings = {
			};
		};
		F5C1D51901B88F9A01DC9062 = {
			buildActionMask = 8;
			files = (
			);
			generatedFileNames = (
			);
			isa = PBXShellScriptBuildPhase;

			neededFileNames = (
			);
			runOnlyForDeploymentPostprocessing = 1;
			shellPath = /bin/sh;
			shellScript = "source buildConfig";
		};
		F5C88659017D625C01DC9062 = {
			children = (
				F5C8865A017D625C01DC9062,
				F5C8865B017D625C01DC9062,
3173
3174
3175
3176
3177
3178
3179

3180
3181
3182
3183
3184
3185
3186
				F5DF0933016CD3F901DC9062,
				F5DF0934016CD3F901DC9062,
				F5DF0935016CD3F901DC9062,
				F5DF0936016CD3F901DC9062,
				F5DF0937016CD3F901DC9062,
				F5DF0938016CD3F901DC9062,
				F5DF0939016CD3F901DC9062,

				F5DF093A016CD3F901DC9062,
				F5DF093B016CD3F901DC9062,
				F5DF093C016CD3F901DC9062,
				F5DF093D016CD3F901DC9062,
				F5DF093E016CD3F901DC9062,
				F5DF093F016CD3F901DC9062,
				F5DF0940016CD3F901DC9062,







>







3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
				F5DF0933016CD3F901DC9062,
				F5DF0934016CD3F901DC9062,
				F5DF0935016CD3F901DC9062,
				F5DF0936016CD3F901DC9062,
				F5DF0937016CD3F901DC9062,
				F5DF0938016CD3F901DC9062,
				F5DF0939016CD3F901DC9062,
				F55BC46A02B2D3F301DC9062,
				F5DF093A016CD3F901DC9062,
				F5DF093B016CD3F901DC9062,
				F5DF093C016CD3F901DC9062,
				F5DF093D016CD3F901DC9062,
				F5DF093E016CD3F901DC9062,
				F5DF093F016CD3F901DC9062,
				F5DF0940016CD3F901DC9062,
3227
3228
3229
3230
3231
3232
3233

3234
3235
3236
3237
3238
3239
3240
		F5DF092D016CD3F901DC9062 = {
			isa = PBXFileReference;
			name = console.tcl;
			path = ../library/console.tcl;
			refType = 2;
		};
		F5DF092E016CD3F901DC9062 = {

			isa = PBXFolderReference;
			name = demos;
			path = ../library/demos;
			refType = 2;
		};
		F5DF092F016CD3F901DC9062 = {
			isa = PBXFileReference;







>







3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
		F5DF092D016CD3F901DC9062 = {
			isa = PBXFileReference;
			name = console.tcl;
			path = ../library/console.tcl;
			refType = 2;
		};
		F5DF092E016CD3F901DC9062 = {
			includeInIndex = 0;
			isa = PBXFolderReference;
			name = demos;
			path = ../library/demos;
			refType = 2;
		};
		F5DF092F016CD3F901DC9062 = {
			isa = PBXFileReference;
3251
3252
3253
3254
3255
3256
3257

3258
3259
3260
3261
3262
3263
3264
		F5DF0931016CD3F901DC9062 = {
			isa = PBXFileReference;
			name = focus.tcl;
			path = ../library/focus.tcl;
			refType = 2;
		};
		F5DF0932016CD3F901DC9062 = {

			isa = PBXFolderReference;
			name = images;
			path = ../library/images;
			refType = 2;
		};
		F5DF0933016CD3F901DC9062 = {
			isa = PBXFileReference;







>







3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
		F5DF0931016CD3F901DC9062 = {
			isa = PBXFileReference;
			name = focus.tcl;
			path = ../library/focus.tcl;
			refType = 2;
		};
		F5DF0932016CD3F901DC9062 = {
			includeInIndex = 0;
			isa = PBXFolderReference;
			name = images;
			path = ../library/images;
			refType = 2;
		};
		F5DF0933016CD3F901DC9062 = {
			isa = PBXFileReference;
3275
3276
3277
3278
3279
3280
3281

3282
3283
3284
3285
3286
3287
3288
		F5DF0935016CD3F901DC9062 = {
			isa = PBXFileReference;
			name = msgbox.tcl;
			path = ../library/msgbox.tcl;
			refType = 2;
		};
		F5DF0936016CD3F901DC9062 = {

			isa = PBXFolderReference;
			name = msgs;
			path = ../library/msgs;
			refType = 2;
		};
		F5DF0937016CD3F901DC9062 = {
			isa = PBXFileReference;







>







3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
		F5DF0935016CD3F901DC9062 = {
			isa = PBXFileReference;
			name = msgbox.tcl;
			path = ../library/msgbox.tcl;
			refType = 2;
		};
		F5DF0936016CD3F901DC9062 = {
			includeInIndex = 0;
			isa = PBXFolderReference;
			name = msgs;
			path = ../library/msgs;
			refType = 2;
		};
		F5DF0937016CD3F901DC9062 = {
			isa = PBXFileReference;
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386

3387
3388
3389
3390
3391
3392
		F5FBD6E30173513601DC9062 = {
			buildActionMask = 2147483647;
			files = (
			);
			generatedFileNames = (
			);
			isa = PBXShellScriptBuildPhase;
			name = "Shell Script";
			neededFileNames = (
			);

			shellPath = /bin/sh;
			shellScript = pwd;
		};
	};
	rootObject = F537552A016C352C01DC9062;
}







<


>






3410
3411
3412
3413
3414
3415
3416

3417
3418
3419
3420
3421
3422
3423
3424
3425
		F5FBD6E30173513601DC9062 = {
			buildActionMask = 2147483647;
			files = (
			);
			generatedFileNames = (
			);
			isa = PBXShellScriptBuildPhase;

			neededFileNames = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = pwd;
		};
	};
	rootObject = F537552A016C352C01DC9062;
}
Changes to macosx/tkMacOSXAppInit.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkAppInit.c --
 *
 *        Provides a default version of the Tcl_AppInit procedure for
 *        use in wish and similar Tk-based applications.
 *
 * Copyright (c) 1993 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXAppInit.c,v 1.1.2.5 2002/01/22 01:28:18 wolfsuit Exp $
 */
#include <pthread.h>
#include "tk.h"
#include "tclInt.h"
#include "locale.h"

#include <Carbon/Carbon.h>













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkAppInit.c --
 *
 *        Provides a default version of the Tcl_AppInit procedure for
 *        use in wish and similar Tk-based applications.
 *
 * Copyright (c) 1993 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXAppInit.c,v 1.1.2.6 2002/06/10 05:38:26 wolfsuit Exp $
 */
#include <pthread.h>
#include "tk.h"
#include "tclInt.h"
#include "locale.h"

#include <Carbon/Carbon.h>
62
63
64
65
66
67
68







69
70
71
72
73
74
75
 *        returns either.
 *
 * Side effects:
 *        Whatever the application does.
 *
 *----------------------------------------------------------------------
 */








int
main(argc, argv)
    int argc;                        /* Number of command-line arguments. */
    char **argv;                /* Values of command-line arguments. */
{
    Tcl_Interp *interp;







>
>
>
>
>
>
>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 *        returns either.
 *
 * Side effects:
 *        Whatever the application does.
 *
 *----------------------------------------------------------------------
 */

OSStatus
myWindowHandler (EventHandlerCallRef inHandlerCallRef,
                 EventRef inEvent, void *inUserData)
{
    return noErr;
}

int
main(argc, argv)
    int argc;                        /* Number of command-line arguments. */
    char **argv;                /* Values of command-line arguments. */
{
    Tcl_Interp *interp;
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
                free(startupScript);
            }
            CFRelease(appMainURL);
        }
    }

#endif
         
    textEncoding=GetApplicationTextEncoding();
    
    /*
     * Now add the scripts folder to the auto_path.
     */
     
    Tk_Main(argc,argv,TK_LOCAL_APPINIT);
    return 0;                        /* Needed only to prevent compiler warning. */
}

/*
 *----------------------------------------------------------------------
 *
 * Tcl_AppInit --
 *
 *        This procedure performs application-specific initialization.
 *        Most applications, especially those that incorporate additional







<









|







148
149
150
151
152
153
154

155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
                free(startupScript);
            }
            CFRelease(appMainURL);
        }
    }

#endif

    textEncoding=GetApplicationTextEncoding();
    
    /*
     * Now add the scripts folder to the auto_path.
     */
     
    Tk_Main(argc,argv,TK_LOCAL_APPINIT);
    return 0;                        /* Needed only to prevent compiler warning. */
}

/*
 *----------------------------------------------------------------------
 *
 * Tcl_AppInit --
 *
 *        This procedure performs application-specific initialization.
 *        Most applications, especially those that incorporate additional
284
285
286
287
288
289
290


















291
292
293
294
295
296
297
     * Specify a user-specific startup file to invoke if the application
     * is run interactively.  Typically the startup file is "~/.apprc"
     * where "app" is the name of the application.  If this line is deleted
     * then no user-specific startup file will be run under any conditions.
     */
     
    Tcl_SetVar(interp, "tcl_rcFileName", "~/.wishrc", TCL_GLOBAL_ONLY);



















    return TCL_OK;

    error:
    return TCL_ERROR;
}








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






<
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320

     * Specify a user-specific startup file to invoke if the application
     * is run interactively.  Typically the startup file is "~/.apprc"
     * where "app" is the name of the application.  If this line is deleted
     * then no user-specific startup file will be run under any conditions.
     */
     
    Tcl_SetVar(interp, "tcl_rcFileName", "~/.wishrc", TCL_GLOBAL_ONLY);

    {
        Rect windowRect = {50, 50, 150, 150};
        WindowRef windowRef;
        EventTargetRef target;
        struct EventTypeSpec myEventSpec = {kEventClassMouse, kEventMouseDown};
        Boolean isValid;
        OSStatus result;

        CreateNewWindow (kDocumentWindowClass, kWindowStandardHandlerAttribute,
                         &windowRect, &windowRef);
        result = InstallStandardEventHandler (GetWindowEventTarget (windowRef));
        result = InstallWindowEventHandler (windowRef, NewEventHandlerUPP (myWindowHandler),
                                   1, &myEventSpec, NULL, NULL);
        TransitionWindow(windowRef, kWindowZoomTransitionEffect, kWindowShowTransitionAction,
                         NULL);

    }

    return TCL_OK;

    error:
    return TCL_ERROR;
}

Changes to macosx/tkMacOSXDefault.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkMacOSXDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXDefault.h,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
 */

#ifndef _TKMACDEFAULT
#define _TKMACDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkMacOSXDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXDefault.h,v 1.1.2.3 2002/06/10 05:38:26 wolfsuit Exp $
 */

#ifndef _TKMACDEFAULT
#define _TKMACDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.
357
358
359
360
361
362
363

































364
365
366
367
368
369
370
#define DEF_MESSAGE_PADX		"-1"
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"


































/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
#define DEF_MESSAGE_PADX		"-1"
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"
/*
 * Defaults for panedwindows
 */

#define DEF_PANEDWINDOW_BG_COLOR	NORMAL_BG
#define DEF_PANEDWINDOW_BG_MONO		WHITE
#define DEF_PANEDWINDOW_BORDERWIDTH	"2"
#define DEF_PANEDWINDOW_CURSOR		""
#define DEF_PANEDWINDOW_HANDLEPAD	"8"
#define DEF_PANEDWINDOW_HANDLESIZE	"8"
#define DEF_PANEDWINDOW_HEIGHT		""
#define DEF_PANEDWINDOW_OPAQUERESIZE	"0"
#define DEF_PANEDWINDOW_ORIENT		"horizontal"
#define DEF_PANEDWINDOW_RELIEF		"flat"
#define DEF_PANEDWINDOW_SASHCURSOR	""
#define DEF_PANEDWINDOW_SASHPAD		"2"
#define DEF_PANEDWINDOW_SASHRELIEF	"raised"
#define DEF_PANEDWINDOW_SASHWIDTH	"2"
#define DEF_PANEDWINDOW_SHOWHANDLE	"1"
#define DEF_PANEDWINDOW_WIDTH		""

/*
 * Defaults for panedwindow panes
 */

#define DEF_PANEDWINDOW_PANE_AFTER	""
#define DEF_PANEDWINDOW_PANE_BEFORE	""
#define DEF_PANEDWINDOW_PANE_HEIGHT	""
#define DEF_PANEDWINDOW_PANE_MINSIZE	"0"
#define DEF_PANEDWINDOW_PANE_PADX	"0"
#define DEF_PANEDWINDOW_PANE_PADY	"0"
#define DEF_PANEDWINDOW_PANE_STICKY	"nsew"
#define DEF_PANEDWINDOW_PANE_WIDTH	""

/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK
Changes to macosx/tkMacOSXEvent.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXEvent.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <sys/types.h>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXEvent.c,v 1.1.2.3 2002/06/10 05:38:26 wolfsuit Exp $
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <sys/types.h>
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
        TkMacOSXProcessEvent(&macEvent,&eventStatus);
        if (!eventStatus.handledByTk) {
            if (!targetRef) {
                targetRef=GetEventDispatcherTarget();
            }
            
            err= SendEventToEventTarget(macEvent.eventRef,targetRef);
            if (err != noErr) {
                fprintf(stderr,
                        "RCNE SendEventToEventTarget (%s) failed, %d\n",
                        CarbonEventToAscii(macEvent.eventRef,buf ),err);
            }
         }
         ReleaseEvent(macEvent.eventRef);
         return 0;
     }
}







|









260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
        TkMacOSXProcessEvent(&macEvent,&eventStatus);
        if (!eventStatus.handledByTk) {
            if (!targetRef) {
                targetRef=GetEventDispatcherTarget();
            }
            
            err= SendEventToEventTarget(macEvent.eventRef,targetRef);
            if (err != noErr /* && err != eventNotHandledErr */) {
                fprintf(stderr,
                        "RCNE SendEventToEventTarget (%s) failed, %d\n",
                        CarbonEventToAscii(macEvent.eventRef,buf ),err);
            }
         }
         ReleaseEvent(macEvent.eventRef);
         return 0;
     }
}
Changes to macosx/tkMacOSXKeyEvent.c.
376
377
378
379
380
381
382



























    TkWindow *winPtr)                        /* Capture window, or NULL. */
{
    while ((winPtr != NULL) && !Tk_IsTopLevel(winPtr)) {
        winPtr = winPtr->parentPtr;
    }
    gGrabWinPtr = (Tk_Window) winPtr;
}


































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
    TkWindow *winPtr)                        /* Capture window, or NULL. */
{
    while ((winPtr != NULL) && !Tk_IsTopLevel(winPtr)) {
        winPtr = winPtr->parentPtr;
    }
    gGrabWinPtr = (Tk_Window) winPtr;
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_SetCaretPos --
 *
 *	This enables correct placement of the XIM caret.  This is called
 *	by widgets to indicate their cursor placement, and the caret
 *	location is used by TkpGetString to place the XIM caret.
 *
 * Results:
 *	None
 *
 * Side effects:
 *	None
 *
 *----------------------------------------------------------------------
 */

void
Tk_SetCaretPos(tkwin, x, y, height)
    Tk_Window tkwin;
    int	      x;
    int	      y;
    int	      height;
{
}
Changes to macosx/tkMacOSXMouseEvent.c.
167
168
169
170
171
172
173



174

175
176
177
178
179
180
181
             return 0;
         }
         medPtr->state |= 1 << ((mouseButton-1)+8);
    }

    medPtr->windowPart= FindWindow(where, &medPtr->whichWin);
    window = TkMacOSXGetXWindow(medPtr->whichWin);



       

    frontWindow = FrontWindow();
    medPtr->activeNonFloating = ActiveNonFloatingWindow();

    /*
     * The window manager only needs to know about mouse down events
     * and sometimes we need to "eat" the mouse up.  Otherwise, we
     * just pass the event to Tk.







>
>
>
|
>







167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
             return 0;
         }
         medPtr->state |= 1 << ((mouseButton-1)+8);
    }

    medPtr->windowPart= FindWindow(where, &medPtr->whichWin);
    window = TkMacOSXGetXWindow(medPtr->whichWin);
    if (medPtr->whichWin != NULL && window == None) {
        statusPtr->handledByTk = 0;
        return 0;
    }
    
    frontWindow = FrontWindow();
    medPtr->activeNonFloating = ActiveNonFloatingWindow();

    /*
     * The window manager only needs to know about mouse down events
     * and sometimes we need to "eat" the mouse up.  Otherwise, we
     * just pass the event to Tk.
Changes to macosx/tkMacOSXXStubs.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXXStubs.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
 */

#include "tkInt.h"
#include <X11/X.h>
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright 2001, Apple Computer, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkMacOSXXStubs.c,v 1.1.2.3 2002/06/10 05:38:26 wolfsuit Exp $
 */

#include "tkInt.h"
#include <X11/X.h>
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
136
137
138
139
140
141
142







143
144
145
146
147
148
149
    screen->root_visual->red_mask = 0x00FF0000;
    screen->root_visual->green_mask = 0x0000FF00;
    screen->root_visual->blue_mask = 0x000000FF;
    screen->root_visual->bits_per_rgb = 24;
    screen->root_visual->map_entries = 2 ^ 8;

    gMacDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay));







    gMacDisplay->display = display;
    return gMacDisplay;
}

/*
 *----------------------------------------------------------------------
 *







>
>
>
>
>
>
>







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
    screen->root_visual->red_mask = 0x00FF0000;
    screen->root_visual->green_mask = 0x0000FF00;
    screen->root_visual->blue_mask = 0x000000FF;
    screen->root_visual->bits_per_rgb = 24;
    screen->root_visual->map_entries = 2 ^ 8;

    gMacDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay));
    
    /*
     * This is the quickest way to make sure that all the *Init
     * flags get properly initialized
     */
    
    bzero (gMacDisplay, sizeof (TkDisplay));
    gMacDisplay->display = display;
    return gMacDisplay;
}

/*
 *----------------------------------------------------------------------
 *
Changes to tests/all.tcl.
1
2
3
4
5
6
7
8
9



10
11
12
13
14
15
16
17
# all.tcl --
#
# This file contains a top-level script to run all of the Tk
# tests.  Execute it by invoking "source all.tcl" when running tktest
# in this directory.
#
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
# 



# RCS: @(#) $Id: all.tcl,v 1.4 1999/04/21 21:53:29 rjohnson Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}
set ::tcltest::testSingleFile false

puts stdout "Tk $tk_patchLevel tests running in interp:  [info nameofexecutable]"







<
|
>
>
>
|







1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
# all.tcl --
#
# This file contains a top-level script to run all of the Tk
# tests.  Execute it by invoking "source all.tcl" when running tktest
# in this directory.
#
# Copyright (c) 1998-1999 by Scriptics Corporation.

#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: all.tcl,v 1.4.18.1 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}
set ::tcltest::testSingleFile false

puts stdout "Tk $tk_patchLevel tests running in interp:  [info nameofexecutable]"
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    }
}

# cleanup
puts stdout "\nTests ended at [eval $timeCmd]"
::tcltest::cleanupTests 1
return




















<
<
<
<
<
<
<
<
<
<
<
<
<
61
62
63
64
65
66
67













    }
}

# cleanup
puts stdout "\nTests ended at [eval $timeCmd]"
::tcltest::cleanupTests 1
return













Changes to tests/bind.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This file is a Tcl script to test out Tk's "bind" and "bindtags"
# commands plus the procedures in tkBind.c.  It is organized in the
# standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: bind.test,v 1.9.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

catch {destroy .b}
toplevel .b -width 100 -height 50









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This file is a Tcl script to test out Tk's "bind" and "bindtags"
# commands plus the procedures in tkBind.c.  It is organized in the
# standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: bind.test,v 1.9.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

catch {destroy .b}
toplevel .b -width 100 -height 50
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
    list [catch {event gen .xyz <Control-v>} msg] $msg
} {1 {bad window path name ".xyz"}}
test bind-22.2 {HandleEventGenerate} {
    list [catch {event gen zzz <Control-v>} msg] $msg
} {1 {bad window name/identifier "zzz"}}
test bind-22.3 {HandleEventGenerate} {
    list [catch {event gen 47 <Control-v>} msg] $msg
} {1 {window id "47" doesn't exist in this application}}
test bind-22.4 {HandleEventGenerate} {
    setup
    bind .b.f <Button> {set x "%s %b"}
    set x {}
    event gen [winfo id .b.f] <Control-Button-1> -state 260
    set x
} {260 1}







|







1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
    list [catch {event gen .xyz <Control-v>} msg] $msg
} {1 {bad window path name ".xyz"}}
test bind-22.2 {HandleEventGenerate} {
    list [catch {event gen zzz <Control-v>} msg] $msg
} {1 {bad window name/identifier "zzz"}}
test bind-22.3 {HandleEventGenerate} {
    list [catch {event gen 47 <Control-v>} msg] $msg
} {1 {bad window name/identifier "47"}}
test bind-22.4 {HandleEventGenerate} {
    setup
    bind .b.f <Button> {set x "%s %b"}
    set x {}
    event gen [winfo id .b.f] <Control-Button-1> -state 260
    set x
} {260 1}
2042
2043
2044
2045
2046
2047
2048




2049
2050
2051
2052
2053
2054
2055
2056
    lappend x foo
    update
    set x
} {foo 99 100 101 102}
test bind-22.17 {HandleEventGenerate} {
    list [catch {event gen . <Button> -when xyz} msg] $msg
} {1 {bad -when value "xyz": must be now, head, mark, or tail}}




set i 18
foreach check {
    {<Configure> %a {-above .xyz} {{1 {bad window path name ".xyz"}}}}
    {<Configure> %a {-above .b} {[winfo id .b]}}
    {<Configure> %a {-above xyz} {{1 {bad window name/identifier "xyz"}}}}
    {<Configure> %a {-above [winfo id .b]} {[winfo id .b]}}
    {<Key> %b    {-above .} {{1 {<Key> event doesn't accept "-above" option}}}}








>
>
>
>
|







2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
    lappend x foo
    update
    set x
} {foo 99 100 101 102}
test bind-22.17 {HandleEventGenerate} {
    list [catch {event gen . <Button> -when xyz} msg] $msg
} {1 {bad -when value "xyz": must be now, head, mark, or tail}}
test bind-22.18 {HandleEventGenerate} {
    # Bug 411307
    list [catch {event gen . <a> -root 98765} msg] $msg
} {1 {bad window name/identifier "98765"}}
set i 19
foreach check {
    {<Configure> %a {-above .xyz} {{1 {bad window path name ".xyz"}}}}
    {<Configure> %a {-above .b} {[winfo id .b]}}
    {<Configure> %a {-above xyz} {{1 {bad window name/identifier "xyz"}}}}
    {<Configure> %a {-above [winfo id .b]} {[winfo id .b]}}
    {<Key> %b    {-above .} {{1 {<Key> event doesn't accept "-above" option}}}}

2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
    setup
    set x {}
    bind .b.f <MouseWheel> {set x "%D %x %y"}
    event gen .b.f <MouseWheel> -delta 240 -x 10 -y 30
    set x
} {240 10 30}


destroy .b

# cleanup
::tcltest::cleanupTests
return




















<





<
<
<
<
<
<
<
<
<
<
<
<
<
2673
2674
2675
2676
2677
2678
2679

2680
2681
2682
2683
2684













    setup
    set x {}
    bind .b.f <MouseWheel> {set x "%D %x %y"}
    event gen .b.f <MouseWheel> -delta 240 -x 10 -y 30
    set x
} {240 10 30}


destroy .b

# cleanup
::tcltest::cleanupTests
return













Changes to tests/canvas.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the procedures in tkCanvas.c,
# which implements generic code for canvases.  It is organized in the
# standard fashion for Tcl tests.
#
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
# All rights reserved.
#
# RCS: @(#) $Id: canvas.test,v 1.13.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the procedures in tkCanvas.c,
# which implements generic code for canvases.  It is organized in the
# standard fashion for Tcl tests.
#
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
# All rights reserved.
#
# RCS: @(#) $Id: canvas.test,v 1.13.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
test canvas-11.1 {canvas poly fill check, bug 5783} {
    # This would crash in 8.3.0 and 8.3.1
    destroy .c
    pack [canvas .c]
    .c create polygon 0 0 100 100 200 50 \
	    -fill {} -stipple gray50 -outline black
} 1
<<<<<<< canvas.test
=======
test canvas-11.2 {canvas poly overlap fill check, bug 226357} {
    destroy .c
    pack [canvas .c]
    set result {}
    .c create poly 30 30 90 90 30 90 90 30
    lappend result [.c find over 40 40 45 45]; # rect region inc. edge
    lappend result [.c find over 60 40 60 40]; # top-center point







<
<







362
363
364
365
366
367
368


369
370
371
372
373
374
375
test canvas-11.1 {canvas poly fill check, bug 5783} {
    # This would crash in 8.3.0 and 8.3.1
    destroy .c
    pack [canvas .c]
    .c create polygon 0 0 100 100 200 50 \
	    -fill {} -stipple gray50 -outline black
} 1


test canvas-11.2 {canvas poly overlap fill check, bug 226357} {
    destroy .c
    pack [canvas .c]
    set result {}
    .c create poly 30 30 90 90 30 90 90 30
    lappend result [.c find over 40 40 45 45]; # rect region inc. edge
    lappend result [.c find over 60 40 60 40]; # top-center point
427
428
429
430
431
432
433
434
435
436
437
438
    # do this many times to improve chances of triggering the crash
    for {set i 0} {$i < 30} {incr i} {
	event generate .c <1> -x 100 -y 100
	event generate .c <ButtonRelease-1> -x 100 -y 100
    }
    set ::x
} okokokokokokokokokokokokokokokokokokokokokokokokokokokokokok
>>>>>>> 1.13

# cleanup
::tcltest::cleanupTests
return







<




425
426
427
428
429
430
431

432
433
434
435
    # do this many times to improve chances of triggering the crash
    for {set i 0} {$i < 30} {incr i} {
	event generate .c <1> -x 100 -y 100
	event generate .c <ButtonRelease-1> -x 100 -y 100
    }
    set ::x
} okokokokokokokokokokokokokokokokokokokokokokokokokokokokokok


# cleanup
::tcltest::cleanupTests
return
Changes to tests/embed.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# This file is a Tcl script to test out embedded Windows.
#
# Copyright (c) 1996-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: embed.test,v 1.1.2.1 2002/06/10 05:08:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

proc deleteWindows {} {
    foreach i [winfo children .] {






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
# This file is a Tcl script to test out embedded Windows.
#
# Copyright (c) 1996-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: embed.test,v 1.1.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

proc deleteWindows {} {
    foreach i [winfo children .] {
Changes to tests/entry.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test entry widgets in Tk.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: entry.test,v 1.11.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test entry widgets in Tk.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: entry.test,v 1.11.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511

1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525

1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537

1538
1539
1540
1541
1542
1543
1544
1545
1546
1547















































1548
1549
1550
1551
1552
1553
1554
1555
1556
    list [.e cget -validate] $::vVals
} {focusout {.e -1 -1 newdata abcd {} focusout forced}}

proc doval {W d i P s S v V} {
    set ::vVals [list $W $d $i $P $s $S $v $V]
    return 0
}
.e configure -validate all

test entry-19.18 {entry widget validation} {

    set ::e nextdata
    list [.e cget -validate] $::vVals
} {none {.e -1 -1 nextdata newdata {} all forced}}

proc doval {W d i P s S v V} {
    set ::vVals [list $W $d $i $P $s $S $v $V]
    set ::e mydata
    return 1
}
.e configure -validate all

## This sets validate to none because it shows that we prevent a possible
## loop condition in the validation, when the entry textvar is also set
test entry-19.19 {entry widget validation} {

    .e validate
    list [.e cget -validate] [.e get] $::vVals
} {none mydata {.e -1 -1 nextdata nextdata {} all forced}}

.e configure -validate all

## This leaves validate alone because we trigger validation through the
## textvar (a write trace), and the write during validation triggers
## nothing (by definition of avoiding loops on var traces).  This is
## one of those "dangerous" conditions where the user will have a
## different value in the entry widget shown as is in the textvar.
test entry-19.20 {entry widget validation} {

    set ::e testdata
    list [.e cget -validate] [.e get] $::e $::vVals
} {all testdata mydata {.e -1 -1 testdata mydata {} all forced}}

destroy .e
catch {unset ::e ::vVals}

##
## End validation tests
##
















































# XXX Still need to write tests for EntryBlinkProc, EntryFocusProc,
# and EntryTextVarProc.

option clear

# cleanup
::tcltest::cleanupTests
return







<


>









<




>




<
<






>










>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>









1502
1503
1504
1505
1506
1507
1508

1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520

1521
1522
1523
1524
1525
1526
1527
1528
1529


1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
    list [.e cget -validate] $::vVals
} {focusout {.e -1 -1 newdata abcd {} focusout forced}}

proc doval {W d i P s S v V} {
    set ::vVals [list $W $d $i $P $s $S $v $V]
    return 0
}


test entry-19.18 {entry widget validation} {
    .e configure -validate all
    set ::e nextdata
    list [.e cget -validate] $::vVals
} {none {.e -1 -1 nextdata newdata {} all forced}}

proc doval {W d i P s S v V} {
    set ::vVals [list $W $d $i $P $s $S $v $V]
    set ::e mydata
    return 1
}


## This sets validate to none because it shows that we prevent a possible
## loop condition in the validation, when the entry textvar is also set
test entry-19.19 {entry widget validation} {
    .e configure -validate all
    .e validate
    list [.e cget -validate] [.e get] $::vVals
} {none mydata {.e -1 -1 nextdata nextdata {} all forced}}



## This leaves validate alone because we trigger validation through the
## textvar (a write trace), and the write during validation triggers
## nothing (by definition of avoiding loops on var traces).  This is
## one of those "dangerous" conditions where the user will have a
## different value in the entry widget shown as is in the textvar.
test entry-19.20 {entry widget validation} {
    .e configure -validate all
    set ::e testdata
    list [.e cget -validate] [.e get] $::e $::vVals
} {all testdata mydata {.e -1 -1 testdata mydata {} all forced}}

destroy .e
catch {unset ::e ::vVals}

##
## End validation tests
##

test entry-20.1 {widget deletion while active} {
    destroy .e
    entry .e -validate all \
	    -validatecommand { destroy %W ; return 1 } \
	    -invalidcommand bell
    update
    .e insert 0 abc
    winfo exists .e
} 0
test entry-20.2 {widget deletion while active} {
    destroy .e
    entry .e -validate all \
	    -validatecommand { return 0 } \
	    -invalidcommand { destroy %W }
    .e insert 0 abc
    winfo exists .e
} 0
test entry-20.3 {widget deletion while active} {
    destroy .e
    entry .e -validate all \
	    -validatecommand { rename .e {} ; return 1 }
    .e insert 0 abc
    winfo exists .e
} 0
test entry-20.4 {widget deletion while active} {
    destroy .e
    entry .e -validate all \
	    -validatecommand { return 0 } \
	    -invalidcommand { rename .e {} }
    .e insert 0 abc
    winfo exists .e
} 0
test entry-20.5 {widget deletion while active} {
    destroy .e
    entry .e -validatecommand { destroy .e ; return 0 }
    .e validate
    winfo exists .e
} 0
test entry-20.6 {widget deletion while active} {
    destroy .e
    pack [entry .e]
    update
    .e config -xscrollcommand { destroy .e }
    update idle
    winfo exists .e
} 0

# XXX Still need to write tests for EntryBlinkProc, EntryFocusProc,
# and EntryTextVarProc.

option clear

# cleanup
::tcltest::cleanupTests
return
Changes to tests/event.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

























































































































































25
26
27
28
29
30
31
# This file is a Tcl script to test the code in tkEvent.c.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: event.test,v 1.6.2.2 2002/02/05 02:25:17 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i
}
wm geometry . {}
raise .

# XXX This test file is woefully incomplete.  Right now it only tests
# a few of the procedures in tkEvent.c.  Please add more tests whenever
# possible.


























































































































































test event-1.1 {Tk_HandleEvent procedure, filter events for dead windows} {
    button .b -text Test
    pack .b
    bindtags .b .b
    update
    bind .b <Destroy> {
	lappend x destroy








|















>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# This file is a Tcl script to test the code in tkEvent.c.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: event.test,v 1.6.2.3 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i
}
wm geometry . {}
raise .

# XXX This test file is woefully incomplete.  Right now it only tests
# a few of the procedures in tkEvent.c.  Please add more tests whenever
# possible.



# Setup table used to query key events.

proc _init_keypress_lookup { } {
    global keypress_lookup

    scan A %c start
    scan Z %c finish

    for {set i $start} {$i <= $finish} {incr i} {
        set l [format %c $i]
        set keypress_lookup($l) $l
    }

    scan a %c start
    scan z %c finish

    for {set i $start} {$i <= $finish} {incr i} {
        set l [format %c $i]
        set keypress_lookup($l) $l
    }

    scan 0 %c start
    scan 9 %c finish

    for {set i $start} {$i <= $finish} {incr i} {
        set l [format %c $i]
        set keypress_lookup($l) $l
    }

    array set keypress_lookup [list \
        " " space \
        ! exclam \
        \" quotedbl \
        \# numbersign \
        \$ dollar \
        % percent \
        & ampersand \
        ( parenleft \
        ) parenright \
        * asterisk \
        + plus \
        , comma \
        - minus \
        . period \
        / slash \
        : colon \
        \; semicolon \
        < less \
        = equal \
        > greater \
        ? question \
        @ at \
        \[ bracketleft \
        \\ backslash \
        \] bracketright \
        ^ asciicircum \
        _ underscore \
        \{ braceleft \
        | bar \
        \} braceright \
        ~ asciitilde \
        ' apostrophe \
        "\n" Return]
}


# Lookup an event in the keypress table.
# For example:
# Q -> Q
# . -> period
# / -> slash
# Delete -> Delete
# Escape -> Escape

proc _keypress_lookup { char } {
    global keypress_lookup

    if {! [info exists keypress_lookup]} {
        _init_keypress_lookup
    }

    if {$char == ""} {
        error "empty char"
    }

    if {[info exists keypress_lookup($char)]} {
        return $keypress_lookup($char)
    } else {
        return $char
    }
}


# Lookup and generate a pair of KeyPress and KeyRelease events

proc _keypress { win key } {
    set keysym [_keypress_lookup $key]

    event generate $win <KeyPress-$keysym>
    _pause 50
    event generate $win <KeyRelease-$keysym>
    _pause 50
}

# Call _keypress for each character in the given string

proc _keypress_string { win string } {
    foreach letter [split $string ""] {
        _keypress $win $letter
    }
}

# Delay script execution for a given amount of time

proc _pause { {msecs 1000} } {
    global _pause

    if {! [info exists _pause(number)]} {
        set _pause(number) 0
    }

    set num [incr _pause(number)]
    set _pause($num) 0

    after $msecs "set _pause($num) 1"
    vwait _pause($num)
    unset _pause($num)
}

# Helper proc to convert index to x y position

proc _text_ind_to_x_y { text ind } {
    foreach {x1 y1 width height} [$text bbox $ind] break
    set middle_y [expr {$y1 + ($height / 2)}]
    return [list $x1 $middle_y]
}

# Return selection only if owned by the given widget

proc _get_selection { widget } {
    if {[string compare $widget [selection own]] != 0} {
        return ""
    }
    if {[catch {selection get} sel]} {
        return ""
    }
    return $sel
}

# Begining of the actual tests

test event-1.1 {Tk_HandleEvent procedure, filter events for dead windows} {
    button .b -text Test
    pack .b
    bindtags .b .b
    update
    bind .b <Destroy> {
	lappend x destroy
47
48
49
50
51
52
53
54
55
56
57
58
59












60






























































































































































61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76


77


78



79
80
81
82
83
84
85
	pack [entry .e]
	update
	bind .e <Alt-z> {set ::event12result "1"}
	focus -force .e ; event generate .e <Alt-z>
	destroy .e
	set ::event12result
} 1
# cleanup
::tcltest::cleanupTests
return


















































































































































































test event-click-drag-1.2 { click and drag in an entry widget, this
                            tests tkEntryMouseSelect in entry.tcl } {
    destroy .t
    set t [toplevel .t]
    set e [entry $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e "A Tcl/Tk selection!"
    set anchor 6
    set selend 18











    # Save the position of the insert cursor
    lappend result [$e index insert]
    
    # Now drag until selend is highlighted, then click up

    set current $anchor







<
<
<



>
>
>
>
>
>
>
>
>
>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
















>
>

>
>

>
>
>







200
201
202
203
204
205
206



207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
	pack [entry .e]
	update
	bind .e <Alt-z> {set ::event12result "1"}
	focus -force .e ; event generate .e <Alt-z>
	destroy .e
	set ::event12result
} 1






test event-keypress-1.1 { type into entry widget and hit Return } {
    destroy .t
    set t [toplevel .t]
    set e [entry $t.e]
    pack $e
    set return_binding 0
    bind $e <Return> {set return_binding 1}
    tkwait visibility $e
    focus -force $e
    _keypress_string $e HELLO\n
    list [$e get] $return_binding
} {HELLO 1}


test event-keypress-1.2 { type into entry widget and then delete some text } {
    destroy .t
    set t [toplevel .t]
    set e [entry $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e MELLO
    _keypress $e BackSpace
    _keypress $e BackSpace
    $e get
} MEL

test event-keypress-1.3 { type into entry widget, triple click,
                          hit Delete key, and then type some more } {
    destroy .t
    set t [toplevel .t]
    set e [entry $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e JUMP

    set result [$e get]

    event generate $e <Enter>
    for {set i 0} {$i < 3} {incr i} {
        _pause 100
        event generate $e <ButtonPress-1>
        _pause 100
        event generate $e <ButtonRelease-1>
    }

    _keypress $e Delete
    _keypress_string $e UP
    lappend result [$e get]
} {JUMP UP}


test event-keypress-1.4 { type into text widget and hit Return } {
    destroy .t
    set t [toplevel .t]
    set e [text $t.e]
    pack $e
    set return_binding 0
    bind $e <Return> {set return_binding 1}
    tkwait visibility $e
    focus -force $e
    _keypress_string $e HELLO\n
    list [$e get 1.0 end] $return_binding
} [list "HELLO\n\n" 1]

test event-keypress-1.5 { type into text widget and then delete some text } {
    destroy .t
    set t [toplevel .t]
    set e [text $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e MELLO
    _keypress $e BackSpace
    _keypress $e BackSpace
    $e get 1.0 1.end
} MEL

test event-keypress-1.6 { type into text widget, triple click,
                          hit Delete key, and then type some more } {
    destroy .t
    set t [toplevel .t]
    set e [text $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e JUMP

    set result [$e get 1.0 1.end]

    event generate $e <Enter>
    for {set i 0} {$i < 3} {incr i} {
        _pause 100
        event generate $e <ButtonPress-1>
        _pause 100
        event generate $e <ButtonRelease-1>
    }

    _keypress $e Delete
    _keypress_string $e UP
    lappend result [$e get 1.0 1.end]
} {JUMP UP}



test event-click-drag-1.1 { click and drag in a text widget, this
                            tests tkTextSelectTo in text.tcl } {
    destroy .t
    set t [toplevel .t]
    set e [text $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e "A Tcl/Tk selection test!"
    set anchor 1.6
    set selend 1.18

    set result [list]
    lappend result [$e get 1.0 1.end]

    # Get the x,y coords of the second T in "Tcl/Tk"
    foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break

    # Click down to set the insert cursor position
    event generate $e <Enter>
    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y

    # Save the position of the insert cursor
    lappend result [$e index insert]
    
    # Now drag until selend is highlighted, then click up

    set current $anchor
    while {[$e compare $current <= $selend]} {
        foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
        event generate $e <B1-Motion> -x $current_x -y $current_y
        set current [$e index [list $current + 1 char]]
        _pause 50
    }

    event generate $e <ButtonRelease-1> -x $current_x -y $current_y
    _pause 200

    # Save the position of the insert cursor
    lappend result [$e index insert]

    # Save the highlighted text
    lappend result [_get_selection $e]

    # Now click and click and drag to the left, over "Tcl/Tk selection"

    event generate $e <ButtonPress-1> -x $current_x -y $current_y

    while {[$e compare $current >= [list $anchor - 4 char]]} {
        foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
        event generate $e <B1-Motion> -x $current_x -y $current_y
        set current [$e index [list $current - 1 char]]
        _pause 50
    }

    event generate $e <ButtonRelease-1> -x $current_x -y $current_y
    _pause 200

    # Save the position of the insert cursor
    lappend result [$e index insert]

    # Save the highlighted text
    lappend result [_get_selection $e]

} {{A Tcl/Tk selection test!} 1.6 1.18 {Tk selection} 1.2 {Tcl/Tk selection}}




test event-click-drag-1.2 { click and drag in an entry widget, this
                            tests tkEntryMouseSelect in entry.tcl } {
    destroy .t
    set t [toplevel .t]
    set e [entry $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e "A Tcl/Tk selection!"
    set anchor 6
    set selend 18

    set result [list]
    lappend result [$e get]

    # Get the x,y coords of the second T in "Tcl/Tk"
    foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break

    # Click down to set the insert cursor position
    event generate $e <Enter>
    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y

    # Save the position of the insert cursor
    lappend result [$e index insert]
    
    # Now drag until selend is highlighted, then click up

    set current $anchor
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124









































































































































































































125
126
127
128
129
130
131
132
133
134
135

136
137
138
139
    event generate $e <ButtonRelease-1> -x $current_x -y $current_y
    _pause 200

    # Save the position of the insert cursor
    lappend result [$e index insert]

    # Save the highlighted text
    lappend result [selection get]

    # Now click and click and drag to the left, over "Tcl/Tk selection"

    event generate $e <ButtonPress-1> -x $current_x -y $current_y

    while {$current >= ($anchor - 4)} {
        foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
        event generate $e <B1-Motion> -x $current_x -y $current_y
        incr current -1
        _pause 50
    }

    event generate $e <ButtonRelease-1> -x $current_x -y $current_y
    _pause 200

    # Save the position of the insert cursor
    lappend result [$e index insert]

    # Save the highlighted text
    lappend result [selection get]

} {{A Tcl/Tk selection!} 6 18 {Tk selection} 2 {Tcl/Tk selection}}












































































































































































































# cleanup

destroy .t

unset keypress_lookup
rename _init_keypress_lookup {}
rename _keypress_lookup {}
rename _keypress {}
rename _pause {}
rename _text_ind_to_x_y {}


::tcltest::cleanupTests
return








|



















|




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>











>




420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
    event generate $e <ButtonRelease-1> -x $current_x -y $current_y
    _pause 200

    # Save the position of the insert cursor
    lappend result [$e index insert]

    # Save the highlighted text
    lappend result [_get_selection $e]

    # Now click and click and drag to the left, over "Tcl/Tk selection"

    event generate $e <ButtonPress-1> -x $current_x -y $current_y

    while {$current >= ($anchor - 4)} {
        foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
        event generate $e <B1-Motion> -x $current_x -y $current_y
        incr current -1
        _pause 50
    }

    event generate $e <ButtonRelease-1> -x $current_x -y $current_y
    _pause 200

    # Save the position of the insert cursor
    lappend result [$e index insert]

    # Save the highlighted text
    lappend result [_get_selection $e]

} {{A Tcl/Tk selection!} 6 18 {Tk selection} 2 {Tcl/Tk selection}}



test event-double-click-drag-1.1 { click down, click up, click down again,
                            then drag in a text widget } {
    destroy .t
    set t [toplevel .t]
    set e [text $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e "Word select test"
    set anchor 1.8

    # Get the x,y coords of the second e in "select"
    foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break

    # Click down, release, then click down again
    event generate $e <Enter>
    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y
    _pause 50
    event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
    _pause 50
    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y
    _pause 50

    # Save the highlighted text
    set result [list]
    lappend result [_get_selection $e]

    # Insert cursor should be at end of "select"
    lappend result [$e index insert]

    # Move mouse one character to the left
    set current [$e index [list $anchor - 1 char]]
    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break

    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 50

    # Insert cursor should be before the l in "select"
    lappend result [$e index insert]

    # Selection should still be the word "select"
    lappend result [_get_selection $e]

    # Move mouse to the space before the word "select"
    set current [$e index [list $current - 3 char]]

    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 200

    lappend result [$e index insert]
    lappend result [_get_selection $e]

    # Move mouse to the r in "Word"
    set current 1.2
    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break

    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 50

    # Selection should now be "Word select"
    lappend result [_get_selection $e]

    # Insert cursor should be before the r in "Word"
    lappend result [$e index insert]

    set result
} {select 1.11 1.7 select 1.4 { select} {Word select} 1.2}



test event-double-click-drag-1.2 { click down, click up, click down again,
                            then drag in an entry widget } {
    destroy .t
    set t [toplevel .t]
    set e [entry $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e "Word select test"

    set anchor 8

    # Get the x,y coords of the second e in "select"
    foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break

    # Click down, release, then click down again
    event generate $e <Enter>
    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y
    _pause 50
    event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
    _pause 50
    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y
    _pause 50

    set result [list]
    lappend result [_get_selection $e]

    # Insert cursor should be at the end of "select"
    lappend result [$e index insert]

    # Move mouse one character to the left
    set current [expr {$anchor - 1}]
    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break

    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 50

    # Insert cursor should be before the l in "select"
    lappend result [$e index insert]

    # Selection should still be the word "select"
    lappend result [_get_selection $e]

    # Move mouse to the space before the word "select"
    set current [expr {$current - 3}]
    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break

    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 50

    lappend result [$e index insert]
    lappend result [_get_selection $e]

    # Move mouse to the r in "Word"
    set current [expr {$current - 2}]
    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break

    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 50

    # Selection should now be "Word select"
    lappend result [_get_selection $e]

    # Insert cursor should be before the r in "Word"
    lappend result [$e index insert]

    set result
} {select 11 7 select 4 { select} {Word select} 2}


test event-triple-click-drag-1.1 { Triple click and drag across lines in
        a text widget, this should extend the selection to the new line } {
    destroy .t
    set t [toplevel .t]
    set e [text $t.e]
    pack $e
    tkwait visibility $e
    focus -force $e
    _keypress_string $e "LINE ONE\nLINE TWO\nLINE THREE"

    set anchor 3.2

    # Triple click one third line leaving mouse down

    foreach {anchor_x anchor_y} [_text_ind_to_x_y $e $anchor] break

    event generate $e <Enter>

    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y
    _pause 50
    event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
    _pause 50

    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y
    _pause 50
    event generate $e <ButtonRelease-1> -x $anchor_x -y $anchor_y
    _pause 50

    event generate $e <ButtonPress-1> -x $anchor_x -y $anchor_y
    _pause 50

    set result [list]
    lappend result [_get_selection $e]

    # Drag up to second line

    set current [$e index [list $anchor - 1 line]]
    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break

    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 50

    lappend result [_get_selection $e]

    # Drag up to first line

    set current [$e index [list $current - 1 line]]
    foreach {current_x current_y} [_text_ind_to_x_y $e $current] break

    event generate $e <B1-Motion> -x $current_x -y $current_y
    _pause 50

    lappend result [_get_selection $e]

    set result

} [list "LINE THREE\n" "LINE TWO\nLINE THREE\n" \
        "LINE ONE\nLINE TWO\nLINE THREE\n"]


# cleanup

destroy .t

unset keypress_lookup
rename _init_keypress_lookup {}
rename _keypress_lookup {}
rename _keypress {}
rename _pause {}
rename _text_ind_to_x_y {}
rename _get_selection {}

::tcltest::cleanupTests
return

Changes to tests/filebox.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out Tk's "tk_getOpenFile" and
# "tk_getSaveFile" commands. It is organized in the standard fashion
# for Tcl tests.
#
# Copyright (c) 1996 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: filebox.test,v 1.11 2001/08/01 16:21:12 dgp Exp $
#

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

set tk_strictMotif_old $tk_strictMotif








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out Tk's "tk_getOpenFile" and
# "tk_getSaveFile" commands. It is organized in the standard fashion
# for Tcl tests.
#
# Copyright (c) 1996 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: filebox.test,v 1.11.2.1 2002/06/10 05:38:26 wolfsuit Exp $
#

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

set tk_strictMotif_old $tk_strictMotif
108
109
110
111
112
113
114



















115
116
117
118
119
120
121

122


123
124




125
126
127



128




















































129



130
































131

















132









133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
set unknownOptionsMsg(tk_getOpenFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -multiple, -parent, or -title}}
set unknownOptionsMsg(tk_getSaveFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -parent, or -title}}

set tmpFile "filebox.tmp"
makeFile {
    # this file can be empty!
} $tmpFile




















foreach mode $modes {

    #
    # Test both the motif version and the "tk" version of the file dialog
    # box on Unix.
    #




    if {$tcl_platform(platform) == "unix"} {
	set tk_strictMotif $mode




    }

    #



    # Test both the "open" and the "save" dialogs




















































    #




































    foreach command "tk_getOpenFile tk_getSaveFile" {

















	test filebox-1.1 "$command command" {









	    list [catch {$command -foo} msg] $msg
	} $unknownOptionsMsg($command)

	catch {$command -foo 1} msg
	regsub -all ,      $msg "" options
	regsub \"-foo\" $options "" options

	foreach option $options {
	    if {[string index $option 0] == "-"} {
		test filebox-1.2 "$command command" {
		    list [catch {$command $option} msg] $msg
		} [list 1 "value for \"$option\" missing"]
	    }
	}

	test filebox-1.3 "$command command" {
	    list [catch {$command -foo bar} msg] $msg
	} $unknownOptionsMsg($command)

	test filebox-1.4 "$command command" {
	    list [catch {$command -initialdir} msg] $msg
	} {1 {value for "-initialdir" missing}}

	test filebox-1.5 "$command command" {
	    list [catch {$command -parent foo.bar} msg] $msg
	} {1 {bad window path name "foo.bar"}}

	test filebox-1.6 "$command command" {
	    list [catch {$command -filetypes {Foo}} msg] $msg
	} {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}}

	if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} {
	    set isNative 1
	} else {
	    set isNative 0
	}

	set parent .

	set verylongstring longstring:
	set verylongstring $verylongstring$verylongstring
	set verylongstring $verylongstring$verylongstring
	set verylongstring $verylongstring$verylongstring
	set verylongstring $verylongstring$verylongstring
#	set verylongstring $verylongstring$verylongstring
#	set verylongstring $verylongstring$verylongstring
#	set verylongstring $verylongstring$verylongstring
#	set verylongstring $verylongstring$verylongstring
#	set verylongstring $verylongstring$verylongstring

	set color #404040
	test filebox-2.1 "$command command" {nonUnixUserInteraction} {
	    ToPressButton $parent cancel
	    $command -title "Press Cancel ($verylongstring)" -parent $parent
	} ""

	if {$command == "tk_getSaveFile"} {
	    set fileName "12x 455"
	    set fileDir [pwd]
	    set pathName [file join [pwd] $fileName]
	} else {
	    set fileName $tmpFile
	    set fileDir [pwd]
	    set pathName [file join $fileDir $fileName]
	}

	test filebox-2.2 "$command command" {nonUnixUserInteraction} {
	    ToPressButton $parent ok
	    set choice [$command -title "Press Ok" \
			    -parent $parent -initialfile $fileName -initialdir $fileDir]
	} $pathName

	test filebox-2.3 "$command command" {nonUnixUserInteraction} {
	    ToEnterFileByKey $parent $fileName $fileDir
	    set choice [$command -title "Enter \"$fileName\" and press Ok" \
			    -parent $parent -initialdir $fileDir]
	} $pathName

	test filebox-2.4 "$command command" {nonUnixUserInteraction} {
	    ToPressButton $parent ok
	    set choice [$command -title "Enter \"$fileName\" and press Ok" \
			    -parent $parent -initialdir . \
			    -initialfile $fileName]
	} $pathName

	test filebox-2.5 "$command command" {nonUnixUserInteraction} {
	    ToPressButton $parent ok
	    set choice [$command -title "Enter \"$fileName\" and press Ok" \
			    -parent $parent -initialdir /badpath \
			    -initialfile $fileName]
	} $pathName

	test filebox-2.6 "$command command" {nonUnixUserInteraction} {
	    toplevel .t1; toplevel .t2
	    wm geometry .t1 +0+0
	    wm geometry .t2 +0+0
	    ToPressButton .t1 ok
	    set choice {}
	    lappend choice [$command \
		    -title "Enter \"$fileName\" and press Ok" \
		    -parent .t1 -initialdir $fileDir \
		    -initialfile $fileName]
	    ToPressButton .t2 ok
	    lappend choice [$command \
		    -title "Enter \"$fileName\" and press Ok" \
		    -parent .t2 -initialdir $fileDir \
		    -initialfile $fileName]
	    ToPressButton .t1 ok
	    lappend choice [$command \
		    -title "Enter \"$fileName\" and press Ok" \
		    -parent .t1 -initialdir $fileDir \
		    -initialfile $fileName]
	    destroy .t1
	    destroy .t2
	    set choice
	} [list $pathName $pathName $pathName]
 


	set filters(1) {}

	set filters(2) {
	    {"Text files"	{.txt .doc}	}
	    {"Text files"	{}		TEXT}
	    {"Tcl Scripts"	{.tcl}		TEXT}
	    {"C Source Files"	{.c .h}		}
	    {"All Source Files"	{.tcl .c .h}	}
	    {"Image Files"	{.gif}		}
	    {"Image Files"	{.jpeg .jpg}	}
	    {"Image Files"	""		{GIFF JPEG}}
	    {"All files"	*}
	}

	set filters(3) {
	    {"Text files"	{.txt .doc}	TEXT}
	    {"Foo"		{""}		TEXT}
	}

	foreach x [lsort -integer [array names filters]] {
	    test filebox-3.$x "$command command" {nonUnixUserInteraction} {
		ToPressButton $parent ok
		set choice [$command -title "Press Ok" -filetypes $filters($x)\
				-parent $parent -initialfile $fileName -initialdir $fileDir]
	    } $pathName
	}

	# The rest of the tests need to be executed on Unix only.
	# The test whether the dialog box widgets were implemented correctly.
	# These tests are not
	# needed on the other platforms because they use native file dialogs.

	# end inner if
    }

    # end outer if
}

set tk_strictMotif $tk_strictMotif_old

# cleanup
::tcltest::cleanupTests
return







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







>
|
>
>


>
>
>
>
|
|
|
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
|
|

|
|
|

|
|
|
|
|
|
|

|
|
|

|
|
|

|
|
|

|
|
|

|
|
|
|
|

|

|
|
|
|
|
|
|
|
|
|

|
|
|
|
|

<
|
|
|
<
<
<
<
|
<
|
|
|
|
|

|
|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|
|
|
|
|
|

|
|
|
|
<
<
<
<
<







108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330

331
332
333




334

335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385





















386
387
388
389
390
391
392
393
394
395
396
397





398
399
400
401
402
403
404
set unknownOptionsMsg(tk_getOpenFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -multiple, -parent, or -title}}
set unknownOptionsMsg(tk_getSaveFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -parent, or -title}}

set tmpFile "filebox.tmp"
makeFile {
    # this file can be empty!
} $tmpFile

array set filters {
    1 {}
    2 {
	{"Text files"		{.txt .doc}	}
	{"Text files"		{}		TEXT}
	{"Tcl Scripts"		{.tcl}		TEXT}
	{"C Source Files"	{.c .h}		}
	{"All Source Files"	{.tcl .c .h}	}
	{"Image Files"		{.gif}		}
	{"Image Files"		{.jpeg .jpg}	}
	{"Image Files"		""		{GIFF JPEG}}
	{"All files"		*}
    }
    3 {
	{"Text files"		{.txt .doc}	TEXT}
	{"Foo"			{""}		TEXT}
    }
}

foreach mode $modes {

    #
    # Test both the motif version and the "tk" version of the file dialog
    # box on Unix.
    #
    # Note that this can use the same test number twice!
    #

    set addedExtensions {}
    if {$tcl_platform(platform) == "unix"} {
	set tk_strictMotif $mode
	# Extension adding is only done when using the non-motif file
	# box with an extension-less filename
	if {!$mode} {
	    set addedExtensions {NONE {} .txt .txt}
	}
    }

    test filebox-1.1 "tk_getOpenFile command" {
	list [catch {tk_getOpenFile -foo} msg] $msg
    } $unknownOptionsMsg(tk_getOpenFile)

    catch {tk_getOpenFile -foo 1} msg
    regsub -all ,      $msg "" options
    regsub \"-foo\" $options "" options
    
    foreach option $options {
        if {[string index $option 0] == "-"} {
    	test filebox-1.2 "tk_getOpenFile command" {
    	    list [catch {tk_getOpenFile $option} msg] $msg
    	} [list 1 "value for \"$option\" missing"]
        }
    }
    
    test filebox-1.3 "tk_getOpenFile command" {
        list [catch {tk_getOpenFile -foo bar} msg] $msg
    } $unknownOptionsMsg(tk_getOpenFile)
    
    test filebox-1.4 "tk_getOpenFile command" {
        list [catch {tk_getOpenFile -initialdir} msg] $msg
    } {1 {value for "-initialdir" missing}}
    
    test filebox-1.5 "tk_getOpenFile command" {
        list [catch {tk_getOpenFile -parent foo.bar} msg] $msg
    } {1 {bad window path name "foo.bar"}}
    
    test filebox-1.6 "tk_getOpenFile command" {
        list [catch {tk_getOpenFile -filetypes {Foo}} msg] $msg
    } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}}
    
    if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} {
        set isNative 1
    } else {
        set isNative 0
    }
    
    set parent .
    
    set verylongstring longstring:
    set verylongstring $verylongstring$verylongstring
    set verylongstring $verylongstring$verylongstring
    set verylongstring $verylongstring$verylongstring
    set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring

    set color #404040
    test filebox-2.1 "tk_getOpenFile command" {nonUnixUserInteraction} {
        ToPressButton $parent cancel
        tk_getOpenFile -title "Press Cancel ($verylongstring)" -parent $parent
    } ""
    
    set fileName $tmpFile
    set fileDir [pwd]
    set pathName [file join $fileDir $fileName]
    
    test filebox-2.2 "tk_getOpenFile command" {nonUnixUserInteraction} {
        ToPressButton $parent ok
        set choice [tk_getOpenFile -title "Press Ok" \
    		    -parent $parent -initialfile $fileName -initialdir $fileDir]
    } $pathName
    
    test filebox-2.3 "tk_getOpenFile command" {nonUnixUserInteraction} {
        ToEnterFileByKey $parent $fileName $fileDir
        set choice [tk_getOpenFile -title "Enter \"$fileName\" and press Ok" \
    		    -parent $parent -initialdir $fileDir]
    } $pathName
    
    test filebox-2.4 "tk_getOpenFile command" {nonUnixUserInteraction} {
        ToPressButton $parent ok
        set choice [tk_getOpenFile -title "Enter \"$fileName\" and press Ok" \
    		    -parent $parent -initialdir . \
    		    -initialfile $fileName]
    } $pathName
    
    test filebox-2.5 "tk_getOpenFile command" {nonUnixUserInteraction} {
        ToPressButton $parent ok
        set choice [tk_getOpenFile -title "Enter \"$fileName\" and press Ok" \
    		    -parent $parent -initialdir /badpath \
    		    -initialfile $fileName]
    } $pathName
    
    test filebox-2.6 "tk_getOpenFile command" {nonUnixUserInteraction} {
        toplevel .t1; toplevel .t2
        wm geometry .t1 +0+0
        wm geometry .t2 +0+0
        ToPressButton .t1 ok
        set choice {}
        lappend choice [tk_getOpenFile \
    	    -title "Enter \"$fileName\" and press Ok" \
    	    -parent .t1 -initialdir $fileDir \
    	    -initialfile $fileName]
        ToPressButton .t2 ok
        lappend choice [tk_getOpenFile \
    	    -title "Enter \"$fileName\" and press Ok" \
    	    -parent .t2 -initialdir $fileDir \
    	    -initialfile $fileName]
        ToPressButton .t1 ok
        lappend choice [tk_getOpenFile \
    	    -title "Enter \"$fileName\" and press Ok" \
    	    -parent .t1 -initialdir $fileDir \
    	    -initialfile $fileName]
        destroy .t1
        destroy .t2
        set choice
    } [list $pathName $pathName $pathName]

    foreach x [lsort -integer [array names filters]] {
        test filebox-3.$x "tk_getOpenFile command" {nonUnixUserInteraction} {
    	ToPressButton $parent ok
    	set choice [tk_getOpenFile -title "Press Ok" -filetypes $filters($x)\
    			-parent $parent -initialfile $fileName -initialdir $fileDir]
        } $pathName
    }

    test filebox-4.1 "tk_getSaveFile command" {
	list [catch {tk_getSaveFile -foo} msg] $msg
    } $unknownOptionsMsg(tk_getSaveFile)

    catch {tk_getSaveFile -foo 1} msg
    regsub -all ,      $msg "" options
    regsub \"-foo\" $options "" options

    foreach option $options {
	if {[string index $option 0] == "-"} {
	    test filebox-4.2 "tk_getSaveFile command" {
		list [catch {tk_getSaveFile $option} msg] $msg
	    } [list 1 "value for \"$option\" missing"]
	}
    }

    test filebox-4.3 "tk_getSaveFile command" {
	list [catch {tk_getSaveFile -foo bar} msg] $msg
    } $unknownOptionsMsg(tk_getSaveFile)

    test filebox-4.4 "tk_getSaveFile command" {
	list [catch {tk_getSaveFile -initialdir} msg] $msg
    } {1 {value for "-initialdir" missing}}

    test filebox-4.5 "tk_getSaveFile command" {
	list [catch {tk_getSaveFile -parent foo.bar} msg] $msg
    } {1 {bad window path name "foo.bar"}}

    test filebox-4.6 "tk_getSaveFile command" {
	list [catch {tk_getSaveFile -filetypes {Foo}} msg] $msg
    } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}}

    if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} {
	set isNative 1
    } else {
	set isNative 0
    }

    set parent .

    set verylongstring longstring:
    set verylongstring $verylongstring$verylongstring
    set verylongstring $verylongstring$verylongstring
    set verylongstring $verylongstring$verylongstring
    set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring
    # set verylongstring $verylongstring$verylongstring

    set color #404040
    test filebox-5.1 "tk_getSaveFile command" {nonUnixUserInteraction} {
	ToPressButton $parent cancel
	tk_getSaveFile -title "Press Cancel ($verylongstring)" -parent $parent
    } ""


    set fileName "12x 455"
    set fileDir [pwd]
    set pathName [file join [pwd] $fileName]






    test filebox-5.2 "tk_getSaveFile command" {nonUnixUserInteraction} {
	ToPressButton $parent ok
	set choice [tk_getSaveFile -title "Press Ok" \
		-parent $parent -initialfile $fileName -initialdir $fileDir]
    } $pathName

    test filebox-5.3 "tk_getSaveFile command" {nonUnixUserInteraction} {
	ToEnterFileByKey $parent $fileName $fileDir
	set choice [tk_getSaveFile -title "Enter \"$fileName\" and press Ok" \
		-parent $parent -initialdir $fileDir]
    } $pathName

    test filebox-5.4 "tk_getSaveFile command" {nonUnixUserInteraction} {
	ToPressButton $parent ok
	set choice [tk_getSaveFile -title "Enter \"$fileName\" and press Ok" \
		-parent $parent -initialdir . \
		-initialfile $fileName]
    } $pathName

    test filebox-5.5 "tk_getSaveFile command" {nonUnixUserInteraction} {
	ToPressButton $parent ok
	set choice [tk_getSaveFile -title "Enter \"$fileName\" and press Ok" \
		-parent $parent -initialdir /badpath \
		-initialfile $fileName]
    } $pathName

    test filebox-5.6 "tk_getSaveFile command" {nonUnixUserInteraction} {
	toplevel .t1; toplevel .t2
	wm geometry .t1 +0+0
	wm geometry .t2 +0+0
	ToPressButton .t1 ok
	set choice {}
	lappend choice [tk_getSaveFile \
		-title "Enter \"$fileName\" and press Ok" \
		-parent .t1 -initialdir $fileDir \
		-initialfile $fileName]
	ToPressButton .t2 ok
	lappend choice [tk_getSaveFile \
		-title "Enter \"$fileName\" and press Ok" \
		-parent .t2 -initialdir $fileDir \
		-initialfile $fileName]
	ToPressButton .t1 ok
	lappend choice [tk_getSaveFile \
		-title "Enter \"$fileName\" and press Ok" \
		-parent .t1 -initialdir $fileDir \
		-initialfile $fileName]
	destroy .t1
	destroy .t2
	set choice
    } [list $pathName $pathName $pathName]






















    foreach x [lsort -integer [array names filters]] {
	test filebox-6.$x "tk_getSaveFile command" {nonUnixUserInteraction} {
	    ToPressButton $parent ok
	    set choice [tk_getSaveFile -title "Press Ok" -filetypes $filters($x)\
		    -parent $parent -initialfile $fileName -initialdir $fileDir]
	} $pathName[lindex $addedExtensions $x]
    }

    # The rest of the tests need to be executed on Unix only.
    # The test whether the dialog box widgets were implemented correctly.
    # These tests are not
    # needed on the other platforms because they use native file dialogs.





}

set tk_strictMotif $tk_strictMotif_old

# cleanup
::tcltest::cleanupTests
return
Changes to tests/focus.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the "focus" command and the
# other procedures in the file tkFocus.c.  It is organized in the
# standard fashion for Tcl tests.
#
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: focus.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

eval destroy [winfo children .]
wm geometry . {}








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the "focus" command and the
# other procedures in the file tkFocus.c.  It is organized in the
# standard fashion for Tcl tests.
#
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: focus.test,v 1.7.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

eval destroy [winfo children .]
wm geometry . {}
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
    pack .t.f1 .t.f2
    entry .t.f2.e1 -bg red
    pack .t.f2.e1
    bind all <FocusIn> {lappend x "focus in %W %d"}
    bind all <FocusOut> {lappend x "focus out %W %d"}
    interp create child
    child eval "set argv {-use [winfo id .t.f1]}"
    load {} tk child
    child eval {
	entry .e1 -bg lightBlue
	pack .e1
	bind all <FocusIn> {lappend x "focus in %W %d"}
	bind all <FocusOut> {lappend x "focus out %W %d"}
	set x {}
    }







|







568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
    pack .t.f1 .t.f2
    entry .t.f2.e1 -bg red
    pack .t.f2.e1
    bind all <FocusIn> {lappend x "focus in %W %d"}
    bind all <FocusOut> {lappend x "focus out %W %d"}
    interp create child
    child eval "set argv {-use [winfo id .t.f1]}"
    load {} Tk child
    child eval {
	entry .e1 -bg lightBlue
	pack .e1
	bind all <FocusIn> {lappend x "focus in %W %d"}
	bind all <FocusOut> {lappend x "focus out %W %d"}
	set x {}
    }
Changes to tests/listbox.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the "listbox" command
# of Tk.  It is organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1993-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: listbox.test,v 1.16.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the "listbox" command
# of Tk.  It is organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1993-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: listbox.test,v 1.16.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

foreach i [winfo children .] {
    destroy $i
936
937
938
939
940
941
942
943
944
945
946
947








948
949
950
951
952
953
954
    .l configure -listvar {}
    .l get 0 end
} [list a b c d]
test listbox-4.18 {ConfigureListbox, no listvar -> bad listvar} {
    catch {destroy .l}
    listbox .l
    .l insert end a b c d
    set x {this is a " bad list}
    catch {.l configure -listvar x} result
    list [.l get 0 end] [.l cget -listvar] $result
} [list [list a b c d] {} \
	"unmatched open quote in list: invalid listvar value"]









# No tests for DisplayListbox:  I don't know how to test this procedure.

test listbox-5.1 {ListboxComputeGeometry procedure} {fonts} {
    catch {destroy .l}
    listbox .l -font $fixed -width 15 -height 20
    pack .l







|



|
>
>
>
>
>
>
>
>







936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
    .l configure -listvar {}
    .l get 0 end
} [list a b c d]
test listbox-4.18 {ConfigureListbox, no listvar -> bad listvar} {
    catch {destroy .l}
    listbox .l
    .l insert end a b c d
    set x "this is a \" bad list"
    catch {.l configure -listvar x} result
    list [.l get 0 end] [.l cget -listvar] $result
} [list [list a b c d] {} \
	"unmatched open quote in list: invalid -listvariable value"]
test listbox-4.19 {ConfigureListbox, no listvar -> bad non-existent listvar} {
    catch {destroy .l}
    listbox .l -listvar foo
    .l insert end a b c d
    catch {.l configure -listvar ::zoo::bar::foo} result
    list [.l get 0 end] [.l cget -listvar] $foo $result
} [list [list a b c d] foo [list a b c d] \
	{can't set "::zoo::bar::foo": parent namespace doesn't exist}]

# No tests for DisplayListbox:  I don't know how to test this procedure.

test listbox-5.1 {ListboxComputeGeometry procedure} {fonts} {
    catch {destroy .l}
    listbox .l -font $fixed -width 15 -height 20
    pack .l
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
    set log
} [list {x 0 1} {x 0 1} {x 0 0.5} {x 0 1}]
test listbox-21.11 {ListboxListVarProc, bad list} {
    catch {destroy .l}
    catch {unset x}
    listbox .l -listvar x
    set x [list a b c d]
    catch {set x {this is a " bad list}} result
    set result
} {can't set "x": invalid listvar value}
test listbox-21.12 {ListboxListVarProc, cleanup item attributes} {
    catch {destroy .l}
    set x [list a b c d e f g]
    listbox .l -listvar x
    .l itemconfigure end -fg red







|







1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
    set log
} [list {x 0 1} {x 0 1} {x 0 0.5} {x 0 1}]
test listbox-21.11 {ListboxListVarProc, bad list} {
    catch {destroy .l}
    catch {unset x}
    listbox .l -listvar x
    set x [list a b c d]
    catch {set x "this is a \" bad list"} result
    set result
} {can't set "x": invalid listvar value}
test listbox-21.12 {ListboxListVarProc, cleanup item attributes} {
    catch {destroy .l}
    set x [list a b c d e f g]
    listbox .l -listvar x
    .l itemconfigure end -fg red
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104

2105




2106

2107
2108
2109
2110
2111
2112
    listbox .l
    .l insert end a b c
    .l activate 0
    .l configure -state disabled
    .l activate 2
    .l index active
} 0

resetGridInfo
catch {destroy .l2}

catch {destroy .t}




catch {destroy .e}

catch {destroy .partial}
option clear

# cleanup
::tcltest::cleanupTests
return








|
|
>
|
>
>
>
>
|
>
|





2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
    listbox .l
    .l insert end a b c
    .l activate 0
    .l configure -state disabled
    .l activate 2
    .l index active
} 0

test listbox-27.1 {widget deletion while active} {
    destroy .l
    pack [listbox .l]
    update
    .l configure -cursor xterm -xscrollcommand { destroy .l }
    update idle
    winfo exists .l
} 0

resetGridInfo
eval destroy [winfo children .]
option clear

# cleanup
::tcltest::cleanupTests
return
Changes to tests/macEmbed.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the procedures in the file 
# tkMacEmbed.c.  It is organized in the standard fashion for Tcl
# tests.
#
# Copyright (c) 1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: macEmbed.test,v 1.5.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

eval destroy [winfo children .]
wm geometry . {}








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the procedures in the file 
# tkMacEmbed.c.  It is organized in the standard fashion for Tcl
# tests.
#
# Copyright (c) 1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: macEmbed.test,v 1.5.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

eval destroy [winfo children .]
wm geometry . {}
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
	catch {destroy $w}
    }
    frame .f1 -container 1 -width 200 -height 50
    frame .f2 -width 200 -height 50
    pack .f1 .f2
    interp create child
    child eval "set argv {-use [winfo id .f1]}"
    load {} tk child
    child eval {
	. configure -bd 2 -highlightthickness 2 -relief sunken
    }
    focus -force .f2
    update
    list [child eval {
	focus .







|







212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
	catch {destroy $w}
    }
    frame .f1 -container 1 -width 200 -height 50
    frame .f2 -width 200 -height 50
    pack .f1 .f2
    interp create child
    child eval "set argv {-use [winfo id .f1]}"
    load {} Tk child
    child eval {
	. configure -bd 2 -highlightthickness 2 -relief sunken
    }
    focus -force .f2
    update
    list [child eval {
	focus .
Changes to tests/macMenu.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This file is a Tcl script to test menus in Tk.  It is
# organized in the standard fashion for Tcl tests. This
# file tests the Macintosh-specific features of the menu
# system.
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: macMenu.test,v 1.6.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

set ::tcltest::testConfig(testimage) \
	[expr {[lsearch [image types] test] >= 0}]









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This file is a Tcl script to test menus in Tk.  It is
# organized in the standard fashion for Tcl tests. This
# file tests the Macintosh-specific features of the menu
# system.
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: macMenu.test,v 1.6.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

set ::tcltest::testConfig(testimage) \
	[expr {[lsearch [image types] test] >= 0}]
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
    raise .
    list [catch {update} msg] $msg
} {0 {}}
test macMenu-21.3 {TkpSetMainMenubar - different interps} {macOnly} {
    catch {destroy .m1}
    catch {interp delete testinterp}
    interp create testinterp
    load {} tk testinterp
    menu .m1
    . configure -menu .m1
    raise .
    update
    interp eval testinterp {menu .m1}
    interp eval testinterp {. configure -menu .m1}
    interp eval testinterp {raise .}







|







837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
    raise .
    list [catch {update} msg] $msg
} {0 {}}
test macMenu-21.3 {TkpSetMainMenubar - different interps} {macOnly} {
    catch {destroy .m1}
    catch {interp delete testinterp}
    interp create testinterp
    load {} Tk testinterp
    menu .m1
    . configure -menu .m1
    raise .
    update
    interp eval testinterp {menu .m1}
    interp eval testinterp {. configure -menu .m1}
    interp eval testinterp {raise .}
Changes to tests/menu.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# This file is a Tcl script to test menus in Tk.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: menu.test,v 1.9.2.2 2002/02/05 02:25:17 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

if {[lsearch [image types] test] < 0} {
    puts "This application hasn't been compiled with the \"test\" image"







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# This file is a Tcl script to test menus in Tk.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: menu.test,v 1.9.2.3 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

if {[lsearch [image types] test] < 0} {
    puts "This application hasn't been compiled with the \"test\" image"
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
    interp eval testinterp {menu .m1}
    list [catch {interp delete testinterp} msg] $msg
} {0 {}}

test menu-27.1 {GetMenuHashTable} {
    catch {interp destroy testinterp}
    interp create testinterp
    load {} tk testinterp
    list [catch {interp eval testinterp {menu .m1}} msg] $msg [interp delete testinterp]
} {0 .m1 {}}

test menu-28.1 {TkCreateMenuReferences - not there before} {
    catch {destroy .m1}
    list [catch {menu .m1} msg] $msg [destroy .m1]
} {0 .m1 {}}







|







2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
    interp eval testinterp {menu .m1}
    list [catch {interp delete testinterp} msg] $msg
} {0 {}}

test menu-27.1 {GetMenuHashTable} {
    catch {interp destroy testinterp}
    interp create testinterp
    load {} Tk testinterp
    list [catch {interp eval testinterp {menu .m1}} msg] $msg [interp delete testinterp]
} {0 .m1 {}}

test menu-28.1 {TkCreateMenuReferences - not there before} {
    catch {destroy .m1}
    list [catch {menu .m1} msg] $msg [destroy .m1]
} {0 .m1 {}}
Changes to tests/panedwindow.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test entry widgets in Tk.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: panedwindow.test,v 1.1.4.1 2002/06/10 05:08:00 wolfsuit Exp $

if {[info tclversion] < 8.4} {
    puts "panedwindow requires Tk 8.4"
    exit
}

if {[lsearch [namespace children] ::tcltest] == -1} {








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test entry widgets in Tk.  It is
# organized in the standard fashion for Tcl tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: panedwindow.test,v 1.1.4.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[info tclversion] < 8.4} {
    puts "panedwindow requires Tk 8.4"
    exit
}

if {[lsearch [namespace children] ::tcltest] == -1} {
Changes to tests/safe.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14




















15
16
17
18
19
20
21
# This file is a Tcl script to test the Safe Tk facility. It is organized
# in the standard fashion for Tk tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: safe.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}





















foreach i [winfo children .] {
    destroy $i
}

# The set of hidden commands is platform dependent:

if {"$tcl_platform(platform)" == "macintosh"} {








|





>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# This file is a Tcl script to test the Safe Tk facility. It is organized
# in the standard fashion for Tk tests.
#
# Copyright (c) 1994 The Regents of the University of California.
# Copyright (c) 1994-1995 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: safe.test,v 1.7.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

## NOTE: Any time tests fail here with an error like:

# Can't find a usable tk.tcl in the following directories:
#     {$p(:26:)}
# 
# $p(:26:)/tk.tcl: script error
# script error
#     invoked from within
# "source {$p(:26:)/tk.tcl}"
#     ("uplevel" body line 1)
#     invoked from within
# "uplevel #0 [list source $file]"
# 
# 
# This probably means that tk wasn't installed properly.

## it indicates that something went wrong sourcing tk.tcl.
## Ensure that any changes that occured to tk.tcl will work or
## are properly prevented in a safe interpreter.  -- hobbs

foreach i [winfo children .] {
    destroy $i
}

# The set of hidden commands is platform dependent:

if {"$tcl_platform(platform)" == "macintosh"} {
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
    set r
} 0

# cleanup
unset hidden_cmds
::tcltest::cleanupTests
return




















<
<
<
<
<
<
<
<
<
<
<
<
<
192
193
194
195
196
197
198













    set r
} 0

# cleanup
unset hidden_cmds
::tcltest::cleanupTests
return













Changes to tests/unixEmbed.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the procedures in the file 
# tkUnixEmbed.c.  It is organized in the standard fashion for Tcl
# tests.
#
# Copyright (c) 1996-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: unixEmbed.test,v 1.8.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

if {$tcl_platform(platform) != "unix"} {
    puts "skipping: Unix only tests..."








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# This file is a Tcl script to test out the procedures in the file 
# tkUnixEmbed.c.  It is organized in the standard fashion for Tcl
# tests.
#
# Copyright (c) 1996-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: unixEmbed.test,v 1.8.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

if {$tcl_platform(platform) != "unix"} {
    puts "skipping: Unix only tests..."
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
	catch {destroy $w}
    }
    frame .f1 -container 1 -width 200 -height 50
    frame .f2 -width 200 -height 50
    pack .f1 .f2
    interp create child
    child eval "set argv {-use [winfo id .f1]}"
    load {} tk child
    child eval {
	. configure -bd 2 -highlightthickness 2 -relief sunken
    }
    focus -force .f2
    update
    list [child eval {
	focus .







|







546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
	catch {destroy $w}
    }
    frame .f1 -container 1 -width 200 -height 50
    frame .f2 -width 200 -height 50
    pack .f1 .f2
    interp create child
    child eval "set argv {-use [winfo id .f1]}"
    load {} Tk child
    child eval {
	. configure -bd 2 -highlightthickness 2 -relief sunken
    }
    focus -force .f2
    update
    list [child eval {
	focus .
Changes to tests/unixWm.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This file is a Tcl script to test out Tk's interactions with
# the window manager, including the "wm" command.  It is organized
# in the standard fashion for Tcl tests.
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: unixWm.test,v 1.13.2.2 2002/02/05 02:25:18 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

if {$tcl_platform(platform) != "unix"} {
    puts "skipping: Unix only tests..."









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This file is a Tcl script to test out Tk's interactions with
# the window manager, including the "wm" command.  It is organized
# in the standard fashion for Tcl tests.
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: unixWm.test,v 1.13.2.3 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

if {$tcl_platform(platform) != "unix"} {
    puts "skipping: Unix only tests..."
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
    lappend result [wm title .t] [testprop [testwrapper .t] WM_NAME]
    wm title .t "Test window"
    set bit [format 0x%x [expr 0xa & [lindex [testprop [testwrapper .t] \
	    WM_NORMAL_HINTS] 0]]]
    lappend result [wm title .t] [testprop [testwrapper .t] WM_NAME]
} {t t {Test window} {Test window}}

test unixWm-37.1 {Tk_WmCmd procedure, "transient" option} {
    list [catch {wm transient .t 1 2} msg]  $msg
} {1 {wrong # arguments: must be "wm transient window ?master?"}}
test unixWm-37.2 {Tk_WmCmd procedure, "transient" option} {
    list [catch {wm transient .t foo} msg]  $msg
} {1 {bad window path name "foo"}}
test unixWm-37.3 {Tk_WmCmd procedure, "transient" option} {unixOnly} {
    set result {}
    catch {destroy .t2}
    toplevel .t2 -width 120 -height 300
    wm geometry .t2 +0+0
    update
    lappend result [wm transient .t2] \







<
<
<
<
<
<







1258
1259
1260
1261
1262
1263
1264






1265
1266
1267
1268
1269
1270
1271
    lappend result [wm title .t] [testprop [testwrapper .t] WM_NAME]
    wm title .t "Test window"
    set bit [format 0x%x [expr 0xa & [lindex [testprop [testwrapper .t] \
	    WM_NORMAL_HINTS] 0]]]
    lappend result [wm title .t] [testprop [testwrapper .t] WM_NAME]
} {t t {Test window} {Test window}}







test unixWm-37.3 {Tk_WmCmd procedure, "transient" option} {unixOnly} {
    set result {}
    catch {destroy .t2}
    toplevel .t2 -width 120 -height 300
    wm geometry .t2 +0+0
    update
    lappend result [wm transient .t2] \
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
test unixWm-50.4 {Tk_CoordsToWindow procedure, window in other application} {
    catch {destroy .t}
    catch {interp delete slave}
    toplevel .t -width 200 -height 200 -bg green
    wm geometry .t +0+0
    tkwait visibility .t
    interp create slave
    load {} tk slave
    slave eval {wm geometry . 200x200+0+0; tkwait visibility .}
    set result [list [winfo containing 100 100] \
	    [slave eval {winfo containing 100 100}]]
    interp delete slave
    set result
} {{} .}
test unixWm-50.5 {Tk_CoordsToWindow procedure, handling menubars} {unixOnly} {







|







1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
test unixWm-50.4 {Tk_CoordsToWindow procedure, window in other application} {
    catch {destroy .t}
    catch {interp delete slave}
    toplevel .t -width 200 -height 200 -bg green
    wm geometry .t +0+0
    tkwait visibility .t
    interp create slave
    load {} Tk slave
    slave eval {wm geometry . 200x200+0+0; tkwait visibility .}
    set result [list [winfo containing 100 100] \
	    [slave eval {winfo containing 100 100}]]
    interp delete slave
    set result
} {{} .}
test unixWm-50.5 {Tk_CoordsToWindow procedure, handling menubars} {unixOnly} {
Changes to tests/winClipboard.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33


34
35
36
37
38
39


40
41
42
43
44


45
46
47
48
49


50
51
52
53
54
55
56
57


58
59
60
61
62
63

64

65
66
67
68
69
# This file is a Tcl script to test out Tk's Windows specific
# clipboard code.  It is organized in the standard fashion for Tcl
# tests.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 1997 by Sun Microsystems, Inc.
# Copyright (c) 1998-2000 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: winClipboard.test,v 1.9.2.1 2001/10/15 09:22:00 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

# Note that these tests may fail if another application is grabbing the
# clipboard (e.g. an X server)

set ::tcltest::testConfig(testclipboard) \
	[llength [info commands testclipboard]]

test winClipboard-1.1 {TkSelGetSelection} {pcOnly} {
    clipboard clear
    catch {selection get -selection CLIPBOARD} msg
    set msg
} {CLIPBOARD selection doesn't exist or form "STRING" not defined}
test winClipboard-1.2 {TkSelGetSelection} {pcOnly testclipboard} {
    clipboard clear
    clipboard append {}
    list [selection get -selection CLIPBOARD] [testclipboard]


} {{} {}}
test winClipboard-1.3 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} {
    clipboard clear
    clipboard append abcd
    update
    list [selection get -selection CLIPBOARD] [testclipboard]


} {abcd abcd}
test winClipboard-1.4 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} {
    clipboard clear
    clipboard append "line 1\nline 2"
    list [selection get -selection CLIPBOARD] [testclipboard]


} [list "line 1\nline 2" "line 1\r\nline 2"]
test winClipboard-1.5 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} {
    clipboard clear
    clipboard append "line 1\u00c7\nline 2"
    list [selection get -selection CLIPBOARD] [testclipboard]


} [list "line 1\u00c7\nline 2" [bytestring "line 1\u00c7\r\nline 2"]]

test winClipboard-2.1 {TkSelUpdateClipboard reentrancy problem} {pcOnly testclipboard} {
    clipboard clear
    clipboard append -type OUR_ACTION "action data"
    clipboard append "string data"
    update
    list [selection get -selection CLIPBOARD -type OUR_ACTION] [testclipboard]


} [list "action data" "string data"]
test winClipboard-2.2 {TkSelUpdateClipboard reentrancy problem} {pcOnly testclipboard} {
    clipboard clear
    clipboard append -type OUR_ACTION "new data"
    clipboard append "more data in string"
    update

    list [testclipboard] [selection get -selection CLIPBOARD -type OUR_ACTION]

} [list "more data in string" "new data"]

# cleanup
::tcltest::cleanupTests
return












|



















|
>
>





|
>
>




|
>
>




|
>
>







|
>
>






>
|
>





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# This file is a Tcl script to test out Tk's Windows specific
# clipboard code.  It is organized in the standard fashion for Tcl
# tests.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 1997 by Sun Microsystems, Inc.
# Copyright (c) 1998-2000 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: winClipboard.test,v 1.9.2.2 2002/06/10 05:38:26 wolfsuit Exp $

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

# Note that these tests may fail if another application is grabbing the
# clipboard (e.g. an X server)

set ::tcltest::testConfig(testclipboard) \
	[llength [info commands testclipboard]]

test winClipboard-1.1 {TkSelGetSelection} {pcOnly} {
    clipboard clear
    catch {selection get -selection CLIPBOARD} msg
    set msg
} {CLIPBOARD selection doesn't exist or form "STRING" not defined}
test winClipboard-1.2 {TkSelGetSelection} {pcOnly testclipboard} {
    clipboard clear
    clipboard append {}
    catch {selection get -selection CLIPBOARD} r1
    catch {testclipboard} r2
    list $r1 $r2
} {{} {}}
test winClipboard-1.3 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} {
    clipboard clear
    clipboard append abcd
    update
    catch {selection get -selection CLIPBOARD} r1
    catch {testclipboard} r2
    list $r1 $r2
} {abcd abcd}
test winClipboard-1.4 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} {
    clipboard clear
    clipboard append "line 1\nline 2"
    catch {selection get -selection CLIPBOARD} r1
    catch {testclipboard} r2
    list $r1 $r2
} [list "line 1\nline 2" "line 1\r\nline 2"]
test winClipboard-1.5 {TkSelGetSelection & TkWinClipboardRender} {pcOnly testclipboard} {
    clipboard clear
    clipboard append "line 1\u00c7\nline 2"
    catch {selection get -selection CLIPBOARD} r1
    catch {testclipboard} r2
    list $r1 $r2
} [list "line 1\u00c7\nline 2" [bytestring "line 1\u00c7\r\nline 2"]]

test winClipboard-2.1 {TkSelUpdateClipboard reentrancy problem} {pcOnly testclipboard} {
    clipboard clear
    clipboard append -type OUR_ACTION "action data"
    clipboard append "string data"
    update
    catch {selection get -selection CLIPBOARD -type OUR_ACTION} r1
    catch {testclipboard} r2
    list $r1 $r2
} [list "action data" "string data"]
test winClipboard-2.2 {TkSelUpdateClipboard reentrancy problem} {pcOnly testclipboard} {
    clipboard clear
    clipboard append -type OUR_ACTION "new data"
    clipboard append "more data in string"
    update
    catch {testclipboard} r1
    catch {selection get -selection CLIPBOARD -type OUR_ACTION} r2
    list $r1 $r2
} [list "more data in string" "new data"]

# cleanup
::tcltest::cleanupTests
return
Changes to tests/winDialog.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# This file is a Tcl script to test the Windows specific behavior of
# the common dialog boxes.  It is organized in the standard
# fashion for Tcl tests.
#
# Copyright (c) 1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# Copyright (c) 1998-1999 ActiveState Corporation.
#
<<<<<<< winDialog.test
# RCS: @(#) $Id: winDialog.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $
=======
# RCS: @(#) $Id: winDialog.test,v 1.7.2.1 2001/10/15 09:22:00 wolfsuit Exp $
>>>>>>> 1.7

if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

set ::tcltest::testConfig(testwinevent) \
	[llength [info commands testwinevent]]








<
|
<
<
<







1
2
3
4
5
6
7
8

9



10
11
12
13
14
15
16
# This file is a Tcl script to test the Windows specific behavior of
# the common dialog boxes.  It is organized in the standard
# fashion for Tcl tests.
#
# Copyright (c) 1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# Copyright (c) 1998-1999 ActiveState Corporation.
#

# RCS: @(#) $Id: winDialog.test,v 1.7.2.2 2002/06/10 05:38:26 wolfsuit Exp $




if {[lsearch [namespace children] ::tcltest] == -1} {
    source [file join [pwd] [file dirname [info script]] defs.tcl]
}

set ::tcltest::testConfig(testwinevent) \
	[llength [info commands testwinevent]]
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#    }

    start {set x [tk_getSaveFile -defaultextension .foo -title Save]}
    then {
	SetText 0x480 bar
	Click 1
    }
<<<<<<< winDialog.test
    set x
} [file join [pwd] bar.foo]
test winDialog-5.9 {GetFileName: extension doesn't begin with .} {nt} {
=======
    string totitle $x
} [string totitle [file join [pwd] bar.foo]]
test winDialog-5.9 {GetFileName: extension doesn't begin with .} {nt testwinevent} {
>>>>>>> 1.7
    start {set x [tk_getSaveFile -defaultextension foo -title Save]}
    then {
	SetText 0x480 bar
	Click 1
    }
<<<<<<< winDialog.test
    set x
} [file join [pwd] bar.foo]
test winDialog-5.10 {GetFileName: file types} {nt} {
=======
    string totitle $x
} [string totitle [file join [pwd] bar.foo]]
test winDialog-5.10 {GetFileName: file types} {nt testwinevent} {
>>>>>>> 1.7
#	    case FILE_TYPES: 

    start {tk_getSaveFile -filetypes {{"foo files" .foo FOOF}} -title Foo}
    then {
	set x [GetText 0x470]
	Click cancel
    }







<
<
<
<
<



<





<
<
<
<
<



<







119
120
121
122
123
124
125





126
127
128

129
130
131
132
133





134
135
136

137
138
139
140
141
142
143
#    }

    start {set x [tk_getSaveFile -defaultextension .foo -title Save]}
    then {
	SetText 0x480 bar
	Click 1
    }





    string totitle $x
} [string totitle [file join [pwd] bar.foo]]
test winDialog-5.9 {GetFileName: extension doesn't begin with .} {nt testwinevent} {

    start {set x [tk_getSaveFile -defaultextension foo -title Save]}
    then {
	SetText 0x480 bar
	Click 1
    }





    string totitle $x
} [string totitle [file join [pwd] bar.foo]]
test winDialog-5.10 {GetFileName: file types} {nt testwinevent} {

#	    case FILE_TYPES: 

    start {tk_getSaveFile -filetypes {{"foo files" .foo FOOF}} -title Foo}
    then {
	set x [GetText 0x470]
	Click cancel
    }
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
test winDialog-5.14 {GetFileName: initial file} {nt testwinevent} {
#	    case FILE_INITFILE: 

    start {set x [tk_getSaveFile -initialfile "12x 456" -title Foo]}
    then {
	Click 1
    }
    set x
} [file join [pwd] "12x 456"]
test winDialog-5.15 {GetFileName: initial file: Tcl_TranslateFileName()} {nt} {
#		if (Tcl_TranslateFileName(interp, string, &ds) == NULL) 
    list [catch {tk_getOpenFile -initialfile ~12x/455} msg] $msg
} {1 {user "12x" doesn't exist}}
set a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
append a $a
append a $a
append a $a
append a $a
test winDialog-5.16 {GetFileName: initial file: long name} {nt testwinevent} {
    start {set x [tk_getSaveFile -initialfile $a -title Long]}
    then {
	Click 1
    }
    set x
} [string range [file join [pwd] $a] 0 257]
test winDialog-5.17 {GetFileName: parent} {nt} {
#	    case FILE_PARENT: 

    toplevel .t
    set x 0
    start {tk_getOpenFile -parent .t -title Parent; set x 1}
    then {







|
|














|
|







166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
test winDialog-5.14 {GetFileName: initial file} {nt testwinevent} {
#	    case FILE_INITFILE: 

    start {set x [tk_getSaveFile -initialfile "12x 456" -title Foo]}
    then {
	Click 1
    }
    string totitle $x
} [string totitle [file join [pwd] "12x 456"]]
test winDialog-5.15 {GetFileName: initial file: Tcl_TranslateFileName()} {nt} {
#		if (Tcl_TranslateFileName(interp, string, &ds) == NULL) 
    list [catch {tk_getOpenFile -initialfile ~12x/455} msg] $msg
} {1 {user "12x" doesn't exist}}
set a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
append a $a
append a $a
append a $a
append a $a
test winDialog-5.16 {GetFileName: initial file: long name} {nt testwinevent} {
    start {set x [tk_getSaveFile -initialfile $a -title Long]}
    then {
	Click 1
    }
    string totitle $x
} [string totitle [string range [file join [pwd] $a] 0 257]]
test winDialog-5.17 {GetFileName: parent} {nt} {
#	    case FILE_PARENT: 

    toplevel .t
    set x 0
    start {tk_getOpenFile -parent .t -title Parent; set x 1}
    then {
Changes to tests/wm.test.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# This file is a Tcl script to test out Tk's interactions with
# the window manager, including the "wm" command.  It is organized
# in the standard fashion for Tcl tests.
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: wm.test,v 1.2.2.1 2002/02/05 02:25:18 wolfsuit Exp $

# This file tests window manager interactions that work across
# platforms. Window manager tests that only work on a specific
# platform should be placed in unixWm.test or winWm.test.

if {[lsearch [namespace children] ::tcltest] == -1} {
    package require tcltest
    namespace import -force ::tcltest::*
}

proc deleteWindows {} {
    foreach i [winfo children .] {
    	catch [destroy $i]
    }
}


deleteWindows



test wm-stackorder-1.1 {usage} {
    list [catch {wm stackorder} err] $err
} {1 {wrong # args: should be "wm option window ?arg ...?"}}

test wm-stackorder-1.2 {usage} {
    list [catch {wm stackorder . _} err] $err
} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow? ?window?"}}

test wm-stackorder-1.3 {usage} {
    list [catch {wm stackorder . _ _ _} err] $err
} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow? ?window?"}}

test wm-stackorder-1.4 {usage} {
    list [catch {wm stackorder . is .} err] $err
} {1 {bad argument "is": must be isabove or isbelow}}

test wm-stackorder-1.5 {usage} {
    list [catch {wm stackorder _} err] $err









|












|






>







|



|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# This file is a Tcl script to test out Tk's interactions with
# the window manager, including the "wm" command.  It is organized
# in the standard fashion for Tcl tests.
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: wm.test,v 1.2.2.2 2002/06/10 05:38:26 wolfsuit Exp $

# This file tests window manager interactions that work across
# platforms. Window manager tests that only work on a specific
# platform should be placed in unixWm.test or winWm.test.

if {[lsearch [namespace children] ::tcltest] == -1} {
    package require tcltest
    namespace import -force ::tcltest::*
}

proc deleteWindows {} {
    foreach i [winfo children .] {
    	destroy $i
    }
}


deleteWindows

wm deicon .

test wm-stackorder-1.1 {usage} {
    list [catch {wm stackorder} err] $err
} {1 {wrong # args: should be "wm option window ?arg ...?"}}

test wm-stackorder-1.2 {usage} {
    list [catch {wm stackorder . _} err] $err
} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow window?"}}

test wm-stackorder-1.3 {usage} {
    list [catch {wm stackorder . _ _ _} err] $err
} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow window?"}}

test wm-stackorder-1.4 {usage} {
    list [catch {wm stackorder . is .} err] $err
} {1 {bad argument "is": must be isabove or isbelow}}

test wm-stackorder-1.5 {usage} {
    list [catch {wm stackorder _} err] $err
289
290
291
292
293
294
295








296

















297











































































































































































































298
299
300
301
302
303
304
305
306
307
308



309
310
311
312
    toplevel .t
    wm overrideredirect .t 1
    lower .t
    update
    wm stackorder .t isbelow .
} 1



























deleteWindows













































































































































































































# FIXME:

# Need test cases for embedded Windows, they should not appear in
# the stacking order since they are not actually toplevel Windows.

# Test delivery of virtual events to the WM. We could check to see
# if the window was raised after a button click for example.
# This sort of testing may not be possible.




return










>
>
>
>
>
>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
<
<




>
>
>




290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530



531
532
533
534
535
536
537
538
539
540
541
    toplevel .t
    wm overrideredirect .t 1
    lower .t
    update
    wm stackorder .t isbelow .
} 1

test wm-stackorder-6.1 {An embedded toplevel does not
        appear in the stacking order} {
    deleteWindows
    toplevel .real -container 1
    toplevel .embd -bg blue -use [winfo id .real]
    update
    wm stackorder .
} {. .real}


test wm-transient-1.1 {usage} {
    catch {destroy .t} ; toplevel .t
    list [catch {wm transient .t 1 2} msg]  $msg
} {1 {wrong # arguments: must be "wm transient window ?master?"}}

test wm-transient-1.2 {usage} {
    catch {destroy .t} ; toplevel .t
    list [catch {wm transient .t foo} msg]  $msg
} {1 {bad window path name "foo"}}

test wm-transient-1.3 {usage} {
    catch {destroy .t} ; toplevel .t
    list [catch {wm transient foo .t} msg]  $msg
} {1 {bad window path name "foo"}}

test wm-transient-1.4 {usage} {
    deleteWindows
    toplevel .master
    toplevel .subject
    wm transient .subject .master
    list [catch {wm iconify .subject} msg] $msg
} {1 {can't iconify ".subject": it is a transient}}

test wm-transient-1.5 {usage} {
    deleteWindows
    toplevel .icon -bg blue
    toplevel .top
    wm iconwindow .top .icon
    toplevel .dummy
    list [catch {wm transient .icon .dummy} msg] $msg
} {1 {can't make ".icon" a transient: it is an icon for .top}}

test wm-transient-1.6 {usage} {
    deleteWindows
    toplevel .icon -bg blue
    toplevel .top
    wm iconwindow .top .icon
    toplevel .dummy
    list [catch {wm transient .dummy .icon} msg] $msg
} {1 {can't make ".icon" a master: it is an icon for .top}}

test wm-transient-1.7 {usage} {
    deleteWindows
    toplevel .master
    list [catch {wm transient .master .master} err] $err
} {1 {can't make ".master" its own master}}

test wm-transient-1.8 {usage} {
    deleteWindows
    toplevel .master
    frame .master.f
    list [catch {wm transient .master .master.f} err] $err
} {1 {can't make ".master" its own master}}

test wm-transient-2.1 { basic get/set of master } {
    deleteWindows
    set results [list]    
    toplevel .master
    toplevel .subject
    lappend results [wm transient .subject]
    wm transient .subject .master
    lappend results [wm transient .subject]
    wm transient .subject {}
    lappend results [wm transient .subject]
    set results
} {{} .master {}}

test wm-transient-2.2 { first toplevel parent of
        non-toplevel master is used } {
    deleteWindows
    toplevel .master
    frame .master.f
    toplevel .subject
    wm transient .subject .master.f
    wm transient .subject
} {.master}



test wm-state-1.1 {usage} {
    list [catch {wm state} err] $err
} {1 {wrong # args: should be "wm option window ?arg ...?"}}

test wm-state-1.2 {usage} {
    list [catch {wm state . _ _} err] $err
} {1 {wrong # arguments: must be "wm state window ?state?"}}

test wm-state-2.1 {initial state} {
    deleteWindows
    toplevel .t
    wm state .t
} {normal}

test wm-state-2.2 {state change before map} {
    deleteWindows
    toplevel .t
    wm state .t withdrawn
    wm state .t
} {withdrawn}

test wm-state-2.3 {state change before map} {
    deleteWindows
    toplevel .t
    wm withdraw .t
    wm state .t
} {withdrawn}

test wm-state-2.4 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm state .t withdrawn
    wm state .t
} {withdrawn}

test wm-state-2.5 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm withdraw .t
    wm state .t
} {withdrawn}

test wm-state-2.6 {state change before map} {
    deleteWindows
    toplevel .t
    wm state .t iconic
    wm state .t
} {iconic}

test wm-state-2.7 {state change before map} {
    deleteWindows
    toplevel .t
    wm iconify .t
    wm state .t
} {iconic}

test wm-state-2.8 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm state .t iconic
    wm state .t
} {iconic}

test wm-state-2.9 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm iconify .t
    wm state .t
} {iconic}

test wm-state-2.10 {state change before map} {
    deleteWindows
    toplevel .t
    wm withdraw .t
    wm state .t normal
    wm state .t
} {normal}

test wm-state-2.11 {state change before map} {
    deleteWindows
    toplevel .t
    wm withdraw .t
    wm deiconify .t
    wm state .t
} {normal}

test wm-state-2.12 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm withdraw .t
    wm state .t normal
    wm state .t
} {normal}

test wm-state-2.13 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm withdraw .t
    wm deiconify .t
    wm state .t
} {normal}

test wm-state-2.14 {state change before map} {
    deleteWindows
    toplevel .t
    wm iconify .t
    wm state .t normal
    wm state .t
} {normal}

test wm-state-2.15 {state change before map} {
    deleteWindows
    toplevel .t
    wm iconify .t
    wm deiconify .t
    wm state .t
} {normal}

test wm-state-2.16 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm iconify .t
    wm state .t normal
    wm state .t
} {normal}

test wm-state-2.17 {state change after map} {
    deleteWindows
    toplevel .t
    update
    wm iconify .t
    wm deiconify .t
    wm state .t
} {normal}


# FIXME:




# Test delivery of virtual events to the WM. We could check to see
# if the window was raised after a button click for example.
# This sort of testing may not be possible.


deleteWindows

return



Changes to unix/Makefile.in.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#
# This file is a Makefile for Tk.  If it has the name "Makefile.in"
# then it is a template for a Makefile;  to generate the actual Makefile,
# run "./configure", which is a configuration script generated by the
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
# RCS: @(#) $Id: Makefile.in,v 1.54.2.1 2002/02/05 02:25:18 wolfsuit Exp $

# Current Tk version;  used in various names.

TCLVERSION		= @TCL_VERSION@
VERSION			= @TK_VERSION@
LOCALES			= @LOCALES@








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#
# This file is a Makefile for Tk.  If it has the name "Makefile.in"
# then it is a template for a Makefile;  to generate the actual Makefile,
# run "./configure", which is a configuration script generated by the
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
# RCS: @(#) $Id: Makefile.in,v 1.54.2.2 2002/06/10 05:38:26 wolfsuit Exp $

# Current Tk version;  used in various names.

TCLVERSION		= @TCL_VERSION@
VERSION			= @TK_VERSION@
LOCALES			= @LOCALES@

261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
WISH_OBJS = tkAppInit.o

TCLTEST_OBJS = ${TCL_BIN_DIR}/tclTest.o ${TCL_BIN_DIR}/tclThreadTest.o \
        ${TCL_BIN_DIR}/tclUnixTest.o
TKTEST_OBJS = $(TCLTEST_OBJS) tkTestInit.o tkTest.o tkSquare.o

WIDGOBJS = tkButton.o tkEntry.o tkFrame.o tkListbox.o \
	tkMenu.o tkMenubutton.o tkMenuDraw.o tkMessage.o tkScale.o \
	tkScrollbar.o

CANVOBJS = tkCanvas.o tkCanvArc.o tkCanvBmap.o tkCanvImg.o \
	tkCanvLine.o tkCanvPoly.o tkCanvPs.o tkCanvText.o \
	tkCanvUtil.o tkCanvWind.o tkRectOval.o tkTrig.o

IMAGEOBJS = tkImage.o tkImgBmap.o tkImgGIF.o tkImgPPM.o tkImgPhoto.o








|
|







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
WISH_OBJS = tkAppInit.o

TCLTEST_OBJS = ${TCL_BIN_DIR}/tclTest.o ${TCL_BIN_DIR}/tclThreadTest.o \
        ${TCL_BIN_DIR}/tclUnixTest.o
TKTEST_OBJS = $(TCLTEST_OBJS) tkTestInit.o tkTest.o tkSquare.o

WIDGOBJS = tkButton.o tkEntry.o tkFrame.o tkListbox.o \
	tkMenu.o tkMenubutton.o tkMenuDraw.o tkMessage.o \
	tkPanedWindow.o tkScale.o tkScrollbar.o

CANVOBJS = tkCanvas.o tkCanvArc.o tkCanvBmap.o tkCanvImg.o \
	tkCanvLine.o tkCanvPoly.o tkCanvPs.o tkCanvText.o \
	tkCanvUtil.o tkCanvWind.o tkRectOval.o tkTrig.o

IMAGEOBJS = tkImage.o tkImgBmap.o tkImgGIF.o tkImgPPM.o tkImgPhoto.o

312
313
314
315
316
317
318

319
320
321
322
323
324
325
	$(GENERIC_DIR)/tkSelect.c $(GENERIC_DIR)/tkUtil.c \
	$(GENERIC_DIR)/tkVisual.c $(GENERIC_DIR)/tkWindow.c \
	$(GENERIC_DIR)/tkButton.c $(GENERIC_DIR)/tkObj.c \
	$(GENERIC_DIR)/tkEntry.c $(GENERIC_DIR)/tkFrame.c \
	$(GENERIC_DIR)/tkListbox.c $(GENERIC_DIR)/tkMenu.c \
	$(GENERIC_DIR)/tkMenubutton.c $(GENERIC_DIR)/tkMenuDraw.c \
	$(GENERIC_DIR)/tkMessage.c \

	$(GENERIC_DIR)/tkScale.c $(GENERIC_DIR)/tkScrollbar.c \
	$(GENERIC_DIR)/tkCanvas.c $(GENERIC_DIR)/tkCanvArc.c \
	$(GENERIC_DIR)/tkCanvBmap.c $(GENERIC_DIR)/tkCanvImg.c \
	$(GENERIC_DIR)/tkCanvLine.c $(GENERIC_DIR)/tkCanvPoly.c \
	$(GENERIC_DIR)/tkCanvPs.c $(GENERIC_DIR)/tkCanvText.c \
	$(GENERIC_DIR)/tkCanvUtil.c \
	$(GENERIC_DIR)/tkCanvWind.c $(GENERIC_DIR)/tkRectOval.c \







>







312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
	$(GENERIC_DIR)/tkSelect.c $(GENERIC_DIR)/tkUtil.c \
	$(GENERIC_DIR)/tkVisual.c $(GENERIC_DIR)/tkWindow.c \
	$(GENERIC_DIR)/tkButton.c $(GENERIC_DIR)/tkObj.c \
	$(GENERIC_DIR)/tkEntry.c $(GENERIC_DIR)/tkFrame.c \
	$(GENERIC_DIR)/tkListbox.c $(GENERIC_DIR)/tkMenu.c \
	$(GENERIC_DIR)/tkMenubutton.c $(GENERIC_DIR)/tkMenuDraw.c \
	$(GENERIC_DIR)/tkMessage.c \
	$(GENERIC_DIR)/tkPanedWindow.c \
	$(GENERIC_DIR)/tkScale.c $(GENERIC_DIR)/tkScrollbar.c \
	$(GENERIC_DIR)/tkCanvas.c $(GENERIC_DIR)/tkCanvArc.c \
	$(GENERIC_DIR)/tkCanvBmap.c $(GENERIC_DIR)/tkCanvImg.c \
	$(GENERIC_DIR)/tkCanvLine.c $(GENERIC_DIR)/tkCanvPoly.c \
	$(GENERIC_DIR)/tkCanvPs.c $(GENERIC_DIR)/tkCanvText.c \
	$(GENERIC_DIR)/tkCanvUtil.c \
	$(GENERIC_DIR)/tkCanvWind.c $(GENERIC_DIR)/tkRectOval.c \
777
778
779
780
781
782
783



784
785
786
787
788
789
790

tkMenuDraw.o: $(GENERIC_DIR)/tkMenuDraw.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMenuDraw.c

tkMessage.o: $(GENERIC_DIR)/tkMessage.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMessage.c




tkScale.o: $(GENERIC_DIR)/tkScale.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkScale.c

tkScrollbar.o: $(GENERIC_DIR)/tkScrollbar.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkScrollbar.c

tkSquare.o: $(GENERIC_DIR)/tkSquare.c







>
>
>







778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794

tkMenuDraw.o: $(GENERIC_DIR)/tkMenuDraw.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMenuDraw.c

tkMessage.o: $(GENERIC_DIR)/tkMessage.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMessage.c

tkPanedWindow.o: $(GENERIC_DIR)/tkPanedWindow.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkPanedWindow.c

tkScale.o: $(GENERIC_DIR)/tkScale.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkScale.c

tkScrollbar.o: $(GENERIC_DIR)/tkScrollbar.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkScrollbar.c

tkSquare.o: $(GENERIC_DIR)/tkSquare.c
1058
1059
1060
1061
1062
1063
1064

1065



1066
1067
1068

1069
1070
1071


1072
1073
1074
1075
1076
1077
1078
	cp $(TOP_DIR)/win/configure.in \
		$(TOP_DIR)/win/configure \
		$(TOP_DIR)/win/tkConfig.sh.in \
		$(TOP_DIR)/win/aclocal.m4 $(TOP_DIR)/win/tcl.m4 \
		$(DISTDIR)/win
	cp -p $(TOP_DIR)/win/*.c $(TOP_DIR)/win/*.h $(DISTDIR)/win
	cp -p $(TOP_DIR)/win/*.bat $(DISTDIR)/win

	cp -p $(TOP_DIR)/win/makefile.* $(DISTDIR)/win



	cp -p $(TOP_DIR)/win/README $(DISTDIR)/win
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/win
	mkdir $(DISTDIR)/win/rc

	cp -p $(TOP_DIR)/win/rc/*.rc $(TOP_DIR)/win/rc/*.cur \
		$(TOP_DIR)/win/rc/*.ico $(TOP_DIR)/win/rc/*.bmp \
		$(DISTDIR)/win/rc


	mkdir $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/tkMacProjects.sea.hqx $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/*.c $(TOP_DIR)/mac/*.h $(TOP_DIR)/mac/*.r \
		$(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/README $(DISTDIR)/mac
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/*.pch $(DISTDIR)/mac







>

>
>
>



>



>
>







1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
	cp $(TOP_DIR)/win/configure.in \
		$(TOP_DIR)/win/configure \
		$(TOP_DIR)/win/tkConfig.sh.in \
		$(TOP_DIR)/win/aclocal.m4 $(TOP_DIR)/win/tcl.m4 \
		$(DISTDIR)/win
	cp -p $(TOP_DIR)/win/*.c $(TOP_DIR)/win/*.h $(DISTDIR)/win
	cp -p $(TOP_DIR)/win/*.bat $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/*.bat
	cp -p $(TOP_DIR)/win/makefile.* $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/makefile.*
	cp -p $(TOP_DIR)/win/rules.vc $(DISTDIR)/win
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rules.vc
	cp -p $(TOP_DIR)/win/README $(DISTDIR)/win
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/win
	mkdir $(DISTDIR)/win/rc
	cp -p $(TOP_DIR)/win/rc/wish.exe.manifest $(TOP_DIR)/win/rc/
	cp -p $(TOP_DIR)/win/rc/*.rc $(TOP_DIR)/win/rc/*.cur \
		$(TOP_DIR)/win/rc/*.ico $(TOP_DIR)/win/rc/*.bmp \
		$(DISTDIR)/win/rc
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rc/*.rc
	$(TCL_EXE) $(TOOL_DIR)/eolFix.tcl -crlf $(DISTDIR)/win/rc/wish.exe.manifest
	mkdir $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/tkMacProjects.sea.hqx $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/*.c $(TOP_DIR)/mac/*.h $(TOP_DIR)/mac/*.r \
		$(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/README $(DISTDIR)/mac
	cp -p $(TOP_DIR)/license.terms $(DISTDIR)/mac
	cp -p $(TOP_DIR)/mac/*.pch $(DISTDIR)/mac
Changes to unix/README.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Tk UNIX README
--------------

This is the directory where you configure, compile, test, and install
UNIX versions of Tk.  This directory also contains source files for Tk
that are specific to UNIX.

The information in this file is maintained at:
	http://www.purl.org/tcl/home/doc/howto/compile.html

For information on platforms where Tcl/Tk is known to compile, along
with any porting notes for getting it to work on those platforms, see:
	http://www.purl.org/tcl/home/software/tcltk/platforms.html

The rest of this file contains instructions on how to do this.  The
release should compile and run either "out of the box" or with trivial
changes on any UNIX-like system that approximates POSIX, BSD, or System
V.  We know that it runs on workstations from Sun, H-P, DEC, IBM, and
SGI, as well as PCs running Linux, BSDI, and SCO UNIX.  To compile for
a PC running Windows, see the README file in the directory ../win.  To
compile for a Macintosh, see the README file in the directory ../mac.

RCS: @(#) $Id: README,v 1.12 2001/07/05 17:23:53 hobbs Exp $

How To Compile And Install Tk:
------------------------------

(a) Make sure that the Tcl 8.4 release is present in the directory
    ../../tcl8.4 (or else use the "--with-tcl" switch described below). 
    This release of Tk will only work with Tcl 8.4. Also, be sure that








|



|









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Tk UNIX README
--------------

This is the directory where you configure, compile, test, and install
UNIX versions of Tk.  This directory also contains source files for Tk
that are specific to UNIX.

The information in this file is maintained at:
	http://www.tcl.tk/doc/howto/compile.html

For information on platforms where Tcl/Tk is known to compile, along
with any porting notes for getting it to work on those platforms, see:
	http://www.tcl.tk/software/tcltk/platforms.html

The rest of this file contains instructions on how to do this.  The
release should compile and run either "out of the box" or with trivial
changes on any UNIX-like system that approximates POSIX, BSD, or System
V.  We know that it runs on workstations from Sun, H-P, DEC, IBM, and
SGI, as well as PCs running Linux, BSDI, and SCO UNIX.  To compile for
a PC running Windows, see the README file in the directory ../win.  To
compile for a Macintosh, see the README file in the directory ../mac.

RCS: @(#) $Id: README,v 1.12.2.1 2002/06/10 05:38:26 wolfsuit Exp $

How To Compile And Install Tk:
------------------------------

(a) Make sure that the Tcl 8.4 release is present in the directory
    ../../tcl8.4 (or else use the "--with-tcl" switch described below). 
    This release of Tk will only work with Tcl 8.4. Also, be sure that
40
41
42
43
44
45
46
47
48
49
50
51
52
53


54
55
56
57
58
59
60






61
62
63
64
65
66
67
(d) Type "./configure".  This runs a configuration script created by GNU
    autoconf, which configures Tcl for your system and creates a
    Makefile.  The configure script allows you to customize the Tcl
    configuration for your site; for details on how you can do this,
    type "./configure -help" or refer to the autoconf documentation (not
    included here).  Tk's "configure" script supports the following
    special switches in addition to the standard ones:
	--enable-threads	Tk on Unix currently does not support
				threaded builds.
	--with-tcl=DIR		Specifies the directory containing the Tcl
				binaries and Tcl's platform-dependent
				configuration information.  By default
				the Tcl directory is assumed to be in the
				location given by (a) above.


	--enable-shared		If this switch is specified, Tk will compile
				itself as a shared library if it can figure
				out how to do that on this platform.  This
				is the default on platforms where we know
				how to build shared libraries.
	--disable-shared	If this switch is specified, Tk will compile
				itself as a static library.







    Note: by default gcc will be used if it can be located on the PATH.
    if you want to use cc instead of gcc, set the CC environment variable
    to "cc" before running configure. It is not safe to change the Makefile
    to use gcc after configure is run.

    Note: be sure to use only absolute path names (those starting with "/")







<
<





>
>







>
>
>
>
>
>







40
41
42
43
44
45
46


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
(d) Type "./configure".  This runs a configuration script created by GNU
    autoconf, which configures Tcl for your system and creates a
    Makefile.  The configure script allows you to customize the Tcl
    configuration for your site; for details on how you can do this,
    type "./configure -help" or refer to the autoconf documentation (not
    included here).  Tk's "configure" script supports the following
    special switches in addition to the standard ones:


	--with-tcl=DIR		Specifies the directory containing the Tcl
				binaries and Tcl's platform-dependent
				configuration information.  By default
				the Tcl directory is assumed to be in the
				location given by (a) above.
	--enable-threads	If this switch is set, Tcl will compile
				itself with multithreading support.
	--enable-shared		If this switch is specified, Tk will compile
				itself as a shared library if it can figure
				out how to do that on this platform.  This
				is the default on platforms where we know
				how to build shared libraries.
	--disable-shared	If this switch is specified, Tk will compile
				itself as a static library.
	--enable-symbols	build with debugging symbols
	--disable-symbols	build without debugging symbols
	--enable-64bit		enable 64bit support (where applicable)
	--disable-64bit		disable 64bit support (where applicable)
	--enable-64bit-vis	enable 64bit Sparc VIS support
	--disable-64bit-vis	disable 64bit Sparc VIS support

    Note: by default gcc will be used if it can be located on the PATH.
    if you want to use cc instead of gcc, set the CC environment variable
    to "cc" before running configure. It is not safe to change the Makefile
    to use gcc after configure is run.

    Note: be sure to use only absolute path names (those starting with "/")
Changes to unix/configure.
12
13
14
15
16
17
18


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
  --enable-threads        build with threads"
ac_help="$ac_help
  --with-tcl              directory containing tcl configuration (tclConfig.sh)"
ac_help="$ac_help


  --enable-64bit          enable 64bit support (where applicable)"
ac_help="$ac_help
  --enable-64bit-vis      enable 64bit Sparc VIS support"
ac_help="$ac_help
  --disable-load          disallow dynamic loading and "load" command"
ac_help="$ac_help
  --enable-symbols        build with debugging symbols [--disable-symbols]"
ac_help="$ac_help
  --with-x                use the X Window System"
ac_help="$ac_help
  --enable-shared         build and link with shared libraries [--enable-shared]"

# Initialize some variables set by options.
# The variables have the same names as the options, with
# dashes changed to underlines.
build=NONE
cache_file=./config.cache
exec_prefix=NONE







>
>









<
<







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29


30
31
32
33
34
35
36
ac_default_prefix=/usr/local
# Any additions from configure.in:
ac_help="$ac_help
  --enable-threads        build with threads"
ac_help="$ac_help
  --with-tcl              directory containing tcl configuration (tclConfig.sh)"
ac_help="$ac_help
  --enable-shared         build and link with shared libraries [--enable-shared]"
ac_help="$ac_help
  --enable-64bit          enable 64bit support (where applicable)"
ac_help="$ac_help
  --enable-64bit-vis      enable 64bit Sparc VIS support"
ac_help="$ac_help
  --disable-load          disallow dynamic loading and "load" command"
ac_help="$ac_help
  --enable-symbols        build with debugging symbols [--disable-symbols]"
ac_help="$ac_help
  --with-x                use the X Window System"



# Initialize some variables set by options.
# The variables have the same names as the options, with
# dashes changed to underlines.
build=NONE
cache_file=./config.cache
exec_prefix=NONE
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
fi



TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a4"
VERSION=${TK_VERSION}
LOCALES="de en es fr"

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------








|







537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
fi



TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a5"
VERSION=${TK_VERSION}
LOCALES="de en es fr"

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------

967
968
969
970
971
972
973






974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010

    if test "$tcl_ok" = "yes"; then
	echo "$ac_t""yes" 1>&6
	TCL_THREADS=1
	cat >> confdefs.h <<\EOF
#define TCL_THREADS 1
EOF







	cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF

	cat >> confdefs.h <<\EOF
#define _THREAD_SAFE 1
EOF

	echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6
echo "configure:985: checking for pthread_mutex_init in -lpthread" >&5
ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lpthread  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 993 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







>
>
>
>
>
>










|







|










|







967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016

    if test "$tcl_ok" = "yes"; then
	echo "$ac_t""yes" 1>&6
	TCL_THREADS=1
	cat >> confdefs.h <<\EOF
#define TCL_THREADS 1
EOF

	# USE_THREAD_ALLOC tells us to try the special thread-based
	# allocator that significantly reduces lock contention
	cat >> confdefs.h <<\EOF
#define USE_THREAD_ALLOC 1
EOF

	cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF

	cat >> confdefs.h <<\EOF
#define _THREAD_SAFE 1
EOF

	echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6
echo "configure:991: checking for pthread_mutex_init in -lpthread" >&5
ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lpthread  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 999 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
	if test "$tcl_ok" = "no"; then
	    # Check a little harder for __pthread_mutex_init in the same
	    # library, as some systems hide it there until pthread.h is
	    # defined.  We could alternatively do an AC_TRY_COMPILE with
	    # pthread.h, but that will work with libpthread really doesn't
	    # exist, like AIX 4.2.  [Bug: 4359]
	    echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6
echo "configure:1032: checking for __pthread_mutex_init in -lpthread" >&5
ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lpthread  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1040 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char __pthread_mutex_init();

int main() {
__pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|










|







1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
	if test "$tcl_ok" = "no"; then
	    # Check a little harder for __pthread_mutex_init in the same
	    # library, as some systems hide it there until pthread.h is
	    # defined.  We could alternatively do an AC_TRY_COMPILE with
	    # pthread.h, but that will work with libpthread really doesn't
	    # exist, like AIX 4.2.  [Bug: 4359]
	    echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6
echo "configure:1038: checking for __pthread_mutex_init in -lpthread" >&5
ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lpthread  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1046 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char __pthread_mutex_init();

int main() {
__pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
	fi

	if test "$tcl_ok" = "yes"; then
	    # The space is needed
	    THREADS_LIBS=" -lpthread"
	else
	    echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6
echo "configure:1079: checking for pthread_mutex_init in -lpthreads" >&5
ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lpthreads  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1087 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|










|







1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
	fi

	if test "$tcl_ok" = "yes"; then
	    # The space is needed
	    THREADS_LIBS=" -lpthread"
	else
	    echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6
echo "configure:1085: checking for pthread_mutex_init in -lpthreads" >&5
ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lpthreads  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1093 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
fi

	    if test "$tcl_ok" = "yes"; then
		# The space is needed
		THREADS_LIBS=" -lpthreads"
	    else
		echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6
echo "configure:1124: checking for pthread_mutex_init in -lc" >&5
ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lc  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1132 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|










|







1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
fi

	    if test "$tcl_ok" = "yes"; then
		# The space is needed
		THREADS_LIBS=" -lpthreads"
	    else
		echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6
echo "configure:1130: checking for pthread_mutex_init in -lc" >&5
ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lc  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1138 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
else
  echo "$ac_t""no" 1>&6
tcl_ok=no
fi

	    	if test "$tcl_ok" = "no"; then
		    echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6
echo "configure:1166: checking for pthread_mutex_init in -lc_r" >&5
ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lc_r  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1174 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|










|







1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
else
  echo "$ac_t""no" 1>&6
tcl_ok=no
fi

	    	if test "$tcl_ok" = "no"; then
		    echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6
echo "configure:1172: checking for pthread_mutex_init in -lc_r" >&5
ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lc_r  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1180 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char pthread_mutex_init();

int main() {
pthread_mutex_init()
; return 0; }
EOF
if { (eval echo configure:1191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234

	# Does the pthread-implementation provide
	# 'pthread_attr_setstacksize' ?

	for ac_func in pthread_attr_setstacksize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:1223: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 1228 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char $ac_func(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */







|




|







1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240

	# Does the pthread-implementation provide
	# 'pthread_attr_setstacksize' ?

	for ac_func in pthread_attr_setstacksize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:1229: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 1234 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char $ac_func(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
choke me
#else
$ac_func();
#endif

; return 0; }
EOF
if { (eval echo configure:1251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_$ac_func=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_$ac_func=no"







|







1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
choke me
#else
$ac_func();
#endif

; return 0; }
EOF
if { (eval echo configure:1257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_$ac_func=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_$ac_func=no"
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312



















































































































































































































































































1313
1314
1315
1316
1317
1318
1319
# If we're using GCC, see if the compiler understands -pipe.  If so, use it.
# It makes compiling go faster.  (This is only a performance feature.)
#------------------------------------------------------------------------------

if test -z "$no_pipe"; then
if test -n "$GCC"; then
  echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6
echo "configure:1290: checking if the compiler understands -pipe" >&5
  OLDCC="$CC"  
  CC="$CC -pipe"
  cat > conftest.$ac_ext <<EOF
#line 1294 "configure"
#include "confdefs.h"

int main() {

; return 0; }
EOF
if { (eval echo configure:1301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  echo "$ac_t""yes" 1>&6
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  CC="$OLDCC"
    echo "$ac_t""no" 1>&6
fi
rm -f conftest*
fi  
fi




















































































































































































































































































#--------------------------------------------------------------------
# Find and load the tclConfig.sh file
#--------------------------------------------------------------------


    #







|



|






|












>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
# If we're using GCC, see if the compiler understands -pipe.  If so, use it.
# It makes compiling go faster.  (This is only a performance feature.)
#------------------------------------------------------------------------------

if test -z "$no_pipe"; then
if test -n "$GCC"; then
  echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6
echo "configure:1296: checking if the compiler understands -pipe" >&5
  OLDCC="$CC"  
  CC="$CC -pipe"
  cat > conftest.$ac_ext <<EOF
#line 1300 "configure"
#include "confdefs.h"

int main() {

; return 0; }
EOF
if { (eval echo configure:1307: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  echo "$ac_t""yes" 1>&6
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  CC="$OLDCC"
    echo "$ac_t""no" 1>&6
fi
rm -f conftest*
fi  
fi

#--------------------------------------------------------------------
#	Detect what compiler flags to set for 64-bit support.
#--------------------------------------------------------------------


    echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6
echo "configure:1327: checking for required early compiler flags" >&5
    tcl_flags=""
    
    if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 1334 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
char *p = (char *)strtoll; char *q = (char *)strtoull;
; return 0; }
EOF
if { (eval echo configure:1341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_flag__isoc99_source=no
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  cat > conftest.$ac_ext <<EOF
#line 1349 "configure"
#include "confdefs.h"
#define _ISOC99_SOURCE 1
#include <stdlib.h>
int main() {
char *p = (char *)strtoll; char *q = (char *)strtoull;
; return 0; }
EOF
if { (eval echo configure:1357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_flag__isoc99_source=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_cv_flag__isoc99_source=no
fi
rm -f conftest*
fi
rm -f conftest*
fi

    if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then
	cat >> confdefs.h <<\EOF
#define _ISOC99_SOURCE 1
EOF

	tcl_flags="$tcl_flags _ISOC99_SOURCE"
    fi
    
    if eval "test \"`echo '$''{'tcl_cv_flag__largefile64_source'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 1383 "configure"
#include "confdefs.h"
#include <sys/stat.h>
int main() {
struct stat64 buf; int i = stat64("/", &buf);
; return 0; }
EOF
if { (eval echo configure:1390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_flag__largefile64_source=no
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  cat > conftest.$ac_ext <<EOF
#line 1398 "configure"
#include "confdefs.h"
#define _LARGEFILE64_SOURCE 1
#include <sys/stat.h>
int main() {
struct stat64 buf; int i = stat64("/", &buf);
; return 0; }
EOF
if { (eval echo configure:1406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_flag__largefile64_source=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_cv_flag__largefile64_source=no
fi
rm -f conftest*
fi
rm -f conftest*
fi

    if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then
	cat >> confdefs.h <<\EOF
#define _LARGEFILE64_SOURCE 1
EOF

	tcl_flags="$tcl_flags _LARGEFILE64_SOURCE"
    fi
    if test "x${tcl_flags}" = "x" ; then
	echo "$ac_t""none" 1>&6
    else
	echo "$ac_t""${tcl_flags}" 1>&6
    fi


    echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6
echo "configure:1435: checking for 64-bit integer type" >&5
    if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  
	cat > conftest.$ac_ext <<EOF
#line 1441 "configure"
#include "confdefs.h"

int main() {
__int64 value = (__int64) 0;
; return 0; }
EOF
if { (eval echo configure:1448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_type_64bit=__int64
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_cv_type_64bit=none
           if test "$cross_compiling" = yes; then
    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
  cat > conftest.$ac_ext <<EOF
#line 1460 "configure"
#include "confdefs.h"
#include <unistd.h>
		int main() {exit(!(sizeof(long long) > sizeof(long)));}
		
EOF
if { (eval echo configure:1466: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  tcl_cv_type_64bit="long long"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
fi
rm -fr conftest*
fi

fi
rm -f conftest*
fi

    if test "${tcl_cv_type_64bit}" = none ; then
	echo "$ac_t""using long" 1>&6
    else
	cat >> confdefs.h <<EOF
#define TCL_WIDE_INT_TYPE ${tcl_cv_type_64bit}
EOF

	echo "$ac_t""${tcl_cv_type_64bit}" 1>&6

	# Now check for auxiliary declarations
	echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6
echo "configure:1491: checking for struct dirent64" >&5
	if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  
	    cat > conftest.$ac_ext <<EOF
#line 1497 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/dirent.h>
int main() {
struct dirent64 p;
; return 0; }
EOF
if { (eval echo configure:1505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_struct_dirent64=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_cv_struct_dirent64=no
fi
rm -f conftest*
fi

	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
	    cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_DIRENT64 1
EOF

	fi
	echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6

	echo $ac_n "checking for struct stat64""... $ac_c" 1>&6
echo "configure:1526: checking for struct stat64" >&5
	if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  
	    cat > conftest.$ac_ext <<EOF
#line 1532 "configure"
#include "confdefs.h"
#include <sys/stat.h>
int main() {
struct stat64 p;

; return 0; }
EOF
if { (eval echo configure:1540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_struct_stat64=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_cv_struct_stat64=no
fi
rm -f conftest*
fi

	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
	    cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_STAT64 1
EOF

	fi
	echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6

	echo $ac_n "checking for off64_t""... $ac_c" 1>&6
echo "configure:1561: checking for off64_t" >&5
	if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  
	    cat > conftest.$ac_ext <<EOF
#line 1567 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
off64_t offset;

; return 0; }
EOF
if { (eval echo configure:1575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_cv_type_off64_t=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_cv_type_off64_t=no
fi
rm -f conftest*
fi

	if test "x${tcl_cv_type_off64_t}" = "xyes" ; then
	    cat >> confdefs.h <<\EOF
#define HAVE_TYPE_OFF64_T 1
EOF

	fi
	echo "$ac_t""${tcl_cv_type_off64_t}" 1>&6
    fi

#--------------------------------------------------------------------
# Find and load the tclConfig.sh file
#--------------------------------------------------------------------


    #
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
	# Check whether --with-tcl or --without-tcl was given.
if test "${with_tcl+set}" = set; then
  withval="$with_tcl"
  with_tclconfig=${withval}
fi

	echo $ac_n "checking for Tcl configuration""... $ac_c" 1>&6
echo "configure:1336: checking for Tcl configuration" >&5
	if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  

	    # First check to see if --with-tcl was specified.
	    if test x"${with_tclconfig}" != x ; then







|







1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
	# Check whether --with-tcl or --without-tcl was given.
if test "${with_tcl+set}" = set; then
  withval="$with_tcl"
  with_tclconfig=${withval}
fi

	echo $ac_n "checking for Tcl configuration""... $ac_c" 1>&6
echo "configure:1617: checking for Tcl configuration" >&5
	if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  

	    # First check to see if --with-tcl was specified.
	    if test x"${with_tclconfig}" != x ; then
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
	    TCL_BIN_DIR=${ac_cv_c_tclconfig}
	    echo "$ac_t""found $TCL_BIN_DIR/tclConfig.sh" 1>&6
	fi
    fi


    echo $ac_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh""... $ac_c" 1>&6
echo "configure:1409: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5

    if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
        echo "$ac_t""loading" 1>&6
	. $TCL_BIN_DIR/tclConfig.sh
    else
        echo "$ac_t""file not found" 1>&6
    fi







|







1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
	    TCL_BIN_DIR=${ac_cv_c_tclconfig}
	    echo "$ac_t""found $TCL_BIN_DIR/tclConfig.sh" 1>&6
	fi
    fi


    echo $ac_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh""... $ac_c" 1>&6
echo "configure:1690: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5

    if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
        echo "$ac_t""loading" 1>&6
	. $TCL_BIN_DIR/tclConfig.sh
    else
        echo "$ac_t""file not found" 1>&6
    fi
1455
1456
1457
1458
1459
1460
1461









1462























1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493


#--------------------------------------------------------------------
# Recompute the necessary flags to run the compiler
#--------------------------------------------------------------------



































    # Step 0.a: Enable 64 bit support?

    echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6
echo "configure:1467: checking if 64bit support is requested" >&5
    # Check whether --enable-64bit or --disable-64bit was given.
if test "${enable_64bit+set}" = set; then
  enableval="$enable_64bit"
  :
else
  enableval="no"
fi


    if test "$enableval" = "yes"; then
	do64bit=yes
    else
	do64bit=no
    fi
    echo "$ac_t""$do64bit" 1>&6

    # Step 0.b: Enable Solaris 64 bit VIS support?

    echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6
echo "configure:1487: checking if 64bit Sparc VIS support is requested" >&5
    # Check whether --enable-64bit-vis or --disable-64bit-vis was given.
if test "${enable_64bit_vis+set}" = set; then
  enableval="$enable_64bit_vis"
  :
else
  enableval="no"
fi







>
>
>
>
>
>
>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>



|



















|







1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806


#--------------------------------------------------------------------
# Recompute the necessary flags to run the compiler
#--------------------------------------------------------------------


    echo $ac_n "checking how to build libraries""... $ac_c" 1>&6
echo "configure:1745: checking how to build libraries" >&5
    # Check whether --enable-shared or --disable-shared was given.
if test "${enable_shared+set}" = set; then
  enableval="$enable_shared"
  tcl_ok=$enableval
else
  tcl_ok=yes
fi


    if test "${enable_shared+set}" = set; then
	enableval="$enable_shared"
	tcl_ok=$enableval
    else
	tcl_ok=yes
    fi

    if test "$tcl_ok" = "yes" ; then
	echo "$ac_t""shared" 1>&6
	SHARED_BUILD=1
    else
	echo "$ac_t""static" 1>&6
	SHARED_BUILD=0
	cat >> confdefs.h <<\EOF
#define STATIC_BUILD 1
EOF

    fi




    # Step 0.a: Enable 64 bit support?

    echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6
echo "configure:1780: checking if 64bit support is requested" >&5
    # Check whether --enable-64bit or --disable-64bit was given.
if test "${enable_64bit+set}" = set; then
  enableval="$enable_64bit"
  :
else
  enableval="no"
fi


    if test "$enableval" = "yes"; then
	do64bit=yes
    else
	do64bit=no
    fi
    echo "$ac_t""$do64bit" 1>&6

    # Step 0.b: Enable Solaris 64 bit VIS support?

    echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6
echo "configure:1800: checking if 64bit Sparc VIS support is requested" >&5
    # Check whether --enable-64bit-vis or --disable-64bit-vis was given.
if test "${enable_64bit_vis+set}" = set; then
  enableval="$enable_64bit_vis"
  :
else
  enableval="no"
fi
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
    echo "$ac_t""$do64bitVIS" 1>&6

    # Step 1: set the variable "system" to hold the name and version number
    # for the system.  This can usually be done via the "uname" command, but
    # there are a few systems, like Next, where this doesn't work.

    echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6
echo "configure:1511: checking system version (for dynamic loading)" >&5
    if test -f /usr/lib/NextStep/software_version; then
	system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
    else
	system=`uname -s`-`uname -r`
	if test "$?" -ne 0 ; then
	    echo "$ac_t""unknown (can't find uname command)" 1>&6
	    system=unknown







|







1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
    echo "$ac_t""$do64bitVIS" 1>&6

    # Step 1: set the variable "system" to hold the name and version number
    # for the system.  This can usually be done via the "uname" command, but
    # there are a few systems, like Next, where this doesn't work.

    echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6
echo "configure:1824: checking system version (for dynamic loading)" >&5
    if test -f /usr/lib/NextStep/software_version; then
	system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
    else
	system=`uname -s`-`uname -r`
	if test "$?" -ne 0 ; then
	    echo "$ac_t""unknown (can't find uname command)" 1>&6
	    system=unknown
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
	fi
    fi

    # Step 2: check for existence of -ldl library.  This is needed because
    # Linux can use either -ldl or -ldld for dynamic loading.

    echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
echo "configure:1537: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-ldl  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1545 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char dlopen();

int main() {
dlopen()
; return 0; }
EOF
if { (eval echo configure:1556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|










|







1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
	fi
    fi

    # Step 2: check for existence of -ldl library.  This is needed because
    # Linux can use either -ldl or -ldld for dynamic loading.

    echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
echo "configure:1850: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-ldl  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1858 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char dlopen();

int main() {
dlopen()
; return 0; }
EOF
if { (eval echo configure:1869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
    fi
    TCL_NEEDS_EXP_FILE=0
    TCL_BUILD_EXP_FILE=""
    TCL_EXP_FILE=""
    # Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1600: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  if test -n "$AR"; then
  ac_cv_prog_AR="$AR" # Let the user override the test.
else
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"







|







1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
    fi
    TCL_NEEDS_EXP_FILE=0
    TCL_BUILD_EXP_FILE=""
    TCL_EXP_FILE=""
    # Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1913: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  if test -n "$AR"; then
  ac_cv_prog_AR="$AR" # Let the user override the test.
else
  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
1648
1649
1650
1651
1652
1653
1654

1655
1656
1657
1658
1659
1660
1661
	    LDFLAGS=""
	    if test "$GCC" = "yes" ; then
		LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
	    else
		LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
	    fi


	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="-q64"
		    LDFLAGS="-q64"







>







1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
	    LDFLAGS=""
	    if test "$GCC" = "yes" ; then
		LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
	    else
		LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
	    fi

	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="-q64"
		    LDFLAGS="-q64"
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
	    # AIX does not have a timezone field in struct tm. When the AIX
	    # bsd library is used, the timezone global and the gettimeofday
	    # methods are to be avoided for timezone deduction instead, we
	    # deduce the timezone by comparing the localtime result on a
	    # known GMT value.

	    echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
echo "configure:1705: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lbsd  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1713 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char gettimeofday();

int main() {
gettimeofday()
; return 0; }
EOF
if { (eval echo configure:1724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|










|







2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
	    # AIX does not have a timezone field in struct tm. When the AIX
	    # bsd library is used, the timezone global and the gettimeofday
	    # methods are to be avoided for timezone deduction instead, we
	    # deduce the timezone by comparing the localtime result on a
	    # known GMT value.

	    echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
echo "configure:2019: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lbsd  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2027 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char gettimeofday();

int main() {
gettimeofday()
; return 0; }
EOF
if { (eval echo configure:2038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1744
1745
1746
1747
1748
1749
1750











1751
1752
1753
1754
1755
1756
1757
	    if test $libbsd = yes; then
	    	MATH_LIBS="$MATH_LIBS -lbsd"
	    	cat >> confdefs.h <<\EOF
#define USE_DELTA_FOR_TZ 1
EOF

	    fi











	    ;;
	BSD/OS-2.1*|BSD/OS-3*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="shlicc -r"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"







>
>
>
>
>
>
>
>
>
>
>







2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
	    if test $libbsd = yes; then
	    	MATH_LIBS="$MATH_LIBS -lbsd"
	    	cat >> confdefs.h <<\EOF
#define USE_DELTA_FOR_TZ 1
EOF

	    fi

	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="-q64"
		    LDFLAGS="-q64"
		fi
	    fi
	    ;;
	BSD/OS-2.1*|BSD/OS-3*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="shlicc -r"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
1776
1777
1778
1779
1780
1781
1782






1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS="-ldl"
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	HP-UX-*.11.*)






	    SHLIB_SUFFIX=".sl"
	    echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
echo "configure:1786: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-ldld  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1794 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char shl_load();

int main() {
shl_load()
; return 0; }
EOF
if { (eval echo configure:1805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







>
>
>
>
>
>


|







|










|







2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS="-ldl"
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	HP-UX-*.11.*)
	    # Use updated header definitions where possible
	    cat >> confdefs.h <<\EOF
#define _XOPEN_SOURCE_EXTENDED 1
EOF


	    SHLIB_SUFFIX=".sl"
	    echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
echo "configure:2117: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-ldld  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2125 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char shl_load();

int main() {
shl_load()
; return 0; }
EOF
if { (eval echo configure:2136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833


1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
  echo "$ac_t""no" 1>&6
tcl_ok=no
fi

	    if test "$tcl_ok" = yes; then
		SHLIB_CFLAGS="+z"
		SHLIB_LD="ld -b"
		SHLIB_LD_LIBS=""
		DL_OBJS="tclLoadShl.o"
		DL_LIBS="-ldld"
		LDFLAGS="-Wl,-E"
		LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
	    fi


	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="+DA2.0W"
		    LDFLAGS="+DA2.0W $LDFLAGS"
		fi
	    fi
	    ;;
	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
	    SHLIB_SUFFIX=".sl"
	    echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
echo "configure:1848: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-ldld  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1856 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char shl_load();

int main() {
shl_load()
; return 0; }
EOF
if { (eval echo configure:1867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|





>
>













|







|










|







2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
  echo "$ac_t""no" 1>&6
tcl_ok=no
fi

	    if test "$tcl_ok" = yes; then
		SHLIB_CFLAGS="+z"
		SHLIB_LD="ld -b"
		SHLIB_LD_LIBS='${LIBS}'
		DL_OBJS="tclLoadShl.o"
		DL_LIBS="-ldld"
		LDFLAGS="-Wl,-E"
		LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
	    fi

	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="+DA2.0W"
		    LDFLAGS="+DA2.0W $LDFLAGS"
		fi
	    fi
	    ;;
	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
	    SHLIB_SUFFIX=".sl"
	    echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
echo "configure:2181: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-ldld  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2189 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char shl_load();

int main() {
shl_load()
; return 0; }
EOF
if { (eval echo configure:2200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
			;;
		esac
		LDFLAGS="-n32"
	    fi
	    ;;
	IRIX64-6.*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="ld -32 -shared -rdata_shared"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    ;;







|







2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
			;;
		esac
		LDFLAGS="-n32"
	    fi
	    ;;
	IRIX64-6.*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="ld -n32 -shared -rdata_shared"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    ;;
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
		DL_OBJS="tclLoadDl.o"
		DL_LIBS="-ldl"
		LDFLAGS="-rdynamic"
		LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    else
		ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
echo "configure:1974: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 1979 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5







|




|




|







2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
		DL_OBJS="tclLoadDl.o"
		DL_LIBS="-ldl"
		LDFLAGS="-rdynamic"
		LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    else
		ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
echo "configure:2307: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 2312 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
		DL_OBJS=""
		DL_LIBS="-ldl"
		LDFLAGS="-rdynamic"
		LD_SEARCH_FLAGS=""
	    else
		ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
echo "configure:2041: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 2046 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5







|




|




|







2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
		DL_OBJS=""
		DL_LIBS="-ldl"
		LDFLAGS="-rdynamic"
		LD_SEARCH_FLAGS=""
	    else
		ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
echo "configure:2374: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 2379 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
	    LDFLAGS="-Wl,-Bexport"
	    LD_SEARCH_FLAGS=""
	    ;;
	NetBSD-*|FreeBSD-[1-2].*|OpenBSD-*)
	    # Not available on all versions:  check for include file.
	    ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
echo "configure:2106: checking for dlfcn.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 2111 "configure"
#include "confdefs.h"
#include <dlfcn.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5







|




|




|







2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
	    LDFLAGS="-Wl,-Bexport"
	    LD_SEARCH_FLAGS=""
	    ;;
	NetBSD-*|FreeBSD-[1-2].*|OpenBSD-*)
	    # Not available on all versions:  check for include file.
	    ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
echo "configure:2439: checking for dlfcn.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 2444 "configure"
#include "confdefs.h"
#include <dlfcn.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
		SHLIB_LD_LIBS=""
		SHLIB_SUFFIX=".so"
		DL_OBJS="tclLoadDl.o"
		DL_LIBS=""
		LDFLAGS=""
		LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
		echo $ac_n "checking for ELF""... $ac_c" 1>&6
echo "configure:2143: checking for ELF" >&5
		cat > conftest.$ac_ext <<EOF
#line 2145 "configure"
#include "confdefs.h"

#ifdef __ELF__
	yes
#endif
		
EOF







|

|







2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
		SHLIB_LD_LIBS=""
		SHLIB_SUFFIX=".so"
		DL_OBJS="tclLoadDl.o"
		DL_LIBS=""
		LDFLAGS=""
		LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
		echo $ac_n "checking for ELF""... $ac_c" 1>&6
echo "configure:2476: checking for ELF" >&5
		cat > conftest.$ac_ext <<EOF
#line 2478 "configure"
#include "confdefs.h"

#ifdef __ELF__
	yes
#endif
		
EOF
2189
2190
2191
2192
2193
2194
2195
2196
2197





2198
2199
2200
2201
2202


2203
2204
2205
2206
2207
2208
2209
	    SHLIB_CFLAGS="-fPIC"
	    SHLIB_LD="ld -Bshareable -x"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS="-export-dynamic"
	    LD_SEARCH_FLAGS=""






	    # FreeBSD doesn't handle version numbers with dots.

	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
	    TCL_LIB_VERSIONS_OK=nodots


	    ;;
	Rhapsody-*|Darwin-*)
	    SHLIB_CFLAGS="-fno-common"
	    SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
	    TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_MAJOR_VERSION} -current_version \${VERSION} -install_name \${LIB_RUNTIME_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr a000000"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".dylib"







|
|
>
>
>
>
>
|
<
|
|
|
>
>







2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536

2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
	    SHLIB_CFLAGS="-fPIC"
	    SHLIB_LD="ld -Bshareable -x"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS="-export-dynamic"
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    if test "${TCL_THREADS}" = "1" ; then
		EXTRA_CFLAGS="-pthread"
	    	LDFLAGS="$LDFLAGS -pthread"
	    fi
	    case $system in
	    FreeBSD-3.*)
	    	# FreeBSD-3 doesn't handle version numbers with dots.

	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
	    	TCL_LIB_VERSIONS_OK=nodots
		;;
	    esac
	    ;;
	Rhapsody-*|Darwin-*)
	    SHLIB_CFLAGS="-fno-common"
	    SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
	    TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_MAJOR_VERSION} -current_version \${VERSION} -install_name \${LIB_RUNTIME_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr a000000"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".dylib"
2242
2243
2244
2245
2246
2247
2248

2249



2250
2251
2252
2253
2254
2255
2256
2257
2258
2259

2260



2261
2262
2263
2264
2265
2266
2267
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-1.*)
	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
	    SHLIB_CFLAGS="-fPIC"

	    SHLIB_LD="ld -shared"



	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-V*)
	    # Digital OSF/1
	    SHLIB_CFLAGS=""

	    SHLIB_LD='ld -shared -expect_unresolved "*"'



	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    if test "$GCC" != "yes" ; then







>
|
>
>
>










>
|
>
>
>







2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-1.*)
	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
	    SHLIB_CFLAGS="-fPIC"
	    if test "$SHARED_BUILD" = "1" ; then
	        SHLIB_LD="ld -shared"
	    else
	        SHLIB_LD="ld -non_shared"
	    fi
	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-V*)
	    # Digital OSF/1
	    SHLIB_CFLAGS=""
	    if test "$SHARED_BUILD" = "1" ; then
	        SHLIB_LD='ld -shared -expect_unresolved "*"'
	    else
	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
	    fi
	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    if test "$GCC" != "yes" ; then
2356
2357
2358
2359
2360
2361
2362




2363
2364
2365
2366
2367
2368
2369
	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF






	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"

	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
	    # symbols when dynamically loaded into tclsh.








>
>
>
>







2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF

	    cat >> confdefs.h <<\EOF
#define _POSIX_PTHREAD_SEMANTICS 1
EOF


	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"

	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
	    # symbols when dynamically loaded into tclsh.

2383
2384
2385
2386
2387
2388
2389




2390
2391
2392
2393
2394

2395
2396
2397
2398
2399
2400
2401
	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF






	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"
	    LDFLAGS=""
    

	    if test "$do64bit" = "yes" ; then
		arch=`isainfo`
		if test "$arch" = "sparcv9 sparc" ; then
			if test "$GCC" = "yes" ; then
			    echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2
			else
			    do64bit_ok=yes







>
>
>
>





>







2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    cat >> confdefs.h <<\EOF
#define _REENTRANT 1
EOF

	    cat >> confdefs.h <<\EOF
#define _POSIX_PTHREAD_SEMANTICS 1
EOF


	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"
	    LDFLAGS=""
    
	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		arch=`isainfo`
		if test "$arch" = "sparcv9 sparc" ; then
			if test "$GCC" = "yes" ; then
			    echo "configure: warning: "64bit mode not supported with GCC on $system"" 1>&2
			else
			    do64bit_ok=yes
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS="-ldl"
	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
	    # that don't grok the -Bexport option.  Test that it does.
	    hold_ldflags=$LDFLAGS
	    echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6
echo "configure:2453: checking for ld accepts -Bexport flag" >&5
	    LDFLAGS="${LDFLAGS} -Wl,-Bexport"
	    cat > conftest.$ac_ext <<EOF
#line 2456 "configure"
#include "confdefs.h"

int main() {
int i;
; return 0; }
EOF
if { (eval echo configure:2463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  found=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  found=no







|


|






|







2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS="-ldl"
	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
	    # that don't grok the -Bexport option.  Test that it does.
	    hold_ldflags=$LDFLAGS
	    echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6
echo "configure:2809: checking for ld accepts -Bexport flag" >&5
	    LDFLAGS="${LDFLAGS} -Wl,-Bexport"
	    cat > conftest.$ac_ext <<EOF
#line 2812 "configure"
#include "confdefs.h"

int main() {
int i;
; return 0; }
EOF
if { (eval echo configure:2819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  found=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  found=no
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
    #
    # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
    # `struct exec' includes a second header that contains information that
    # duplicates the v7 fields that are needed.

    if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
	echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6
echo "configure:2509: checking sys/exec.h" >&5
	cat > conftest.$ac_ext <<EOF
#line 2511 "configure"
#include "confdefs.h"
#include <sys/exec.h>
int main() {

	    struct exec foo;
	    unsigned long seek;
	    int flag;
#if defined(__mips) || defined(mips)
	    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
#else
	    seek = N_TXTOFF (foo);
#endif
	    flag = (foo.a_magic == OMAGIC);
	    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
    
; return 0; }
EOF
if { (eval echo configure:2529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_ok=usable
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_ok=unusable
fi
rm -f conftest*
	echo "$ac_t""$tcl_ok" 1>&6
	if test $tcl_ok = usable; then
	    cat >> confdefs.h <<\EOF
#define USE_SYS_EXEC_H 1
EOF

	else
	    echo $ac_n "checking a.out.h""... $ac_c" 1>&6
echo "configure:2547: checking a.out.h" >&5
	    cat > conftest.$ac_ext <<EOF
#line 2549 "configure"
#include "confdefs.h"
#include <a.out.h>
int main() {

		struct exec foo;
		unsigned long seek;
		int flag;
#if defined(__mips) || defined(mips)
		seek = N_TXTOFF (foo.ex_f, foo.ex_o);
#else
		seek = N_TXTOFF (foo);
#endif
		flag = (foo.a_magic == OMAGIC);
		return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
	    
; return 0; }
EOF
if { (eval echo configure:2567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_ok=usable
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_ok=unusable
fi
rm -f conftest*
	    echo "$ac_t""$tcl_ok" 1>&6
	    if test $tcl_ok = usable; then
		cat >> confdefs.h <<\EOF
#define USE_A_OUT_H 1
EOF

	    else
		echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6
echo "configure:2585: checking sys/exec_aout.h" >&5
		cat > conftest.$ac_ext <<EOF
#line 2587 "configure"
#include "confdefs.h"
#include <sys/exec_aout.h>
int main() {

		    struct exec foo;
		    unsigned long seek;
		    int flag;
#if defined(__mips) || defined(mips)
		    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
#else
		    seek = N_TXTOFF (foo);
#endif
		    flag = (foo.a_midmag == OMAGIC);
		    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
		
; return 0; }
EOF
if { (eval echo configure:2605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_ok=usable
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_ok=unusable







|

|

















|

















|

|

















|

















|

|

















|







2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
    #
    # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
    # `struct exec' includes a second header that contains information that
    # duplicates the v7 fields that are needed.

    if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
	echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6
echo "configure:2865: checking sys/exec.h" >&5
	cat > conftest.$ac_ext <<EOF
#line 2867 "configure"
#include "confdefs.h"
#include <sys/exec.h>
int main() {

	    struct exec foo;
	    unsigned long seek;
	    int flag;
#if defined(__mips) || defined(mips)
	    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
#else
	    seek = N_TXTOFF (foo);
#endif
	    flag = (foo.a_magic == OMAGIC);
	    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
    
; return 0; }
EOF
if { (eval echo configure:2885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_ok=usable
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_ok=unusable
fi
rm -f conftest*
	echo "$ac_t""$tcl_ok" 1>&6
	if test $tcl_ok = usable; then
	    cat >> confdefs.h <<\EOF
#define USE_SYS_EXEC_H 1
EOF

	else
	    echo $ac_n "checking a.out.h""... $ac_c" 1>&6
echo "configure:2903: checking a.out.h" >&5
	    cat > conftest.$ac_ext <<EOF
#line 2905 "configure"
#include "confdefs.h"
#include <a.out.h>
int main() {

		struct exec foo;
		unsigned long seek;
		int flag;
#if defined(__mips) || defined(mips)
		seek = N_TXTOFF (foo.ex_f, foo.ex_o);
#else
		seek = N_TXTOFF (foo);
#endif
		flag = (foo.a_magic == OMAGIC);
		return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
	    
; return 0; }
EOF
if { (eval echo configure:2923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_ok=usable
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_ok=unusable
fi
rm -f conftest*
	    echo "$ac_t""$tcl_ok" 1>&6
	    if test $tcl_ok = usable; then
		cat >> confdefs.h <<\EOF
#define USE_A_OUT_H 1
EOF

	    else
		echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6
echo "configure:2941: checking sys/exec_aout.h" >&5
		cat > conftest.$ac_ext <<EOF
#line 2943 "configure"
#include "confdefs.h"
#include <sys/exec_aout.h>
int main() {

		    struct exec foo;
		    unsigned long seek;
		    int flag;
#if defined(__mips) || defined(mips)
		    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
#else
		    seek = N_TXTOFF (foo);
#endif
		    flag = (foo.a_midmag == OMAGIC);
		    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
		
; return 0; }
EOF
if { (eval echo configure:2961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tcl_ok=usable
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tcl_ok=unusable
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
    
    
    



    echo $ac_n "checking for build with symbols""... $ac_c" 1>&6
echo "configure:2702: checking for build with symbols" >&5
    # Check whether --enable-symbols or --disable-symbols was given.
if test "${enable_symbols+set}" = set; then
  enableval="$enable_symbols"
  tcl_ok=$enableval
else
  tcl_ok=no
fi







|







3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
    
    
    



    echo $ac_n "checking for build with symbols""... $ac_c" 1>&6
echo "configure:3058: checking for build with symbols" >&5
    # Check whether --enable-symbols or --disable-symbols was given.
if test "${enable_symbols+set}" = set; then
  enableval="$enable_symbols"
  tcl_ok=$enableval
else
  tcl_ok=no
fi
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
# On a few very rare systems, all of the libm.a stuff is
# already in libc.a.  Set compiler flags accordingly.
# Also, Linux requires the "ieee" library for math to work
# right (and it must appear before "-lm").
#--------------------------------------------------------------------

echo $ac_n "checking for sin""... $ac_c" 1>&6
echo "configure:2746: checking for sin" >&5
if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 2751 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char sin(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */







|




|







3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
# On a few very rare systems, all of the libm.a stuff is
# already in libc.a.  Set compiler flags accordingly.
# Also, Linux requires the "ieee" library for math to work
# right (and it must appear before "-lm").
#--------------------------------------------------------------------

echo $ac_n "checking for sin""... $ac_c" 1>&6
echo "configure:3102: checking for sin" >&5
if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3107 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char sin(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
choke me
#else
sin();
#endif

; return 0; }
EOF
if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_sin=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_sin=no"
fi
rm -f conftest*
fi

if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then
  echo "$ac_t""yes" 1>&6
  MATH_LIBS=""
else
  echo "$ac_t""no" 1>&6
MATH_LIBS="-lm"
fi

echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6
echo "configure:2795: checking for main in -lieee" >&5
ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lieee  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2803 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:2810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|




















|







|






|







3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
choke me
#else
sin();
#endif

; return 0; }
EOF
if { (eval echo configure:3130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_sin=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_sin=no"
fi
rm -f conftest*
fi

if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then
  echo "$ac_t""yes" 1>&6
  MATH_LIBS=""
else
  echo "$ac_t""no" 1>&6
MATH_LIBS="-lm"
fi

echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6
echo "configure:3151: checking for main in -lieee" >&5
ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lieee  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3159 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:3166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
# the MATH_LIBS or it breaks the pow() function.  The way to
# insure proper sequencing, is to add it to the tail of MATH_LIBS.
# This library also supplies gettimeofday.
#--------------------------------------------------------------------
libbsd=no
if test "`uname -s`" = "AIX" ; then
    echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
echo "configure:2841: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lbsd  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2849 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char gettimeofday();

int main() {
gettimeofday()
; return 0; }
EOF
if { (eval echo configure:2860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|










|







3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
# the MATH_LIBS or it breaks the pow() function.  The way to
# insure proper sequencing, is to add it to the tail of MATH_LIBS.
# This library also supplies gettimeofday.
#--------------------------------------------------------------------
libbsd=no
if test "`uname -s`" = "AIX" ; then
    echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
echo "configure:3197: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lbsd  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3205 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char gettimeofday();

int main() {
gettimeofday()
; return 0; }
EOF
if { (eval echo configure:3216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928

#--------------------------------------------------------------------
# Supply a substitute for stdlib.h if it doesn't define strtol,
# strtoul, or strtod (which it doesn't in some versions of SunOS).
#--------------------------------------------------------------------

echo $ac_n "checking stdlib.h""... $ac_c" 1>&6
echo "configure:2891: checking stdlib.h" >&5
cat > conftest.$ac_ext <<EOF
#line 2893 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "strtol" >/dev/null 2>&1; then
  rm -rf conftest*
  tk_ok=yes
else
  rm -rf conftest*
  tk_ok=no
fi
rm -f conftest*

cat > conftest.$ac_ext <<EOF
#line 2908 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "strtoul" >/dev/null 2>&1; then
  :
else
  rm -rf conftest*
  tk_ok=no
fi
rm -f conftest*

cat > conftest.$ac_ext <<EOF
#line 2922 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "strtod" >/dev/null 2>&1; then
  :
else







|

|














|













|







3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284

#--------------------------------------------------------------------
# Supply a substitute for stdlib.h if it doesn't define strtol,
# strtoul, or strtod (which it doesn't in some versions of SunOS).
#--------------------------------------------------------------------

echo $ac_n "checking stdlib.h""... $ac_c" 1>&6
echo "configure:3247: checking stdlib.h" >&5
cat > conftest.$ac_ext <<EOF
#line 3249 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "strtol" >/dev/null 2>&1; then
  rm -rf conftest*
  tk_ok=yes
else
  rm -rf conftest*
  tk_ok=no
fi
rm -f conftest*

cat > conftest.$ac_ext <<EOF
#line 3264 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "strtoul" >/dev/null 2>&1; then
  :
else
  rm -rf conftest*
  tk_ok=no
fi
rm -f conftest*

cat > conftest.$ac_ext <<EOF
#line 3278 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "strtod" >/dev/null 2>&1; then
  :
else
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
# systems like OSF/1 have a sys/select.h that's of no use, and
# other systems like SCO UNIX have a sys/select.h that's
# pernicious.  If "fd_set" isn't defined anywhere then set a
# special flag.
#--------------------------------------------------------------------

echo $ac_n "checking fd_set and sys/select""... $ac_c" 1>&6
echo "configure:2954: checking fd_set and sys/select" >&5
cat > conftest.$ac_ext <<EOF
#line 2956 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
fd_set readMask, writeMask;
; return 0; }
EOF
if { (eval echo configure:2963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tk_ok=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tk_ok=no
fi
rm -f conftest*
if test $tk_ok = no; then
    cat > conftest.$ac_ext <<EOF
#line 2975 "configure"
#include "confdefs.h"
#include <sys/select.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "fd_mask" >/dev/null 2>&1; then
  rm -rf conftest*
  tk_ok=yes







|

|






|











|







3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
# systems like OSF/1 have a sys/select.h that's of no use, and
# other systems like SCO UNIX have a sys/select.h that's
# pernicious.  If "fd_set" isn't defined anywhere then set a
# special flag.
#--------------------------------------------------------------------

echo $ac_n "checking fd_set and sys/select""... $ac_c" 1>&6
echo "configure:3310: checking fd_set and sys/select" >&5
cat > conftest.$ac_ext <<EOF
#line 3312 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
fd_set readMask, writeMask;
; return 0; }
EOF
if { (eval echo configure:3319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tk_ok=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tk_ok=no
fi
rm -f conftest*
if test $tk_ok = no; then
    cat > conftest.$ac_ext <<EOF
#line 3331 "configure"
#include "confdefs.h"
#include <sys/select.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "fd_mask" >/dev/null 2>&1; then
  rm -rf conftest*
  tk_ok=yes
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093

#--------------------------------------------------------------------
# Check for various typedefs and provide substitutes if
# they don't exist.
#--------------------------------------------------------------------

echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:3007: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3012 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  ac_cv_header_stdc=yes
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  ac_cv_header_stdc=no
fi
rm -f conftest*

if test $ac_cv_header_stdc = yes; then
  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 3037 "configure"
#include "confdefs.h"
#include <string.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "memchr" >/dev/null 2>&1; then
  :
else
  rm -rf conftest*
  ac_cv_header_stdc=no
fi
rm -f conftest*

fi

if test $ac_cv_header_stdc = yes; then
  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 3055 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "free" >/dev/null 2>&1; then
  :
else
  rm -rf conftest*
  ac_cv_header_stdc=no
fi
rm -f conftest*

fi

if test $ac_cv_header_stdc = yes; then
  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
if test "$cross_compiling" = yes; then
  :
else
  cat > conftest.$ac_ext <<EOF
#line 3076 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int main () { int i; for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }

EOF
if { (eval echo configure:3087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  :
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -fr conftest*
  ac_cv_header_stdc=no







|




|







|
















|

















|




















|










|







3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449

#--------------------------------------------------------------------
# Check for various typedefs and provide substitutes if
# they don't exist.
#--------------------------------------------------------------------

echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:3363: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3368 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3376: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  ac_cv_header_stdc=yes
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  ac_cv_header_stdc=no
fi
rm -f conftest*

if test $ac_cv_header_stdc = yes; then
  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 3393 "configure"
#include "confdefs.h"
#include <string.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "memchr" >/dev/null 2>&1; then
  :
else
  rm -rf conftest*
  ac_cv_header_stdc=no
fi
rm -f conftest*

fi

if test $ac_cv_header_stdc = yes; then
  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 3411 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "free" >/dev/null 2>&1; then
  :
else
  rm -rf conftest*
  ac_cv_header_stdc=no
fi
rm -f conftest*

fi

if test $ac_cv_header_stdc = yes; then
  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
if test "$cross_compiling" = yes; then
  :
else
  cat > conftest.$ac_ext <<EOF
#line 3432 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int main () { int i; for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }

EOF
if { (eval echo configure:3443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  :
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -fr conftest*
  ac_cv_header_stdc=no
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
  cat >> confdefs.h <<\EOF
#define STDC_HEADERS 1
EOF

fi

echo $ac_n "checking for mode_t""... $ac_c" 1>&6
echo "configure:3111: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3116 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF







|




|







3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
  cat >> confdefs.h <<\EOF
#define STDC_HEADERS 1
EOF

fi

echo $ac_n "checking for mode_t""... $ac_c" 1>&6
echo "configure:3467: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3472 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
  cat >> confdefs.h <<\EOF
#define mode_t int
EOF

fi

echo $ac_n "checking for pid_t""... $ac_c" 1>&6
echo "configure:3144: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3149 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF







|




|







3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
  cat >> confdefs.h <<\EOF
#define mode_t int
EOF

fi

echo $ac_n "checking for pid_t""... $ac_c" 1>&6
echo "configure:3500: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3505 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
  cat >> confdefs.h <<\EOF
#define pid_t int
EOF

fi

echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:3177: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3182 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF







|




|







3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
  cat >> confdefs.h <<\EOF
#define pid_t int
EOF

fi

echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:3533: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3538 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
#include <stdlib.h>
#include <stddef.h>
#endif
EOF
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
  cat >> confdefs.h <<\EOF
#define size_t unsigned
EOF

fi

echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
echo "configure:3210: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3215 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "uid_t" >/dev/null 2>&1; then
  rm -rf conftest*
  ac_cv_type_uid_t=yes







|




|







3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
  cat >> confdefs.h <<\EOF
#define size_t unsigned
EOF

fi

echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
echo "configure:3566: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3571 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
  egrep "uid_t" >/dev/null 2>&1; then
  rm -rf conftest*
  ac_cv_type_uid_t=yes
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
#       Find out about time handling differences.
#------------------------------------------------------------------------------

for ac_hdr in sys/time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:3252: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3257 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5







|




|




|







3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
#       Find out about time handling differences.
#------------------------------------------------------------------------------

for ac_hdr in sys/time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:3608: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3613 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3618: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  eval "ac_cv_header_$ac_safe=yes"
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
 
else
  echo "$ac_t""no" 1>&6
fi
done

echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
echo "configure:3289: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3294 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
int main() {
struct tm *tp;
; return 0; }
EOF
if { (eval echo configure:3303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  ac_cv_header_time=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  ac_cv_header_time=no







|




|








|







3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
 
else
  echo "$ac_t""no" 1>&6
fi
done

echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
echo "configure:3645: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3650 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
int main() {
struct tm *tp;
; return 0; }
EOF
if { (eval echo configure:3659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  ac_cv_header_time=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  ac_cv_header_time=no
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344


#-------------------------------------------
#     In OS/390 struct pwd has no pw_gecos field
#-------------------------------------------

echo $ac_n "checking pw_gecos in struct pwd""... $ac_c" 1>&6
echo "configure:3329: checking pw_gecos in struct pwd" >&5
cat > conftest.$ac_ext <<EOF
#line 3331 "configure"
#include "confdefs.h"
#include <pwd.h>
int main() {
struct passwd pwd; pwd.pw_gecos;
; return 0; }
EOF
if { (eval echo configure:3338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tk_ok=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tk_ok=no







|

|






|







3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700


#-------------------------------------------
#     In OS/390 struct pwd has no pw_gecos field
#-------------------------------------------

echo $ac_n "checking pw_gecos in struct pwd""... $ac_c" 1>&6
echo "configure:3685: checking pw_gecos in struct pwd" >&5
cat > conftest.$ac_ext <<EOF
#line 3687 "configure"
#include "confdefs.h"
#include <pwd.h>
int main() {
struct passwd pwd; pwd.pw_gecos;
; return 0; }
EOF
if { (eval echo configure:3694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
  rm -rf conftest*
  tk_ok=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  tk_ok=no
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377


    # If we find X, set shell vars x_includes and x_libraries to the
# paths, otherwise set no_x=yes.
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
echo "configure:3371: checking for X" >&5

# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
  withval="$with_x"
  :
fi








|







3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733


    # If we find X, set shell vars x_includes and x_libraries to the
# paths, otherwise set no_x=yes.
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
echo "configure:3727: checking for X" >&5

# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
  withval="$with_x"
  :
fi

3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444

if test "$ac_x_includes" = NO; then
  # Guess where to find include files, by looking for this one X11 .h file.
  test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h

  # First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
#line 3433 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  # We can compile using X headers with no special include directory.
ac_x_includes=
else
  echo "$ac_err" >&5







|




|







3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800

if test "$ac_x_includes" = NO; then
  # Guess where to find include files, by looking for this one X11 .h file.
  test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h

  # First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
#line 3789 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3794: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  rm -rf conftest*
  # We can compile using X headers with no special include directory.
ac_x_includes=
else
  echo "$ac_err" >&5
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
  test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc

  # See if we find them without any special options.
  # Don't add to $LIBS permanently.
  ac_save_LIBS="$LIBS"
  LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3507 "configure"
#include "confdefs.h"

int main() {
${x_direct_test_function}()
; return 0; }
EOF
if { (eval echo configure:3514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
ac_x_libraries=
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5







|






|







3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
  test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc

  # See if we find them without any special options.
  # Don't add to $LIBS permanently.
  ac_save_LIBS="$LIBS"
  LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3863 "configure"
#include "confdefs.h"

int main() {
${x_direct_test_function}()
; return 0; }
EOF
if { (eval echo configure:3870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
ac_x_libraries=
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
  echo "$ac_t""libraries $x_libraries, headers $x_includes" 1>&6
fi

    not_really_there=""
    if test "$no_x" = ""; then
	if test "$x_includes" = ""; then
	    cat > conftest.$ac_ext <<EOF
#line 3604 "configure"
#include "confdefs.h"
#include <X11/XIntrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  :
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  not_really_there="yes"
fi
rm -f conftest*
	else
	    if test ! -r $x_includes/X11/Intrinsic.h; then
		not_really_there="yes"
	    fi
	fi
    fi
    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
	echo $ac_n "checking for X11 header files""... $ac_c" 1>&6
echo "configure:3629: checking for X11 header files" >&5
	XINCLUDES="# no special path needed"
	cat > conftest.$ac_ext <<EOF
#line 3632 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  :
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5







|




|



















|


|




|







3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
  echo "$ac_t""libraries $x_libraries, headers $x_includes" 1>&6
fi

    not_really_there=""
    if test "$no_x" = ""; then
	if test "$x_includes" = ""; then
	    cat > conftest.$ac_ext <<EOF
#line 3960 "configure"
#include "confdefs.h"
#include <X11/XIntrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3965: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  :
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  not_really_there="yes"
fi
rm -f conftest*
	else
	    if test ! -r $x_includes/X11/Intrinsic.h; then
		not_really_there="yes"
	    fi
	fi
    fi
    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
	echo $ac_n "checking for X11 header files""... $ac_c" 1>&6
echo "configure:3985: checking for X11 header files" >&5
	XINCLUDES="# no special path needed"
	cat > conftest.$ac_ext <<EOF
#line 3988 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:3993: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
  :
else
  echo "$ac_err" >&5
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
    if test "$XINCLUDES" = nope; then
	echo "$ac_t""couldn't find any!" 1>&6
	XINCLUDES="# no include files found"
    fi

    if test "$no_x" = yes; then
	echo $ac_n "checking for X11 libraries""... $ac_c" 1>&6
echo "configure:3673: checking for X11 libraries" >&5
	XLIBSW=nope
	dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
	for i in $dirs ; do
	    if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
		echo "$ac_t""$i" 1>&6
		XLIBSW="-L$i -lX11"
		x_libraries="$i"
		break
	    fi
	done
    else
	if test "$x_libraries" = ""; then
	    XLIBSW=-lX11
	else
	    XLIBSW="-L$x_libraries -lX11"
	fi
    fi
    if test "$XLIBSW" = nope ; then
	echo $ac_n "checking for XCreateWindow in -lXwindow""... $ac_c" 1>&6
echo "configure:3693: checking for XCreateWindow in -lXwindow" >&5
ac_lib_var=`echo Xwindow'_'XCreateWindow | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lXwindow  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3701 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char XCreateWindow();

int main() {
XCreateWindow()
; return 0; }
EOF
if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|



















|







|










|







4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
    if test "$XINCLUDES" = nope; then
	echo "$ac_t""couldn't find any!" 1>&6
	XINCLUDES="# no include files found"
    fi

    if test "$no_x" = yes; then
	echo $ac_n "checking for X11 libraries""... $ac_c" 1>&6
echo "configure:4029: checking for X11 libraries" >&5
	XLIBSW=nope
	dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
	for i in $dirs ; do
	    if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
		echo "$ac_t""$i" 1>&6
		XLIBSW="-L$i -lX11"
		x_libraries="$i"
		break
	    fi
	done
    else
	if test "$x_libraries" = ""; then
	    XLIBSW=-lX11
	else
	    XLIBSW="-L$x_libraries -lX11"
	fi
    fi
    if test "$XLIBSW" = nope ; then
	echo $ac_n "checking for XCreateWindow in -lXwindow""... $ac_c" 1>&6
echo "configure:4049: checking for XCreateWindow in -lXwindow" >&5
ac_lib_var=`echo Xwindow'_'XCreateWindow | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lXwindow  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4057 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char XCreateWindow();

int main() {
XCreateWindow()
; return 0; }
EOF
if { (eval echo configure:4068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
#	   bogus:  they goof up name resolution if used.
#	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
#	   To get around this problem, check for both libraries together
#	   if -lsocket doesn't work by itself.
#--------------------------------------------------------------------

echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
echo "configure:3797: checking for main in -lXbsd" >&5
ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lXbsd  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3805 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:3812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|






|







4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
#	   bogus:  they goof up name resolution if used.
#	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
#	   To get around this problem, check for both libraries together
#	   if -lsocket doesn't work by itself.
#--------------------------------------------------------------------

echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
echo "configure:4153: checking for main in -lXbsd" >&5
ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lXbsd  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4161 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:4168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
else
  echo "$ac_t""no" 1>&6
fi


tk_checkBoth=0
echo $ac_n "checking for connect""... $ac_c" 1>&6
echo "configure:3835: checking for connect" >&5
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3840 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char connect(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */







|




|







4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
else
  echo "$ac_t""no" 1>&6
fi


tk_checkBoth=0
echo $ac_n "checking for connect""... $ac_c" 1>&6
echo "configure:4191: checking for connect" >&5
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 4196 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char connect(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
choke me
#else
connect();
#endif

; return 0; }
EOF
if { (eval echo configure:3863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_connect=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_connect=no"







|







4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
choke me
#else
connect();
#endif

; return 0; }
EOF
if { (eval echo configure:4219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_connect=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_connect=no"
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
else
  echo "$ac_t""no" 1>&6
tk_checkSocket=1
fi

if test "$tk_checkSocket" = 1; then
    echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
echo "configure:3885: checking for main in -lsocket" >&5
ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lsocket  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 3893 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:3900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|







|






|







4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
else
  echo "$ac_t""no" 1>&6
tk_checkSocket=1
fi

if test "$tk_checkSocket" = 1; then
    echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
echo "configure:4241: checking for main in -lsocket" >&5
ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lsocket  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4249 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:4256: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
fi

fi
if test "$tk_checkBoth" = 1; then
    tk_oldLibs=$LIBS
    LIBS="$LIBS -lsocket -lnsl"
    echo $ac_n "checking for accept""... $ac_c" 1>&6
echo "configure:3926: checking for accept" >&5
if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3931 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char accept(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */







|




|







4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
fi

fi
if test "$tk_checkBoth" = 1; then
    tk_oldLibs=$LIBS
    LIBS="$LIBS -lsocket -lnsl"
    echo $ac_n "checking for accept""... $ac_c" 1>&6
echo "configure:4282: checking for accept" >&5
if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 4287 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char accept(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
choke me
#else
accept();
#endif

; return 0; }
EOF
if { (eval echo configure:3954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_accept=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_accept=no"







|







4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
choke me
#else
accept();
#endif

; return 0; }
EOF
if { (eval echo configure:4310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_accept=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_accept=no"
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
else
  echo "$ac_t""no" 1>&6
LIBS=$tk_oldLibs
fi

fi
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
echo "configure:3976: checking for gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 3981 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char gethostbyname(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */







|




|







4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
else
  echo "$ac_t""no" 1>&6
LIBS=$tk_oldLibs
fi

fi
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
echo "configure:4332: checking for gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 4337 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char gethostbyname(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
choke me
#else
gethostbyname();
#endif

; return 0; }
EOF
if { (eval echo configure:4004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_gethostbyname=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_gethostbyname=no"
fi
rm -f conftest*
fi

if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
  echo "$ac_t""yes" 1>&6
  :
else
  echo "$ac_t""no" 1>&6
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
echo "configure:4022: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lnsl  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4030 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:4037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|

















|







|






|







4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
choke me
#else
gethostbyname();
#endif

; return 0; }
EOF
if { (eval echo configure:4360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_gethostbyname=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_gethostbyname=no"
fi
rm -f conftest*
fi

if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
  echo "$ac_t""yes" 1>&6
  :
else
  echo "$ac_t""no" 1>&6
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
echo "configure:4378: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lnsl  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4386 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:4393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
#
# Note: can't use ac_check_lib macro (at least, not in Autoconf 2.1)
# because it can't deal with the "-" in the library name.
#--------------------------------------------------------------------

if test -d /usr/include/mit ; then
    echo $ac_n "checking MIT X libraries""... $ac_c" 1>&6
echo "configure:4077: checking MIT X libraries" >&5
    tk_oldCFlags=$CFLAGS
    CFLAGS="$CFLAGS -I/usr/include/mit"
    tk_oldLibs=$LIBS
    LIBS="$LIBS -lX11-mit"
    cat > conftest.$ac_ext <<EOF
#line 4083 "configure"
#include "confdefs.h"

	#include <X11/Xlib.h>
    
int main() {

	XOpenDisplay(0);
    
; return 0; }
EOF
if { (eval echo configure:4094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  
	echo "$ac_t""yes" 1>&6
	XLIBSW="-lX11-mit"
	XINCLUDES="-I/usr/include/mit"
    
else







|





|










|







4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
#
# Note: can't use ac_check_lib macro (at least, not in Autoconf 2.1)
# because it can't deal with the "-" in the library name.
#--------------------------------------------------------------------

if test -d /usr/include/mit ; then
    echo $ac_n "checking MIT X libraries""... $ac_c" 1>&6
echo "configure:4433: checking MIT X libraries" >&5
    tk_oldCFlags=$CFLAGS
    CFLAGS="$CFLAGS -I/usr/include/mit"
    tk_oldLibs=$LIBS
    LIBS="$LIBS -lX11-mit"
    cat > conftest.$ac_ext <<EOF
#line 4439 "configure"
#include "confdefs.h"

	#include <X11/Xlib.h>
    
int main() {

	XOpenDisplay(0);
    
; return 0; }
EOF
if { (eval echo configure:4450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  
	echo "$ac_t""yes" 1>&6
	XLIBSW="-lX11-mit"
	XINCLUDES="-I/usr/include/mit"
    
else
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
#	already in libc.a.  Set compiler flags accordingly.
#	Also, Linux requires the "ieee" library for math to
#	work right (and it must appear before "-lm").
#--------------------------------------------------------------------

MATH_LIBS=""
echo $ac_n "checking for sin""... $ac_c" 1>&6
echo "configure:4121: checking for sin" >&5
if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 4126 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char sin(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */







|




|







4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
#	already in libc.a.  Set compiler flags accordingly.
#	Also, Linux requires the "ieee" library for math to
#	work right (and it must appear before "-lm").
#--------------------------------------------------------------------

MATH_LIBS=""
echo $ac_n "checking for sin""... $ac_c" 1>&6
echo "configure:4477: checking for sin" >&5
if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 4482 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char sin(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
choke me
#else
sin();
#endif

; return 0; }
EOF
if { (eval echo configure:4149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_sin=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_sin=no"
fi
rm -f conftest*
fi

if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then
  echo "$ac_t""yes" 1>&6
  :
else
  echo "$ac_t""no" 1>&6
MATH_LIBS="-lm"
fi

echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6
echo "configure:4170: checking for main in -lieee" >&5
ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lieee  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4178 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:4185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"







|




















|







|






|







4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
choke me
#else
sin();
#endif

; return 0; }
EOF
if { (eval echo configure:4505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_sin=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_sin=no"
fi
rm -f conftest*
fi

if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then
  echo "$ac_t""yes" 1>&6
  :
else
  echo "$ac_t""no" 1>&6
MATH_LIBS="-lm"
fi

echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6
echo "configure:4526: checking for main in -lieee" >&5
ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  ac_save_LIBS="$LIBS"
LIBS="-lieee  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4534 "configure"
#include "confdefs.h"

int main() {
main()
; return 0; }
EOF
if { (eval echo configure:4541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_lib_$ac_lib_var=no"
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225

#--------------------------------------------------------------------
#	Figure out whether "char" is unsigned.  If so, set a
#	#define for __CHAR_UNSIGNED__.
#--------------------------------------------------------------------

echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
echo "configure:4212: checking whether char is unsigned" >&5
if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  if test "$GCC" = yes; then
  # GCC predefines this symbol on systems where it applies.
cat > conftest.$ac_ext <<EOF
#line 4219 "configure"
#include "confdefs.h"
#ifdef __CHAR_UNSIGNED__
  yes
#endif

EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |







|






|







4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581

#--------------------------------------------------------------------
#	Figure out whether "char" is unsigned.  If so, set a
#	#define for __CHAR_UNSIGNED__.
#--------------------------------------------------------------------

echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
echo "configure:4568: checking whether char is unsigned" >&5
if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  if test "$GCC" = yes; then
  # GCC predefines this symbol on systems where it applies.
cat > conftest.$ac_ext <<EOF
#line 4575 "configure"
#include "confdefs.h"
#ifdef __CHAR_UNSIGNED__
  yes
#endif

EOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
rm -f conftest*

else
if test "$cross_compiling" = yes; then
    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
  cat > conftest.$ac_ext <<EOF
#line 4241 "configure"
#include "confdefs.h"
/* volatile prevents gcc2 from optimizing the test away on sparcs.  */
#if !defined(__STDC__) || __STDC__ != 1
#define volatile
#endif
main() {
  volatile char c = 255; exit(c < 0);
}
EOF
if { (eval echo configure:4251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  ac_cv_c_char_unsigned=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -fr conftest*
  ac_cv_c_char_unsigned=no







|









|







4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
rm -f conftest*

else
if test "$cross_compiling" = yes; then
    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
  cat > conftest.$ac_ext <<EOF
#line 4597 "configure"
#include "confdefs.h"
/* volatile prevents gcc2 from optimizing the test away on sparcs.  */
#if !defined(__STDC__) || __STDC__ != 1
#define volatile
#endif
main() {
  volatile char c = 255; exit(c < 0);
}
EOF
if { (eval echo configure:4607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  ac_cv_c_char_unsigned=yes
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -fr conftest*
  ac_cv_c_char_unsigned=no
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
#	terminating character under some conditions.  Check for this
#	and if the problem exists use a substitute procedure
#	"fixstrtod" (provided by Tcl) that corrects the error.
#--------------------------------------------------------------------


    echo $ac_n "checking for strtod""... $ac_c" 1>&6
echo "configure:4284: checking for strtod" >&5
if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 4289 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char strtod(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */







|




|







4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
#	terminating character under some conditions.  Check for this
#	and if the problem exists use a substitute procedure
#	"fixstrtod" (provided by Tcl) that corrects the error.
#--------------------------------------------------------------------


    echo $ac_n "checking for strtod""... $ac_c" 1>&6
echo "configure:4640: checking for strtod" >&5
if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then
  echo $ac_n "(cached) $ac_c" 1>&6
else
  cat > conftest.$ac_ext <<EOF
#line 4645 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char strtod(); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
choke me
#else
strtod();
#endif

; return 0; }
EOF
if { (eval echo configure:4312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_strtod=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_strtod=no"







|







4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
choke me
#else
strtod();
#endif

; return 0; }
EOF
if { (eval echo configure:4668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
  rm -rf conftest*
  eval "ac_cv_func_strtod=yes"
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -rf conftest*
  eval "ac_cv_func_strtod=no"
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
else
  echo "$ac_t""no" 1>&6
tcl_strtod=0
fi

    if test "$tcl_strtod" = 1; then
	echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6
echo "configure:4334: checking for Solaris2.4/Tru64 strtod bugs" >&5
	if test "$cross_compiling" = yes; then
  tcl_ok=0
else
  cat > conftest.$ac_ext <<EOF
#line 4339 "configure"
#include "confdefs.h"

	    extern double strtod();
	    int main()
	    {
		char *string = "NaN", *spaceString = " ";
		char *term;
		double value;
		value = strtod(string, &term);
		if ((term != string) && (term[-1] == 0)) {
		    exit(1);
		}
		value = strtod(spaceString, &term);
		if (term == (spaceString+1)) {
		    exit(1);
		}
		exit(0);
	    }
EOF
if { (eval echo configure:4359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  tcl_ok=1
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -fr conftest*
  tcl_ok=0







|




|



















|







4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
else
  echo "$ac_t""no" 1>&6
tcl_strtod=0
fi

    if test "$tcl_strtod" = 1; then
	echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6
echo "configure:4690: checking for Solaris2.4/Tru64 strtod bugs" >&5
	if test "$cross_compiling" = yes; then
  tcl_ok=0
else
  cat > conftest.$ac_ext <<EOF
#line 4695 "configure"
#include "confdefs.h"

	    extern double strtod();
	    int main()
	    {
		char *string = "NaN", *spaceString = " ";
		char *term;
		double value;
		value = strtod(string, &term);
		if ((term != string) && (term[-1] == 0)) {
		    exit(1);
		}
		value = strtod(spaceString, &term);
		if (term == (spaceString+1)) {
		    exit(1);
		}
		exit(0);
	    }
EOF
if { (eval echo configure:4715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
  tcl_ok=1
else
  echo "configure: failed program was:" >&5
  cat conftest.$ac_ext >&5
  rm -fr conftest*
  tcl_ok=0
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
    fi


#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtk as a shared library instead of a static library.
#--------------------------------------------------------------------


    echo $ac_n "checking how to build libraries""... $ac_c" 1>&6
echo "configure:4391: checking how to build libraries" >&5
    # Check whether --enable-shared or --disable-shared was given.
if test "${enable_shared+set}" = set; then
  enableval="$enable_shared"
  tcl_ok=$enableval
else
  tcl_ok=yes
fi


    if test "${enable_shared+set}" = set; then
	enableval="$enable_shared"
	tcl_ok=$enableval
    else
	tcl_ok=yes
    fi

    if test "$tcl_ok" = "yes" ; then
	echo "$ac_t""shared" 1>&6
	SHARED_BUILD=1
    else
	echo "$ac_t""static" 1>&6
	SHARED_BUILD=0
	cat >> confdefs.h <<\EOF
#define STATIC_BUILD 1
EOF

    fi


eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"

if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
    TK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
    TK_LIB_FILE=libtk${TK_SHARED_LIB_SUFFIX}







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







4736
4737
4738
4739
4740
4741
4742
































4743
4744
4745
4746
4747
4748
4749
    fi


#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtk as a shared library instead of a static library.
#--------------------------------------------------------------------

































eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"

if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
    TK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
    TK_LIB_FILE=libtk${TK_SHARED_LIB_SUFFIX}
Changes to unix/configure.in.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/bash -norc
dnl	This file is an input file used by the GNU "autoconf" program to
dnl	generate the file "configure", which is run during Tk installation
dnl	to configure the system for the local environment.
#
# RCS: @(#) $Id: configure.in,v 1.63.2.1 2002/02/05 02:25:18 wolfsuit Exp $

AC_INIT(../generic/tk.h)

TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a4"
VERSION=${TK_VERSION}
LOCALES="de en es fr"

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------






|






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/bash -norc
dnl	This file is an input file used by the GNU "autoconf" program to
dnl	generate the file "configure", which is run during Tk installation
dnl	to configure the system for the local environment.
#
# RCS: @(#) $Id: configure.in,v 1.63.2.2 2002/06/10 05:38:27 wolfsuit Exp $

AC_INIT(../generic/tk.h)

TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a5"
VERSION=${TK_VERSION}
LOCALES="de en es fr"

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------

67
68
69
70
71
72
73








74
75
76
77
78
79
80
81
82
83
84


85
86
87
88
89
90
91
  CC="$CC -pipe"
  AC_TRY_COMPILE(,,
    AC_MSG_RESULT(yes),
    CC="$OLDCC"
    AC_MSG_RESULT(no))
fi  
fi









#--------------------------------------------------------------------
# Find and load the tclConfig.sh file
#--------------------------------------------------------------------

SC_PATH_TCLCONFIG
SC_LOAD_TCLCONFIG

#--------------------------------------------------------------------
# Recompute the necessary flags to run the compiler
#--------------------------------------------------------------------



SC_CONFIG_CFLAGS

SC_ENABLE_SYMBOLS

LIB_RUNTIME_DIR='${LIB_RUNTIME_DIR}'








>
>
>
>
>
>
>
>











>
>







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
  CC="$CC -pipe"
  AC_TRY_COMPILE(,,
    AC_MSG_RESULT(yes),
    CC="$OLDCC"
    AC_MSG_RESULT(no))
fi  
fi

#--------------------------------------------------------------------
#	Detect what compiler flags to set for 64-bit support.
#--------------------------------------------------------------------

SC_TCL_EARLY_FLAGS

SC_TCL_64BIT_FLAGS

#--------------------------------------------------------------------
# Find and load the tclConfig.sh file
#--------------------------------------------------------------------

SC_PATH_TCLCONFIG
SC_LOAD_TCLCONFIG

#--------------------------------------------------------------------
# Recompute the necessary flags to run the compiler
#--------------------------------------------------------------------

SC_ENABLE_SHARED

SC_CONFIG_CFLAGS

SC_ENABLE_SYMBOLS

LIB_RUNTIME_DIR='${LIB_RUNTIME_DIR}'

336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
SC_BUGGY_STRTOD

#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtk as a shared library instead of a static library.
#--------------------------------------------------------------------

SC_ENABLE_SHARED

eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"

if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
    TK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
    TK_LIB_FILE=libtk${TK_SHARED_LIB_SUFFIX}
    MAKE_LIB="\${SHLIB_LD} -o \[$]@ \${OBJS} \$(TK_LD_SEARCH_FLAGS) \${TCL_STUB_LIB_SPEC} \${SHLIB_LD_LIBS}"







<
<







346
347
348
349
350
351
352


353
354
355
356
357
358
359
SC_BUGGY_STRTOD

#--------------------------------------------------------------------
#	The statements below define a collection of symbols related to
#	building libtk as a shared library instead of a static library.
#--------------------------------------------------------------------



eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"

if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
    TK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
    TK_LIB_FILE=libtk${TK_SHARED_LIB_SUFFIX}
    MAKE_LIB="\${SHLIB_LD} -o \[$]@ \${OBJS} \$(TK_LD_SEARCH_FLAGS) \${TCL_STUB_LIB_SPEC} \${SHLIB_LD_LIBS}"
Changes to unix/tcl.m4.
361
362
363
364
365
366
367



368
369
370
371
372
373
374
    AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
	[tcl_ok=$enableval], [tcl_ok=no])

    if test "$tcl_ok" = "yes"; then
	AC_MSG_RESULT(yes)
	TCL_THREADS=1
	AC_DEFINE(TCL_THREADS)



	AC_DEFINE(_REENTRANT)
	AC_DEFINE(_THREAD_SAFE)
	AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
	if test "$tcl_ok" = "no"; then
	    # Check a little harder for __pthread_mutex_init in the same
	    # library, as some systems hide it there until pthread.h is
	    # defined.  We could alternatively do an AC_TRY_COMPILE with







>
>
>







361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
    AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
	[tcl_ok=$enableval], [tcl_ok=no])

    if test "$tcl_ok" = "yes"; then
	AC_MSG_RESULT(yes)
	TCL_THREADS=1
	AC_DEFINE(TCL_THREADS)
	# USE_THREAD_ALLOC tells us to try the special thread-based
	# allocator that significantly reduces lock contention
	AC_DEFINE(USE_THREAD_ALLOC)
	AC_DEFINE(_REENTRANT)
	AC_DEFINE(_THREAD_SAFE)
	AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
	if test "$tcl_ok" = "no"; then
	    # Check a little harder for __pthread_mutex_init in the same
	    # library, as some systems hide it there until pthread.h is
	    # defined.  We could alternatively do an AC_TRY_COMPILE with
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
#                       The name of the built export / import file which
#                       should be used to link to the Tcl shared library.
#                       Empty if Tcl is unshared.
#	CFLAGS_DEBUG -
#			Flags used when running the compiler in debug mode
#	CFLAGS_OPTIMIZE -
#			Flags used when running the compiler in optimize mode
#
#	EXTRA_CFLAGS
#
#	Subst's the following vars:
#		DL_LIBS
#		CFLAGS_DEBUG
#		CFLAGS_OPTIMIZE
#--------------------------------------------------------------------







<







574
575
576
577
578
579
580

581
582
583
584
585
586
587
#                       The name of the built export / import file which
#                       should be used to link to the Tcl shared library.
#                       Empty if Tcl is unshared.
#	CFLAGS_DEBUG -
#			Flags used when running the compiler in debug mode
#	CFLAGS_OPTIMIZE -
#			Flags used when running the compiler in optimize mode

#	EXTRA_CFLAGS
#
#	Subst's the following vars:
#		DL_LIBS
#		CFLAGS_DEBUG
#		CFLAGS_OPTIMIZE
#--------------------------------------------------------------------
691
692
693
694
695
696
697

698
699
700
701
702
703
704
	    LDFLAGS=""
	    if test "$GCC" = "yes" ; then
		LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
	    else
		LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
	    fi


	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    AC_MSG_WARN("64bit mode not supported with GCC on $system")
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="-q64"
		    LDFLAGS="-q64"







>







693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
	    LDFLAGS=""
	    if test "$GCC" = "yes" ; then
		LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
	    else
		LD_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
	    fi

	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    AC_MSG_WARN("64bit mode not supported with GCC on $system")
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="-q64"
		    LDFLAGS="-q64"
744
745
746
747
748
749
750











751
752
753
754
755
756
757
	    # known GMT value.

	    AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
	    if test $libbsd = yes; then
	    	MATH_LIBS="$MATH_LIBS -lbsd"
	    	AC_DEFINE(USE_DELTA_FOR_TZ)
	    fi











	    ;;
	BSD/OS-2.1*|BSD/OS-3*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="shlicc -r"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"







>
>
>
>
>
>
>
>
>
>
>







747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
	    # known GMT value.

	    AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
	    if test $libbsd = yes; then
	    	MATH_LIBS="$MATH_LIBS -lbsd"
	    	AC_DEFINE(USE_DELTA_FOR_TZ)
	    fi

	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    AC_MSG_WARN("64bit mode not supported with GCC on $system")
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="-q64"
		    LDFLAGS="-q64"
		fi
	    fi
	    ;;
	BSD/OS-2.1*|BSD/OS-3*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="shlicc -r"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
776
777
778
779
780
781
782



783
784
785
786
787
788
789
790
791
792
793


794
795
796
797
798
799
800
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS="-ldl"
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	HP-UX-*.11.*)



	    SHLIB_SUFFIX=".sl"
	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
	    if test "$tcl_ok" = yes; then
		SHLIB_CFLAGS="+z"
		SHLIB_LD="ld -b"
		SHLIB_LD_LIBS=""
		DL_OBJS="tclLoadShl.o"
		DL_LIBS="-ldld"
		LDFLAGS="-Wl,-E"
		LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
	    fi


	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    AC_MSG_WARN("64bit mode not supported with GCC on $system")
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="+DA2.0W"
		    LDFLAGS="+DA2.0W $LDFLAGS"







>
>
>





|





>
>







790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS="-ldl"
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	HP-UX-*.11.*)
	    # Use updated header definitions where possible
	    AC_DEFINE(_XOPEN_SOURCE_EXTENDED)

	    SHLIB_SUFFIX=".sl"
	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
	    if test "$tcl_ok" = yes; then
		SHLIB_CFLAGS="+z"
		SHLIB_LD="ld -b"
		SHLIB_LD_LIBS='${LIBS}'
		DL_OBJS="tclLoadShl.o"
		DL_LIBS="-ldld"
		LDFLAGS="-Wl,-E"
		LD_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
	    fi

	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		if test "$GCC" = "yes" ; then
		    AC_MSG_WARN("64bit mode not supported with GCC on $system")
		else 
		    do64bit_ok=yes
		    EXTRA_CFLAGS="+DA2.0W"
		    LDFLAGS="+DA2.0W $LDFLAGS"
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
			;;
		esac
		LDFLAGS="-n32"
	    fi
	    ;;
	IRIX64-6.*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="ld -32 -shared -rdata_shared"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    ;;







|







877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
			;;
		esac
		LDFLAGS="-n32"
	    fi
	    ;;
	IRIX64-6.*)
	    SHLIB_CFLAGS=""
	    SHLIB_LD="ld -n32 -shared -rdata_shared"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    ;;
999
1000
1001
1002
1003
1004
1005
1006
1007





1008
1009
1010
1011
1012


1013
1014
1015
1016
1017
1018
1019
	    SHLIB_CFLAGS="-fPIC"
	    SHLIB_LD="ld -Bshareable -x"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS="-export-dynamic"
	    LD_SEARCH_FLAGS=""






	    # FreeBSD doesn't handle version numbers with dots.

	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
	    TCL_LIB_VERSIONS_OK=nodots


	    ;;
	Rhapsody-*|Darwin-*)
	    SHLIB_CFLAGS="-fno-common"
	    SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
	    TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_MAJOR_VERSION} -current_version \${VERSION} -install_name \${LIB_RUNTIME_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr a000000"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".dylib"







|
|
>
>
>
>
>
|
<
|
|
|
>
>







1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032

1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
	    SHLIB_CFLAGS="-fPIC"
	    SHLIB_LD="ld -Bshareable -x"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS="-export-dynamic"
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    if test "${TCL_THREADS}" = "1" ; then
		EXTRA_CFLAGS="-pthread"
	    	LDFLAGS="$LDFLAGS -pthread"
	    fi
	    case $system in
	    FreeBSD-3.*)
	    	# FreeBSD-3 doesn't handle version numbers with dots.

	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
	    	TCL_LIB_VERSIONS_OK=nodots
		;;
	    esac
	    ;;
	Rhapsody-*|Darwin-*)
	    SHLIB_CFLAGS="-fno-common"
	    SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
	    TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_MAJOR_VERSION} -current_version \${VERSION} -install_name \${LIB_RUNTIME_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr a000000"
	    SHLIB_LD_LIBS='${LIBS}'
	    SHLIB_SUFFIX=".dylib"
1049
1050
1051
1052
1053
1054
1055

1056



1057
1058
1059
1060
1061
1062
1063
1064
1065
1066

1067



1068
1069
1070
1071
1072
1073
1074
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-1.*)
	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
	    SHLIB_CFLAGS="-fPIC"

	    SHLIB_LD="ld -shared"



	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-V*)
	    # Digital OSF/1
	    SHLIB_CFLAGS=""

	    SHLIB_LD='ld -shared -expect_unresolved "*"'



	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    if test "$GCC" != "yes" ; then







>
|
>
>
>










>
|
>
>
>







1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-1.*)
	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
	    SHLIB_CFLAGS="-fPIC"
	    if test "$SHARED_BUILD" = "1" ; then
	        SHLIB_LD="ld -shared"
	    else
	        SHLIB_LD="ld -non_shared"
	    fi
	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS=""
	    ;;
	OSF1-V*)
	    # Digital OSF/1
	    SHLIB_CFLAGS=""
	    if test "$SHARED_BUILD" = "1" ; then
	        SHLIB_LD='ld -shared -expect_unresolved "*"'
	    else
	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
	    fi
	    SHLIB_LD_LIBS=""
	    SHLIB_SUFFIX=".so"
	    DL_OBJS="tclLoadDl.o"
	    DL_LIBS=""
	    LDFLAGS=""
	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
	    if test "$GCC" != "yes" ; then
1160
1161
1162
1163
1164
1165
1166

1167
1168
1169
1170
1171
1172
1173
	    ;;
	SunOS-5.[[0-6]]*)

	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    AC_DEFINE(_REENTRANT)


	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"

	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
	    # symbols when dynamically loaded into tclsh.








>







1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
	    ;;
	SunOS-5.[[0-6]]*)

	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    AC_DEFINE(_REENTRANT)
	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)

	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"

	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
	    # symbols when dynamically loaded into tclsh.

1184
1185
1186
1187
1188
1189
1190

1191
1192
1193
1194
1195

1196
1197
1198
1199
1200
1201
1202
	    ;;
	SunOS-5*)

	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    AC_DEFINE(_REENTRANT)


	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"
	    LDFLAGS=""
    

	    if test "$do64bit" = "yes" ; then
		arch=`isainfo`
		if test "$arch" = "sparcv9 sparc" ; then
			if test "$GCC" = "yes" ; then
			    AC_MSG_WARN("64bit mode not supported with GCC on $system")
			else
			    do64bit_ok=yes







>





>







1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
	    ;;
	SunOS-5*)

	    # Note: If _REENTRANT isn't defined, then Solaris
	    # won't define thread-safe library routines.

	    AC_DEFINE(_REENTRANT)
	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)

	    SHLIB_CFLAGS="-KPIC"
	    SHLIB_LD="/usr/ccs/bin/ld -G -z text"
	    LDFLAGS=""
    
	    # Check to enable 64-bit flags for compiler/linker
	    if test "$do64bit" = "yes" ; then
		arch=`isainfo`
		if test "$arch" = "sparcv9 sparc" ; then
			if test "$GCC" = "yes" ; then
			    AC_MSG_WARN("64bit mode not supported with GCC on $system")
			else
			    do64bit_ok=yes
1411
1412
1413
1414
1415
1416
1417
1418


1419
1420
1421
1422
1423
1424
1425

1426
1427
1428
1429
1430
1431
1432

1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538


1539
1540
1541
1542
1543
1544
1545

1546
1547
1548
1549
1550
1551
1552
1553
])

#--------------------------------------------------------------------
# SC_SERIAL_PORT
#
#	Determine which interface to use to talk to the serial port.
#	Note that #include lines must begin in leftmost column for
#	some compilers to recognize them as preprocessor directives.


#
# Arguments:
#	none
#	
# Results:
#
#	Defines only one of the following vars:

#		USE_TERMIOS
#		USE_TERMIO
#		USE_SGTTY
#
#--------------------------------------------------------------------

AC_DEFUN(SC_SERIAL_PORT, [

    AC_MSG_CHECKING([termios vs. termio vs. sgtty])

    AC_TRY_RUN([
#include <termios.h>

main()
{
    struct termios t;
    if (tcgetattr(0, &t) == 0) {
	cfsetospeed(&t, 0);
	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;
}], tk_ok=termios, tk_ok=no, tk_ok=no)

    if test $tk_ok = termios; then
	AC_DEFINE(USE_TERMIOS)
    else
	AC_TRY_RUN([
#include <termio.h>

main()
{
    struct termio t;
    if (ioctl(0, TCGETA, &t) == 0) {
	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;
    }], tk_ok=termio, tk_ok=no, tk_ok=no)

    if test $tk_ok = termio; then
	AC_DEFINE(USE_TERMIO)
    else
	AC_TRY_RUN([
#include <sgtty.h>

main()
{
    struct sgttyb t;
    if (ioctl(0, TIOCGETP, &t) == 0) {
	t.sg_ospeed = 0;
	t.sg_flags |= ODDP | EVENP | RAW;
	return 0;
    }
    return 1;
}], tk_ok=sgtty, tk_ok=none, tk_ok=none)

    if test $tk_ok = sgtty; then
	AC_DEFINE(USE_SGTTY)
    else
	AC_TRY_RUN([
#include <termios.h>
#include <errno.h>

main()
{
    struct termios t;
    if (tcgetattr(0, &t) == 0
	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
	cfsetospeed(&t, 0);
	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;
}], tk_ok=termios, tk_ok=no, tk_ok=no)

    if test $tk_ok = termios; then
	AC_DEFINE(USE_TERMIOS)
    else
	AC_TRY_RUN([
#include <termio.h>
#include <errno.h>

main()
{
    struct termio t;
    if (ioctl(0, TCGETA, &t) == 0
	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;
    }], tk_ok=termio, tk_ok=no, tk_ok=no)

    if test $tk_ok = termio; then
	AC_DEFINE(USE_TERMIO)
    else
	AC_TRY_RUN([
#include <sgtty.h>
#include <errno.h>

main()
{
    struct sgttyb t;
    if (ioctl(0, TIOCGETP, &t) == 0
	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
	t.sg_ospeed = 0;
	t.sg_flags |= ODDP | EVENP | RAW;
	return 0;
    }
    return 1;
}], tk_ok=sgtty, tk_ok=none, tk_ok=none)

    if test $tk_ok = sgtty; then


	AC_DEFINE(USE_SGTTY)
    fi
    fi
    fi
    fi
    fi
    fi

    AC_MSG_RESULT($tk_ok)
])

#--------------------------------------------------------------------
# SC_MISSING_POSIX_HEADERS
#
#	Supply substitutes for missing POSIX header files.  Special
#	notes:







|
>
>







>







>

|



|
<







<
|
|
<
<



|
<






|
|
|
<
<



|
<







|
|
|
<
<




|
<








|
|
|
<
<




|
<







|
|
|
<
<




|
<








|
|
|
>
>
|
<
<
<
<
<
<
>
|







1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478

1479
1480
1481
1482
1483
1484
1485

1486
1487


1488
1489
1490
1491

1492
1493
1494
1495
1496
1497
1498
1499
1500


1501
1502
1503
1504

1505
1506
1507
1508
1509
1510
1511
1512
1513
1514


1515
1516
1517
1518
1519

1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530


1531
1532
1533
1534
1535

1536
1537
1538
1539
1540
1541
1542
1543
1544
1545


1546
1547
1548
1549
1550

1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564






1565
1566
1567
1568
1569
1570
1571
1572
1573
])

#--------------------------------------------------------------------
# SC_SERIAL_PORT
#
#	Determine which interface to use to talk to the serial port.
#	Note that #include lines must begin in leftmost column for
#	some compilers to recognize them as preprocessor directives,
#	and some build environments have stdin not pointing at a
#	pseudo-terminal (usually /dev/null instead.)
#
# Arguments:
#	none
#	
# Results:
#
#	Defines only one of the following vars:
#		HAVE_SYS_MODEM_H
#		USE_TERMIOS
#		USE_TERMIO
#		USE_SGTTY
#
#--------------------------------------------------------------------

AC_DEFUN(SC_SERIAL_PORT, [
    AC_CHECK_HEADERS(sys/modem.h)
    AC_MSG_CHECKING([termios vs. termio vs. sgtty])
    AC_CACHE_VAL(tcl_cv_api_serial, [
    AC_TRY_RUN([
#include <termios.h>

int main() {

    struct termios t;
    if (tcgetattr(0, &t) == 0) {
	cfsetospeed(&t, 0);
	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;

}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
    if test $tcl_cv_api_serial = no ; then


	AC_TRY_RUN([
#include <termio.h>

int main() {

    struct termio t;
    if (ioctl(0, TCGETA, &t) == 0) {
	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;
}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
    fi
    if test $tcl_cv_api_serial = no ; then


	AC_TRY_RUN([
#include <sgtty.h>

int main() {

    struct sgttyb t;
    if (ioctl(0, TIOCGETP, &t) == 0) {
	t.sg_ospeed = 0;
	t.sg_flags |= ODDP | EVENP | RAW;
	return 0;
    }
    return 1;
}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
    fi
    if test $tcl_cv_api_serial = no ; then


	AC_TRY_RUN([
#include <termios.h>
#include <errno.h>

int main() {

    struct termios t;
    if (tcgetattr(0, &t) == 0
	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
	cfsetospeed(&t, 0);
	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;
}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
    fi
    if test $tcl_cv_api_serial = no; then


	AC_TRY_RUN([
#include <termio.h>
#include <errno.h>

int main() {

    struct termio t;
    if (ioctl(0, TCGETA, &t) == 0
	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
	return 0;
    }
    return 1;
    }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
    fi
    if test $tcl_cv_api_serial = no; then


	AC_TRY_RUN([
#include <sgtty.h>
#include <errno.h>

int main() {

    struct sgttyb t;
    if (ioctl(0, TIOCGETP, &t) == 0
	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
	t.sg_ospeed = 0;
	t.sg_flags |= ODDP | EVENP | RAW;
	return 0;
    }
    return 1;
}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
    fi])
    case $tcl_cv_api_serial in
	termios) AC_DEFINE(USE_TERMIOS);;
	termio)  AC_DEFINE(USE_TERMIO);;
	sgtty)   AC_DEFINE(USE_SGTTY);;






    esac
    AC_MSG_RESULT($tcl_cv_api_serial)
])

#--------------------------------------------------------------------
# SC_MISSING_POSIX_HEADERS
#
#	Supply substitutes for missing POSIX header files.  Special
#	notes:
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
#		HAVE_SYS_PARAM_H
#
#		HAVE_STRING_H ?
#
#--------------------------------------------------------------------

AC_DEFUN(SC_MISSING_POSIX_HEADERS, [

    AC_MSG_CHECKING(dirent.h)
    AC_TRY_LINK([#include <sys/types.h>
#include <dirent.h>], [
#ifndef _POSIX_SOURCE
#   ifdef __Lynx__
	/*
	 * Generate compilation error to make the test fail:  Lynx headers







<







1594
1595
1596
1597
1598
1599
1600

1601
1602
1603
1604
1605
1606
1607
#		HAVE_SYS_PARAM_H
#
#		HAVE_STRING_H ?
#
#--------------------------------------------------------------------

AC_DEFUN(SC_MISSING_POSIX_HEADERS, [

    AC_MSG_CHECKING(dirent.h)
    AC_TRY_LINK([#include <sys/types.h>
#include <dirent.h>], [
#ifndef _POSIX_SOURCE
#   ifdef __Lynx__
	/*
	 * Generate compilation error to make the test fail:  Lynx headers
1813
1814
1815
1816
1817
1818
1819

1820



1821
1822
1823

1824
1825

1826



1827
1828
1829

1830
1831
1832
1833
1834
1835
1836

1837
1838
1839
1840

1841

1842
1843
1844
1845
1846
1847
1848
1849
1850

1851
1852
1853
1854



1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
    AC_CHECK_HEADERS(sys/time.h)
    AC_HEADER_TIME
    AC_STRUCT_TIMEZONE

    AC_CHECK_FUNCS(gmtime_r localtime_r)

    AC_MSG_CHECKING([tm_tzadj in struct tm])

    AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],



	    [AC_DEFINE(HAVE_TM_TZADJ)
	    AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))


    AC_MSG_CHECKING([tm_gmtoff in struct tm])

    AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],



	    [AC_DEFINE(HAVE_TM_GMTOFF)
	    AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))


    #
    # Its important to include time.h in this check, as some systems
    # (like convex) have timezone functions, etc.
    #
    have_timezone=no
    AC_MSG_CHECKING([long timezone variable])

    AC_TRY_COMPILE([#include <time.h>],
	    [extern long timezone;
	    timezone += 1;
	    exit (0);],

	    [have_timezone=yes

	    AC_DEFINE(HAVE_TIMEZONE_VAR)
	    AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))

    #
    # On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
    #
    if test "$have_timezone" = no; then
    AC_MSG_CHECKING([time_t timezone variable])

    AC_TRY_COMPILE([#include <time.h>],
	    [extern time_t timezone;
	    timezone += 1;
	    exit (0);],



	    [AC_DEFINE(HAVE_TIMEZONE_VAR)
	    AC_MSG_RESULT(yes)],
	    AC_MSG_RESULT(no))
    fi

])

#--------------------------------------------------------------------
# SC_BUGGY_STRTOD
#
#	Under Solaris 2.4, strtod returns the wrong value for the
#	terminating character under some conditions.  Check for this







>
|
>
>
>
|
<
<
>


>
|
>
>
>
|
<
<
>





<

>
|



>
|
>
|
<
<
|
|
|
|
<
|
>
|
|
|
|
>
>
>
|
<
<
|
|







1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844


1845
1846
1847
1848
1849
1850
1851
1852
1853


1854
1855
1856
1857
1858
1859

1860
1861
1862
1863
1864
1865
1866
1867
1868
1869


1870
1871
1872
1873

1874
1875
1876
1877
1878
1879
1880
1881
1882
1883


1884
1885
1886
1887
1888
1889
1890
1891
1892
    AC_CHECK_HEADERS(sys/time.h)
    AC_HEADER_TIME
    AC_STRUCT_TIMEZONE

    AC_CHECK_FUNCS(gmtime_r localtime_r)

    AC_MSG_CHECKING([tm_tzadj in struct tm])
    AC_CACHE_VAL(tcl_cv_member_tm_tzadj,
	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
	    tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no))
    AC_MSG_RESULT($tcl_cv_member_tm_tzadj)
    if test $tcl_cv_member_tm_tzadj = yes ; then
	AC_DEFINE(HAVE_TM_TZADJ)


    fi

    AC_MSG_CHECKING([tm_gmtoff in struct tm])
    AC_CACHE_VAL(tcl_cv_member_tm_gmtoff,
	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
	    tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no))
    AC_MSG_RESULT($tcl_cv_member_tm_gmtoff)
    if test $tcl_cv_member_tm_gmtoff = yes ; then
	AC_DEFINE(HAVE_TM_GMTOFF)


    fi

    #
    # Its important to include time.h in this check, as some systems
    # (like convex) have timezone functions, etc.
    #

    AC_MSG_CHECKING([long timezone variable])
    AC_CACHE_VAL(tcl_cv_var_timezone,
	AC_TRY_COMPILE([#include <time.h>],
	    [extern long timezone;
	    timezone += 1;
	    exit (0);],
	    tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no))
    AC_MSG_RESULT($tcl_cv_timezone_long)
    if test $tcl_cv_timezone_long = yes ; then
	AC_DEFINE(HAVE_TIMEZONE_VAR)


    else
	#
	# On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
	#

	AC_MSG_CHECKING([time_t timezone variable])
	AC_CACHE_VAL(tcl_cv_timezone_time,
	    AC_TRY_COMPILE([#include <time.h>],
		[extern time_t timezone;
		timezone += 1;
		exit (0);],
		tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no))
	AC_MSG_RESULT($tcl_cv_timezone_time)
	if test $tcl_cv_timezone_time = yes ; then
	    AC_DEFINE(HAVE_TIMEZONE_VAR)


	fi
    fi
])

#--------------------------------------------------------------------
# SC_BUGGY_STRTOD
#
#	Under Solaris 2.4, strtod returns the wrong value for the
#	terminating character under some conditions.  Check for this
1991
1992
1993
1994
1995
1996
1997











































































































    # Don't perform the eval of the libraries here because DL_LIBS
    # won't be set until we call SC_CONFIG_CFLAGS

    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
    AC_SUBST(TCL_LIBS)
    AC_SUBST(MATH_LIBS)
])


















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
    # Don't perform the eval of the libraries here because DL_LIBS
    # won't be set until we call SC_CONFIG_CFLAGS

    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
    AC_SUBST(TCL_LIBS)
    AC_SUBST(MATH_LIBS)
])

#--------------------------------------------------------------------
# SC_TCL_EARLY_FLAGS
#
#	Check for what flags are needed to be passed so the correct OS
#	features are available.
#
# Arguments:
#	None
#	
# Results:
#
#	Might define the following vars:
#		_ISOC99_SOURCE
#		_LARGEFILE64_SOURCE
#
#--------------------------------------------------------------------

AC_DEFUN(SC_TCL_EARLY_FLAG,[
    AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
	AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
	    AC_TRY_COMPILE([[#define ]$1[ 1
]$2], $3,
		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
    if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
	AC_DEFINE($1)
	tcl_flags="$tcl_flags $1"
    fi])

AC_DEFUN(SC_TCL_EARLY_FLAGS,[
    AC_MSG_CHECKING([for required early compiler flags])
    tcl_flags=""
    SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
	[char *p = (char *)strtoll; char *q = (char *)strtoull;])
    SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
	[struct stat64 buf; int i = stat64("/", &buf);])
    if test "x${tcl_flags}" = "x" ; then
	AC_MSG_RESULT(none)
    else
	AC_MSG_RESULT(${tcl_flags})
    fi])

#--------------------------------------------------------------------
# SC_TCL_64BIT_FLAGS
#
#	Check for what is defined in the way of 64-bit features.
#
# Arguments:
#	None
#	
# Results:
#
#	Might define the following vars:
#		TCL_WIDE_INT_IS_LONG
#		TCL_WIDE_INT_TYPE
#		HAVE_STRUCT_DIRENT64
#		HAVE_STRUCT_STAT64
#		HAVE_TYPE_OFF64_T
#
#--------------------------------------------------------------------

AC_DEFUN(SC_TCL_64BIT_FLAGS, [
    AC_MSG_CHECKING([for 64-bit integer type])
    AC_CACHE_VAL(tcl_cv_type_64bit,[
	AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
           tcl_cv_type_64bit=__int64,tcl_cv_type_64bit=none
           AC_TRY_RUN([#include <unistd.h>
		int main() {exit(!(sizeof(long long) > sizeof(long)));}
		], tcl_cv_type_64bit="long long"))])
    if test "${tcl_cv_type_64bit}" = none ; then
	AC_MSG_RESULT(using long)
    else
	AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit})
	AC_MSG_RESULT(${tcl_cv_type_64bit})

	# Now check for auxiliary declarations
	AC_MSG_CHECKING([for struct dirent64])
	AC_CACHE_VAL(tcl_cv_struct_dirent64,[
	    AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/dirent.h>],[struct dirent64 p;],
		tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
	    AC_DEFINE(HAVE_STRUCT_DIRENT64)
	fi
	AC_MSG_RESULT(${tcl_cv_struct_dirent64})

	AC_MSG_CHECKING([for struct stat64])
	AC_CACHE_VAL(tcl_cv_struct_stat64,[
	    AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
],
		tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
	    AC_DEFINE(HAVE_STRUCT_STAT64)
	fi
	AC_MSG_RESULT(${tcl_cv_struct_stat64})

	AC_MSG_CHECKING([for off64_t])
	AC_CACHE_VAL(tcl_cv_type_off64_t,[
	    AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
],
		tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
	if test "x${tcl_cv_type_off64_t}" = "xyes" ; then
	    AC_DEFINE(HAVE_TYPE_OFF64_T)
	fi
	AC_MSG_RESULT(${tcl_cv_type_off64_t})
    fi])
Changes to unix/tk.spec.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# $Id: tk.spec,v 1.7 2001/08/08 18:41:10 dgp Exp $
# This file is the basis for a binary Tk Linux RPM.

%define version 8.4a4
%define directory /usr/local

Summary: Tk graphical toolkit for the Tcl scripting language.
Name: tk
Version: %{version}
Release: 1
Copyright: BSD
Group: Development/Languages
Source: ftp://ftp.scriptics.com/pub/tcl/tcl8_4/tk%{version}.tar.gz
URL: http://dev.scriptics.com/
Packager: Scriptics Corporation
Buildroot: /var/tmp/%{name}%{version}
Requires: XFree86-libs >= 3.3.3, XFree86-devel >= 3.3.3, tcl = 8.4a4

%description
The Tcl (Tool Command Language) provides a powerful platform for
creating integration applications that tie together diverse
applications, protocols, devices, and frameworks.  When paired with
the Tk toolkit, Tcl provides the fastest and most powerful way to
create GUI applications that run on PCs, Unix, and the Macintosh.  Tcl
|


|








|
|
|

|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# $Id: tk.spec,v 1.7.2.1 2002/06/10 05:38:27 wolfsuit Exp $
# This file is the basis for a binary Tk Linux RPM.

%define version 8.4a5
%define directory /usr/local

Summary: Tk graphical toolkit for the Tcl scripting language.
Name: tk
Version: %{version}
Release: 1
Copyright: BSD
Group: Development/Languages
Source: http://prdownloads.sourceforge.net/tcl/tk%{version}-src.tar.gz
URL: http://www.tcl.tk/
Packager: Carina
Buildroot: /var/tmp/%{name}%{version}
Requires: XFree86-libs >= 3.3.3, XFree86-devel >= 3.3.3, tcl = 8.4a5

%description
The Tcl (Tool Command Language) provides a powerful platform for
creating integration applications that tie together diverse
applications, protocols, devices, and frameworks.  When paired with
the Tk toolkit, Tcl provides the fastest and most powerful way to
create GUI applications that run on PCs, Unix, and the Macintosh.  Tcl
Changes to unix/tkUnix3d.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkUnix3d.c --
 *
 *	This file contains the platform specific routines for
 *	drawing 3d borders in the Motif style.
 *
 * Copyright (c) 1996 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnix3d.c,v 1.5.8.2 2001/10/17 07:02:02 wolfsuit Exp $
 */

#include <tk3d.h>

#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))
#include "tkUnixInt.h"
#endif











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkUnix3d.c --
 *
 *	This file contains the platform specific routines for
 *	drawing 3d borders in the Motif style.
 *
 * Copyright (c) 1996 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnix3d.c,v 1.5.8.3 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include <tk3d.h>

#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))
#include "tkUnixInt.h"
#endif
289
290
291
292
293
294
295









296
297
298
299
300
301
302
    bottom = y + height;

    /*
     * Draw one line for each y-coordinate covered by the bevel.
     */

    for ( ; y < bottom; y++) {









	/*
	 * In some weird cases (such as large border widths for skinny
	 * rectangles) x1 can be >= x2.  Don't draw the lines
	 * in these cases.
	 */

	if (x1 < x2) {







>
>
>
>
>
>
>
>
>







289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
    bottom = y + height;

    /*
     * Draw one line for each y-coordinate covered by the bevel.
     */

    for ( ; y < bottom; y++) {
	/*
	 * X Dimensions are 16-bit, so avoid wraparound or display errors
	 * by limiting these here.
	 */
	if (x1 < -32767)
	    x1 = -32767;
	if (x2 > 32767)
	    x2 = 32767;

	/*
	 * In some weird cases (such as large border widths for skinny
	 * rectangles) x1 can be >= x2.  Don't draw the lines
	 * in these cases.
	 */

	if (x1 < x2) {
Changes to unix/tkUnixDefault.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
 * tkUnixDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixDefault.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#ifndef _TKUNIXDEFAULT
#define _TKUNIXDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
 * tkUnixDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixDefault.h,v 1.11.2.2 2002/06/10 05:38:27 wolfsuit Exp $
 */

#ifndef _TKUNIXDEFAULT
#define _TKUNIXDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.
349
350
351
352
353
354
355


































356
357
358
359
360
361
362
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"



































/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK
#define DEF_SCALE_BG_COLOR		NORMAL_BG







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"

/*
 * Defaults for panedwindows
 */

#define DEF_PANEDWINDOW_BG_COLOR	NORMAL_BG
#define DEF_PANEDWINDOW_BG_MONO		WHITE
#define DEF_PANEDWINDOW_BORDERWIDTH	"2"
#define DEF_PANEDWINDOW_CURSOR		""
#define DEF_PANEDWINDOW_HANDLEPAD	"8"
#define DEF_PANEDWINDOW_HANDLESIZE	"8"
#define DEF_PANEDWINDOW_HEIGHT		""
#define DEF_PANEDWINDOW_OPAQUERESIZE	"0"
#define DEF_PANEDWINDOW_ORIENT		"horizontal"
#define DEF_PANEDWINDOW_RELIEF		"flat"
#define DEF_PANEDWINDOW_SASHCURSOR	""
#define DEF_PANEDWINDOW_SASHPAD		"2"
#define DEF_PANEDWINDOW_SASHRELIEF	"raised"
#define DEF_PANEDWINDOW_SASHWIDTH	"2"
#define DEF_PANEDWINDOW_SHOWHANDLE	"1"
#define DEF_PANEDWINDOW_WIDTH		""

/*
 * Defaults for panedwindow panes
 */

#define DEF_PANEDWINDOW_PANE_AFTER	""
#define DEF_PANEDWINDOW_PANE_BEFORE	""
#define DEF_PANEDWINDOW_PANE_HEIGHT	""
#define DEF_PANEDWINDOW_PANE_MINSIZE	"0"
#define DEF_PANEDWINDOW_PANE_PADX	"0"
#define DEF_PANEDWINDOW_PANE_PADY	"0"
#define DEF_PANEDWINDOW_PANE_STICKY	"nsew"
#define DEF_PANEDWINDOW_PANE_WIDTH	""

/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK
#define DEF_SCALE_BG_COLOR		NORMAL_BG
Changes to unix/tkUnixEmbed.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkUnixEmbed.c --
 *
 *	This file contains platform-specific procedures for UNIX to provide
 *	basic operations needed for application embedding (where one
 *	application can use as its main window an internal window from
 *	some other application).
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixEmbed.c,v 1.3 1999/04/16 01:51:46 stanton Exp $
 */

#include "tkInt.h"
#include "tkUnixInt.h"

/*
 * One of the following structures exists for each container in this













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkUnixEmbed.c --
 *
 *	This file contains platform-specific procedures for UNIX to provide
 *	basic operations needed for application embedding (where one
 *	application can use as its main window an internal window from
 *	some other application).
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixEmbed.c,v 1.3.18.1 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkUnixInt.h"

/*
 * One of the following structures exists for each container in this
101
102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118
119
120
121
122









123
124
125
126
127
128
129
				 * if string is bogus. */
    Tk_Window tkwin;		/* Tk window that does not yet have an
				 * associated X window. */
    char *string;		/* String identifying an X window to use
				 * for tkwin;  must be an integer value. */
{
    TkWindow *winPtr = (TkWindow *) tkwin;

    int id, anyError;
    Window parent;
    Tk_ErrorHandler handler;
    Container *containerPtr;
    XWindowAttributes parentAtts;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (winPtr->window != None) {
	panic("TkUseWindow: X window already assigned");
    }
    if (Tcl_GetInt(interp, string, &id) != TCL_OK) {
	return TCL_ERROR;
    }
    parent = (Window) id;










    /*
     * Tk sets the window colormap to the screen default colormap in
     * tkWindow.c:AllocWindow. This doesn't work well for embedded
     * windows. So we override the colormap and visual settings to be
     * the same as the parent window (which is in the container app).
     */







>















>
>
>
>
>
>
>
>
>







101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
				 * if string is bogus. */
    Tk_Window tkwin;		/* Tk window that does not yet have an
				 * associated X window. */
    char *string;		/* String identifying an X window to use
				 * for tkwin;  must be an integer value. */
{
    TkWindow *winPtr = (TkWindow *) tkwin;
    TkWindow *usePtr;
    int id, anyError;
    Window parent;
    Tk_ErrorHandler handler;
    Container *containerPtr;
    XWindowAttributes parentAtts;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (winPtr->window != None) {
	panic("TkUseWindow: X window already assigned");
    }
    if (Tcl_GetInt(interp, string, &id) != TCL_OK) {
	return TCL_ERROR;
    }
    parent = (Window) id;

    usePtr = (TkWindow *) Tk_IdToWindow(winPtr->display, parent);
    if (usePtr != NULL) {
	if (!(usePtr->flags & TK_CONTAINER)) {
	    Tcl_AppendResult(interp, "window \"", usePtr->pathName,
                    "\" doesn't have -container option set", (char *) NULL);
	    return TCL_ERROR;
	}
    }

    /*
     * Tk sets the window colormap to the screen default colormap in
     * tkWindow.c:AllocWindow. This doesn't work well for embedded
     * windows. So we override the colormap and visual settings to be
     * the same as the parent window (which is in the container app).
     */
Changes to unix/tkUnixEvent.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkUnixEvent.c --
 *
 *	This file implements an event source for X displays for the
 *	UNIX version of Tk.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixEvent.c,v 1.3.18.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkUnixInt.h"
#include <signal.h>

/*











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkUnixEvent.c --
 *
 *	This file implements an event source for X displays for the
 *	UNIX version of Tk.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixEvent.c,v 1.3.18.2 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkUnixInt.h"
#include <signal.h>

/*
35
36
37
38
39
40
41



42
43
44
45
46
47
48
static void		DisplayExitHandler _ANSI_ARGS_((
			    ClientData clientData));
static void		DisplayFileProc _ANSI_ARGS_((ClientData clientData,
			    int flags));
static void		DisplaySetupProc _ANSI_ARGS_((ClientData clientData,
			    int flags));
static void		TransferXEventsToTcl _ANSI_ARGS_((Display *display));





/*
 *----------------------------------------------------------------------
 *
 * TkCreateXEventSource --
 *







>
>
>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
static void		DisplayExitHandler _ANSI_ARGS_((
			    ClientData clientData));
static void		DisplayFileProc _ANSI_ARGS_((ClientData clientData,
			    int flags));
static void		DisplaySetupProc _ANSI_ARGS_((ClientData clientData,
			    int flags));
static void		TransferXEventsToTcl _ANSI_ARGS_((Display *display));
#ifdef TK_USE_INPUT_METHODS
static void		OpenIM _ANSI_ARGS_((TkDisplay *dispPtr));
#endif


/*
 *----------------------------------------------------------------------
 *
 * TkCreateXEventSource --
 *
123
124
125
126
127
128
129

130



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155

156

157




158
159
160














161
162
163
164
165
166
167
168
169
170
171
    TkDisplay *dispPtr;
    Display *display = XOpenDisplay(display_name);

    if (display == NULL) {
	return NULL;
    }
    dispPtr = (TkDisplay *) ckalloc(sizeof(TkDisplay));

    dispPtr->display = display;



    Tcl_CreateFileHandler(ConnectionNumber(display), TCL_READABLE,
	    DisplayFileProc, (ClientData) dispPtr);
    return dispPtr;
}

/*
 *----------------------------------------------------------------------
 *
 * TkpCloseDisplay --
 *
 *	Cancels notifier callbacks and closes a display.  
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Deallocates the displayPtr.
 *
 *----------------------------------------------------------------------
 */

void
TkpCloseDisplay(displayPtr)
    TkDisplay *displayPtr;
{

    TkDisplay *dispPtr = (TkDisplay *) displayPtr;






    if (dispPtr->display != 0) {
        Tcl_DeleteFileHandler(ConnectionNumber(dispPtr->display));
	














        (void) XSync(dispPtr->display, False);
        (void) XCloseDisplay(dispPtr->display);
    }
    
    ckfree((char *) dispPtr);
}

/*
 *----------------------------------------------------------------------
 *
 * DisplaySetupProc --







>

>
>
>
















|





|
|

>
|
>

>
>
>
>
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|

|







126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
    TkDisplay *dispPtr;
    Display *display = XOpenDisplay(display_name);

    if (display == NULL) {
	return NULL;
    }
    dispPtr = (TkDisplay *) ckalloc(sizeof(TkDisplay));
    memset(dispPtr, 0, sizeof(TkDisplay));
    dispPtr->display = display;
#ifdef TK_USE_INPUT_METHODS
    OpenIM(dispPtr);
#endif
    Tcl_CreateFileHandler(ConnectionNumber(display), TCL_READABLE,
	    DisplayFileProc, (ClientData) dispPtr);
    return dispPtr;
}

/*
 *----------------------------------------------------------------------
 *
 * TkpCloseDisplay --
 *
 *	Cancels notifier callbacks and closes a display.  
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Deallocates the displayPtr and unix-specific resources.
 *
 *----------------------------------------------------------------------
 */

void
TkpCloseDisplay(dispPtr)
    TkDisplay *dispPtr;
{
    TkSendCleanup(dispPtr);

    TkFreeXId(dispPtr);

    TkWmCleanup(dispPtr);

#ifdef TK_USE_INPUT_METHODS
#if TK_XIM_SPOT
    if (dispPtr->inputXfs) {
	XFreeFontSet(dispPtr->display, dispPtr->inputXfs);
    }
#endif
#if ! defined(SOLARIS2) || defined(HAVE_X11R6)
    if (dispPtr->inputMethod) {
	/*
	 * This causes core dumps on some systems (e.g. Solaris 2.3 as of
	 * 1/6/95), but is OK with X11R6
	 */
	XCloseIM(dispPtr->inputMethod);
    }
#endif
#endif

    if (dispPtr->display != 0) {
	Tcl_DeleteFileHandler(ConnectionNumber(dispPtr->display));
	(void) XSync(dispPtr->display, False);
	(void) XCloseDisplay(dispPtr->display);
    }

    ckfree((char *) dispPtr);
}

/*
 *----------------------------------------------------------------------
 *
 * DisplaySetupProc --
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
 *
 * Side effects:
 *	Moves queued X events onto the Tcl event queue.
 *
 *----------------------------------------------------------------------
 */


static void
TransferXEventsToTcl(display)
    Display *display;
{
    int numFound;
    XEvent event;








<







253
254
255
256
257
258
259

260
261
262
263
264
265
266
 *
 * Side effects:
 *	Moves queued X events onto the Tcl event queue.
 *
 *----------------------------------------------------------------------
 */


static void
TransferXEventsToTcl(display)
    Display *display;
{
    int numFound;
    XEvent event;

281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296

    for (dispPtr = TkGetDisplayList(); dispPtr != NULL;
	 dispPtr = dispPtr->nextPtr) {
	XFlush(dispPtr->display);
	TransferXEventsToTcl(dispPtr->display);
    }
}



/*
 *----------------------------------------------------------------------
 *
 * DisplayFileProc --
 *
 *	This procedure implements the file handler for the X connection.







<
<







307
308
309
310
311
312
313


314
315
316
317
318
319
320

    for (dispPtr = TkGetDisplayList(); dispPtr != NULL;
	 dispPtr = dispPtr->nextPtr) {
	XFlush(dispPtr->display);
	TransferXEventsToTcl(dispPtr->display);
    }
}



/*
 *----------------------------------------------------------------------
 *
 * DisplayFileProc --
 *
 *	This procedure implements the file handler for the X connection.
512
513
514
515
516
517
518
519

520




































































{
    XSync(display, False);

    /*
     * Transfer events from the X event queue to the Tk event queue.
     */
    TransferXEventsToTcl(display);


}











































































|
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
{
    XSync(display, False);

    /*
     * Transfer events from the X event queue to the Tk event queue.
     */
    TransferXEventsToTcl(display);
}
#ifdef TK_USE_INPUT_METHODS

/* 
 *--------------------------------------------------------------
 *
 * OpenIM --
 *
 *	Tries to open an X input method, associated with the
 *	given display.  Right now we can only deal with a bare-bones
 *	input style:  no preedit, and no status.
 *
 * Results:
 *	Stores the input method in dispPtr->inputMethod;  if there isn't
 *	a suitable input method, then NULL is stored in dispPtr->inputMethod.
 *
 * Side effects:
 *	An input method gets opened.
 *
 *--------------------------------------------------------------
 */

static void
OpenIM(dispPtr)
    TkDisplay *dispPtr;		/* Tk's structure for the display. */
{
    unsigned short i;
    XIMStyles *stylePtr;
    char *modifier_list;

    if ((modifier_list = XSetLocaleModifiers("")) == NULL) {
	goto error;
    }

    dispPtr->inputMethod = XOpenIM(dispPtr->display, NULL, NULL, NULL);
    if (dispPtr->inputMethod == NULL) {
	return;
    }

    if ((XGetIMValues(dispPtr->inputMethod, XNQueryInputStyle, &stylePtr,
	    NULL) != NULL) || (stylePtr == NULL)) {
	goto error;
    }
    for (i = 0; i < stylePtr->count_styles; i++) {
	if (stylePtr->supported_styles[i]
#if TK_XIM_SPOT
		== (XIMPreeditPosition | XIMStatusNothing)
#else
		== (XIMPreeditNothing | XIMStatusNothing)
#endif
	    ) {
	    XFree(stylePtr);
	    return;
	}
    }
    XFree(stylePtr);

    error:

    if (dispPtr->inputMethod) {
	/*
	 * This causes core dumps on some systems (e.g. Solaris 2.3 as of
	 * 1/6/95), but is OK with X11R6
	 */
#if ! defined (SOLARIS2) || defined (HAVE_X11R6)
	XCloseIM(dispPtr->inputMethod);
#endif
	dispPtr->inputMethod = NULL;
    }
}
#endif /* TK_USE_INPUT_METHODS */
Changes to unix/tkUnixFont.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
/*
 * tkUnixFont.c --
 *
 *	Contains the Unix implementation of the platform-independant
 *	font package interface.
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixFont.c,v 1.9 2001/06/04 03:07:54 hobbs Exp $
 */
 
#include "tkUnixInt.h"
#include "tkFont.h"
#include <netinet/in.h>		/* for htons() prototype */


/*
 * The preferred font encodings.
 */

static CONST char *encodingList[] = {
    "iso8859-1", "jis0208", "jis0212", NULL











|





>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
 * tkUnixFont.c --
 *
 *	Contains the Unix implementation of the platform-independant
 *	font package interface.
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixFont.c,v 1.9.2.1 2002/06/10 05:38:27 wolfsuit Exp $
 */
 
#include "tkUnixInt.h"
#include "tkFont.h"
#include <netinet/in.h>		/* for htons() prototype */
#include <arpa/inet.h>		/* inet_ntoa() */

/*
 * The preferred font encodings.
 */

static CONST char *encodingList[] = {
    "iso8859-1", "jis0208", "jis0212", NULL
193
194
195
196
197
198
199

200
201
202
203
204
205
206
    {NULL,		NULL}
};

/*
 * Procedures used only in this file.
 */


static FontFamily *	AllocFontFamily _ANSI_ARGS_((Display *display,
			    XFontStruct *fontStructPtr, int base));
static SubFont *	CanUseFallback _ANSI_ARGS_((UnixFont *fontPtr,
			    char *fallbackName, int ch));
static SubFont *	CanUseFallbackWithAliases _ANSI_ARGS_((
			    UnixFont *fontPtr, char *fallbackName,
			    int ch, Tcl_DString *nameTriedPtr));







>







194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
    {NULL,		NULL}
};

/*
 * Procedures used only in this file.
 */

static void		FontPkgCleanup _ANSI_ARGS_((ClientData clientData));
static FontFamily *	AllocFontFamily _ANSI_ARGS_((Display *display,
			    XFontStruct *fontStructPtr, int base));
static SubFont *	CanUseFallback _ANSI_ARGS_((UnixFont *fontPtr,
			    char *fallbackName, int ch));
static SubFont *	CanUseFallbackWithAliases _ANSI_ARGS_((
			    UnixFont *fontPtr, char *fallbackName,
			    int ch, Tcl_DString *nameTriedPtr));
257
258
259
260
261
262
263






































264
265
266
267
268
269
270
			    int *srcReadPtr, int *dstWrotePtr,
			    int *dstCharsPtr));


/*
 *-------------------------------------------------------------------------
 *






































 * TkpFontPkgInit --
 *
 *	This procedure is called when an application is created.  It
 *	initializes all the structures that are used by the
 *	platform-dependent code on a per application basis.
 *
 * Results:







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
			    int *srcReadPtr, int *dstWrotePtr,
			    int *dstCharsPtr));


/*
 *-------------------------------------------------------------------------
 *
 * FontPkgCleanup --
 *
 *	This procedure is called when an application is created.  It
 *	initializes all the structures that are used by the
 *	platform-dependent code on a per application basis.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Releases thread-specific resources used by font pkg.
 *
 *-------------------------------------------------------------------------
 */

static void
FontPkgCleanup(ClientData clientData)
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    
    if (tsdPtr->controlFamily.encoding != NULL) {
	FontFamily *familyPtr = &tsdPtr->controlFamily;
	int i;

	Tcl_FreeEncoding(familyPtr->encoding);
	for (i = 0; i < FONTMAP_PAGES; i++) {
	    if (familyPtr->fontMap[i] != NULL) {
		ckfree(familyPtr->fontMap[i]);
	    }
	}
	tsdPtr->controlFamily.encoding = NULL;
    }
}

/*
 *-------------------------------------------------------------------------
 *
 * TkpFontPkgInit --
 *
 *	This procedure is called when an application is created.  It
 *	initializes all the structures that are used by the
 *	platform-dependent code on a per application basis.
 *
 * Results:
313
314
315
316
317
318
319

320
321
322
323
324
325
326
	type.encodingName	= "ucs-2be";
	type.toUtfProc		= Ucs2beToUtfProc;
	type.fromUtfProc	= UtfToUcs2beProc;
	type.freeProc		= NULL;
	type.clientData		= NULL;
	type.nullSize		= 2;
	Tcl_CreateEncoding(&type);

    }
}

/*
 *-------------------------------------------------------------------------
 *
 * ControlUtfProc --







>







353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
	type.encodingName	= "ucs-2be";
	type.toUtfProc		= Ucs2beToUtfProc;
	type.fromUtfProc	= UtfToUcs2beProc;
	type.freeProc		= NULL;
	type.clientData		= NULL;
	type.nullSize		= 2;
	Tcl_CreateEncoding(&type);
	Tcl_CreateThreadExitHandler(FontPkgCleanup, NULL);
    }
}

/*
 *-------------------------------------------------------------------------
 *
 * ControlUtfProc --
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119



1120
1121
1122
1123
1124
1125










1126

1127

1128
1129




1130

1131

1132

1133
1134
1135
1136
1137
1138
1139
1140
1141
1142

1143
1144
1145
1146

1147
1148
1149

1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184

1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201



1202
1203
1204
1205
1206
1207
1208
    int x, y;			/* Coordinates at which to place origin of
				 * string when drawing. */
{
    UnixFont *fontPtr;
    SubFont *thisSubFontPtr, *lastSubFontPtr;
    Tcl_DString runString;
    CONST char *p, *end, *next;
    int xStart, needWidth;
    Tcl_UniChar ch;
    FontFamily *familyPtr;




    fontPtr = (UnixFont *) tkfont;
    lastSubFontPtr = &fontPtr->subFontArray[0];

    xStart = x;











    end = source + numBytes;

    for (p = source; p < end; ) {

	next = p + Tcl_UtfToUniChar(p, &ch);
	thisSubFontPtr = FindSubFontForChar(fontPtr, ch);




	if (thisSubFontPtr != lastSubFontPtr) {

	    if (p > source) {

		familyPtr = lastSubFontPtr->familyPtr;

		Tcl_UtfToExternalDString(familyPtr->encoding, source,
			p - source, &runString);
		if (familyPtr->isTwoByteFont) {
		    XDrawString16(display, drawable, gc, x, y, 
			    (XChar2b *) Tcl_DStringValue(&runString),
			    Tcl_DStringLength(&runString) / 2);
			    
		    x += XTextWidth16(lastSubFontPtr->fontStructPtr,
			    (XChar2b *) Tcl_DStringValue(&runString),
			    Tcl_DStringLength(&runString) / 2);

		} else {
		    XDrawString(display, drawable, gc, x, y,
			    Tcl_DStringValue(&runString),
			    Tcl_DStringLength(&runString));

		    x += XTextWidth(lastSubFontPtr->fontStructPtr,
			    Tcl_DStringValue(&runString),
			    Tcl_DStringLength(&runString));

		}
		Tcl_DStringFree(&runString);
	    }
	    lastSubFontPtr = thisSubFontPtr;
	    source = p;
	    XSetFont(display, gc, lastSubFontPtr->fontStructPtr->fid);
	}
	p = next;
    }

    needWidth = fontPtr->font.fa.underline + fontPtr->font.fa.overstrike;
    if (p > source) {
	familyPtr = lastSubFontPtr->familyPtr;
	Tcl_UtfToExternalDString(familyPtr->encoding, source, p - source,
		&runString);
	if (familyPtr->isTwoByteFont) {
	    XDrawString16(display, drawable, gc, x, y, 
		    (XChar2b *) Tcl_DStringValue(&runString),
		    Tcl_DStringLength(&runString) >> 1);
	    if (needWidth) {
		x += XTextWidth16(lastSubFontPtr->fontStructPtr,
			(XChar2b *) Tcl_DStringValue(&runString),
			Tcl_DStringLength(&runString) >> 1);
	    }
	} else {
	    XDrawString(display, drawable, gc, x, y, 
		    Tcl_DStringValue(&runString),
		    Tcl_DStringLength(&runString));
	    if (needWidth) {
		x += XTextWidth(lastSubFontPtr->fontStructPtr,
			Tcl_DStringValue(&runString),
			Tcl_DStringLength(&runString));
	    }
	}
	Tcl_DStringFree(&runString);

    }

    if (lastSubFontPtr != &fontPtr->subFontArray[0]) {
	XSetFont(display, gc, fontPtr->subFontArray[0].fontStructPtr->fid);
    }

    if (fontPtr->font.fa.underline != 0) {
	XFillRectangle(display, drawable, gc, xStart,
		y + fontPtr->underlinePos,
		(unsigned) (x - xStart), (unsigned) fontPtr->barHeight);
    }
    if (fontPtr->font.fa.overstrike != 0) {
	y -= fontPtr->font.fm.descent + (fontPtr->font.fm.ascent) / 10;
	XFillRectangle(display, drawable, gc, xStart, y,
		(unsigned) (x - xStart), (unsigned) fontPtr->barHeight);
    }
}




/*
 *-------------------------------------------------------------------------
 *
 * CreateClosestFont --
 *
 *	Helper for TkpGetNativeFont() and TkpGetFontFromAttributes().







|


>
>
>






>
>
>
>
>
>
>
>
>
>

>
|
>
|
|
>
>
>
>
|
>

>

>






|
|
|
|
>




>
|
|
|
>






<
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
<
<
<
<
<
<
<


<
>

















>
>
>







1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221



1222














1223







1224
1225

1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
    int x, y;			/* Coordinates at which to place origin of
				 * string when drawing. */
{
    UnixFont *fontPtr;
    SubFont *thisSubFontPtr, *lastSubFontPtr;
    Tcl_DString runString;
    CONST char *p, *end, *next;
    int xStart, needWidth, window_width;
    Tcl_UniChar ch;
    FontFamily *familyPtr;
    int rx, ry, width, height, border_width, depth;
    int do_width;
    Drawable root;

    fontPtr = (UnixFont *) tkfont;
    lastSubFontPtr = &fontPtr->subFontArray[0];

    xStart = x;

    /*
     * Get the window width so we can abort drawing outside of the window
     */
    if (XGetGeometry(display, drawable, &root, &rx, &ry, &width, &height,
	    &border_width, &depth) == False) {
	window_width = INT_MAX;
    } else {
	window_width = width;
    }

    end = source + numBytes;
    needWidth = fontPtr->font.fa.underline + fontPtr->font.fa.overstrike;
    for (p = source; p <= end; ) {
	if (p < end) {
	    next = p + Tcl_UtfToUniChar(p, &ch);
	    thisSubFontPtr = FindSubFontForChar(fontPtr, ch);
	} else {
	    next = p + 1;
	    thisSubFontPtr = lastSubFontPtr;
	}
	if ((thisSubFontPtr != lastSubFontPtr)
		|| (p == end) || (p-source > 200)) {
	    if (p > source) {
	        do_width = (needWidth || (p != end)) ? 1 : 0;
		familyPtr = lastSubFontPtr->familyPtr;

		Tcl_UtfToExternalDString(familyPtr->encoding, source,
			p - source, &runString);
		if (familyPtr->isTwoByteFont) {
		    XDrawString16(display, drawable, gc, x, y, 
			    (XChar2b *) Tcl_DStringValue(&runString),
			    Tcl_DStringLength(&runString) / 2);
		    if (do_width) {
			x += XTextWidth16(lastSubFontPtr->fontStructPtr,
				(XChar2b *) Tcl_DStringValue(&runString),
				Tcl_DStringLength(&runString) / 2);
		    }
		} else {
		    XDrawString(display, drawable, gc, x, y,
			    Tcl_DStringValue(&runString),
			    Tcl_DStringLength(&runString));
		    if (do_width) {
			x += XTextWidth(lastSubFontPtr->fontStructPtr,
				Tcl_DStringValue(&runString),
				Tcl_DStringLength(&runString));
		    }
		}
		Tcl_DStringFree(&runString);
	    }
	    lastSubFontPtr = thisSubFontPtr;
	    source = p;
	    XSetFont(display, gc, lastSubFontPtr->fontStructPtr->fid);



	    if (x > window_width) {














	        break;







	    }
	}

	p = next;
    }

    if (lastSubFontPtr != &fontPtr->subFontArray[0]) {
	XSetFont(display, gc, fontPtr->subFontArray[0].fontStructPtr->fid);
    }

    if (fontPtr->font.fa.underline != 0) {
	XFillRectangle(display, drawable, gc, xStart,
		y + fontPtr->underlinePos,
		(unsigned) (x - xStart), (unsigned) fontPtr->barHeight);
    }
    if (fontPtr->font.fa.overstrike != 0) {
	y -= fontPtr->font.fm.descent + (fontPtr->font.fm.ascent) / 10;
	XFillRectangle(display, drawable, gc, xStart, y,
		(unsigned) (x - xStart), (unsigned) fontPtr->barHeight);
    }
}




/*
 *-------------------------------------------------------------------------
 *
 * CreateClosestFont --
 *
 *	Helper for TkpGetNativeFont() and TkpGetFontFromAttributes().
Changes to unix/tkUnixKey.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20



21


































22
23
24
25
26
27
28
/* 
 * tkUnixKey.c --
 *
 *	This file contains routines for dealing with international keyboard
 *	input.
 *
 * Copyright (c) 1997 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixKey.c,v 1.5 2000/04/10 22:43:13 ericm Exp $
 */

#include "tkInt.h"

/*
 * Prototypes for local procedures defined in this file:
 */








































/*
 *----------------------------------------------------------------------
 *
 * TkpGetString --
 *
 *	Retrieve the UTF string associated with a keyboard event.











|








>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* 
 * tkUnixKey.c --
 *
 *	This file contains routines for dealing with international keyboard
 *	input.
 *
 * Copyright (c) 1997 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixKey.c,v 1.5.8.1 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include "tkInt.h"

/*
 * Prototypes for local procedures defined in this file:
 */

#ifdef TK_USE_INPUT_METHODS
static int caretX = 0, caretY = 0;
#endif


/*
 *----------------------------------------------------------------------
 *
 * Tk_SetCaretPos --
 *
 *	This enables correct placement of the XIM caret.  This is called
 *	by widgets to indicate their cursor placement, and the caret
 *	location is used by TkpGetString to place the XIM caret.
 *
 * Results:
 *	None
 *
 * Side effects:
 *	None
 *
 *----------------------------------------------------------------------
 */

void
Tk_SetCaretPos(tkwin, x, y, height)
    Tk_Window tkwin;
    int	      x;
    int	      y;
    int	      height;
{
#ifdef TK_USE_INPUT_METHODS
    /*
     * Use height for best placement of the XIM over-the-spot box.
     */
    caretX = x;
    caretY = y + height;
#endif
}

/*
 *----------------------------------------------------------------------
 *
 * TkpGetString --
 *
 *	Retrieve the UTF string associated with a keyboard event.
52
53
54
55
56
57
58
59
60
61
62
63





64
65
66
67
68
69
70
71
72
73
74
75
76
77
78











79
80
81
82
83
84
85

    /*
     * Overallocate the dstring to the maximum stack amount.
     */

    Tcl_DStringInit(&buf);
    Tcl_DStringSetLength(&buf, TCL_DSTRING_STATIC_SIZE-1);
    
#ifdef TK_USE_INPUT_METHODS
    if (winPtr->dispPtr->useInputMethods
	    && (winPtr->inputContext != NULL)
	    && (eventPtr->type == KeyPress)) {





	len = XmbLookupString(winPtr->inputContext, &eventPtr->xkey,
		Tcl_DStringValue(&buf), Tcl_DStringLength(&buf),
		(KeySym *) NULL, &status);
	/*
	 * If the buffer wasn't big enough, grow the buffer and try again.
	 */

	if (status == XBufferOverflow) {
	    Tcl_DStringSetLength(&buf, len);
	    len = XmbLookupString(winPtr->inputContext, &eventPtr->xkey,
		    Tcl_DStringValue(&buf), len, (KeySym *) NULL, &status);
	}
	if ((status != XLookupChars) && (status != XLookupBoth)) {
	    len = 0;
	}











    } else {
	len = XLookupString(&eventPtr->xkey, Tcl_DStringValue(&buf),
		Tcl_DStringLength(&buf), (KeySym *) NULL,
		(XComposeStatus *) NULL);
    }
#else /* TK_USE_INPUT_METHODS */
    len = XLookupString(&eventPtr->xkey, Tcl_DStringValue(&buf),







|




>
>
>
>
>















>
>
>
>
>
>
>
>
>
>
>







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

    /*
     * Overallocate the dstring to the maximum stack amount.
     */

    Tcl_DStringInit(&buf);
    Tcl_DStringSetLength(&buf, TCL_DSTRING_STATIC_SIZE-1);

#ifdef TK_USE_INPUT_METHODS
    if (winPtr->dispPtr->useInputMethods
	    && (winPtr->inputContext != NULL)
	    && (eventPtr->type == KeyPress)) {
#if TK_XIM_SPOT
	XVaNestedList preedit_attr;
	XPoint spot;
#endif

	len = XmbLookupString(winPtr->inputContext, &eventPtr->xkey,
		Tcl_DStringValue(&buf), Tcl_DStringLength(&buf),
		(KeySym *) NULL, &status);
	/*
	 * If the buffer wasn't big enough, grow the buffer and try again.
	 */

	if (status == XBufferOverflow) {
	    Tcl_DStringSetLength(&buf, len);
	    len = XmbLookupString(winPtr->inputContext, &eventPtr->xkey,
		    Tcl_DStringValue(&buf), len, (KeySym *) NULL, &status);
	}
	if ((status != XLookupChars) && (status != XLookupBoth)) {
	    len = 0;
	}

#if TK_XIM_SPOT
	/*
	 * Adjust the XIM caret position.
	 */
	spot.x = caretX; spot.y = caretY;
	preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &spot, NULL);
	XSetICValues(winPtr->inputContext,
		XNPreeditAttributes, preedit_attr, NULL);
	XFree(preedit_attr);
#endif
    } else {
	len = XLookupString(&eventPtr->xkey, Tcl_DStringValue(&buf),
		Tcl_DStringLength(&buf), (KeySym *) NULL,
		(XComposeStatus *) NULL);
    }
#else /* TK_USE_INPUT_METHODS */
    len = XLookupString(&eventPtr->xkey, Tcl_DStringValue(&buf),
Changes to unix/tkUnixMenu.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkUnixMenu.c --
 *
 *	This module implements the UNIX platform-specific features of menus.
 *
 * Copyright (c) 1996-1998 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixMenu.c,v 1.5.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"
#include "tkUnixInt.h"
#include "tkMenu.h"










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkUnixMenu.c --
 *
 *	This module implements the UNIX platform-specific features of menus.
 *
 * Copyright (c) 1996-1998 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixMenu.c,v 1.5.2.2 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include "tkPort.h"
#include "default.h"
#include "tkInt.h"
#include "tkUnixInt.h"
#include "tkMenu.h"
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
    int width;			/* width of entry. */
    int height;			/* height of entry. */
{
    int indicatorSpace =  mePtr->indicatorSpace;
    int activeBorderWidth;
    int leftEdge;
    int imageHeight, imageWidth;
    int textHeight, textWidth;
    int haveImage = 0, haveText = 0;
    int imageXOffset = 0, imageYOffset = 0;
    int textXOffset = 0, textYOffset = 0;

    Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->activeBorderWidthPtr,
	    &activeBorderWidth);
    leftEdge = x + indicatorSpace + activeBorderWidth;







|







703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
    int width;			/* width of entry. */
    int height;			/* height of entry. */
{
    int indicatorSpace =  mePtr->indicatorSpace;
    int activeBorderWidth;
    int leftEdge;
    int imageHeight, imageWidth;
    int textHeight = 0, textWidth = 0;	/* stop GCC warning */
    int haveImage = 0, haveText = 0;
    int imageXOffset = 0, imageYOffset = 0;
    int textXOffset = 0, textYOffset = 0;

    Tk_GetPixelsFromObj(NULL, menuPtr->tkwin, menuPtr->activeBorderWidthPtr,
	    &activeBorderWidth);
    leftEdge = x + indicatorSpace + activeBorderWidth;
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
    CONST Tk_FontMetrics *fmPtr;	/* The precalculated metrics */
    int *widthPtr;			/* The resulting width of the label
					 * portion */
    int *heightPtr;			/* The resulting height of the label
					 * portion */
{
    TkMenu *menuPtr = mePtr->menuPtr;
    int haveImage = 0, haveText = 0;
 
    if (mePtr->image != NULL) {
    	Tk_SizeOfImage(mePtr->image, widthPtr, heightPtr);
	haveImage = 1;
    } else if (mePtr->bitmapPtr !=  NULL) {
	Pixmap bitmap = Tk_GetBitmapFromObj(menuPtr->tkwin, mePtr->bitmapPtr);
    	Tk_SizeOfBitmap(menuPtr->display, bitmap, widthPtr, heightPtr);







|







1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
    CONST Tk_FontMetrics *fmPtr;	/* The precalculated metrics */
    int *widthPtr;			/* The resulting width of the label
					 * portion */
    int *heightPtr;			/* The resulting height of the label
					 * portion */
{
    TkMenu *menuPtr = mePtr->menuPtr;
    int haveImage = 0;
 
    if (mePtr->image != NULL) {
    	Tk_SizeOfImage(mePtr->image, widthPtr, heightPtr);
	haveImage = 1;
    } else if (mePtr->bitmapPtr !=  NULL) {
	Pixmap bitmap = Tk_GetBitmapFromObj(menuPtr->tkwin, mePtr->bitmapPtr);
    	Tk_SizeOfBitmap(menuPtr->display, bitmap, widthPtr, heightPtr);
Changes to unix/tkUnixSelect.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkUnixSelect.c --
 *
 *	This file contains X specific routines for manipulating 
 *	selections.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixSelect.c,v 1.7 2001/07/03 01:03:16 hobbs Exp $
 */

#include "tkInt.h"
#include "tkSelect.h"

typedef struct ConvertInfo {
    int offset;			/* The starting byte offset into the selection











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkUnixSelect.c --
 *
 *	This file contains X specific routines for manipulating 
 *	selections.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixSelect.c,v 1.7.2.1 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include "tkInt.h"
#include "tkSelect.h"

typedef struct ConvertInfo {
    int offset;			/* The starting byte offset into the selection
1193
1194
1195
1196
1197
1198
1199

1200
1201
1202
1203
1204
1205
1206
	    srcLen = Tcl_DStringLength(&temp);
	} else if (numItems == 0) {
	    /*
	     * There is no new data, so we're done.
	     */

	    retrPtr->result = TCL_OK;

	    goto done;
	} else {
	    src = propInfo;
	    srcLen = numItems;
	}
	
	/*







>







1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
	    srcLen = Tcl_DStringLength(&temp);
	} else if (numItems == 0) {
	    /*
	     * There is no new data, so we're done.
	     */

	    retrPtr->result = TCL_OK;
	    Tcl_Release((ClientData) interp);
	    goto done;
	} else {
	    src = propInfo;
	    srcLen = numItems;
	}
	
	/*
Changes to unix/tkUnixSend.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1989-1994 The Regents of the University of California.
 * Copyright (c) 1994-1996 Sun Microsystems, Inc.
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixSend.c,v 1.4.18.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include "tkUnixInt.h"

/* 







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 * Copyright (c) 1989-1994 The Regents of the University of California.
 * Copyright (c) 1994-1996 Sun Microsystems, Inc.
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixSend.c,v 1.4.18.2 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include "tkUnixInt.h"

/* 
1248
1249
1250
1251
1252
1253
1254

































1255
1256
1257
1258
1259
1260
1261
	    regPtr->modified = 1;
	    p = entry;
	}
    }
    RegClose(regPtr);
    return TCL_OK;
}


































/*
 *--------------------------------------------------------------
 *
 * SendInit --
 *
 *	This procedure is called to initialize the







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
	    regPtr->modified = 1;
	    p = entry;
	}
    }
    RegClose(regPtr);
    return TCL_OK;
}

/*
 *--------------------------------------------------------------
 *
 * TkSendCleanup --
 *
 *	This procedure is called to free resources used by the
 *	communication channels for sending commands and
 *	receiving results.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Frees various data structures and windows.
 *
 *--------------------------------------------------------------
 */

void
TkSendCleanup(dispPtr)
    TkDisplay *dispPtr;
{
    if (dispPtr->commTkwin != NULL) {
	Tk_DeleteEventHandler(dispPtr->commTkwin, PropertyChangeMask,
	    SendEventProc, (ClientData) dispPtr);
#ifdef PURIFY
	/* Tk_DestroyWindow(dispPtr->commTkwin); */
	ckfree((char *) dispPtr->commTkwin);
#endif
	dispPtr->commTkwin = NULL;
    }
}

/*
 *--------------------------------------------------------------
 *
 * SendInit --
 *
 *	This procedure is called to initialize the
Changes to unix/tkUnixWm.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixWm.c,v 1.9.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include "tkUnixInt.h"
#include <errno.h>








|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1991-1994 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixWm.c,v 1.9.2.2 2002/06/10 05:38:27 wolfsuit Exp $
 */

#include "tkPort.h"
#include "tkInt.h"
#include "tkUnixInt.h"
#include <errno.h>

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
				 * that is a child of the root window (may
				 * not be window's immediate parent).  If
				 * the window isn't reparented, this has the
				 * value None. */
    char *title;		/* Title to display in window caption.  If
				 * NULL, use name of widget.  Malloced. */
    char *iconName;		/* Name to display in icon.  Malloced. */
    Window master;		/* Master window for TRANSIENT_FOR property,
				 * or None. */
    XWMHints hints;		/* Various pieces of information for
				 * window manager. */
    char *leaderName;		/* Path name of leader of window group
				 * (corresponds to hints.window_group).
				 * Malloc-ed.  Note:  this field doesn't
				 * get updated if leader is destroyed. */
    char *masterWindowName;	/* Path name of window specified as master
				 * in "wm transient" command, or NULL.
				 * Malloc-ed. Note:  this field doesn't
				 * get updated if masterWindowName is
				 * destroyed. */
    Tk_Window icon;		/* Window to use as icon for this window,
				 * or NULL. */
    Tk_Window iconFor;		/* Window for which this window is icon, or
				 * NULL if this isn't an icon for anyone. */
    int withdrawn;		/* Non-zero means window has been withdrawn. */

    /*







<
<






|
|
<
<
<







58
59
60
61
62
63
64


65
66
67
68
69
70
71
72



73
74
75
76
77
78
79
				 * that is a child of the root window (may
				 * not be window's immediate parent).  If
				 * the window isn't reparented, this has the
				 * value None. */
    char *title;		/* Title to display in window caption.  If
				 * NULL, use name of widget.  Malloced. */
    char *iconName;		/* Name to display in icon.  Malloced. */


    XWMHints hints;		/* Various pieces of information for
				 * window manager. */
    char *leaderName;		/* Path name of leader of window group
				 * (corresponds to hints.window_group).
				 * Malloc-ed.  Note:  this field doesn't
				 * get updated if leader is destroyed. */
    TkWindow *masterPtr;	/* Master window for TRANSIENT_FOR property,
				 * or NULL. */



    Tk_Window icon;		/* Window to use as icon for this window,
				 * or NULL. */
    Tk_Window iconFor;		/* Window for which this window is icon, or
				 * NULL if this isn't an icon for anyone. */
    int withdrawn;		/* Non-zero means window has been withdrawn. */

    /*
346
347
348
349
350
351
352



























































353
354
355
356
357
358
359
			    XEvent *eventPtr));
static void		WrapperEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));

/*
 *--------------------------------------------------------------
 *



























































 * TkWmNewWindow --
 *
 *	This procedure is invoked whenever a new top-level
 *	window is created.  Its job is to initialize the WmInfo
 *	structure for the window.
 *
 * Results:







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
			    XEvent *eventPtr));
static void		WrapperEventProc _ANSI_ARGS_((ClientData clientData,
			    XEvent *eventPtr));

/*
 *--------------------------------------------------------------
 *
 * TkWmCleanup --
 *
 *	This procedure is invoked to cleanup remaining wm resources
 *	associated with a display.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	All WmInfo structure resources are freed and invalidated.
 *
 *--------------------------------------------------------------
 */

void TkWmCleanup(dispPtr)
    TkDisplay *dispPtr;
{
    WmInfo *wmPtr, *nextPtr;
    for (wmPtr = dispPtr->firstWmPtr; wmPtr != NULL; wmPtr = nextPtr) {
	/*
	 * We can't assume we have access to winPtr's anymore, so some
	 * cleanup requiring winPtr data is avoided.
	 */
	nextPtr = wmPtr->nextPtr;
	if (wmPtr->title != NULL) {
	    ckfree(wmPtr->title);
	}
	if (wmPtr->iconName != NULL) {
	    ckfree(wmPtr->iconName);
	}
	if (wmPtr->leaderName != NULL) {
	    ckfree(wmPtr->leaderName);
	}
	if (wmPtr->menubar != NULL) {
	    Tk_DestroyWindow(wmPtr->menubar);
	}
	if (wmPtr->wrapperPtr != NULL) {
	    Tk_DestroyWindow((Tk_Window) wmPtr->wrapperPtr);
	}
	while (wmPtr->protPtr != NULL) {
	    ProtocolHandler *protPtr;

	    protPtr = wmPtr->protPtr;
	    wmPtr->protPtr = protPtr->nextPtr;
	    Tcl_EventuallyFree((ClientData) protPtr, TCL_DYNAMIC);
	}
	if (wmPtr->cmdArgv != NULL) {
	    ckfree((char *) wmPtr->cmdArgv);
	}
	if (wmPtr->clientMachine != NULL) {
	    ckfree((char *) wmPtr->clientMachine);
	}
	ckfree((char *) wmPtr);
    }
}

/*
 *--------------------------------------------------------------
 *
 * TkWmNewWindow --
 *
 *	This procedure is invoked whenever a new top-level
 *	window is created.  Its job is to initialize the WmInfo
 *	structure for the window.
 *
 * Results:
369
370
371
372
373
374
375

376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
TkWmNewWindow(winPtr)
    TkWindow *winPtr;		/* Newly-created top-level window. */
{
    register WmInfo *wmPtr;
    TkDisplay *dispPtr = winPtr->dispPtr;

    wmPtr = (WmInfo *) ckalloc(sizeof(WmInfo));

    wmPtr->winPtr = winPtr;
    wmPtr->reparent = None;
    wmPtr->title = NULL;
    wmPtr->iconName = NULL;
    wmPtr->master = None;
    wmPtr->hints.flags = InputHint | StateHint;
    wmPtr->hints.input = True;
    wmPtr->hints.initial_state = NormalState;
    wmPtr->hints.icon_pixmap = None;
    wmPtr->hints.icon_window = None;
    wmPtr->hints.icon_x = wmPtr->hints.icon_y = 0;
    wmPtr->hints.icon_mask = None;
    wmPtr->hints.window_group = None;
    wmPtr->leaderName = NULL;
    wmPtr->masterWindowName = NULL;
    wmPtr->icon = NULL;
    wmPtr->iconFor = NULL;
    wmPtr->withdrawn = 0;
    wmPtr->wrapperPtr = NULL;
    wmPtr->menubar = NULL;
    wmPtr->menuHeight = 0;
    wmPtr->sizeHintsFlags = 0;
    wmPtr->minWidth = wmPtr->minHeight = 1;

    /*
     * Default the maximum dimensions to the size of the display, minus
     * a guess about how space is needed for window manager decorations.
     */

    wmPtr->maxWidth = 0;
    wmPtr->maxHeight = 0;
    wmPtr->gridWin = NULL;
    wmPtr->widthInc = wmPtr->heightInc = 1;
    wmPtr->minAspect.x = wmPtr->minAspect.y = 1;
    wmPtr->maxAspect.x = wmPtr->maxAspect.y = 1;
    wmPtr->reqGridWidth = wmPtr->reqGridHeight = -1;
    wmPtr->gravity = NorthWestGravity;
    wmPtr->width = -1;
    wmPtr->height = -1;
    wmPtr->x = winPtr->changes.x;
    wmPtr->y = winPtr->changes.y;
    wmPtr->parentWidth = winPtr->changes.width
	    + 2*winPtr->changes.border_width;
    wmPtr->parentHeight = winPtr->changes.height
	    + 2*winPtr->changes.border_width;
    wmPtr->xInParent = wmPtr->yInParent = 0;
    wmPtr->configWidth = -1;
    wmPtr->configHeight = -1;
    wmPtr->vRoot = None;
    wmPtr->protPtr = NULL;
    wmPtr->cmdArgv = NULL;
    wmPtr->clientMachine = NULL;
    wmPtr->flags = WM_NEVER_MAPPED;
    wmPtr->nextPtr = (WmInfo *) dispPtr->firstWmPtr;
    dispPtr->firstWmPtr = wmPtr;
    winPtr->wmInfoPtr = wmPtr;

    UpdateVRootGeometry(wmPtr);








>


<
<
|








<
<
<
<
<
<
<
<
<







<
<
<













<



<
<
<







423
424
425
426
427
428
429
430
431
432


433
434
435
436
437
438
439
440
441









442
443
444
445
446
447
448



449
450
451
452
453
454
455
456
457
458
459
460
461

462
463
464



465
466
467
468
469
470
471
TkWmNewWindow(winPtr)
    TkWindow *winPtr;		/* Newly-created top-level window. */
{
    register WmInfo *wmPtr;
    TkDisplay *dispPtr = winPtr->dispPtr;

    wmPtr = (WmInfo *) ckalloc(sizeof(WmInfo));
    memset(wmPtr, 0, sizeof(WmInfo));
    wmPtr->winPtr = winPtr;
    wmPtr->reparent = None;


    wmPtr->masterPtr = NULL;
    wmPtr->hints.flags = InputHint | StateHint;
    wmPtr->hints.input = True;
    wmPtr->hints.initial_state = NormalState;
    wmPtr->hints.icon_pixmap = None;
    wmPtr->hints.icon_window = None;
    wmPtr->hints.icon_x = wmPtr->hints.icon_y = 0;
    wmPtr->hints.icon_mask = None;
    wmPtr->hints.window_group = None;









    wmPtr->minWidth = wmPtr->minHeight = 1;

    /*
     * Default the maximum dimensions to the size of the display, minus
     * a guess about how space is needed for window manager decorations.
     */




    wmPtr->widthInc = wmPtr->heightInc = 1;
    wmPtr->minAspect.x = wmPtr->minAspect.y = 1;
    wmPtr->maxAspect.x = wmPtr->maxAspect.y = 1;
    wmPtr->reqGridWidth = wmPtr->reqGridHeight = -1;
    wmPtr->gravity = NorthWestGravity;
    wmPtr->width = -1;
    wmPtr->height = -1;
    wmPtr->x = winPtr->changes.x;
    wmPtr->y = winPtr->changes.y;
    wmPtr->parentWidth = winPtr->changes.width
	    + 2*winPtr->changes.border_width;
    wmPtr->parentHeight = winPtr->changes.height
	    + 2*winPtr->changes.border_width;

    wmPtr->configWidth = -1;
    wmPtr->configHeight = -1;
    wmPtr->vRoot = None;



    wmPtr->flags = WM_NEVER_MAPPED;
    wmPtr->nextPtr = (WmInfo *) dispPtr->firstWmPtr;
    dispPtr->firstWmPtr = wmPtr;
    winPtr->wmInfoPtr = wmPtr;

    UpdateVRootGeometry(wmPtr);

507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
	if (wmPtr->iconName != NULL) {
	    Tcl_UtfToExternalDString(NULL, wmPtr->iconName, -1, &ds);
	    XSetIconName(winPtr->display, wmPtr->wrapperPtr->window,
		    Tcl_DStringValue(&ds));
	    Tcl_DStringFree(&ds);
	}
    
	if (wmPtr->master != None) {
	    XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window,
		    wmPtr->master);
	}
    
	wmPtr->flags |= WM_UPDATE_SIZE_HINTS;
	UpdateHints(winPtr);
	UpdateWmProtocols(wmPtr);
	if (wmPtr->cmdArgv != NULL) {
	    UpdateCommand(winPtr);







|

|







544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
	if (wmPtr->iconName != NULL) {
	    Tcl_UtfToExternalDString(NULL, wmPtr->iconName, -1, &ds);
	    XSetIconName(winPtr->display, wmPtr->wrapperPtr->window,
		    Tcl_DStringValue(&ds));
	    Tcl_DStringFree(&ds);
	}
    
	if (wmPtr->masterPtr != NULL) {
	    XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window,
		    wmPtr->masterPtr->wmInfoPtr->wrapperPtr->window);
	}
    
	wmPtr->flags |= WM_UPDATE_SIZE_HINTS;
	UpdateHints(winPtr);
	UpdateWmProtocols(wmPtr);
	if (wmPtr->cmdArgv != NULL) {
	    UpdateCommand(winPtr);
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
    }
    if (wmPtr->hints.flags & IconMaskHint) {
	Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_mask);
    }
    if (wmPtr->leaderName != NULL) {
	ckfree(wmPtr->leaderName);
    }
    if (wmPtr->masterWindowName != NULL) {
	ckfree(wmPtr->masterWindowName);
    }
    if (wmPtr->icon != NULL) {
	wmPtr2 = ((TkWindow *) wmPtr->icon)->wmInfoPtr;
	wmPtr2->iconFor = NULL;
	wmPtr2->withdrawn = 1;
    }
    if (wmPtr->iconFor != NULL) {
	wmPtr2 = ((TkWindow *) wmPtr->iconFor)->wmInfoPtr;







<
<
<







696
697
698
699
700
701
702



703
704
705
706
707
708
709
    }
    if (wmPtr->hints.flags & IconMaskHint) {
	Tk_FreeBitmap(winPtr->display, wmPtr->hints.icon_mask);
    }
    if (wmPtr->leaderName != NULL) {
	ckfree(wmPtr->leaderName);
    }



    if (wmPtr->icon != NULL) {
	wmPtr2 = ((TkWindow *) wmPtr->icon)->wmInfoPtr;
	wmPtr2->iconFor = NULL;
	wmPtr2->withdrawn = 1;
    }
    if (wmPtr->iconFor != NULL) {
	wmPtr2 = ((TkWindow *) wmPtr->iconFor)->wmInfoPtr;
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
	}
	if (wmPtr->iconFor != NULL) {
	    Tcl_AppendResult(interp, "can't deiconify ", argv[2],
		    ": it is an icon for ", Tk_PathName(wmPtr->iconFor),
		    (char *) NULL);
	    return TCL_ERROR;
	}
	wmPtr->hints.initial_state = NormalState;
	wmPtr->withdrawn = 0;
	if (wmPtr->flags & WM_NEVER_MAPPED) {
	    return TCL_OK;
	}
	UpdateHints(winPtr);
	Tk_MapWindow((Tk_Window) winPtr);
    } else if ((c == 'f') && (strncmp(argv[1], "focusmodel", length) == 0)
	    && (length >= 2)) {
	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " focusmodel window ?active|passive?\"",
		    (char *) NULL);
	    return TCL_ERROR;







|
<
<
<
<
<
<







1074
1075
1076
1077
1078
1079
1080
1081






1082
1083
1084
1085
1086
1087
1088
	}
	if (wmPtr->iconFor != NULL) {
	    Tcl_AppendResult(interp, "can't deiconify ", argv[2],
		    ": it is an icon for ", Tk_PathName(wmPtr->iconFor),
		    (char *) NULL);
	    return TCL_ERROR;
	}
	(void) TkpWmSetState(winPtr, NormalState);






    } else if ((c == 'f') && (strncmp(argv[1], "focusmodel", length) == 0)
	    && (length >= 2)) {
	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " focusmodel window ?active|passive?\"",
		    (char *) NULL);
	    return TCL_ERROR;
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
	    return TCL_ERROR;
	}
	if (Tk_Attributes((Tk_Window) winPtr)->override_redirect) {
	    Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName,
		    "\": override-redirect flag is set", (char *) NULL);
	    return TCL_ERROR;
	}
	if (wmPtr->master != None) {
	    Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName,
		    "\": it is a transient", (char *) NULL);
	    return TCL_ERROR;
	}
	if (wmPtr->iconFor != NULL) {
	    Tcl_AppendResult(interp, "can't iconify ", argv[2],
		    ": it is an icon for ", Tk_PathName(wmPtr->iconFor),
		   (char *) NULL);
	    return TCL_ERROR;
	}
	wmPtr->hints.initial_state = IconicState;
	if (wmPtr->flags & WM_NEVER_MAPPED) {
	    return TCL_OK;
	}
	if (wmPtr->withdrawn) {
	    UpdateHints(winPtr);
	    Tk_MapWindow((Tk_Window) winPtr);
	    wmPtr->withdrawn = 0;
	} else {
	    if (XIconifyWindow(winPtr->display, wmPtr->wrapperPtr->window,
		    winPtr->screenNum) == 0) {
		Tcl_SetResult(interp,
			"couldn't send iconify message to window manager",
			TCL_STATIC);
		return TCL_ERROR;
	    }
	    WaitForMapNotify(winPtr, 0);
	}
    } else if ((c == 'i') && (strncmp(argv[1], "iconmask", length) == 0)
	    && (length >= 5)) {
	Pixmap pixmap;

	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",







|










|
<
<
<
<
<
<
<
<
<
<
|
|
|
|
<
<







1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329










1330
1331
1332
1333


1334
1335
1336
1337
1338
1339
1340
	    return TCL_ERROR;
	}
	if (Tk_Attributes((Tk_Window) winPtr)->override_redirect) {
	    Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName,
		    "\": override-redirect flag is set", (char *) NULL);
	    return TCL_ERROR;
	}
	if (wmPtr->masterPtr != NULL) {
	    Tcl_AppendResult(interp, "can't iconify \"", winPtr->pathName,
		    "\": it is a transient", (char *) NULL);
	    return TCL_ERROR;
	}
	if (wmPtr->iconFor != NULL) {
	    Tcl_AppendResult(interp, "can't iconify ", argv[2],
		    ": it is an icon for ", Tk_PathName(wmPtr->iconFor),
		   (char *) NULL);
	    return TCL_ERROR;
	}
	if (TkpWmSetState(winPtr, IconicState) == 0) {










	    Tcl_SetResult(interp,
	            "couldn't send iconify message to window manager",
	            TCL_STATIC);
	    return TCL_ERROR;


	}
    } else if ((c == 'i') && (strncmp(argv[1], "iconmask", length) == 0)
	    && (length >= 5)) {
	Pixmap pixmap;

	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
    } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
	    && (length >= 2)) {
	TkWindow **windows, **window_ptr;

	if ((argc != 3) && (argc != 5)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0],
		    " stackorder window ?isabove|isbelow? ?window?\"",
		    (char *) NULL);
	    return TCL_ERROR;
	}

	if (argc == 3) {
            windows = TkWmStackorderToplevel(winPtr);
            if (windows == NULL) {







|







1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
    } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
	    && (length >= 2)) {
	TkWindow **windows, **window_ptr;

	if ((argc != 3) && (argc != 5)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0],
		    " stackorder window ?isabove|isbelow window?\"",
		    (char *) NULL);
	    return TCL_ERROR;
	}

	if (argc == 3) {
            windows = TkWmStackorderToplevel(winPtr);
            if (windows == NULL) {
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901

1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
		return TCL_ERROR;
	    }

	    c = argv[3][0];
	    length = strlen(argv[3]);

	    if ((c == 'n') && (strncmp(argv[3], "normal", length) == 0)) {
		wmPtr->hints.initial_state = NormalState;
		wmPtr->withdrawn = 0;
		if (wmPtr->flags & WM_NEVER_MAPPED) {
		    return TCL_OK;
		}
		UpdateHints(winPtr);
		Tk_MapWindow((Tk_Window) winPtr);
	    } else if ((c == 'i')
		    && (strncmp(argv[3], "iconic", length) == 0)) {
		if (Tk_Attributes((Tk_Window) winPtr)->override_redirect) {
		    Tcl_AppendResult(interp, "can't iconify \"",
			    winPtr->pathName,
			    "\": override-redirect flag is set",
			    (char *) NULL);
		    return TCL_ERROR;
		}
		if (wmPtr->master != None) {
		    Tcl_AppendResult(interp, "can't iconify \"",
			    winPtr->pathName,
			    "\": it is a transient", (char *) NULL);
		    return TCL_ERROR;
		}
		wmPtr->hints.initial_state = IconicState;
		if (wmPtr->flags & WM_NEVER_MAPPED) {
		    return TCL_OK;
		}
		if (wmPtr->withdrawn) {
		    UpdateHints(winPtr);
		    Tk_MapWindow((Tk_Window) winPtr);
		    wmPtr->withdrawn = 0;
		} else {
		    if (XIconifyWindow(winPtr->display,
			    wmPtr->wrapperPtr->window,
			    winPtr->screenNum) == 0) {
			Tcl_SetResult(interp, "couldn't send iconify message to window manager", TCL_STATIC);

			return TCL_ERROR;
		    }
		    WaitForMapNotify(winPtr, 0);
		}
	    } else if ((c == 'w')
		    && (strncmp(argv[3], "withdrawn", length) == 0)) {
		wmPtr->hints.initial_state = WithdrawnState;
		wmPtr->withdrawn = 1;
		if (wmPtr->flags & WM_NEVER_MAPPED) {
		    return TCL_OK;
		}
		if (XWithdrawWindow(winPtr->display, wmPtr->wrapperPtr->window,
			winPtr->screenNum) == 0) {
		    Tcl_SetResult(interp,
			    "couldn't send withdraw message to window manager",
			    TCL_STATIC);
		    return TCL_ERROR;
		}
		WaitForMapNotify(winPtr, 0);
	    } else {
		Tcl_AppendResult(interp, "bad argument \"", argv[3],
			"\": must be normal, iconic or withdrawn",
			(char *) NULL);
		return TCL_ERROR;
	    }
	} else {







|
<
<
<
<
<
<









|





|
<
<
<
<
|
<
<
<
<
<
<
|
>
|
|
<
<


<
<
<
<
<
<
|





<







1876
1877
1878
1879
1880
1881
1882
1883






1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899




1900






1901
1902
1903
1904


1905
1906






1907
1908
1909
1910
1911
1912

1913
1914
1915
1916
1917
1918
1919
		return TCL_ERROR;
	    }

	    c = argv[3][0];
	    length = strlen(argv[3]);

	    if ((c == 'n') && (strncmp(argv[3], "normal", length) == 0)) {
		(void) TkpWmSetState(winPtr, NormalState);






	    } else if ((c == 'i')
		    && (strncmp(argv[3], "iconic", length) == 0)) {
		if (Tk_Attributes((Tk_Window) winPtr)->override_redirect) {
		    Tcl_AppendResult(interp, "can't iconify \"",
			    winPtr->pathName,
			    "\": override-redirect flag is set",
			    (char *) NULL);
		    return TCL_ERROR;
		}
		if (wmPtr->masterPtr != NULL) {
		    Tcl_AppendResult(interp, "can't iconify \"",
			    winPtr->pathName,
			    "\": it is a transient", (char *) NULL);
		    return TCL_ERROR;
		}
		if (TkpWmSetState(winPtr, IconicState) == 0) {




		    Tcl_SetResult(interp,






			    "couldn't send iconify message to window manager",
			    TCL_STATIC);
		    return TCL_ERROR;
		}


	    } else if ((c == 'w')
		    && (strncmp(argv[3], "withdrawn", length) == 0)) {






		if (TkpWmSetState(winPtr, WithdrawnState) == 0) {
		    Tcl_SetResult(interp,
			    "couldn't send withdraw message to window manager",
			    TCL_STATIC);
		    return TCL_ERROR;
		}

	    } else {
		Tcl_AppendResult(interp, "bad argument \"", argv[3],
			"\": must be normal, iconic or withdrawn",
			(char *) NULL);
		return TCL_ERROR;
	    }
	} else {
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007









2008
2009
2010
2011
2012



2013

2014
2015






2016
2017

2018


2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
		    XFree((char *) textProp.value);
		}
		Tcl_DStringFree(&ds);
	    }
	}
    } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0)
	    && (length >= 3)) {
	Tk_Window master;
	WmInfo *wmPtr2;

	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " transient window ?master?\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (argc == 3) {
	    if (wmPtr->master != None) {
		Tcl_SetResult(interp, wmPtr->masterWindowName, TCL_STATIC);
	    }
	    return TCL_OK;
	}
	if (argv[3][0] == '\0') {
	    wmPtr->master = None;
	    if (wmPtr->masterWindowName != NULL) {
		ckfree(wmPtr->masterWindowName);
	    }
	    wmPtr->masterWindowName = NULL;
	} else {
	    master = Tk_NameToWindow(interp, argv[3], tkwin);
	    if (master == NULL) {
		return TCL_ERROR;
	    }
	    while (!Tk_IsTopLevel(master)) {
		/*
		 * Ensure that the master window is actually a Tk toplevel.
		 */

		master = Tk_Parent(master);
	    }
	    Tk_MakeWindowExist(master);
	    wmPtr2 = ((TkWindow *) master)->wmInfoPtr;









	    if (wmPtr2->wrapperPtr == NULL) {
		CreateWrapper(wmPtr2);
	    }
	    wmPtr->master = Tk_WindowId(wmPtr2->wrapperPtr);
	    if (wmPtr->masterWindowName != NULL) {



		ckfree((char *) wmPtr->masterWindowName);

	    }
	    wmPtr->masterWindowName = ckalloc((unsigned) (strlen(argv[3])+1));






	    strcpy(wmPtr->masterWindowName, argv[3]);
	}

	if (!(wmPtr->flags & WM_NEVER_MAPPED)) {


	    XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window,
		    wmPtr->master);
	}
    } else if ((c == 'w') && (strncmp(argv[1], "withdraw", length) == 0)
	    && (length >= 2)) {
	if (argc != 3) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " withdraw window\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (wmPtr->iconFor != NULL) {
	    Tcl_AppendResult(interp, "can't withdraw ", argv[2],
		    ": it is an icon for ", Tk_PathName(wmPtr->iconFor),
		    (char *) NULL);
	    return TCL_ERROR;
	}
	wmPtr->hints.initial_state = WithdrawnState;
	wmPtr->withdrawn = 1;
	if (wmPtr->flags & WM_NEVER_MAPPED) {
	    return TCL_OK;
	}
	if (XWithdrawWindow(winPtr->display, wmPtr->wrapperPtr->window,
		winPtr->screenNum) == 0) {
	    Tcl_SetResult(interp,
		    "couldn't send withdraw message to window manager",
		    TCL_STATIC);
	    return TCL_ERROR;
	}
	WaitForMapNotify(winPtr, 0);
    } else {
	Tcl_AppendResult(interp, "unknown or ambiguous option \"", argv[1],
		"\": must be aspect, client, command, deiconify, ",
		"focusmodel, frame, geometry, grid, group, iconbitmap, ",
		"iconify, iconmask, iconname, iconposition, ",
		"iconwindow, maxsize, minsize, overrideredirect, ",
		"positionfrom, protocol, resizable, sizefrom, stackorder, ",







|








|
|




|
<
<
<
<

|
|


|




|

|
|
>
>
>
>
>
>
>
>
>



|
|
>
>
>
|
>

|
>
>
>
>
>
>
|
|
>

>
>

|














<
<
<
<
<
<
|





<







1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981




1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044






2045
2046
2047
2048
2049
2050

2051
2052
2053
2054
2055
2056
2057
		    XFree((char *) textProp.value);
		}
		Tcl_DStringFree(&ds);
	    }
	}
    } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0)
	    && (length >= 3)) {
	TkWindow *masterPtr = wmPtr->masterPtr;
	WmInfo *wmPtr2;

	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " transient window ?master?\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (argc == 3) {
	    if (masterPtr != NULL) {
		Tcl_SetResult(interp, masterPtr->pathName, TCL_STATIC);
	    }
	    return TCL_OK;
	}
	if (argv[3][0] == '\0') {
	    wmPtr->masterPtr = NULL;




	} else {
	    masterPtr = (TkWindow *) Tk_NameToWindow(interp, argv[3], tkwin);
	    if (masterPtr == NULL) {
		return TCL_ERROR;
	    }
	    while (!Tk_IsTopLevel(masterPtr)) {
		/*
		 * Ensure that the master window is actually a Tk toplevel.
		 */

		masterPtr = masterPtr->parentPtr;
	    }
	    Tk_MakeWindowExist((Tk_Window) masterPtr);

	    if (wmPtr->iconFor != NULL) {
	        Tcl_AppendResult(interp, "can't make \"", argv[2],
	    	        "\" a transient: it is an icon for ",
	                Tk_PathName(wmPtr->iconFor),
	                (char *) NULL);
	        return TCL_ERROR;
	    }

	    wmPtr2 = masterPtr->wmInfoPtr;
	    if (wmPtr2->wrapperPtr == NULL) {
		CreateWrapper(wmPtr2);
	    }

	    if (wmPtr2->iconFor != NULL) {
	        Tcl_AppendResult(interp, "can't make \"", argv[3],
	                "\" a master: it is an icon for ",
	                Tk_PathName(wmPtr2->iconFor),
	                (char *) NULL);
	        return TCL_ERROR;
	    }

	    if (masterPtr == winPtr) {
	        Tcl_AppendResult(interp, "can't make \"", Tk_PathName(winPtr),
	                "\" its own master",
	                (char *) NULL);
	        return TCL_ERROR;
	    } else if (masterPtr != wmPtr->masterPtr) {
	        wmPtr->masterPtr = masterPtr;
	    }
	}
	if (!(wmPtr->flags & WM_NEVER_MAPPED)) {
	    Window xwin = (wmPtr->masterPtr == NULL) ? None :
	            wmPtr->masterPtr->wmInfoPtr->wrapperPtr->window;
	    XSetTransientForHint(winPtr->display, wmPtr->wrapperPtr->window,
		    xwin);
	}
    } else if ((c == 'w') && (strncmp(argv[1], "withdraw", length) == 0)
	    && (length >= 2)) {
	if (argc != 3) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " withdraw window\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (wmPtr->iconFor != NULL) {
	    Tcl_AppendResult(interp, "can't withdraw ", argv[2],
		    ": it is an icon for ", Tk_PathName(wmPtr->iconFor),
		    (char *) NULL);
	    return TCL_ERROR;
	}






	if (TkpWmSetState(winPtr, WithdrawnState) == 0) {
	    Tcl_SetResult(interp,
		    "couldn't send withdraw message to window manager",
		    TCL_STATIC);
	    return TCL_ERROR;
	}

    } else {
	Tcl_AppendResult(interp, "unknown or ambiguous option \"", argv[1],
		"\": must be aspect, client, command, deiconify, ",
		"focusmodel, frame, geometry, grid, group, iconbitmap, ",
		"iconify, iconmask, iconname, iconposition, ",
		"iconwindow, maxsize, minsize, overrideredirect, ",
		"positionfrom, protocol, resizable, sizefrom, stackorder, ",
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350

2351
2352
2353
2354
2355
2356
2357
            }
	}
	wmPtr->configWidth = configEventPtr->width;
	wmPtr->configHeight = configEventPtr->height;
    }

    if (dispPtr->wmTracing) {
	printf("ConfigureEvent: %s x = %d y = %d, width = %d, height = %d",
		winPtr->pathName, configEventPtr->x, configEventPtr->y,
		configEventPtr->width, configEventPtr->height);
	printf(" send_event = %d, serial = %ld\n", configEventPtr->send_event,
		configEventPtr->serial);

    }
    wrapperPtr->changes.width = configEventPtr->width;
    wrapperPtr->changes.height = configEventPtr->height;
    wrapperPtr->changes.border_width = configEventPtr->border_width;
    wrapperPtr->changes.sibling = configEventPtr->above;
    wrapperPtr->changes.stack_mode = Above;








|


|
|
>







2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
            }
	}
	wmPtr->configWidth = configEventPtr->width;
	wmPtr->configHeight = configEventPtr->height;
    }

    if (dispPtr->wmTracing) {
	printf("ConfigureEvent: %s x = %d y = %d, width = %d, height = %d\n",
		winPtr->pathName, configEventPtr->x, configEventPtr->y,
		configEventPtr->width, configEventPtr->height);
	printf("    send_event = %d, serial = %ld (win %p, wrapper %p)\n",
		configEventPtr->send_event, configEventPtr->serial,
		winPtr, wrapperPtr);
    }
    wrapperPtr->changes.width = configEventPtr->width;
    wrapperPtr->changes.height = configEventPtr->height;
    wrapperPtr->changes.border_width = configEventPtr->border_width;
    wrapperPtr->changes.sibling = configEventPtr->above;
    wrapperPtr->changes.stack_mode = Above;

2366
2367
2368
2369
2370
2371
2372






2373
2374
2375
2376
2377
2378
2379
     * information, but ICCCM doesn't require them to do this
     * under all conditions, and the information provided doesn't
     * include everything we need here.  So, the code below
     * maintains a bunch of information about the parent window.
     * If the window hasn't been reparented, we pretend that
     * there is a parent shrink-wrapped around the window.
     */







    if ((wmPtr->reparent == None) || !ComputeReparentGeometry(wmPtr)) {
	wmPtr->parentWidth = configEventPtr->width
		+ 2*configEventPtr->border_width;
	wmPtr->parentHeight = configEventPtr->height
		+ 2*configEventPtr->border_width;
	wrapperPtr->changes.x = wmPtr->x = configEventPtr->x;







>
>
>
>
>
>







2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
     * information, but ICCCM doesn't require them to do this
     * under all conditions, and the information provided doesn't
     * include everything we need here.  So, the code below
     * maintains a bunch of information about the parent window.
     * If the window hasn't been reparented, we pretend that
     * there is a parent shrink-wrapped around the window.
     */

    if (dispPtr->wmTracing) {
	printf("    %s parent == %p, above %p\n",
		winPtr->pathName, (void *) wmPtr->reparent,
		(void *) configEventPtr->above);
    }

    if ((wmPtr->reparent == None) || !ComputeReparentGeometry(wmPtr)) {
	wmPtr->parentWidth = configEventPtr->width
		+ 2*configEventPtr->border_width;
	wmPtr->parentHeight = configEventPtr->height
		+ 2*configEventPtr->border_width;
	wrapperPtr->changes.x = wmPtr->x = configEventPtr->x;
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
		    numItems);
	}
	XFree((char *) virtualRootPtr);
    }
    Tk_DeleteErrorHandler(handler);

    if (dispPtr->wmTracing) {
	printf("ReparentEvent: %s reparented to 0x%x, vRoot = 0x%x\n",
		wmPtr->winPtr->pathName,
		(unsigned int) reparentEventPtr->parent, (unsigned int) vRoot);
    }

    /*
     * Fetch correct geometry information for the new virtual root.
     */








|
|







2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
		    numItems);
	}
	XFree((char *) virtualRootPtr);
    }
    Tk_DeleteErrorHandler(handler);

    if (dispPtr->wmTracing) {
	printf("ReparentEvent: %s (%p) reparented to 0x%x, vRoot = 0x%x\n",
		wmPtr->winPtr->pathName, wmPtr->winPtr,
		(unsigned int) reparentEventPtr->parent, (unsigned int) vRoot);
    }

    /*
     * Fetch correct geometry information for the new virtual root.
     */

2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
     * ReparentNotify event coming later).
     */

    handler = Tk_CreateErrorHandler(wrapperPtr->display, -1, -1, -1,
	    (Tk_ErrorProc *) NULL, (ClientData) NULL);
    wmPtr->reparent = reparentEventPtr->parent;
    while (1) {
	if (XQueryTree(wrapperPtr->display, wmPtr->reparent, &dummy2, &ancestor,
		&children, &dummy) == 0) {
	    Tk_DeleteErrorHandler(handler);
	    goto noReparent;
	}
	XFree((char *) children);
	if ((ancestor == vRoot) ||
		(ancestor == RootWindow(wrapperPtr->display,
		wrapperPtr->screenNum))) {







|
|







2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
     * ReparentNotify event coming later).
     */

    handler = Tk_CreateErrorHandler(wrapperPtr->display, -1, -1, -1,
	    (Tk_ErrorProc *) NULL, (ClientData) NULL);
    wmPtr->reparent = reparentEventPtr->parent;
    while (1) {
	if (XQueryTree(wrapperPtr->display, wmPtr->reparent, &dummy2,
		&ancestor, &children, &dummy) == 0) {
	    Tk_DeleteErrorHandler(handler);
	    goto noReparent;
	}
	XFree((char *) children);
	if ((ancestor == vRoot) ||
		(ancestor == RootWindow(wrapperPtr->display,
		wrapperPtr->screenNum))) {
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654

2655
2656
2657
2658
2659
2660
2661
2662
     *
     * 3. Ignore size changes coming from the window system if we're
     * about to change the size ourselves but haven't seen the event for
     * it yet:  our size change is supposed to take priority.
     */

    if (!(wmPtr->flags & WM_MOVE_PENDING)
	    && ((wmPtr->wrapperPtr->changes.x != (x + wmPtr->xInParent))
	    || (wmPtr->wrapperPtr->changes.y != (y + wmPtr->yInParent)))) {
	wmPtr->x = x;
	if (wmPtr->flags & WM_NEGATIVE_X) {
	    wmPtr->x = wmPtr->vRootWidth - (wmPtr->x + wmPtr->parentWidth);
	}
	wmPtr->y = y;
	if (wmPtr->flags & WM_NEGATIVE_Y) {
	    wmPtr->y = wmPtr->vRootHeight - (wmPtr->y + wmPtr->parentHeight);
	}
    }

    wmPtr->wrapperPtr->changes.x = x + wmPtr->xInParent;
    wmPtr->wrapperPtr->changes.y = y + wmPtr->yInParent;
    if (dispPtr->wmTracing) {
	printf("wrapperPtr coords %d,%d, wmPtr coords %d,%d, offsets %d %d\n",
		wrapperPtr->changes.x, wrapperPtr->changes.y,

		wmPtr->x, wmPtr->y, wmPtr->xInParent, wmPtr->yInParent);
    }
    return 1;
}

/*
 *----------------------------------------------------------------------
 *







|
|










|
|

|
|
>
|







2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
     *
     * 3. Ignore size changes coming from the window system if we're
     * about to change the size ourselves but haven't seen the event for
     * it yet:  our size change is supposed to take priority.
     */

    if (!(wmPtr->flags & WM_MOVE_PENDING)
	    && ((wrapperPtr->changes.x != (x + wmPtr->xInParent))
	    || (wrapperPtr->changes.y != (y + wmPtr->yInParent)))) {
	wmPtr->x = x;
	if (wmPtr->flags & WM_NEGATIVE_X) {
	    wmPtr->x = wmPtr->vRootWidth - (wmPtr->x + wmPtr->parentWidth);
	}
	wmPtr->y = y;
	if (wmPtr->flags & WM_NEGATIVE_Y) {
	    wmPtr->y = wmPtr->vRootHeight - (wmPtr->y + wmPtr->parentHeight);
	}
    }

    wrapperPtr->changes.x = x + wmPtr->xInParent;
    wrapperPtr->changes.y = y + wmPtr->yInParent;
    if (dispPtr->wmTracing) {
	printf("wrapperPtr %p coords %d,%d\n",
		wrapperPtr, wrapperPtr->changes.x, wrapperPtr->changes.y);
	printf("     wmPtr %p coords %d,%d, offsets %d %d\n",
		wmPtr, wmPtr->x, wmPtr->y, wmPtr->xInParent, wmPtr->yInParent);
    }
    return 1;
}

/*
 *----------------------------------------------------------------------
 *
2984
2985
2986
2987
2988
2989
2990
2991

2992
2993
2994
2995
2996
2997
2998
	     */

	    return;
	}
	wmPtr->configWidth = width;
	wmPtr->configHeight = height;
	if (winPtr->dispPtr->wmTracing) {
	    printf("UpdateGeometryInfo resizing to %d x %d\n", width, height);

	}
	XResizeWindow(winPtr->display, wmPtr->wrapperPtr->window,
		(unsigned) width, (unsigned) height);
    } else if ((wmPtr->menubar != NULL)
	    && ((Tk_Width(wmPtr->menubar) != wmPtr->wrapperPtr->changes.width)
	    || (Tk_Height(wmPtr->menubar) != wmPtr->menuHeight))) {
	/*







|
>







2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
	     */

	    return;
	}
	wmPtr->configWidth = width;
	wmPtr->configHeight = height;
	if (winPtr->dispPtr->wmTracing) {
	    printf("UpdateGeometryInfo resizing %p to %d x %d\n",
		    (void *)wmPtr->wrapperPtr->window, width, height);
	}
	XResizeWindow(winPtr->display, wmPtr->wrapperPtr->window,
		(unsigned) width, (unsigned) height);
    } else if ((wmPtr->menubar != NULL)
	    && ((Tk_Width(wmPtr->menubar) != wmPtr->wrapperPtr->changes.width)
	    || (Tk_Height(wmPtr->menubar) != wmPtr->menuHeight))) {
	/*
3380
3381
3382
3383
3384
3385
3386
3387

3388
3389
3390
3391
3392
3393
3394
		printf("WaitForMapNotify giving up on %s\n", winPtr->pathName);
	    }
	    break;
	}
    }
    wmPtr->flags &= ~WM_MOVE_PENDING;
    if (winPtr->dispPtr->wmTracing) {
	printf("WaitForMapNotify finished with %s\n", winPtr->pathName);

    }
}

/*
 *--------------------------------------------------------------
 *
 * UpdateHints --







|
>







3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
		printf("WaitForMapNotify giving up on %s\n", winPtr->pathName);
	    }
	    break;
	}
    }
    wmPtr->flags &= ~WM_MOVE_PENDING;
    if (winPtr->dispPtr->wmTracing) {
	printf("WaitForMapNotify finished with %s (winPtr %p, wmPtr %p)\n",
		winPtr->pathName, winPtr, wmPtr);
    }
}

/*
 *--------------------------------------------------------------
 *
 * UpdateHints --
4194
4195
4196
4197
4198
4199
4200
4201

4202
4203
4204
4205
4206
4207
4208
    Tcl_HashTable *table;			/* Maps X id to TkWindow */
{
    TkWindow *childPtr;
    Tcl_HashEntry *hPtr;
    Window wrapper;
    int newEntry;

    if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) {

        wrapper = (winPtr->wmInfoPtr->reparent != None)
            ? winPtr->wmInfoPtr->reparent
            : winPtr->wmInfoPtr->wrapperPtr->window;

        hPtr = Tcl_CreateHashEntry(table,
            (char *) wrapper, &newEntry);
        Tcl_SetHashValue(hPtr, winPtr);







|
>







4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
    Tcl_HashTable *table;			/* Maps X id to TkWindow */
{
    TkWindow *childPtr;
    Tcl_HashEntry *hPtr;
    Window wrapper;
    int newEntry;

    if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr) &&
            !Tk_IsEmbedded(winPtr)) {
        wrapper = (winPtr->wmInfoPtr->reparent != None)
            ? winPtr->wmInfoPtr->reparent
            : winPtr->wmInfoPtr->wrapperPtr->window;

        hPtr = Tcl_CreateHashEntry(table,
            (char *) wrapper, &newEntry);
        Tcl_SetHashValue(hPtr, winPtr);
4285
4286
4287
4288
4289
4290
4291



4292
4293
4294
4295
4296
4297
4298
                childWinPtr = (TkWindow *) Tcl_GetHashValue(hPtr);
                *window_ptr++ = childWinPtr;
            }
        }
        if ((window_ptr - windows) != table.numEntries)
            panic("num matched toplevel windows does not equal num children");
        *window_ptr = NULL;



    }

    done:
    Tcl_DeleteHashTable(&table);
    return windows;
}








>
>
>







4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
                childWinPtr = (TkWindow *) Tcl_GetHashValue(hPtr);
                *window_ptr++ = childWinPtr;
            }
        }
        if ((window_ptr - windows) != table.numEntries)
            panic("num matched toplevel windows does not equal num children");
        *window_ptr = NULL;
	if (numChildren) {
	    XFree((char *) children);
	}
    }

    done:
    Tcl_DeleteHashTable(&table);
    return windows;
}

4332
4333
4334
4335
4336
4337
4338

4339
4340
4341
4342
4343
4344
4345
    int i;
    int desiredIndex = 0;	/* Initialized to stop gcc warnings. */
    int ourIndex = 0;		/* Initialized to stop gcc warnings. */
    unsigned long serial;
    Tk_ErrorHandler handler;
    TkWindow *wrapperPtr;


    changes.stack_mode = aboveBelow;
    changes.sibling = None;
    mask = CWStackMode;
    if (winPtr->window == None) {
	Tk_MakeWindowExist((Tk_Window) winPtr);
    }
    if (winPtr->wmInfoPtr->flags & WM_NEVER_MAPPED) {







>







4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
    int i;
    int desiredIndex = 0;	/* Initialized to stop gcc warnings. */
    int ourIndex = 0;		/* Initialized to stop gcc warnings. */
    unsigned long serial;
    Tk_ErrorHandler handler;
    TkWindow *wrapperPtr;

    memset(&changes, 0, sizeof(XWindowChanges));
    changes.stack_mode = aboveBelow;
    changes.sibling = None;
    mask = CWStackMode;
    if (winPtr->window == None) {
	Tk_MakeWindowExist((Tk_Window) winPtr);
    }
    if (winPtr->wmInfoPtr->flags & WM_NEVER_MAPPED) {
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
     * Wait for the reconfiguration to complete.  If we don't wait, then
     * the window may not restack for a while and the application might
     * observe it before it has restacked.  Waiting for the reconfiguration
     * is tricky if winPtr has been reparented, since the window getting
     * the event isn't one that Tk owns.
     */

    if (window == wrapperPtr->window) {
	WaitForConfigureNotify(winPtr, serial);
    } else {
	XEvent event;
	int diff;

	while (1) {
	    if (WaitForEvent(winPtr->display, winPtr->wmInfoPtr,
		    ConfigureNotify, &event) != TCL_OK) {
		break;
	    }
	    diff = event.xconfigure.serial - serial;
	    if (diff >= 0) {
		break;
	    }
	}
	/*
	 * Ignore errors that occur when we are de-selecting events on
	 * window, since it's possible that the window doesn't exist
	 * anymore (see comment above previous call to XSelectInput).
	 */

	handler = Tk_CreateErrorHandler(winPtr->display, -1, -1, -1,







<
|
<
<
<

<
<
<
<
<
<
|
<
<
<







4496
4497
4498
4499
4500
4501
4502

4503



4504






4505



4506
4507
4508
4509
4510
4511
4512
     * Wait for the reconfiguration to complete.  If we don't wait, then
     * the window may not restack for a while and the application might
     * observe it before it has restacked.  Waiting for the reconfiguration
     * is tricky if winPtr has been reparented, since the window getting
     * the event isn't one that Tk owns.
     */


    WaitForConfigureNotify(winPtr, serial);










    if (window != wrapperPtr->window) {



	/*
	 * Ignore errors that occur when we are de-selecting events on
	 * window, since it's possible that the window doesn't exist
	 * anymore (see comment above previous call to XSelectInput).
	 */

	handler = Tk_CreateErrorHandler(winPtr->display, -1, -1, -1,
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
    hPtr = Tcl_CreateHashEntry(&wrapperPtr->dispPtr->winTable,
	    (char *) wrapperPtr->window, &new);
    Tcl_SetHashValue(hPtr, wrapperPtr);
    wrapperPtr->mainPtr = winPtr->mainPtr;
    wrapperPtr->mainPtr->refCount++;
    wrapperPtr->dirtyAtts = 0;
    wrapperPtr->dirtyChanges = 0;
#ifdef TK_USE_INPUT_METHODS
    wrapperPtr->inputContext = NULL;
#endif /* TK_USE_INPUT_METHODS */
    wrapperPtr->wmInfoPtr = wmPtr;

    /*
     * Reparent the toplevel window inside the wrapper.
     */

    XReparentWindow(wrapperPtr->display, winPtr->window, wrapperPtr->window,







<
<
<







4954
4955
4956
4957
4958
4959
4960



4961
4962
4963
4964
4965
4966
4967
    hPtr = Tcl_CreateHashEntry(&wrapperPtr->dispPtr->winTable,
	    (char *) wrapperPtr->window, &new);
    Tcl_SetHashValue(hPtr, wrapperPtr);
    wrapperPtr->mainPtr = winPtr->mainPtr;
    wrapperPtr->mainPtr->refCount++;
    wrapperPtr->dirtyAtts = 0;
    wrapperPtr->dirtyChanges = 0;



    wrapperPtr->wmInfoPtr = wmPtr;

    /*
     * Reparent the toplevel window inside the wrapper.
     */

    XReparentWindow(wrapperPtr->display, winPtr->window, wrapperPtr->window,
5263
5264
5265
5266
5267
5268
5269


































































    XSetCommand(winPtr->display, wmPtr->wrapperPtr->window,
	    cmdArgv, wmPtr->cmdArgc);
    Tcl_DStringFree(&cmds);
    ckfree((char *) cmdArgv);
    ckfree((char *) offsets);
}








































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336

    XSetCommand(winPtr->display, wmPtr->wrapperPtr->window,
	    cmdArgv, wmPtr->cmdArgc);
    Tcl_DStringFree(&cmds);
    ckfree((char *) cmdArgv);
    ckfree((char *) offsets);
}

/*
 *----------------------------------------------------------------------
 *
 * TkpWmSetState --
 *
 *	Sets the window manager state for the wrapper window of a
 *	given toplevel window.
 *
 * Results:
 *	0 on error, 1 otherwise
 *
 * Side effects:
 *	May minimize, restore, or withdraw a window.
 *
 *----------------------------------------------------------------------
 */

int
TkpWmSetState(winPtr, state)
     TkWindow *winPtr;		/* Toplevel window to operate on. */
     int state;			/* One of IconicState, NormalState,
				 * or WithdrawnState. */
{
    WmInfo *wmPtr = winPtr->wmInfoPtr;

    if (state == WithdrawnState) {
        wmPtr->hints.initial_state = WithdrawnState;
        wmPtr->withdrawn = 1;
        if (wmPtr->flags & WM_NEVER_MAPPED) {
            return 1;
        }
        if (XWithdrawWindow(winPtr->display, wmPtr->wrapperPtr->window,
                winPtr->screenNum) == 0) {
            return 0;
        }
        WaitForMapNotify(winPtr, 0);
    } else if (state == NormalState) {
        wmPtr->hints.initial_state = NormalState;
        wmPtr->withdrawn = 0;
        if (wmPtr->flags & WM_NEVER_MAPPED) {
            return 1;
        }
        UpdateHints(winPtr);
        Tk_MapWindow((Tk_Window) winPtr);
    } else if (state == IconicState) {
        wmPtr->hints.initial_state = IconicState;
        if (wmPtr->flags & WM_NEVER_MAPPED) {
            return 1;
        }
        if (wmPtr->withdrawn) {
            UpdateHints(winPtr);
            Tk_MapWindow((Tk_Window) winPtr);
            wmPtr->withdrawn = 0;
        } else {
            if (XIconifyWindow(winPtr->display, wmPtr->wrapperPtr->window,
                    winPtr->screenNum) == 0) {
                return 0;
            }
            WaitForMapNotify(winPtr, 0);
        }
    }

    return 1;
}
Changes to unix/tkUnixXId.c.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 *
 * Copyright (c) 1993 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixXId.c,v 1.6 2001/09/25 16:25:20 dgp Exp $
 */

/*
 * The definition below is needed on some systems so that we can access
 * the resource_alloc field of Display structures in order to replace
 * the resource allocator.
 */







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 *
 * Copyright (c) 1993 The Regents of the University of California.
 * Copyright (c) 1994-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkUnixXId.c,v 1.6.2.1 2002/06/10 05:38:27 wolfsuit Exp $
 */

/*
 * The definition below is needed on some systems so that we can access
 * the resource_alloc field of Display structures in order to replace
 * the resource allocator.
 */
80
81
82
83
84
85
86
87











































88
89
90
91
92
93
94
					 * display. */
{
    dispPtr->idStackPtr = NULL;
    dispPtr->defaultAllocProc = (XID (*) _ANSI_ARGS_((Display *display))) 
            dispPtr->display->resource_alloc;
    dispPtr->display->resource_alloc = AllocXId;
    dispPtr->windowStackPtr = NULL;
    dispPtr->idCleanupScheduled = 0;











































}

/*
 *----------------------------------------------------------------------
 *
 * AllocXId --
 *







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
					 * display. */
{
    dispPtr->idStackPtr = NULL;
    dispPtr->defaultAllocProc = (XID (*) _ANSI_ARGS_((Display *display))) 
            dispPtr->display->resource_alloc;
    dispPtr->display->resource_alloc = AllocXId;
    dispPtr->windowStackPtr = NULL;
    dispPtr->idCleanupScheduled = (Tcl_TimerToken) 0;
}

/*
 *----------------------------------------------------------------------
 *
 * TkFreeXId --
 *
 *	This procedure is called to free resources for the id allocator
 *	for a given display.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	Frees the id and window stack pools.
 *
 *----------------------------------------------------------------------
 */

void
TkFreeXId(dispPtr)
    TkDisplay *dispPtr;			/* Tk's information about the
					 * display. */
{
    TkIdStack *stackPtr, *freePtr;

    if (dispPtr->idCleanupScheduled) {
	Tcl_DeleteTimerHandler(dispPtr->idCleanupScheduled);
    }

    for (stackPtr = dispPtr->idStackPtr; stackPtr != NULL; ) {
	freePtr = stackPtr;
	stackPtr = stackPtr->nextPtr;
	ckfree((char *) freePtr);
    }
    dispPtr->idStackPtr = NULL;

    for (stackPtr = dispPtr->windowStackPtr; stackPtr != NULL; ) {
	freePtr = stackPtr;
	stackPtr = stackPtr->nextPtr;
	ckfree((char *) freePtr);
    }
    dispPtr->windowStackPtr = NULL;
}

/*
 *----------------------------------------------------------------------
 *
 * AllocXId --
 *
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304

    /*
     * Schedule a call to WindowIdCleanup if one isn't already
     * scheduled.
     */

    if (!dispPtr->idCleanupScheduled) {
	dispPtr->idCleanupScheduled = 1;
	Tcl_CreateTimerHandler(100, WindowIdCleanup, (ClientData) dispPtr);
    }
}

/*
 *----------------------------------------------------------------------
 *
 * WindowIdCleanup --







|
|







332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347

    /*
     * Schedule a call to WindowIdCleanup if one isn't already
     * scheduled.
     */

    if (!dispPtr->idCleanupScheduled) {
	dispPtr->idCleanupScheduled =
	    Tcl_CreateTimerHandler(100, WindowIdCleanup, (ClientData) dispPtr);
    }
}

/*
 *----------------------------------------------------------------------
 *
 * WindowIdCleanup --
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
{
    TkDisplay *dispPtr = (TkDisplay *) clientData;
    int anyEvents, delta;
    Tk_RestrictProc *oldProc;
    ClientData oldData;
    static Tcl_Time timeout = {0, 0};

    dispPtr->idCleanupScheduled = 0;

    /*
     * See if it's safe to recycle the window ids.  It's safe if:
     * (a) no deletions are in progress.
     * (b) the server has seen all of the requests up to the last
     *     XDestroyWindow request.
     * (c) there are no events in the event queue; the only way to







|







367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
{
    TkDisplay *dispPtr = (TkDisplay *) clientData;
    int anyEvents, delta;
    Tk_RestrictProc *oldProc;
    ClientData oldData;
    static Tcl_Time timeout = {0, 0};

    dispPtr->idCleanupScheduled = (Tcl_TimerToken) 0;

    /*
     * See if it's safe to recycle the window ids.  It's safe if:
     * (a) no deletions are in progress.
     * (b) the server has seen all of the requests up to the last
     *     XDestroyWindow request.
     * (c) there are no events in the event queue; the only way to
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
    return;

    /*
     * It's still not safe to free up the ids.  Try again a bit later.
     */

    tryAgain:
    dispPtr->idCleanupScheduled = 1;
    Tcl_CreateTimerHandler(500, WindowIdCleanup, (ClientData) dispPtr);
}

/*
 *----------------------------------------------------------------------
 *
 * WindowIdCleanup2 --
 *







|
|







414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
    return;

    /*
     * It's still not safe to free up the ids.  Try again a bit later.
     */

    tryAgain:
    dispPtr->idCleanupScheduled =
	Tcl_CreateTimerHandler(500, WindowIdCleanup, (ClientData) dispPtr);
}

/*
 *----------------------------------------------------------------------
 *
 * WindowIdCleanup2 --
 *
Changes to win/Makefile.in.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# This file is a Makefile for Tk.  If it has the name "Makefile.in"
# then it is a template for a Makefile;  to generate the actual Makefile,
# run "./configure", which is a configuration script generated by the
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
# RCS: @(#) $Id: Makefile.in,v 1.44.2.1 2002/02/05 02:25:18 wolfsuit Exp $

TCLVERSION		= @TCL_VERSION@
VERSION			= @TK_VERSION@

#----------------------------------------------------------------
# Things you can change to personalize the Makefile for your own
# site (you can make these changes in either Makefile.in or






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
# This file is a Makefile for Tk.  If it has the name "Makefile.in"
# then it is a template for a Makefile;  to generate the actual Makefile,
# run "./configure", which is a configuration script generated by the
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
# RCS: @(#) $Id: Makefile.in,v 1.44.2.2 2002/06/10 05:38:27 wolfsuit Exp $

TCLVERSION		= @TCL_VERSION@
VERSION			= @TK_VERSION@

#----------------------------------------------------------------
# Things you can change to personalize the Makefile for your own
# site (you can make these changes in either Makefile.in or
315
316
317
318
319
320
321

322
323
324
325
326
327
328
	tkListbox.$(OBJEXT) \
	tkMacWinMenu.$(OBJEXT) \
	tkMain.$(OBJEXT) \
	tkMenu.$(OBJEXT) \
	tkMenubutton.$(OBJEXT) \
	tkMenuDraw.$(OBJEXT) \
	tkMessage.$(OBJEXT) \

	tkObj.$(OBJEXT) \
	tkOldConfig.$(OBJEXT) \
	tkOption.$(OBJEXT) \
	tkPack.$(OBJEXT) \
	tkPlace.$(OBJEXT) \
	tkPointer.$(OBJEXT) \
	tkRectOval.$(OBJEXT) \







>







315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
	tkListbox.$(OBJEXT) \
	tkMacWinMenu.$(OBJEXT) \
	tkMain.$(OBJEXT) \
	tkMenu.$(OBJEXT) \
	tkMenubutton.$(OBJEXT) \
	tkMenuDraw.$(OBJEXT) \
	tkMessage.$(OBJEXT) \
	tkPanedWindow.$(OBJEXT) \
	tkObj.$(OBJEXT) \
	tkOldConfig.$(OBJEXT) \
	tkOption.$(OBJEXT) \
	tkPack.$(OBJEXT) \
	tkPlace.$(OBJEXT) \
	tkPointer.$(OBJEXT) \
	tkRectOval.$(OBJEXT) \
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
test: binaries $(TKTEST)
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	./$(TKTEST) "$(ROOT_DIR_NATIVE)/tests/all.tcl" $(TESTFLAGS) \
	| ./$(CAT32)

runtest: $(TKTEST)
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	./$(TKTEST) 

# This target can be used to run wish from the build directory
# via `make shell` or `make shell SCRIPT=foo.tcl`
shell: $(WISH)
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	./$(WISH) $(SCRIPT)

# This target can be used to run wish inside either gdb or insight
gdb: $(WISH)
	@echo "set env TCL_LIBRARY=$(TCL_SRC_DIR_NATIVE)/library" > gdb.run
	@echo "set env TK_LIBRARY=$(ROOT_DIR_NATIVE)/library" >> gdb.run
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	gdb ./$(WISH) --command=gdb.run
	rm gdb.run

install: all install-binaries install-libraries install-doc install-demos







|



|



|






|







388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
test: binaries $(TKTEST)
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	./$(TKTEST) "$(ROOT_DIR_NATIVE)/tests/all.tcl" $(TESTFLAGS) \
	| ./$(CAT32)

runtest: binaries $(TKTEST)
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	./$(TKTEST) $(TESTFLAGS) $(SCRIPT)

# This target can be used to run wish from the build directory
# via `make shell` or `make shell SCRIPT=foo.tcl`
shell: binaries
	@TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \
	TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	./$(WISH) $(SCRIPT)

# This target can be used to run wish inside either gdb or insight
gdb: binaries
	@echo "set env TCL_LIBRARY=$(TCL_SRC_DIR_NATIVE)/library" > gdb.run
	@echo "set env TK_LIBRARY=$(ROOT_DIR_NATIVE)/library" >> gdb.run
	PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
	gdb ./$(WISH) --command=gdb.run
	rm gdb.run

install: all install-binaries install-libraries install-doc install-demos
Changes to win/README.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Tk 8.4 for Windows

Originally by Scott Stanton while at Sun Microsystems Labs

RCS: @(#) $Id: README,v 1.15 2001/07/05 01:45:04 uid38172 Exp $

This is the directory where you configure and compile the Windows
version of Tk.  This directory also contains source files for Tk
that are specific to Microsoft Windows.  The rest of this file
contains information specific to the Windows version of Tk.

Please see the README and win/README files that come with the
associated Tcl release for an extensive set of pointers to
documentation.  You will need to obtain and compile the
Tcl release before using the Tk source distrition.

If you install the Tk sources next to the Tcl sources, then
the Tk Makefiles (e.g., makefile.vc for VC++) will properly
locate the necessary Tcl files.  Otherwise you may need to
edit makefile.vc and adjust the path to Tcl accordingly.

Information about compiling for windows is maintained at:
    http://www.purl.org/tcl/home/doc/howto/compile.html




|

















|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Tk 8.4 for Windows

Originally by Scott Stanton while at Sun Microsystems Labs

RCS: @(#) $Id: README,v 1.15.2.1 2002/06/10 05:38:27 wolfsuit Exp $

This is the directory where you configure and compile the Windows
version of Tk.  This directory also contains source files for Tk
that are specific to Microsoft Windows.  The rest of this file
contains information specific to the Windows version of Tk.

Please see the README and win/README files that come with the
associated Tcl release for an extensive set of pointers to
documentation.  You will need to obtain and compile the
Tcl release before using the Tk source distrition.

If you install the Tk sources next to the Tcl sources, then
the Tk Makefiles (e.g., makefile.vc for VC++) will properly
locate the necessary Tcl files.  Otherwise you may need to
edit makefile.vc and adjust the path to Tcl accordingly.

Information about compiling for windows is maintained at:
    http://www.tcl.tk/doc/howto/compile.html
Changes to win/buildall.vc.bat.
1
2





3





4
5
6
7

8

9

10

11

12








13
@echo off
if "%MSVCDir%" == "" call c:\dev\devstudio60\vc98\bin\vcvars32.bat











set INSTALLDIR=C:\tclTestArea
set TCLDIR=..\..\tcl_head

nmake -nologo -f makefile.vc release

nmake -nologo -f makefile.vc release OPTS=static,linkexten

nmake -nologo -f makefile.vc core    OPTS=static,msvcrt

nmake -nologo -f makefile.vc release OPTS=static,threads,linkexten

nmake -nologo -f makefile.vc core    OPTS=static,msvcrt,threads

nmake -nologo -f makefile.vc release OPTS=threads








pause

|
>
>
>
>
>

>
>
>
>
>
|


|
>

>
|
>
|
>
|
>

>
>
>
>
>
>
>
>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@echo off

::  This is an example batchfile for building everything. Please
::  edit this (or make your own) for your needs and wants using
::  the instructions for calling makefile.vc found in makefile.vc
::
::  RCS: @(#) $Id: buildall.vc.bat,v 1.2.2.2 2002/06/10 05:38:27 wolfsuit Exp $

echo Sit back and have a cup of coffee while this grinds through ;)
echo You asked for *everything*, remember?
echo.

if "%MSVCDir%" == "" call C:\dev\devstudio60\vc98\bin\vcvars32.bat
set INSTALLDIR=C:\progra~1\tcl
set TCLDIR=..\..\tcl_head

nmake -nologo -f makefile.vc release winhelp OPTS=none
if errorlevel 1 goto error
nmake -nologo -f makefile.vc release OPTS=static,linkexten
if errorlevel 1 goto error
nmake -nologo -f makefile.vc core OPTS=static,msvcrt
if errorlevel 1 goto error
nmake -nologo -f makefile.vc core OPTS=static,threads
if errorlevel 1 goto error
nmake -nologo -f makefile.vc core OPTS=static,msvcrt,threads
if errorlevel 1 goto error
nmake -nologo -f makefile.vc release OPTS=threads
if errorlevel 1 goto error
goto end

:error
echo *** BOOM! ***

:end
echo done!
pause
Changes to win/configure.
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
fi



TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a4"
VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------

if test "${prefix}" = "NONE"; then







|







531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
fi



TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a5"
VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------

if test "${prefix}" = "NONE"; then
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
	MAKE_LIB="\${STLIB_LD} -out:\$@"
	POST_MAKE_LIB=
	MAKE_EXE="\${CC} -Fe\$@"
	LIBPREFIX=""

	EXTRA_CFLAGS="-YX"
	CFLAGS_WARNING="-W3"
	LDFLAGS_DEBUG="-debug:full -debugtype:cv"
	LDFLAGS_OPTIMIZE="-release"
	
	# Specify the CC output file names based on the target name
	CC_OBJNAME="-Fo\$@"
	CC_EXENAME="-Fe\"\$(shell \$(CYGPATH) '\$@')\""

	# Specify linker flags depending on the type of app being 







|







1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
	MAKE_LIB="\${STLIB_LD} -out:\$@"
	POST_MAKE_LIB=
	MAKE_EXE="\${CC} -Fe\$@"
	LIBPREFIX=""

	EXTRA_CFLAGS="-YX"
	CFLAGS_WARNING="-W3"
	LDFLAGS_DEBUG="-debug:full -debugtype:both"
	LDFLAGS_OPTIMIZE="-release"
	
	# Specify the CC output file names based on the target name
	CC_OBJNAME="-Fo\$@"
	CC_EXENAME="-Fe\"\$(shell \$(CYGPATH) '\$@')\""

	# Specify linker flags depending on the type of app being 
Changes to win/configure.in.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/bash -norc
# This file is an input file used by the GNU "autoconf" program to
# generate the file "configure", which is run during Tk installation
# to configure the system for the local environment.
#
# RCS: @(#) $Id: configure.in,v 1.36.2.1 2002/02/05 02:25:18 wolfsuit Exp $

AC_INIT(../generic/tk.h)

TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a4"
VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------

if test "${prefix}" = "NONE"; then





|






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/bash -norc
# This file is an input file used by the GNU "autoconf" program to
# generate the file "configure", which is run during Tk installation
# to configure the system for the local environment.
#
# RCS: @(#) $Id: configure.in,v 1.36.2.2 2002/06/10 05:38:27 wolfsuit Exp $

AC_INIT(../generic/tk.h)

TK_VERSION=8.4
TK_MAJOR_VERSION=8
TK_MINOR_VERSION=4
TK_PATCH_LEVEL="a5"
VER=$TK_MAJOR_VERSION$TK_MINOR_VERSION

#------------------------------------------------------------------------
# Handle the --prefix=... option
#------------------------------------------------------------------------

if test "${prefix}" = "NONE"; then
Changes to win/makefile.vc.

1


2
3
4
5
6
7
8

9

10

11



12
13
14
15
16
17
18
19


20


21

22
23
24
25


26
27
28



29


















30
31

32
33




34
35
36
37


38
39




40





41



42

43
44
45





46
47
48



49
50




51







52

53
54
55
56
57
58




59
60


61
62
63
64
65






66



67
68





69
70
71
72
73



74
75
76




77
78
79

80

81
82








83
84












85
86




87
88
89
90
91
92
93
94
95
96

97
98


99


100

101
102
103


104
105



106




107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124


125
126
127
128
129

130
131
132





133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222

223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246



247
248

249

250
251
252
253
254
255
256
257

258

259




260
261
262

263
264

265
266
267
268
269
270
271
272
273
274
275


276
277
278
279

280









281



282
283
284
285
286
287
288
289

290
291

292
293
294
295
296
297


298
299
300
301
302
303
304
305
306
307


308
309

310

311
312
313
314

315
316
317
318



319
320
321
322
323



324



325
326
327

328
329
330

331


332

333
334
335
336

337




338



339
340
341

342



343
344


345
346
347
348
349
350


351
352
353
354
355
356
357
358
359
360
361

362


363
364
365



366
367
368
369

370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392

393
394
395
396
397
398
399
400
401

402
403
404

405
406
407
408
409
410
411
412
413


414
415
416
417
418
419
420

421
422

423
424
425
426
427
428
429
430

431

432










433
434
435



436

437





438



439

440
441


442

443
444
445

446
447










448


449


450










451


452
453


454
















455
456
457
458
459
460
461







462



463






464
465
466
467


468
469

470

471
472



473
474
475

476
477
478
479
480
481
482
483
484
485
486
487
488

489

490
491
492
493
494
495
496
497
498
499
500
501
502
503
504

505
506
507
508
509
510
511

# Visual C++ makefile


#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
# Copyright (c) 2001 ActiveState Corporation.

#

# RCS: @(#) $Id: makefile.vc,v 1.42 2001/10/12 13:30:32 tmh Exp $





# Does not depend on the presence of any environment variables in
# order to compile tcl; all needed information is derived from 
# location of the compiler directories.

#
# Project directories
#
# ROOT    = top of source tree


#


# TMPDIR  = location where .obj files should be stored during build

#
# TOOLS32 = location of VC++ 32-bit development tools. Note that the
#	    VC++ 2.0 header files are broken, so you need to use the
#	    ones that come with the developer network CD's, or later


#	    versions of VC++.
#
# TCLDIR = location of top of Tcl source heirarchy



#



















ROOT		= ..

TCLDIR		= ..\..\tcl8.4
INSTALLDIR      = C:\Progra~1\tcl





# Set this to the appropriate value of /MACHINE: for your platform
# Choices: IX86, IA64, ALPHA
MACHINE		= IX86



!IF "$(MACHINE)" == "IA64"










# IA64 support is based on the standard setup with v2 of the



# Microsoft SDK for XP, RC1


TOOLS32		= C:\Progra~1\Microsoft SDK
TOOLS32_rc	= C:\Progra~1\Microsoft SDK






cc32		= "$(TOOLS32)\bin\Win64\cl.exe"
link32		= "$(TOOLS32)\bin\Win64\link.exe"



libpath32	= /LIBPATH:"$(TOOLS32)\lib\IA64"
lib32		= "$(TOOLS32)\bin\Win64\lib.exe"












!ELSE


# Visual Studio 5 default
TOOLS32		= C:\Progra~1\devstudio\vc
TOOLS32_rc	= C:\Progra~1\devstudio\sharedide

# Visual Studio 6 default




#TOOLS32		= C:\Progra~1\Microsoft Visual Studio\VC98
#TOOLS32_rc	= C:\Progra~1\Microsoft Visual Studio\common\MSDev98



cc32		= "$(TOOLS32)\bin\cl.exe"
link32		= "$(TOOLS32)\bin\link.exe"
libpath32	= /LIBPATH:"$(TOOLS32)\lib"
lib32		= "$(TOOLS32)\bin\lib.exe"










!ENDIF






rc32		= "$(TOOLS32_rc)\bin\rc.exe"
include32	= -I"$(TOOLS32)\include"

# Uncomment the following line to compile with thread support
#THREADDEFINES = -DTCL_THREADS=1




# Set NODEBUG to 0 to compile with symbols
NODEBUG = 1





# uncomment the following two lines to compile with TCL_MEM_DEBUG
#DEBUGDEFINES	=-DTCL_MEM_DEBUG

#DEBUGDEFINES = -DTCL_MEM_DEBUG -DUSE_TCLALLOC=0 -DPURIFY


######################################################################








# Do not modify below this line
######################################################################













TCLNAMEPREFIX = tcl




TKNAMEPREFIX = tk
WISHNAMEPREFIX = wish
VERSION = 84
DOTVERSION = 8.4

TCLSTUBPREFIX = $(TCLNAMEPREFIX)stub
TKSTUBPREFIX  = $(TKNAMEPREFIX)stub


BINROOT		= .

!IF "$(NODEBUG)" == "1"
TMPDIRNAME	= Release


DBGX		=


!ELSE

TMPDIRNAME	= Debug
DBGX		= d
!ENDIF


TMPDIR		= $(BINROOT)\$(TMPDIRNAME)
OUTDIRNAME	= $(TMPDIRNAME)



OUTDIR		= $(TMPDIR)





TCLLIB 		= $(TCLNAMEPREFIX)$(VERSION)$(DBGX).lib
TCLPLUGINLIB 	= $(TCLNAMEPREFIX)$(VERSION)p.lib
TCLSTUBLIB	= $(TCLSTUBPREFIX)$(VERSION)$(DBGX).lib
TKDLLNAME	= $(TKNAMEPREFIX)$(VERSION)$(DBGX).dll
TKDLL 		= $(OUTDIR)\$(TKDLLNAME)
TKLIB 		= $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)$(DBGX).lib
TKSTUBLIBNAME	= $(TKSTUBPREFIX)$(VERSION)$(DBGX).lib
TKSTUBLIB	= $(OUTDIR)\$(TKSTUBLIBNAME)
TKPLUGINDLLNAME	= $(TKNAMEPREFIX)$(VERSION)p$(DBG).dll
TKPLUGINDLL 	= $(OUTDIR)\$(TKPLUGINDLLNAME)
TKPLUGINLIB 	= $(OUTDIR)\$(TKNAMEPREFIX)$(VERSION)p$(DBGX).lib

WISH 		= $(OUTDIR)\$(WISHNAMEPREFIX)$(VERSION)$(DBGX).exe
WISHC 		= $(OUTDIR)\$(WISHNAMEPREFIX)c$(VERSION)$(DBGX).exe
WISHP 		= $(OUTDIR)\$(WISHNAMEPREFIX)p$(VERSION)$(DBGX).exe
TKTEST 		= $(OUTDIR)\$(TKNAMEPREFIX)test.exe
CAT32           = $(TMPDIR)\cat32.exe



BIN_INSTALL_DIR = $(INSTALLDIR)\bin
INCLUDE_INSTALL_DIR = $(INSTALLDIR)\include
LIB_INSTALL_DIR = $(INSTALLDIR)\lib
SCRIPT_INSTALL_DIR = $(LIB_INSTALL_DIR)\tk$(DOTVERSION)


WISHOBJS = \
	$(TMPDIR)\winMain.obj






TKTESTOBJS = \
	$(TMPDIR)\tkTest.obj \
	$(TMPDIR)\tkSquare.obj \
	$(TMPDIR)\testMain.obj \
	$(TMPDIR)\tkWinTest.obj \
	$(TCLLIBDIR)\tclThreadTest.obj

XLIBOBJS = \
	$(TMPDIR)\xcolors.obj \
	$(TMPDIR)\xdraw.obj \
	$(TMPDIR)\xgc.obj \
	$(TMPDIR)\ximage.obj \
	$(TMPDIR)\xutil.obj

TKOBJS = \
	$(TMPDIR)\tkConsole.obj \
	$(TMPDIR)\tkUnixMenubu.obj \
	$(TMPDIR)\tkUnixScale.obj \
	$(XLIBOBJS) \
	$(TMPDIR)\tkWin3d.obj \
	$(TMPDIR)\tkWin32Dll.obj \
	$(TMPDIR)\tkWinButton.obj \
	$(TMPDIR)\tkWinClipboard.obj \
	$(TMPDIR)\tkWinColor.obj \
	$(TMPDIR)\tkWinConfig.obj \
	$(TMPDIR)\tkWinCursor.obj \
	$(TMPDIR)\tkWinDialog.obj \
	$(TMPDIR)\tkWinDraw.obj \
	$(TMPDIR)\tkWinEmbed.obj \
	$(TMPDIR)\tkWinFont.obj \
	$(TMPDIR)\tkWinImage.obj \
	$(TMPDIR)\tkWinInit.obj \
	$(TMPDIR)\tkWinKey.obj \
	$(TMPDIR)\tkWinMenu.obj \
	$(TMPDIR)\tkWinPixmap.obj \
	$(TMPDIR)\tkWinPointer.obj \
	$(TMPDIR)\tkWinRegion.obj \
	$(TMPDIR)\tkWinScrlbr.obj \
	$(TMPDIR)\tkWinSend.obj \
	$(TMPDIR)\tkWinWindow.obj \
	$(TMPDIR)\tkWinWm.obj \
	$(TMPDIR)\tkWinX.obj \
	$(TMPDIR)\stubs.obj \
	$(TMPDIR)\tk3d.obj \
	$(TMPDIR)\tkArgv.obj \
	$(TMPDIR)\tkAtom.obj \
	$(TMPDIR)\tkBind.obj \
	$(TMPDIR)\tkBitmap.obj \
	$(TMPDIR)\tkButton.obj \
	$(TMPDIR)\tkCanvArc.obj \
	$(TMPDIR)\tkCanvBmap.obj \
	$(TMPDIR)\tkCanvImg.obj \
	$(TMPDIR)\tkCanvLine.obj \
	$(TMPDIR)\tkCanvPoly.obj \
	$(TMPDIR)\tkCanvPs.obj \
	$(TMPDIR)\tkCanvText.obj \
	$(TMPDIR)\tkCanvUtil.obj \
	$(TMPDIR)\tkCanvWind.obj \
	$(TMPDIR)\tkCanvas.obj \
	$(TMPDIR)\tkClipboard.obj \
	$(TMPDIR)\tkCmds.obj \
	$(TMPDIR)\tkColor.obj \
	$(TMPDIR)\tkConfig.obj \
	$(TMPDIR)\tkCursor.obj \
	$(TMPDIR)\tkEntry.obj \
	$(TMPDIR)\tkError.obj \
	$(TMPDIR)\tkEvent.obj \
	$(TMPDIR)\tkFileFilter.obj \
	$(TMPDIR)\tkFocus.obj \
	$(TMPDIR)\tkFont.obj \
	$(TMPDIR)\tkFrame.obj \
	$(TMPDIR)\tkGC.obj \
	$(TMPDIR)\tkGeometry.obj \
	$(TMPDIR)\tkGet.obj \
	$(TMPDIR)\tkGrab.obj \
	$(TMPDIR)\tkGrid.obj \
	$(TMPDIR)\tkImage.obj \
	$(TMPDIR)\tkImgBmap.obj \
	$(TMPDIR)\tkImgGIF.obj \
	$(TMPDIR)\tkImgPPM.obj \
	$(TMPDIR)\tkImgPhoto.obj \
	$(TMPDIR)\tkImgUtil.obj \
	$(TMPDIR)\tkListbox.obj \
	$(TMPDIR)\tkMacWinMenu.obj \
	$(TMPDIR)\tkMain.obj \
	$(TMPDIR)\tkMenu.obj \
	$(TMPDIR)\tkMenubutton.obj \
	$(TMPDIR)\tkMenuDraw.obj \
	$(TMPDIR)\tkMessage.obj \

	$(TMPDIR)\tkObj.obj \
	$(TMPDIR)\tkOldConfig.obj \
	$(TMPDIR)\tkOption.obj \
	$(TMPDIR)\tkPack.obj \
	$(TMPDIR)\tkPlace.obj \
	$(TMPDIR)\tkPointer.obj \
	$(TMPDIR)\tkRectOval.obj \
	$(TMPDIR)\tkScale.obj \
	$(TMPDIR)\tkScrollbar.obj \
	$(TMPDIR)\tkSelect.obj \
	$(TMPDIR)\tkText.obj \
	$(TMPDIR)\tkTextBTree.obj \
	$(TMPDIR)\tkTextDisp.obj \
	$(TMPDIR)\tkTextImage.obj \
	$(TMPDIR)\tkTextIndex.obj \
	$(TMPDIR)\tkTextMark.obj \
	$(TMPDIR)\tkTextTag.obj \
	$(TMPDIR)\tkTextWind.obj \
	$(TMPDIR)\tkTrig.obj \
	$(TMPDIR)\tkUtil.obj \
	$(TMPDIR)\tkVisual.obj \
	$(TMPDIR)\tkStubInit.obj \
	$(TMPDIR)\tkStubLib.obj \
	$(TMPDIR)\tkWindow.obj




TKSTUBOBJS = $(TMPDIR)\tkStubLib.obj \

	$(TMPDIR)\tkStubImg.obj


WINDIR          = $(ROOT)\win
GENERICDIR	= $(ROOT)\generic
XLIBDIR		= $(ROOT)\xlib
BITMAPDIR	= $(ROOT)\bitmaps
TCLLIBDIR       = $(TCLDIR)\win\$(OUTDIRNAME)
RCDIR		= $(WINDIR)\rc


TK_INCLUDES	= -I$(WINDIR) -I$(GENERICDIR) -I$(BITMAPDIR) -I$(XLIBDIR) \

			-I$(TCLDIR)\generic




TK_DEFINES	= $(DEBUGDEFINES) $(THREADDEFINES)

######################################################################

# Compile flags
######################################################################


!IF "$(NODEBUG)" == "1"
!IF "$(MACHINE)" == "IA64"
cdebug	= -O2i -Gs
!ELSE
# NOTE: Due to a bug in MSVC, we cannot use -O2 here or Tk starts to misbehave.
cdebug	= -Oti -Gs -GD
!ENDIF
!ELSE IF "$(MACHINE)" == "IA64"
cdebug	= -Od -Zi
!ELSE


cdebug	= -Z7 -Od -WX
!ENDIF

# declarations common to all compiler options

cflags	= -c -W3 -nologo -Fp$(TMPDIR)\ -YX









cvarsdll = -MD$(DBGX)




CON_CFLAGS	= $(cdebug) $(cflags) $(include32) -DCONSOLE
TK_CFLAGS	= $(cdebug) $(cflags) $(cvarsdll) $(include32) \
			$(TK_INCLUDES) $(TK_DEFINES) -DUSE_TCL_STUBS
WISH_CFLAGS	= $(cdebug) $(cflags) $(cvarsdll) $(include32) \
			$(TK_INCLUDES) $(TK_DEFINES)

######################################################################

# Link flags
######################################################################


!IF "$(NODEBUG)" == "1"
ldebug	= /RELEASE
!ELSE
ldebug	= -debug:full -debugtype:cv
!ENDIF



# declarations common to all linker options
lcommon	= /NODEFAULTLIB /RELEASE /NOLOGO
lflags	= $(lcommon) /MACHINE:$(MACHINE) $(libpath32)

# declarations for use on Intel i386, i486, and Pentium systems
!IF "$(MACHINE)" == "IX86"
DLLENTRY = @12
!ENDIF



conlflags	= $(lflags) -subsystem:console -entry:mainCRTStartup
guilflags	= $(lflags) -subsystem:windows -entry:WinMainCRTStartup

dlllflags	= $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll


!IF "$(MACHINE)" == "PPC"
libc = libc$(DBGX).lib
libcdll = crtdll$(DBGX).lib

!ELSE
libc = libc$(DBGX).lib oldnames.lib
libcdll = msvcrt$(DBGX).lib oldnames.lib
!ENDIF




baselibs   = kernel32.lib $(optlibs) advapi32.lib
winlibs    = $(baselibs) user32.lib gdi32.lib comdlg32.lib winspool.lib \
             imm32.lib
guilibs	   = $(libc) $(winlibs)



conlibs    = $(libc) $(baselibs)



guilibsdll = $(libcdll) $(winlibs)

######################################################################

# Project specific targets
######################################################################


all:    setup $(WISH) $(CAT32)


install: install-binaries install-libraries

plugin:	setup $(TKPLUGINDLL) $(WISHP)
tktest: setup $(TKTEST) $(CAT32)
test:	setup $(TKTEST) $(TKLIB) $(CAT32)
	set TCL_LIBRARY=$(TCLDIR)/library

	set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH)




	$(TKTEST) $(ROOT)/tests/all.tcl | $(CAT32)




runtest: setup $(TKTEST) $(TKLIB) $(CAT32)
	set TCL_LIBRARY=$(TCLDIR)/library

	set PATH=$(TCLDIR)\win\$(TMPDIRNAME);$(PATH)



	$(TKTEST) 



console-wish : all $(WISHC)

stubs:
	$(TCLDIR)\win\$(TMPDIRNAME)\tclsh$(VERSION)$(DBGX) \
		$(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \
		$(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls



setup:
	@mkd $(TMPDIR)
	@mkd $(OUTDIR)

install-binaries:
	@mkd "$(BIN_INSTALL_DIR)"
	copy $(TKDLL) "$(BIN_INSTALL_DIR)"
	copy $(WISH) "$(BIN_INSTALL_DIR)"
	@mkd "$(LIB_INSTALL_DIR)"
	copy $(TKLIB) "$(LIB_INSTALL_DIR)"




install-libraries:
	@mkd "$(INCLUDE_INSTALL_DIR)"
	@mkd "$(INCLUDE_INSTALL_DIR)\X11"



	copy "$(GENERICDIR)\tk.h"             "$(INCLUDE_INSTALL_DIR)"
	copy "$(GENERICDIR)\tkDecls.h"        "$(INCLUDE_INSTALL_DIR)"
	copy "$(GENERICDIR)\tkPlatDecls.h"    "$(INCLUDE_INSTALL_DIR)"
	copy "$(GENERICDIR)\tkIntXlibDecls.h" "$(INCLUDE_INSTALL_DIR)"

	xcopy "$(XLIBDIR)\X11\*.h"            "$(INCLUDE_INSTALL_DIR)\X11"
	@mkd "$(SCRIPT_INSTALL_DIR)"
	@mkd "$(SCRIPT_INSTALL_DIR)\images"
	@mkd "$(SCRIPT_INSTALL_DIR)\demos"
	@mkd "$(SCRIPT_INSTALL_DIR)\demos\images"
	xcopy "$(ROOT)\library"              "$(SCRIPT_INSTALL_DIR)"
	xcopy "$(ROOT)\library\images"       "$(SCRIPT_INSTALL_DIR)\images"
	xcopy "$(ROOT)\library\demos"        "$(SCRIPT_INSTALL_DIR)\demos"
	xcopy "$(ROOT)\library\demos\images" "$(SCRIPT_INSTALL_DIR)\demos\images"

$(TKLIB): $(TKDLL) $(TKSTUBLIB)

$(TKSTUBLIB): $(TKSTUBOBJS)
        $(lib32) /out:$@ $(TKSTUBOBJS)

$(TKDLL): $(TKOBJS) $(TMPDIR)\tk.res
       $(link32) $(ldebug) $(dlllflags) \
		-out:$@ $(TMPDIR)\tk.res $(TCLLIBDIR)\$(TCLSTUBLIB) \
		$(guilibsdll) @<<
			$(TKOBJS)
<<

$(TKPLUGINLIB): $(TKPLUGINDLL)


$(TKPLUGINDLL): $(TKOBJS) $(TMPDIR)\tk.res
        $(link32) $(ldebug) $(dlllflags) \
		-out:$@ $(TMPDIR)\tk.res $(TCLLIBDIR)\$(TCLPLUGINLIB) \
		$(guilibsdll) @<<
			$(TKOBJS)
<<

$(WISH): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res

	$(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \
		$(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(WISHOBJS) 


$(WISHC): $(WISHOBJS) $(TKLIB) $(TMPDIR)\wish.res
	$(link32) $(ldebug) $(conlflags) $(TMPDIR)\wish.res -out:$@ \
		$(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(WISHOBJS) 

$(WISHP): $(WISHOBJS) $(TKPLUGINLIB) $(TMPDIR)\wish.res
	$(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \
		$(guilibsdll) $(TCLLIBDIR)\$(TCLPLUGINLIB) \
		$(TKPLUGINLIB) $(WISHOBJS) 



$(TKTEST): $(TKTESTOBJS) $(TKLIB) $(TMPDIR)\wish.res
	$(link32) $(ldebug) $(guilflags) $(TMPDIR)\wish.res -out:$@ \
		$(guilibsdll) $(TCLLIBDIR)\$(TCLLIB) $(TKLIB) $(TKTESTOBJS)

$(CAT32): $(TCLDIR)\win\cat.c
	$(cc32) $(CON_CFLAGS) -Fo$(TMPDIR)\ $?
	$(link32) $(conlflags) -out:$@ -stack:16384 $(TMPDIR)\cat.obj $(conlibs)


#

# Regenerate the stubs files.
#

genstubs:
	tclsh$(VERSION) $(TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \
		$(GENERICDIR)\tk.decls $(GENERICDIR)\tkInt.decls

#

# Special case object file targets

#











$(TMPDIR)\testMain.obj: $(WINDIR)\winMain.c
	$(cc32) $(WISH_CFLAGS) -DTK_TEST -Fo$@ $?





$(TMPDIR)\tkTest.obj: $(GENERICDIR)\tkTest.c





	$(cc32) $(WISH_CFLAGS) -Fo$@ $?





$(TMPDIR)\tkWinTest.obj: $(WINDIR)\tkWinTest.c
	$(cc32) $(WISH_CFLAGS) -Fo$@ $?




$(TMPDIR)\tkSquare.obj: $(GENERICDIR)\tkSquare.c
	$(cc32) $(WISH_CFLAGS) -Fo$@ $?


$(TMPDIR)\winMain.obj: $(WINDIR)\winMain.c
	$(cc32) $(WISH_CFLAGS) -Fo$@ $?













$(TMPDIR)\tkStubLib.obj : $(GENERICDIR)\tkStubLib.c


	$(cc32) $(TK_CFLAGS) -DSTATIC_BUILD -Fo$@ $?













#
# Implicit rules


#

















{$(XLIBDIR)}.c{$(TMPDIR)}.obj:
	$(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $<

{$(GENERICDIR)}.c{$(TMPDIR)}.obj:
	$(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $<








{$(WINDIR)}.c{$(TMPDIR)}.obj:



	$(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $<







{$(ROOT)\unix}.c{$(TMPDIR)}.obj:
	$(cc32) -DDLL_BUILD -DBUILD_tk $(TK_CFLAGS) -Fo$(TMPDIR)\ $<



{$(RCDIR)}.rc{$(TMPDIR)}.res:
	$(rc32) -fo $@ -r -i "$(GENERICDIR)" -i "$(TOOLS32)\include" \

		-i "$(TCLDIR)\generic" \

!if "$(NODEBUG)" == "0"
		-d DEBUG \



!endif
		$<


clean:
        -@del $(OUTDIR)\*.exp 
	-@del $(OUTDIR)\*.lib 
	-@del $(OUTDIR)\*.dll 
	-@del $(OUTDIR)\*.exe
	-@del $(OUTDIR)\*.pdb
	-@del $(TMPDIR)\*.pch
        -@del $(TMPDIR)\*.obj
        -@del $(TMPDIR)\*.res
        -@del $(TMPDIR)\*.exe
	-@rmd $(OUTDIR)
	-@rmd $(TMPDIR)


# dependencies


$(TMPDIR)\tk.res: \
    $(RCDIR)\buttons.bmp \
    $(RCDIR)\cursor*.cur \
    $(RCDIR)\tk.ico

$(GENERICDIR)/default.h: $(WINDIR)/tkWinDefault.h
$(GENERICDIR)/tkButton.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkCanvas.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkEntry.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkFrame.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkListbox.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkMenu.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkMenubutton.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkMessage.c: $(GENERICDIR)/default.h

$(GENERICDIR)/tkScale.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkScrollbar.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkText.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkTextIndex.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkTextTag.c: $(GENERICDIR)/default.h

$(GENERICDIR)/tkText.c: $(GENERICDIR)/tkText.h
>
|
>
>




|


>

>
|
>

>
>
>
|
<
<
|
<
|
|
<
>
>

>
>
|
>

<
|
<
>
>
|

<
>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
<
>
|
<
>
>
>
>
|
<
<
|
>
>
|
<
>
>
>
>
|
>
>
>
>
>
|
>
>
>
|
>
|
<
<
>
>
>
>
>
|
<
<
>
>
>
|
<
>
>
>
>
|
>
>
>
>
>
>
>
|
>
|
|
<
<
|
<
>
>
>
>
|
|
>
>
|
<
<
<
<
>
>
>
>
>
>
|
>
>
>
|

>
>
>
>
>
|
<

<
<
>
>
>

|
|
>
>
>
>

<
|
>
|
>

<
>
>
>
>
>
>
>
>
|
<
>
>
>
>
>
>
>
>
>
>
>
>

|
>
>
>
>
|
|
<

|
|
<
<


>
|
|
>
>
|
>
>
|
>
|
|
|
>
>
|
|
>
>
>
|
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
>
>

|
|
|
|
>


|
>
>
>
>
>


|
|
|
|
|


|
|
|
|
|


|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>

|
>
|
>





|


>
|
>
|
>
>
>
>
|

|
>

<
>

|
|
|
|
<
|
|
<
<
|
>
>
|
|


>
|
>
>
>
>
>
>
>
>
>
|
>
>
>

<
|
|
|
|

|
>

<
>

|
<
<

|
>
>


<
|

<
|
|
|

>
>
|
|
>
|
>

<
|
<
>
|
|
<
<
>
>
>

|
|
|
|
>
>
>
|
>
>
>
|

<
>

|

>
|
>
>
|
>
|
|
|
|
>
|
>
>
>
>
|
>
>
>


|
>
|
>
>
>


>
>
|
|
|
|
<
<
>
>


|
|

<
|
<
<
<
|
>

>
>
|
<
<
>
>
>
|
|
|
<
>
|
|
<
<
<
<
<
<
<

<


|

|
|
|
<
<
<

|
>

|
|
|
<
<
<

|
>
|
<

>
|
|
|
|
<
<
|
|

>
>
|
|
|
|
|
|
<
>

|
>

|


|
|

|
>
|
>
|
>
>
>
>
>
>
>
>
>
>

|
<
>
>
>

>
|
>
>
>
>
>
|
>
>
>

>
|
<
>
>

>
|
<

>
|
|
>
>
>
>
>
>
>
>
>
>

>
>
|
>
>
|
>
>
>
>
>
>
>
>
>
>

>
>
|
<
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
<
<
|
<
<
|
>
>
>
>
>
>
>
|
>
>
>
|
>
>
>
>
>
>

|
|

>
>
|
|
>
|
>
|
<
>
>
>

<

>
|
|
|
|
|
|
|
|
|
<
<
<

>
|
>

|













>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21


22

23
24

25
26
27
28
29
30
31
32

33

34
35
36
37

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

61
62

63
64
65
66
67


68
69
70
71

72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88


89
90
91
92
93
94


95
96
97
98

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114


115

116
117
118
119
120
121
122
123
124




125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142

143


144
145
146
147
148
149
150
151
152
153
154

155
156
157
158
159

160
161
162
163
164
165
166
167
168

169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188

189
190
191


192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396

397
398
399
400
401
402

403
404


405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427

428
429
430
431
432
433
434
435

436
437
438


439
440
441
442
443
444

445
446

447
448
449
450
451
452
453
454
455
456
457
458

459

460
461
462


463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479

480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519


520
521
522
523
524
525
526

527



528
529
530
531
532
533


534
535
536
537
538
539

540
541
542







543

544
545
546
547
548
549
550



551
552
553
554
555
556
557



558
559
560
561

562
563
564
565
566
567


568
569
570
571
572
573
574
575
576
577
578

579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606

607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624

625
626
627
628
629

630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664

665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684


685


686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716

717
718
719
720

721
722
723
724
725
726
727
728
729
730
731



732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
#------------------------------------------------------------------------------
# makefile.vc --
#
#	Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+)
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# Copyright (c) 1995-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
# Copyright (c) 2001 ActiveState Corporation.
# Copyright (c) 2001-2002 David Gravereaux.
#
#------------------------------------------------------------------------------
# RCS: @(#) $Id: makefile.vc,v 1.42.2.1 2002/06/10 05:38:27 wolfsuit Exp $
#------------------------------------------------------------------------------

!if "$(MSVCDIR)" == ""
MSG = ^
You'll need to run vcvars32.bat from Developer Studio, first, to setup^
the environment.  Jump to this line to read the new instructions.


!error $(MSG)

!endif


#------------------------------------------------------------------------------
# HOW TO USE this makefile:
#
# 1)  It is now necessary to have MSVCDir set in the environment.  This is used
#     as a check to see if vcvars32.bat had been run prior to running nmake or
#     during the install of Microsoft Developer Studio, MSVCDir had been set
#     globally and the PATH adjusted.  Either way is valid.
#

#     You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin

#     directory to setup the proper environment, if needed, for your current
#     setup.  This is a needed bootstrap requirement and allows the swapping of
#     different environments to be easier.
#

# 2)  To use the Platform SDK (not expressly needed), run setenv.bat after
#     vcvars32.bat according to the instructions for it.  This can also turn on
#     the 64-bit compiler, if your SDK has it.
#
# 3)  Targets are:
#	release  -- builds the core, the shell. (default)
#	core     -- Only builds the core.
#	all      -- builds everything.
#	test     -- builds and runs the test suite.
#	tktest   -- just builds the binaries for the test suite.
#	install  -- installs the built binaries and libraries to $(INSTALLDIR)
#		    as the root of the install tree.
#	console-wish -- builds a console version of wish.
#	clean    -- removes the contents of $(TMP_DIR)
#	hose     -- removes the contents of $(TMP_DIR) and $(OUT_DIR)
#	genstubs -- rebuilds the Stubs table and support files (dev only).
#	depend   -- Generates an accurate set of source dependancies for this
#		    makefile.  Helpful to avoid problems when the sources are
#		    refreshed and you rebuild, but can "overbuild" when common
#		    headers like tkInt.h just get small changes.
#	winhelp  -- builds the windows .hlp file for Tcl from the troff man
#		    files.
#

# 4)  Macros usable on the commandline:
#	TCLDIR=<path>

#		Sets the location for where to find the Tcl headers and
#		libraries.  The install point is assumed when not specified.
#		Tk does need the source directory, though.  Tk comes very close
#		to not needing the sources, but does, in fact, require them.
#


#	INSTALLDIR=<path>
#		Sets where to install Tcl from the built binaries.
#		C:\Progra~1\Tcl is assumed when not specified.
#

#	OPTS=static,msvcrt,linkexten,threads,symbols,profile,none
#		Sets special options for the core.  The default is for none.
#		Any combination of the above may be used (comma separated).
#		'none' will over-ride everything to nothing.
#
#		static  =  Builds a static library of the core instead of a
#			   dll.  The shell will be static (and large), as well.
#		msvcrt  =  Effects the static option only to switch it from
#			   using libcmt(d) as the C runtime [by default] to
#			   msvcrt(d). This is useful for static embedding
#			   support.
#		linkexten = Affects the static option only to switch wishXX.exe
#			   to have the dde and reg extension linked inside it.
#		threads =  Turns on full multithreading support.
#		symbols =  Adds symbols for step debugging.
#		profile =  Adds profiling hooks.  Map file is assumed.
#


#	STATS=memdbg,compdbg,none
#		Sets optional memory and bytecode compiler debugging code added
#		to the core.  The default is for none.  Any combination of the
#		above may be used (comma separated).  'none' will over-ride
#		everything to nothing.
#


#		memdbg   = Enables the debugging memory allocator.
#		compdbg  = Enables byte compilation logging.
#
#	MACHINE=(IX86|IA64|ALPHA)

#		Set the machine type used for the compiler, linker, and
#		resource compiler.  This hook is needed to tell the tools
#		when alternate platforms are requested.  IX86 is the default
#		when not specified.
#
#	TMP_DIR=<path>
#	OUT_DIR=<path>
#		Hooks to allow the intermediate and output directories to be
#		changed.  $(OUT_DIR) is assumed to be 
#		$(BINROOT)\(Release|Debug) based on if symbols are requested.
#		$(TMP_DIR) will de $(OUT_DIR)\<buildtype> by default.
#
#	TESTPAT=<file>
#		Reads the tests requested to be run from this file.
#
# 5)  Examples:


#

#	Basic syntax of calling nmake looks like this:
#	nmake [-nologo] -f makefile.vc [target|macrodef [target|macrodef] [...]]
#
#                        Standard (no frills)
#       c:\tk_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat
#       Setting environment for using Microsoft Visual C++ tools.
#       c:\tk_src\win\>nmake -f makefile.vc release
#       c:\tk_src\win\>nmake -f makefile.vc install INSTALLDIR=c:\progra~1\tcl
#




#                         Building for Win64
#       c:\tk_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat
#       Setting environment for using Microsoft Visual C++ tools.
#       c:\tk_src\win\>c:\progra~1\platfo~1\setenv.bat /pre64 /RETAIL
#       Targeting Windows pre64 RETAIL
#       c:\tk_src\win\>nmake -f makefile.vc MACHINE=IA64
#
#------------------------------------------------------------------------------
#==============================================================================
###############################################################################


#    //==================================================================\\
#   >>[               -> Do not modify below this line. <-               ]<<
#   >>[  Please, use the commandline macros to modify how Tcl is built.  ]<<
#   >>[  If you need more features, send us a patch for more macros.     ]<<
#    \\==================================================================//





###############################################################################
#==============================================================================
#------------------------------------------------------------------------------

!if !exist("makefile.vc")
MSG = ^
You must run this makefile only from the directory it is in.^
Please `cd` to its location first.
!error $(MSG) 
!endif


PROJECT	= tk
!include "rules.vc"

_INSTALLDIR	= $(INSTALLDIR:/=\)


!if !defined(TCLDIR)
!if exist($(_INSTALLDIR)\include\tcl.h)
TCLINSTALL	= 1
_TCLDIR		= $(_INSTALLDIR)
!else
MSG=^
Don't know where tcl.h is.  Set the _TCLDIR macro.
!error $(MSG)
!endif

!else
_TCLDIR	= $(TCLDIR:/=\)
!if exist($(_TCLDIR)\include\tcl.h)
TCLINSTALL	= 1
!elseif exist($(_TCLDIR)\generic\tcl.h)
TCLINSTALL	= 0
!else
MSG =^
Don't know where tcl.h is.  the TCLDIR macro doesn't appear correct.
!error $(MSG)
!endif
!endif

!if $(TCLINSTALL)
!message *** Warning: Tk requires the source distribution of Tcl to build from,
!message ***    at this time, sorry.  Please set the TCLDIR macro to point to the
!message ***    Tcl sources.
!endif

STUBPREFIX = $(PROJECT)stub

DOTVERSION = 8.4
VERSION = $(DOTVERSION:.=)
WISHNAMEPREFIX = wish



BINROOT		= .
ROOT		= ..

TCLIMPLIBNAME	= tcl$(VERSION)$(SUFX).lib
TCLLIBNAME	= tcl$(VERSION)$(SUFX).$(EXT)
TCLSTUBLIBNAME	= tclstub$(VERSION).lib

TCLREGLIBNAME	= tclreg10$(SUFX:t=).lib
TCLDDELIBNAME	= tcldde12$(SUFX:t=).lib

TKIMPLIB	= $(OUT_DIR)\$(PROJECT)$(VERSION)$(SUFX).lib
TKLIBNAME	= $(PROJECT)$(VERSION)$(SUFX).$(EXT)
TKLIB		= $(OUT_DIR)\$(TKLIBNAME)

TKSTUBLIBNAME	= $(STUBPREFIX)$(VERSION).lib
TKSTUBLIB	= $(OUT_DIR)\$(TKSTUBLIBNAME)

!if $(TCLINSTALL)
TCLSH		= $(_INSTALLDIR)\bin\tclsh$(VERSION)$(SUFX).exe
TCLSTUBLIB	= $(_INSTALLDIR)\lib\$(TCLSTUBLIBNAME)
TCLIMPLIB	= $(_INSTALLDIR)\lib\$(TCLIMPLIBNAME)
TCL_LIBRARY	= $(_INSTALLDIR)\lib
TCLREGLIB	= $(_INSTALLDIR)\lib\$(TCLREGLIBNAME)
TCLDDELIB	= $(_INSTALLDIR)\lib\$(TCLDDELIBNAME)
TCLTMP_DIR	= \must\have\tcl\sources\to\build\this\target
COFFBASE	= \must\have\tcl\sources\to\build\this\target
TOOLSDIR	= \must\have\tcl\sources\to\build\this\target
!else
TCLSH		= $(_TCLDIR)\win\$(BUILDDIRTOP)\tclsh$(VERSION)$(SUFX).exe
TCLSTUBLIB	= $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLSTUBLIBNAME)
TCLIMPLIB	= $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLIMPLIBNAME)
TCL_LIBRARY	= $(_TCLDIR)\library
TCLREGLIB	= $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLREGLIBNAME)
TCLDDELIB	= $(_TCLDIR)\win\$(BUILDDIRTOP)\$(TCLDDELIBNAME)
TCLTMP_DIR	= $(_TCLDIR)\win\$(TMP_DIR:tk=tcl)
COFFBASE	= $(_TCLDIR)\win\coffbase.txt
TOOLSDIR	= $(_TCLDIR)\tools
!endif

WISH 		= $(OUT_DIR)\$(WISHNAMEPREFIX)$(VERSION)$(SUFX).exe
WISHC 		= $(OUT_DIR)\$(WISHNAMEPREFIX)c$(VERSION)$(SUFX).exe

TKTEST		= $(OUT_DIR)\$(PROJECT)test.exe
CAT32		= $(OUT_DIR)\cat32.exe
RMDIR		= .\rmd.bat
RM		= del

LIB_INSTALL_DIR		= $(_INSTALLDIR)\lib
BIN_INSTALL_DIR		= $(_INSTALLDIR)\bin
DOC_INSTALL_DIR		= $(_INSTALLDIR)\doc
SCRIPT_INSTALL_DIR	= $(_INSTALLDIR)\lib\$(PROJECT)$(DOTVERSION)
INCLUDE_INSTALL_DIR	= $(_INSTALLDIR)\include

WISHOBJS = \
	$(TMP_DIR)\winMain.obj \
!if $(TCL_LINKWITHEXTENSIONS)
	$(TCLDDELIB) \
	$(TCLREGLIB) \
!endif
	$(TMP_DIR)\wish.res

TKTESTOBJS = \
	$(TMP_DIR)\tkTest.obj \
	$(TMP_DIR)\tkSquare.obj \
	$(TMP_DIR)\testMain.obj \
	$(TMP_DIR)\tkWinTest.obj \
	$(TCLTMP_DIR)\tclThreadTest.obj

XLIBOBJS = \
	$(TMP_DIR)\xcolors.obj \
	$(TMP_DIR)\xdraw.obj \
	$(TMP_DIR)\xgc.obj \
	$(TMP_DIR)\ximage.obj \
	$(TMP_DIR)\xutil.obj

TKOBJS = \
	$(TMP_DIR)\tkConsole.obj \
	$(TMP_DIR)\tkUnixMenubu.obj \
	$(TMP_DIR)\tkUnixScale.obj \
	$(XLIBOBJS) \
	$(TMP_DIR)\tkWin3d.obj \
	$(TMP_DIR)\tkWin32Dll.obj \
	$(TMP_DIR)\tkWinButton.obj \
	$(TMP_DIR)\tkWinClipboard.obj \
	$(TMP_DIR)\tkWinColor.obj \
	$(TMP_DIR)\tkWinConfig.obj \
	$(TMP_DIR)\tkWinCursor.obj \
	$(TMP_DIR)\tkWinDialog.obj \
	$(TMP_DIR)\tkWinDraw.obj \
	$(TMP_DIR)\tkWinEmbed.obj \
	$(TMP_DIR)\tkWinFont.obj \
	$(TMP_DIR)\tkWinImage.obj \
	$(TMP_DIR)\tkWinInit.obj \
	$(TMP_DIR)\tkWinKey.obj \
	$(TMP_DIR)\tkWinMenu.obj \
	$(TMP_DIR)\tkWinPixmap.obj \
	$(TMP_DIR)\tkWinPointer.obj \
	$(TMP_DIR)\tkWinRegion.obj \
	$(TMP_DIR)\tkWinScrlbr.obj \
	$(TMP_DIR)\tkWinSend.obj \
	$(TMP_DIR)\tkWinWindow.obj \
	$(TMP_DIR)\tkWinWm.obj \
	$(TMP_DIR)\tkWinX.obj \
	$(TMP_DIR)\stubs.obj \
	$(TMP_DIR)\tk3d.obj \
	$(TMP_DIR)\tkArgv.obj \
	$(TMP_DIR)\tkAtom.obj \
	$(TMP_DIR)\tkBind.obj \
	$(TMP_DIR)\tkBitmap.obj \
	$(TMP_DIR)\tkButton.obj \
	$(TMP_DIR)\tkCanvArc.obj \
	$(TMP_DIR)\tkCanvBmap.obj \
	$(TMP_DIR)\tkCanvImg.obj \
	$(TMP_DIR)\tkCanvLine.obj \
	$(TMP_DIR)\tkCanvPoly.obj \
	$(TMP_DIR)\tkCanvPs.obj \
	$(TMP_DIR)\tkCanvText.obj \
	$(TMP_DIR)\tkCanvUtil.obj \
	$(TMP_DIR)\tkCanvWind.obj \
	$(TMP_DIR)\tkCanvas.obj \
	$(TMP_DIR)\tkClipboard.obj \
	$(TMP_DIR)\tkCmds.obj \
	$(TMP_DIR)\tkColor.obj \
	$(TMP_DIR)\tkConfig.obj \
	$(TMP_DIR)\tkCursor.obj \
	$(TMP_DIR)\tkEntry.obj \
	$(TMP_DIR)\tkError.obj \
	$(TMP_DIR)\tkEvent.obj \
	$(TMP_DIR)\tkFileFilter.obj \
	$(TMP_DIR)\tkFocus.obj \
	$(TMP_DIR)\tkFont.obj \
	$(TMP_DIR)\tkFrame.obj \
	$(TMP_DIR)\tkGC.obj \
	$(TMP_DIR)\tkGeometry.obj \
	$(TMP_DIR)\tkGet.obj \
	$(TMP_DIR)\tkGrab.obj \
	$(TMP_DIR)\tkGrid.obj \
	$(TMP_DIR)\tkImage.obj \
	$(TMP_DIR)\tkImgBmap.obj \
	$(TMP_DIR)\tkImgGIF.obj \
	$(TMP_DIR)\tkImgPPM.obj \
	$(TMP_DIR)\tkImgPhoto.obj \
	$(TMP_DIR)\tkImgUtil.obj \
	$(TMP_DIR)\tkListbox.obj \
	$(TMP_DIR)\tkMacWinMenu.obj \
	$(TMP_DIR)\tkMain.obj \
	$(TMP_DIR)\tkMenu.obj \
	$(TMP_DIR)\tkMenubutton.obj \
	$(TMP_DIR)\tkMenuDraw.obj \
	$(TMP_DIR)\tkMessage.obj \
	$(TMP_DIR)\tkPanedWindow.obj \
	$(TMP_DIR)\tkObj.obj \
	$(TMP_DIR)\tkOldConfig.obj \
	$(TMP_DIR)\tkOption.obj \
	$(TMP_DIR)\tkPack.obj \
	$(TMP_DIR)\tkPlace.obj \
	$(TMP_DIR)\tkPointer.obj \
	$(TMP_DIR)\tkRectOval.obj \
	$(TMP_DIR)\tkScale.obj \
	$(TMP_DIR)\tkScrollbar.obj \
	$(TMP_DIR)\tkSelect.obj \
	$(TMP_DIR)\tkText.obj \
	$(TMP_DIR)\tkTextBTree.obj \
	$(TMP_DIR)\tkTextDisp.obj \
	$(TMP_DIR)\tkTextImage.obj \
	$(TMP_DIR)\tkTextIndex.obj \
	$(TMP_DIR)\tkTextMark.obj \
	$(TMP_DIR)\tkTextTag.obj \
	$(TMP_DIR)\tkTextWind.obj \
	$(TMP_DIR)\tkTrig.obj \
	$(TMP_DIR)\tkUtil.obj \
	$(TMP_DIR)\tkVisual.obj \
	$(TMP_DIR)\tkStubInit.obj \
	$(TMP_DIR)\tkStubLib.obj \
	$(TMP_DIR)\tkWindow.obj \
!if !$(STATIC_BUILD)
	$(TMP_DIR)\tk.res
!endif

TKSTUBOBJS = \
	$(TMP_DIR)\tkStubLib.obj \
	$(TMP_DIR)\tkStubImg.obj


WINDIR          = $(ROOT)\win
GENERICDIR	= $(ROOT)\generic
XLIBDIR		= $(ROOT)\xlib
BITMAPDIR	= $(ROOT)\bitmaps
DOCDIR		= $(ROOT)\doc
RCDIR		= $(WINDIR)\rc

!if $(TCLINSTALL)
TCL_INCLUDES	= -I "$(_TCLDIR)\include"
!else
TCL_INCLUDES	= -I "$(_TCLDIR)\win" -I "$(_TCLDIR)\generic"
!endif
TK_INCLUDES	= -I"$(WINDIR)" -I"$(GENERICDIR)" -I"$(BITMAPDIR)" -I"$(XLIBDIR)" \
			$(TCL_INCLUDES)

TK_DEFINES	= $(OPTDEFINES)


#---------------------------------------------------------------------
# Compile flags

#---------------------------------------------------------------------

!if $(DEBUG)
!if "$(MACHINE)" == "IA64"
cdebug = -Od -Zi
!else

cdebug = -Z7 -Od -WX
!endif


!else
# This cranks the optimization level up.  We can't use -02 because sometimes
# it causes problems.
cdebug = -Oti
!endif

# declarations common to all compiler options
cflags = -nologo -c -W3 -YX -Fp$(TMP_DIR)^\

!if $(PENT_0F_ERRATA)
cflags = $(cflags) -QI0f
!endif

!if $(ITAN_B_ERRATA)
cflags = $(cflags) -QIA64_Bx
!endif

!if $(MSVCRT)
crt = -MD$(DBGX)
!else
crt = -MT$(DBGX)
!endif


BASE_CLFAGS	= $(cdebug) $(cflags) $(crt) $(TK_INCLUDES)
TK_CFLAGS	= $(BASE_CLFAGS) $(TK_DEFINES) -DUSE_TCL_STUBS
CON_CFLAGS	= $(cdebug) $(cflags) $(crt) -DCONSOLE
WISH_CFLAGS	= $(BASE_CLFAGS) $(TK_DEFINES)


#---------------------------------------------------------------------
# Link flags

#---------------------------------------------------------------------

!if $(DEBUG)


ldebug	= -debug:full -debugtype:cv
!else
ldebug	= -release -opt:ref -opt:icf,3
!endif

# declarations common to all linker options

lflags	= -nologo -machine:$(MACHINE) $(ldebug)


!if $(PROFILE)
lflags	= $(lflags) -profile
!endif

!if $(ALIGN98_HACK) && !$(STATIC_BUILD)
# align sections for PE size savings.
lflags	= $(lflags) -opt:nowin98
!else if !$(ALIGN98_HACK) && $(STATIC_BUILD)
# align sections for speed in loading by choosing the virtual page size.
lflags	= $(lflags) -align:4096
!endif


!if $(LOIMPACT)

lflags	= $(lflags) -ws:aggressive
!endif



dlllflags = $(lflags) -dll
conlflags = $(lflags) -subsystem:console
guilflags = $(lflags) -subsystem:windows

baselibs   = kernel32.lib advapi32.lib user32.lib
guilibs	    = $(baselibs) gdi32.lib comdlg32.lib winspool.lib imm32.lib comctl32.lib


#---------------------------------------------------------------------
# TkTest flags
#---------------------------------------------------------------------

!if "$(TESTPAT)" != ""
TESTFLAGS   = -file $(TESTPAT)
!endif



#---------------------------------------------------------------------
# Project specific targets
#---------------------------------------------------------------------

release:  setup $(TKSTUBLIB) $(WISH)
all:	  release $(CAT32)
core:	  setup $(TKSTUBLIB) $(TKLIB)
console-wish : $(WISHC)
install:  install-binaries install-libraries install-docs
tktest:	  setup $(TKTEST) $(CAT32)


test: setup $(TKTEST) $(TKLIB) $(CAT32)
	set TCL_LIBRARY=$(TCL_LIBRARY)
!if $(TCLINSTALL)
	set PATH=$(_TCLDIR)\bin;$(PATH)
!else
	set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH)
!endif
!if "$(OS)" == "Windows_NT"  || "$(MSVCDIR)" == "IDE"
	$(TKTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS) | $(CAT32)
!else
	$(TKTEST) $(ROOT)/tests/all.tcl $(TESTFLAGS) | $(CAT32)
!endif

runtest: setup $(TKTEST) $(TKLIB) $(CAT32)
	set TCL_LIBRARY=$(TCL_LIBRARY)
!if $(TCLINSTALL)
	set PATH=$(_TCLDIR)\bin;$(PATH)
!else
	set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH)
!endif
	$(TKTEST) 

rundemo: setup $(TKTEST) $(TKLIB) $(CAT32)
	set TCL_LIBRARY=$(TCL_LIBRARY)
!if $(TCLINSTALL)
	set PATH=$(_TCLDIR)\bin;$(PATH)
!else
	set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH)


!endif
	$(TKTEST) $(ROOT)\library\demos\widget

setup:
	@if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR)
	@if not exist $(TMP_DIR)\nul mkdir $(TMP_DIR)


!if !$(STATIC_BUILD)



$(TKIMPLIB): $(TKLIB)
!endif

$(TKLIB): $(TKOBJS)
!if $(STATIC_BUILD)
	$(lib32) -nologo -out:$@ @<<


$**
<<
!else
	$(link32) $(dlllflags) -base:@$(COFFBASE),tk -out:$@ $(guilibs) \
		$(TCLSTUBLIB) @<<
$**

<<
	-@del $*.exp
!endif










$(TKSTUBLIB): $(TKSTUBOBJS)
	$(lib32) -nologo -out:$@ $**


$(WISH): $(WISHOBJS) $(TKIMPLIB)
	$(link32) $(guilflags) -out:$@ $(guilibs) $(TCLIMPLIB) $**




$(WISHC): $(WISHOBJS) $(TKIMPLIB)
	$(link32) $(conlflags) -out:$@ $(guilibs) $(TCLIMPLIB) $**

$(TKTEST): $(TKTESTOBJS) $(TKIMPLIB)
	$(link32) $(guilflags) -out:$@ $(guilibs) $(TCLIMPLIB) $**





$(CAT32): $(_TCLDIR)\win\cat.c
	$(cc32) $(CON_CFLAGS) -Fo$(TMP_DIR)\ $?
	$(link32) $(conlflags) -out:$@ -stack:16384 $(TMP_DIR)\cat.obj $(baselibs)


install-binaries:
	@xcopy /i /y "$(WISH)" "$(BIN_INSTALL_DIR)\"
!if "$(TKLIB)" != "$(TKIMPLIB)"
	@xcopy /i /y "$(TKLIB)" "$(BIN_INSTALL_DIR)\"
!endif


	@xcopy /i /y "$(TKIMPLIB)" "$(LIB_INSTALL_DIR)\"
	@xcopy /i /y "$(TKSTUBLIB)" "$(LIB_INSTALL_DIR)\"

install-libraries:
	@xcopy /i /y "$(GENERICDIR)\tk.h" "$(INCLUDE_INSTALL_DIR)\"
	@xcopy /i /y "$(GENERICDIR)\tkDecls.h" "$(INCLUDE_INSTALL_DIR)\"
	@xcopy /i /y "$(GENERICDIR)\tkPlatDecls.h" "$(INCLUDE_INSTALL_DIR)\"
	@xcopy /i /y "$(GENERICDIR)\tkIntXlibDecls.h" "$(INCLUDE_INSTALL_DIR)\"
	@xcopy /i /y "$(XLIBDIR)\X11\*.h" "$(INCLUDE_INSTALL_DIR)\X11\"
	@xcopy /i /y "$(ROOT)\library" "$(SCRIPT_INSTALL_DIR)\" /s /exclude:<<
CVS

<<


#---------------------------------------------------------------------
# Regenerate the stubs files.
#---------------------------------------------------------------------

genstubs:
	$(TCLSH) $(_TCLDIR)\tools\genStubs.tcl $(GENERICDIR) \
		$(GENERICDIR)\$(PROJECT).decls $(GENERICDIR)\$(PROJECT)Int.decls


#---------------------------------------------------------------------
# Generate the makefile depedancies.
#---------------------------------------------------------------------

depend:
!if !exist($(TCLSH))
	@echo Build tclsh first!
!else
	$(TCLSH) $(TOOLSDIR:\=/)/mkdepend.tcl -vc32 -out:"$(OUT_DIR)\depend.mk" \
		-passthru:"-DBUILD_tcl $(TK_INCLUDES:"="")" $(GENERICDIR) \
		$(COMPATDIR) $(WINDIR) @<<
$(TKOBJS)
<<
!endif



#---------------------------------------------------------------------
# Regenerate the windows help files.
#---------------------------------------------------------------------

HLPBASE		= $(PROJECT)$(VERSION)
HELPFILE	= $(OUT_DIR)\$(HLPBASE).hlp
HELPCNT		= $(OUT_DIR)\$(HLPBASE).cnt
DOCTMP_DIR	= $(OUT_DIR)\$(PROJECT)_docs
HELPRTF		= $(DOCTMP_DIR)\$(PROJECT).rtf
MAN2HELP	= $(DOCTMP_DIR)\man2help.tcl
MAN2HELP2	= $(DOCTMP_DIR)\man2help2.tcl
INDEX		= $(DOCTMP_DIR)\index.tcl
BMP		= $(DOCTMP_DIR)\lamp.bmp
BMP_NOPATH	= lamp.bmp
MAN2TCL		= $(DOCTMP_DIR)\man2tcl.exe

winhelp: docsetup $(HELPFILE)


docsetup:
	@if not exist $(DOCTMP_DIR)\nul mkdir $(DOCTMP_DIR)

$(MAN2HELP) $(MAN2HELP2) $(INDEX): $(TOOLSDIR)\$$(@F)
	copy $(TOOLSDIR)\$(@F) $(@D)


$(BMP):
	copy $(WINDIR)\$(@F) $(@D)

$(HELPFILE): $(HELPRTF) $(BMP)
	cd $(DOCTMP_DIR)
	start /wait hcrtf.exe -x <<$(PROJECT).hpj
[OPTIONS]
COMPRESS=12 Hall Zeck
LCID=0x409 0x0 0x0 ; English (United States)
TITLE=Tk Reference Manual
BMROOT=.
CNT=$(@B).cnt
HLP=$(@B).hlp

[FILES]
$(PROJECT).rtf

[WINDOWS]
main="Tcl/Tk Reference Manual",,27648,(r15263976),(r4227327)

[CONFIG]
BrowseButtons()
CreateButton(1, "Web", ExecFile("http://www.tcl.tk"))
CreateButton(2, "SF", ExecFile("http://sf.net/projects/tcl"))
CreateButton(3, "Wiki", ExecFile("http://wiki.tcl.tk"))
CreateButton(4, "FAQ", ExecFile("http://www.purl.org/NET/Tcl-FAQ/"))
<<
	cd $(MAKEDIR)
	copy "$(DOCTMP_DIR)\$(@B).hlp" "$(OUT_DIR)"
	copy "$(DOCTMP_DIR)\$(@B).cnt" "$(OUT_DIR)"

$(MAN2TCL): $(TOOLSDIR)\$$(@B).c
	$(cc32) -nologo -G4 -ML -O2 -Fo$(@D)\ $(TOOLSDIR)\$(@B).c -link -out:$@


$(HELPRTF): $(MAN2TCL) $(MAN2HELP) $(MAN2HELP2) $(INDEX)
	$(TCLSH) $(MAN2HELP:\=/) -bitmap $(BMP_NOPATH) $(PROJECT) $(VERSION) $(DOCDIR:\=/)

install-docs:
!if exist($(HELPFILE))
	@xcopy /i /y "$(HELPFILE)" "$(DOC_INSTALL_DIR)\"
	@xcopy /i /y "$(HELPCNT)" "$(DOC_INSTALL_DIR)\"
	$(TCLSH) <<
puts "Installing $(PROJECT)'s helpfile contents into Tcl's ..."
set f [open "$(DOC_INSTALL_DIR:\=/)/tcl$(VERSION).cnt" r]
while {![eof $$f]} {
    if {[regexp {:Include $(PROJECT)([0-9]{2}).cnt} [gets $$f] dummy ver]} {
	if {$$ver == $(VERSION)} {
	    puts "Already installed."
	    exit
	} else {
	    # do something here logical to remove (or replace) it.
	    puts "$$ver != $(VERSION), unfinished code path, die, die!"
	    exit 1
	}


    }


}
close $$f
set f [open $(DOC_INSTALL_DIR:\=/)/tcl$(VERSION).cnt a]
puts $$f {:Include $(HLPBASE).cnt}
close $$f
<<
	start /wait winhlp32 -g $(DOC_INSTALL_DIR)\tcl$(VERSION).hlp
!endif

#---------------------------------------------------------------------
# Special case object file targets
#---------------------------------------------------------------------

$(TMP_DIR)\testMain.obj: $(WINDIR)\winMain.c
!if $(TCL_LINKWITHEXTENSIONS)
	$(cc32) $(WISH_CFLAGS) -DTK_TEST -DTCL_LINKWITHEXTENSIONS -Fo$@ $?
!else
	$(cc32) $(WISH_CFLAGS) -DTK_TEST -Fo$@ $?
!endif

$(TMP_DIR)\tkTest.obj: $(GENERICDIR)\tkTest.c
	$(cc32) $(WISH_CFLAGS) -Fo$@ $?

$(TMP_DIR)\tkWinTest.obj: $(WINDIR)\tkWinTest.c
	$(cc32) $(WISH_CFLAGS) -Fo$@ $?

$(TMP_DIR)\tkSquare.obj: $(GENERICDIR)\tkSquare.c
	$(cc32) $(WISH_CFLAGS) -Fo$@ $?

$(TMP_DIR)\winMain.obj: $(WINDIR)\winMain.c
!if $(TCL_LINKWITHEXTENSIONS)

	$(cc32) $(WISH_CFLAGS) -DTCL_LINKWITHEXTENSIONS -Fo$@ $?
!else
	$(cc32) $(WISH_CFLAGS) -Fo$@ $?
!endif


# The following objects are part of the stub library and should not
# be built as DLL objects but none of the symbols should be exported
# and no reference made to a C runtime.

$(TMP_DIR)\tkStubLib.obj : $(GENERICDIR)\tkStubLib.c
	$(cc32) $(cdebug) $(cflags) $(TK_INCLUDES) -Zl -DSTATIC_BUILD -Fo$@ $?

$(TMP_DIR)\tkStubImg.obj : $(GENERICDIR)\tkStubImg.c
	$(cc32) $(cdebug) $(cflags) $(TK_INCLUDES) -Zl -DSTATIC_BUILD -Fo$@ $?





#---------------------------------------------------------------------
# Dedependency rules
#---------------------------------------------------------------------

$(TMP_DIR)\tk.res: \
    $(RCDIR)\buttons.bmp \
    $(RCDIR)\cursor*.cur \
    $(RCDIR)\tk.ico

$(GENERICDIR)/default.h: $(WINDIR)/tkWinDefault.h
$(GENERICDIR)/tkButton.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkCanvas.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkEntry.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkFrame.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkListbox.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkMenu.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkMenubutton.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkMessage.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkPanedWindow.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkScale.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkScrollbar.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkText.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkTextIndex.c: $(GENERICDIR)/default.h
$(GENERICDIR)/tkTextTag.c: $(GENERICDIR)/default.h

$(GENERICDIR)/tkText.c: $(GENERICDIR)/tkText.h
519
520
521
522
523
524
525




























































$(GENERICDIR)/tkTextWind.c: $(GENERICDIR)/tkText.h

$(GENERICDIR)/tkMacWinMenu.c: $(GENERICDIR)/tkMenu.h
$(GENERICDIR)/tkMenu.c: $(GENERICDIR)/tkMenu.h
$(GENERICDIR)/tkMenuDraw.c: $(GENERICDIR)/tkMenu.h
$(WINDIR)/tkWinMenu.c: $(GENERICDIR)/tkMenu.h




































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
$(GENERICDIR)/tkTextWind.c: $(GENERICDIR)/tkText.h

$(GENERICDIR)/tkMacWinMenu.c: $(GENERICDIR)/tkMenu.h
$(GENERICDIR)/tkMenu.c: $(GENERICDIR)/tkMenu.h
$(GENERICDIR)/tkMenuDraw.c: $(GENERICDIR)/tkMenu.h
$(WINDIR)/tkWinMenu.c: $(GENERICDIR)/tkMenu.h

!if exist("$(OUT_DIR)\depend.mk")
!include "$(OUT_DIR)\depend.mk"
!message *** Dependency rules in effect.
!else
!message *** Dependency rules are not being used.
!endif

### add a spacer in the output
!message

#---------------------------------------------------------------------
# Implicit rules
#---------------------------------------------------------------------

{$(XLIBDIR)}.c{$(TMP_DIR)}.obj::
	$(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<<
$<
<<

{$(GENERICDIR)}.c{$(TMP_DIR)}.obj::
	$(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<<
$<
<<

{$(WINDIR)}.c{$(TMP_DIR)}.obj::
	$(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<<
$<
<<

{$(ROOT)\unix}.c{$(TMP_DIR)}.obj::
	$(cc32) -DBUILD_tk $(TK_CFLAGS) -Fo$(TMP_DIR)\ @<<
$<
<<

{$(RCDIR)}.rc{$(TMP_DIR)}.res:
	$(rc32) -fo $@ -r -i "$(GENERICDIR)" $(TCL_INCLUDES) \
!if $(DEBUG)
		-d DEBUG \
!endif
!if $(TCL_THREADS)
		-d TCL_THREADS \
!endif
!if $(STATIC_BUILD)
		-d STATIC_BUILD \
!endif
		$<

#---------------------------------------------------------------------
# Clean up
#---------------------------------------------------------------------

clean:
	-@$(RMDIR) $(TMP_DIR)

hose: clean
	-@$(RMDIR) $(OUT_DIR)


.SUFFIXES:
.SUFFIXES:.c .rc
Changes to win/mkd.bat.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

22
@echo off
rem RCS: @(#) $Id: mkd.bat,v 1.4 2001/09/08 22:34:42 mdejong Exp $

if exist %1\tag.txt goto end

if "%OS%" == "Windows_NT" goto winnt

md %1
if errorlevel 1 goto end

goto success

:winnt
md %1
if errorlevel 1 goto end

:success
echo TAG >%1\tag.txt
echo created directory %1

:end



|

|
<
<




<
<
<
<
<
<
<
<
|


>

1
2
3
4


5
6
7
8








9
10
11
12
13
@echo off
rem RCS: @(#) $Id: mkd.bat,v 1.4.2.1 2002/06/10 05:38:27 wolfsuit Exp $

if exist %1\nul goto end



md %1
if errorlevel 1 goto end









echo Created directory %1

:end


Changes to win/nmakehlp.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* ----------------------------------------------------------------------------
 * nmakehlp.c --
 *
 *	This is used to fix limitations within nmake and the environment.
 *
 * Copyright (c) 2002 by David Gravereaux.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * ----------------------------------------------------------------------------
 * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.1 2002/06/10 05:08:00 wolfsuit Exp $
 * ----------------------------------------------------------------------------
 */
#include <windows.h>
#pragma comment (lib, "user32.lib")
#pragma comment (lib, "kernel32.lib")

/* protos */











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* ----------------------------------------------------------------------------
 * nmakehlp.c --
 *
 *	This is used to fix limitations within nmake and the environment.
 *
 * Copyright (c) 2002 by David Gravereaux.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * ----------------------------------------------------------------------------
 * RCS: @(#) $Id: nmakehlp.c,v 1.1.4.2 2002/06/10 05:38:27 wolfsuit Exp $
 * ----------------------------------------------------------------------------
 */
#include <windows.h>
#pragma comment (lib, "user32.lib")
#pragma comment (lib, "kernel32.lib")

/* protos */
Changes to win/rmd.bat.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
rem RCS: @(#) $Id: rmd.bat,v 1.4 2001/09/08 22:34:42 mdejong Exp $

if not exist %1\tag.txt goto end

echo Removing directory %1

if "%OS%" == "Windows_NT" goto winnt

cd %1
if errorlevel 1 goto end
del *.*
cd ..
rmdir %1
if errorlevel 1 goto end
goto success

:winnt
rmdir %1 /s /q
if errorlevel 1 goto end

:success
echo deleted directory %1

:end


|

|





|
<
<
<
<




|



|


<
1
2
3
4
5
6
7
8
9
10




11
12
13
14
15
16
17
18
19
20
21

@echo off
rem RCS: @(#) $Id: rmd.bat,v 1.4.2.1 2002/06/10 05:38:27 wolfsuit Exp $

if not exist %1\nul goto end

echo Removing directory %1

if "%OS%" == "Windows_NT" goto winnt

deltree /y %1




if errorlevel 1 goto end
goto success

:winnt
rmdir /s /q %1
if errorlevel 1 goto end

:success
echo Deleted directory %1

:end

Changes to win/rules.vc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

32
33


























































34
35

36
37
38
39
40
41

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78






79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#------------------------------------------------------------------------------
# rules.vc --
#
#	Microsoft Visual C++ makefile include for decoding the commandline
#	macros.  This file does not need editing to build Tcl.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# Copyright (c) 2001 Tomasoft Engineering.
#
#------------------------------------------------------------------------------
# RCS: @(#) $Id: rules.vc,v 1.1.2.1 2002/02/05 02:25:18 wolfsuit Exp $
#------------------------------------------------------------------------------

!ifndef _RULES_VC
_RULES_VC = 1

cc32		= $(CC)   # built-in default.
link32		= link
lib32		= lib
rc32		= $(RC)   # built-in default.

!ifndef INSTALLDIR
INSTALLDIR	= C:\Progra~1\Tcl
!endif

!ifndef MACHINE
MACHINE		= IX86
!endif



#----------------------------------------------------------


























































# Decode the options requested.
#----------------------------------------------------------

!if "$(OPTS)" == "" || ![echo $(OPTS) | find /i "none" > nul]
STATIC_BUILD	= 0
TCL_THREADS	= 0
DEBUG		= 0
PROFILE		= 0
MSVCRT		= 0

TCL_LINKWITHEXTENSIONS	= 0
!else
!if ![echo $(OPTS) | find /i "static" > nul]
!message *** Doing static
STATIC_BUILD	= 1
!else
STATIC_BUILD	= 0
!endif
!if ![echo $(OPTS) | find /i "msvcrt" > nul]
!message *** Doing msvcrt
MSVCRT		= 1
!else
MSVCRT		= 0
!endif
!if ![echo $(OPTS) | find /i "linkexten" > nul]
!message *** Doing linkexten
TCL_LINKWITHEXTENSIONS	= 1
!else
TCL_LINKWITHEXTENSIONS	= 0
!endif
!if ![echo $(OPTS) | find /i "threads" > nul]
!message *** Doing threads
TCL_THREADS	= 1
!else
TCL_THREADS	= 0
!endif
!if ![echo $(OPTS) | find /i "symbols" > nul]
!message *** Doing symbols
DEBUG		= 1
!else
DEBUG		= 0
!endif
!if ![echo $(OPTS) | find /i "profile" > nul]
!message *** Doing profile
PROFILE		= 1
!else
PROFILE		= 0






!endif
!endif


!if !$(STATIC_BUILD)
# Make sure we don't build overly fat DLLs.
MSVCRT		= 1
# Shouldn't statically put the extensions inside the shell when dynamic.
TCL_LINKWITHEXTENSIONS = 0
!endif


#----------------------------------------------------------
# Figure-out how to name our intermediate and output directories.
# We wouldn't want different builds to use the same .obj files









|


|


















>


>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>


>
|





>


|





|





|





|





|





|




>
>
>
>
>
>







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#------------------------------------------------------------------------------
# rules.vc --
#
#	Microsoft Visual C++ makefile include for decoding the commandline
#	macros.  This file does not need editing to build Tcl.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# Copyright (c) 2001-2002 David Gravereaux.
#
#------------------------------------------------------------------------------
# RCS: @(#) $Id: rules.vc,v 1.1.2.2 2002/06/10 05:38:27 wolfsuit Exp $
#------------------------------------------------------------------------------

!ifndef _RULES_VC
_RULES_VC = 1

cc32		= $(CC)   # built-in default.
link32		= link
lib32		= lib
rc32		= $(RC)   # built-in default.

!ifndef INSTALLDIR
INSTALLDIR	= C:\Progra~1\Tcl
!endif

!ifndef MACHINE
MACHINE		= IX86
!endif

!message ===============================================================================

#----------------------------------------------------------
# build the helper app we need to overcome nmake's limiting
# environment.
#----------------------------------------------------------

!if !exist(nmakehlp.exe)
!if [$(cc32) -nologo -ML nmakehlp.c -link -subsystem:console > nul]
!endif
!endif

#----------------------------------------------------------
# Test for compiler features
#----------------------------------------------------------

### test for optimizations
!if [nmakehlp -c -Ox]
!message *** Compiler has 'Optimizations'
OPTIMIZING	= 1
!else
!message *** Compiler doesn't have 'Optimizations'
OPTIMIZING	= 0
!endif

!if "$(MACHINE)" == "IX86"
### test for pentium errata
!if [nmakehlp -c -QI0f]
!message *** Compiler has 'Pentium 0x0f fix'
PENT_0F_ERRATA	= 1
!else
!message *** Compiler doesn't have 'Pentium 0x0f fix'
PENT_0F_ERRATA	= 0
!endif
### test for -align:4096, when align:512 will do.
!if [nmakehlp -l -opt:nowin98]
!message *** Linker has 'Win98 alignment problem'
ALIGN98_HACK	= 1
!else
!message *** Linker doesn't have 'Win98 alignment problem'
ALIGN98_HACK	= 0
!endif
!else
PENT_0F_ERRATA	= 0
ALIGN98_HACK	= 0
!endif

!if "$(MACHINE)" == "IA64"
### test for Itanium errata
!if [nmakehlp -c -QIA64_Bx]
!message *** Compiler has 'B-stepping errata workarounds'
ITAN_B_ERRATA	= 1
!else
!message *** Compiler doesn't have 'B-stepping errata workarounds'
ITAN_B_ERRATA	= 0
!endif
!else
ITAN_B_ERRATA	= 0
!endif

#----------------------------------------------------------
# Decode the options requested.
#----------------------------------------------------------

!if "$(OPTS)" == "" || [nmakehlp -f "$(OPTS)" "none"]
STATIC_BUILD	= 0
TCL_THREADS	= 0
DEBUG		= 0
PROFILE		= 0
MSVCRT		= 0
LOIMPACT	= 0
TCL_LINKWITHEXTENSIONS	= 0
!else
!if [nmakehlp -f $(OPTS) "static"]
!message *** Doing static
STATIC_BUILD	= 1
!else
STATIC_BUILD	= 0
!endif
!if [nmakehlp -f $(OPTS) "msvcrt"]
!message *** Doing msvcrt
MSVCRT		= 1
!else
MSVCRT		= 0
!endif
!if [nmakehlp -f $(OPTS) "linkexten"]
!message *** Doing linkexten
TCL_LINKWITHEXTENSIONS	= 1
!else
TCL_LINKWITHEXTENSIONS	= 0
!endif
!if [nmakehlp -f $(OPTS) "threads"]
!message *** Doing threads
TCL_THREADS	= 1
!else
TCL_THREADS	= 0
!endif
!if [nmakehlp -f $(OPTS) "symbols"]
!message *** Doing symbols
DEBUG		= 1
!else
DEBUG		= 0
!endif
!if [nmakehlp -f $(OPTS) "profile"]
!message *** Doing profile
PROFILE		= 1
!else
PROFILE		= 0
!endif
!if [nmakehlp -f $(OPTS) "loimpact"]
!message *** Doing loimpact
LOIMPACT	= 1
!else
LOIMPACT	= 0
!endif
!endif


!if !$(STATIC_BUILD)
# Make sure we don't build overly fat DLLs.
MSVCRT		= 1
# We shouldn't statically put the extensions inside the shell when dynamic.
TCL_LINKWITHEXTENSIONS = 0
!endif


#----------------------------------------------------------
# Figure-out how to name our intermediate and output directories.
# We wouldn't want different builds to use the same .obj files
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150

151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168





169
170
171
172
173
174
175
176
177
178
179
180
181
182








183
184
185
!endif
!else
!ifndef OUT_DIR
OUT_DIR	    = $(TMP_DIR)
!endif
!endif

!message *** Intermediate directory will be '$(TMP_DIR)'
!message *** Output directory will be '$(OUT_DIR)'
!message *** Suffix for binaries will be '$(SUFX)'


#----------------------------------------------------------
# Decode the statistics requested.
#----------------------------------------------------------

!if "$(STATS)" == "" || ![echo $(STATS) | find /i "none" > nul]
TCL_MEM_DEBUG	    = 0
TCL_COMPILE_DEBUG   = 0
!else
!if ![echo $(STATS) | find /i "memdbg" > nul]
!message *** Doing memdbg
TCL_MEM_DEBUG	    = 1
!else
TCL_MEM_DEBUG	    = 0
!endif
!if ![echo $(STATS) | find /i "compdbg" > nul]
!message *** Doing compdbg
TCL_COMPILE_DEBUG   = 1
!else
TCL_COMPILE_DEBUG   = 0
!endif
!endif






OPTDEFINES	=
!if $(TCL_MEM_DEBUG)
OPTDEFINES	= -DTCL_MEM_DEBUG
!endif
!if $(TCL_COMPILE_DEBUG)
OPTDEFINES	= $(OPTDEFINES) -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS
!endif
!if $(TCL_THREADS)
OPTDEFINES	= $(OPTDEFINES) -DTCL_THREADS=1
!endif
!if $(STATIC_BUILD)
OPTDEFINES	= $(OPTDEFINES) -DSTATIC_BUILD
!endif









!message *** Optional defines are '$(OPTDEFINES)'

!endif







<
<
<
<




>
|



|





|







>
>
>
>
>














>
>
>
>
>
>
>
>



203
204
205
206
207
208
209




210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
!endif
!else
!ifndef OUT_DIR
OUT_DIR	    = $(TMP_DIR)
!endif
!endif






#----------------------------------------------------------
# Decode the statistics requested.
#----------------------------------------------------------

!if "$(STATS)" == "" || [nmakehlp -f "$(STATS)" "none"]
TCL_MEM_DEBUG	    = 0
TCL_COMPILE_DEBUG   = 0
!else
!if [nmakehlp -f $(STATS) "memdbg"]
!message *** Doing memdbg
TCL_MEM_DEBUG	    = 1
!else
TCL_MEM_DEBUG	    = 0
!endif
!if [nmakehlp -f $(STATS) "compdbg"]
!message *** Doing compdbg
TCL_COMPILE_DEBUG   = 1
!else
TCL_COMPILE_DEBUG   = 0
!endif
!endif


#----------------------------------------------------------
# Set our defines armed with our options.
#----------------------------------------------------------

OPTDEFINES	=
!if $(TCL_MEM_DEBUG)
OPTDEFINES	= -DTCL_MEM_DEBUG
!endif
!if $(TCL_COMPILE_DEBUG)
OPTDEFINES	= $(OPTDEFINES) -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS
!endif
!if $(TCL_THREADS)
OPTDEFINES	= $(OPTDEFINES) -DTCL_THREADS=1
!endif
!if $(STATIC_BUILD)
OPTDEFINES	= $(OPTDEFINES) -DSTATIC_BUILD
!endif


#----------------------------------------------------------
# Display stats being used.
#----------------------------------------------------------

!message *** Intermediate directory will be '$(TMP_DIR)'
!message *** Output directory will be '$(OUT_DIR)'
!message *** Suffix for binaries will be '$(SUFX)'
!message *** Optional defines are '$(OPTDEFINES)'

!endif
Changes to win/tcl.m4.
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
	MAKE_LIB="\${STLIB_LD} -out:\[$]@"
	POST_MAKE_LIB=
	MAKE_EXE="\${CC} -Fe\[$]@"
	LIBPREFIX=""

	EXTRA_CFLAGS="-YX"
	CFLAGS_WARNING="-W3"
	LDFLAGS_DEBUG="-debug:full -debugtype:cv"
	LDFLAGS_OPTIMIZE="-release"
	
	# Specify the CC output file names based on the target name
	CC_OBJNAME="-Fo\[$]@"
	CC_EXENAME="-Fe\"\$(shell \$(CYGPATH) '\[$]@')\""

	# Specify linker flags depending on the type of app being 







|







526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
	MAKE_LIB="\${STLIB_LD} -out:\[$]@"
	POST_MAKE_LIB=
	MAKE_EXE="\${CC} -Fe\[$]@"
	LIBPREFIX=""

	EXTRA_CFLAGS="-YX"
	CFLAGS_WARNING="-W3"
	LDFLAGS_DEBUG="-debug:full -debugtype:both"
	LDFLAGS_OPTIMIZE="-release"
	
	# Specify the CC output file names based on the target name
	CC_OBJNAME="-Fo\[$]@"
	CC_EXENAME="-Fe\"\$(shell \$(CYGPATH) '\[$]@')\""

	# Specify linker flags depending on the type of app being 
Changes to win/tkWinButton.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkWinButton.c --
 *
 *	This file implements the Windows specific portion of the button
 *	widgets.
 *
 * Copyright (c) 1996-1998 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinButton.c,v 1.12.4.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#define OEMRESOURCE
#include "tkWinInt.h"
#include "tkButton.h"

/*











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkWinButton.c --
 *
 *	This file implements the Windows specific portion of the button
 *	widgets.
 *
 * Copyright (c) 1996-1998 by Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinButton.c,v 1.12.4.2 2002/06/10 05:38:27 wolfsuit Exp $
 */

#define OEMRESOURCE
#include "tkWinInt.h"
#include "tkButton.h"

/*
701
702
703
704
705
706
707




708
709
710
711
712
713
714
		Tk_Width(tkwin), defaultWidth,
		butPtr->highlightColorPtr->pixel);
	TkWinFillRect(dc, Tk_Width(tkwin) - defaultWidth, 0,
		defaultWidth, Tk_Height(tkwin),
		butPtr->highlightColorPtr->pixel);
	TkWinReleaseDrawableDC(pixmap, dc, &state);
    }





    /*
     * Copy the information from the off-screen pixmap onto the screen,
     * then delete the pixmap.
     */

    XCopyArea(butPtr->display, pixmap, Tk_WindowId(tkwin),







>
>
>
>







701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
		Tk_Width(tkwin), defaultWidth,
		butPtr->highlightColorPtr->pixel);
	TkWinFillRect(dc, Tk_Width(tkwin) - defaultWidth, 0,
		defaultWidth, Tk_Height(tkwin),
		butPtr->highlightColorPtr->pixel);
	TkWinReleaseDrawableDC(pixmap, dc, &state);
    }

    if (butPtr->flags & GOT_FOCUS) {
	Tk_SetCaretPos(tkwin, x, y, 0 /* not used */);
    }

    /*
     * Copy the information from the off-screen pixmap onto the screen,
     * then delete the pixmap.
     */

    XCopyArea(butPtr->display, pixmap, Tk_WindowId(tkwin),
Changes to win/tkWinCursor.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkWinCursor.c --
 *
 *	This file contains Win32 specific cursor related routines.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinCursor.c,v 1.4.8.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkWinInt.h"

/*
 * The following data structure contains the system specific data
 * necessary to control Windows cursors.










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkWinCursor.c --
 *
 *	This file contains Win32 specific cursor related routines.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinCursor.c,v 1.4.8.2 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"

/*
 * The following data structure contains the system specific data
 * necessary to control Windows cursors.
83
84
85
86
87
88
89


90
91

92
93
94
95
96
97
98



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123


124
125
126
127
128
129
130
131
132
133
134
135
136
137





















138
139
140
141
142
143
144
145
146
147
148
149
    Tcl_Interp *interp;		/* Interpreter to use for error reporting. */
    Tk_Window tkwin;		/* Window in which cursor will be used. */
    Tk_Uid string;		/* Description of cursor.  See manual entry
				 * for details on legal syntax. */
{
    struct CursorName *namePtr;
    TkWinCursor *cursorPtr;



    /*

     * Check for the cursor in the system cursor set.
     */

    for (namePtr = cursorNames; namePtr->name != NULL; namePtr++) {
	if (strcmp(namePtr->name, string) == 0) {
	    break;
	}



    }

    cursorPtr = (TkWinCursor *) ckalloc(sizeof(TkWinCursor));
    cursorPtr->info.cursor = (Tk_Cursor) cursorPtr;
    cursorPtr->winCursor = NULL;
    if (namePtr->name != NULL) {
	cursorPtr->winCursor = LoadCursor(NULL, namePtr->id);
	cursorPtr->system = 1;
    }
    if (cursorPtr->winCursor == NULL) {
	cursorPtr->winCursor = LoadCursor(Tk_GetHINSTANCE(), string);
	cursorPtr->system = 0;
    }
    if (string[0] == '@') {
	int argc;
	CONST char **argv = NULL;
	if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) {
	    return NULL;
	}
	/*
	 * Check for system cursor of type @<filename>, where only
	 * the name is allowed.  This accepts either:
	 *	-cursor @/winnt/cursors/globe.ani
	 *	-cursor @C:/Winnt/cursors/E_arrow.cur
	 *	-cursor {@C:/Program\ Files/Cursors/bart.ani}


	 */
	if ((argc != 1) || (argv[0][0] != '@')) {
	    ckfree((char *) argv);
	    goto badCursorSpec;
	}
	if (Tcl_IsSafe(interp)) {
	    Tcl_AppendResult(interp, "can't get cursor from a file in",
		    " a safe interpreter", (char *) NULL);
	    ckfree((char *) argv);
	    ckfree((char *)cursorPtr);
	    return NULL;
	}
	cursorPtr->winCursor = LoadCursorFromFile(&(argv[0][1]));
	cursorPtr->system = 0;





















	ckfree((char *) argv);
    }
    if (cursorPtr->winCursor == NULL) {
	badCursorSpec:
	ckfree((char *)cursorPtr);
	Tcl_AppendResult(interp, "bad cursor spec \"", string, "\"",
		(char *) NULL);
	return NULL;
    } else {
	return (TkCursor *) cursorPtr;
    }
}







>
>


>
|


<
|
|
|
>
>
>





<
<
<
|
<
<
<
<
|
<
<
<
<
<


|



>
>

<
<
<
|




|




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|

|
|







83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

98
99
100
101
102
103
104
105
106
107
108



109




110





111
112
113
114
115
116
117
118
119



120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
    Tcl_Interp *interp;		/* Interpreter to use for error reporting. */
    Tk_Window tkwin;		/* Window in which cursor will be used. */
    Tk_Uid string;		/* Description of cursor.  See manual entry
				 * for details on legal syntax. */
{
    struct CursorName *namePtr;
    TkWinCursor *cursorPtr;
    int argc;
    CONST char **argv = NULL;

    /*
     * All cursor names are valid lists of one element (for
     * Unix-compatability), even unadorned system cursor names.
     */


    if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) {
	return NULL;
    }
    if (argc != 1) {
	ckfree((char *) argv);
	goto badCursorSpec;
    }

    cursorPtr = (TkWinCursor *) ckalloc(sizeof(TkWinCursor));
    cursorPtr->info.cursor = (Tk_Cursor) cursorPtr;
    cursorPtr->winCursor = NULL;








    if (argv[0][0] == '@') {





	/*
	 * Check for system cursor of type @<filename>, where only
	 * the name is allowed.  This accepts any of:
	 *	-cursor @/winnt/cursors/globe.ani
	 *	-cursor @C:/Winnt/cursors/E_arrow.cur
	 *	-cursor {@C:/Program\ Files/Cursors/bart.ani}
	 *      -cursor {{@C:/Program Files/Cursors/bart.ani}}
	 *	-cursor [list @[file join "C:/Program Files" Cursors bart.ani]]
	 */




	if (Tcl_IsSafe(interp)) {
	    Tcl_AppendResult(interp, "can't get cursor from a file in",
		    " a safe interpreter", (char *) NULL);
	    ckfree((char *) argv);
	    ckfree((char *) cursorPtr);
	    return NULL;
	}
	cursorPtr->winCursor = LoadCursorFromFile(&(argv[0][1]));
	cursorPtr->system = 0;
    } else {
	/*
	 * Check for the cursor in the system cursor set.
	 */

	for (namePtr = cursorNames; namePtr->name != NULL; namePtr++) {
	    if (strcmp(namePtr->name, name[0]) == 0) {
		/*
		 * It is either a system cursor or one of ours!
		 */
		cursorPtr->winCursor = LoadCursor(NULL, namePtr->id);
		if (cursorPtr->winCursor == NULL) {
		    cursorPtr->winCursor =
			    LoadCursor(Tk_GetHINSTANCE(), name[0]);
		    cursorPtr->system = 0;
		} else {
		    cursorPtr->system = 1;
		}
	    }
	}
    }
    ckfree((char *) argv);

    if (cursorPtr->winCursor == NULL) {
    badCursorSpec:
	ckfree((char *) cursorPtr);
	Tcl_AppendResult(interp, "bad cursor spec \"", string, "\"",
		(char *) NULL);
	return NULL;
    } else {
	return (TkCursor *) cursorPtr;
    }
}
Changes to win/tkWinDefault.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 * tkWinDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinDefault.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#ifndef _TKWINDEFAULT
#define _TKWINDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 * tkWinDefault.h --
 *
 *	This file defines the defaults for all options for all of
 *	the Tk widgets.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinDefault.h,v 1.11.2.2 2002/06/10 05:38:28 wolfsuit Exp $
 */

#ifndef _TKWINDEFAULT
#define _TKWINDEFAULT

/*
 * The definitions below provide symbolic names for the default colors.
354
355
356
357
358
359
360


































361
362
363
364
365
366
367
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"



































/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK
#define DEF_SCALE_BG_COLOR		NORMAL_BG







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
#define DEF_MESSAGE_PADY		"-1"
#define DEF_MESSAGE_RELIEF		"flat"
#define DEF_MESSAGE_TAKE_FOCUS		"0"
#define DEF_MESSAGE_TEXT		""
#define DEF_MESSAGE_TEXT_VARIABLE	""
#define DEF_MESSAGE_WIDTH		"0"

/*
 * Defaults for panedwindows
 */

#define DEF_PANEDWINDOW_BG_COLOR	NORMAL_BG
#define DEF_PANEDWINDOW_BG_MONO		WHITE
#define DEF_PANEDWINDOW_BORDERWIDTH	"2"
#define DEF_PANEDWINDOW_CURSOR		""
#define DEF_PANEDWINDOW_HANDLEPAD	"8"
#define DEF_PANEDWINDOW_HANDLESIZE	"8"
#define DEF_PANEDWINDOW_HEIGHT		""
#define DEF_PANEDWINDOW_OPAQUERESIZE	"0"
#define DEF_PANEDWINDOW_ORIENT		"horizontal"
#define DEF_PANEDWINDOW_RELIEF		"flat"
#define DEF_PANEDWINDOW_SASHCURSOR	""
#define DEF_PANEDWINDOW_SASHPAD		"2"
#define DEF_PANEDWINDOW_SASHRELIEF	"raised"
#define DEF_PANEDWINDOW_SASHWIDTH	"2"
#define DEF_PANEDWINDOW_SHOWHANDLE	"0"
#define DEF_PANEDWINDOW_WIDTH		""

/*
 * Defaults for panedwindow panes
 */

#define DEF_PANEDWINDOW_PANE_AFTER	""
#define DEF_PANEDWINDOW_PANE_BEFORE	""
#define DEF_PANEDWINDOW_PANE_HEIGHT	""
#define DEF_PANEDWINDOW_PANE_MINSIZE	"0"
#define DEF_PANEDWINDOW_PANE_PADX	"0"
#define DEF_PANEDWINDOW_PANE_PADY	"0"
#define DEF_PANEDWINDOW_PANE_STICKY	"nsew"
#define DEF_PANEDWINDOW_PANE_WIDTH	""

/*
 * Defaults for scales:
 */

#define DEF_SCALE_ACTIVE_BG_COLOR	ACTIVE_BG
#define DEF_SCALE_ACTIVE_BG_MONO	BLACK
#define DEF_SCALE_BG_COLOR		NORMAL_BG
Changes to win/tkWinDialog.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * tkWinDialog.c --
 *
 *	Contains the Windows implementation of the common dialog boxes.
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinDialog.c,v 1.22.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 *
 */

#include "tkWinInt.h"
#include "tkFileFilter.h"

#include <commdlg.h>    /* includes common dialog functionality */










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * tkWinDialog.c --
 *
 *	Contains the Windows implementation of the common dialog boxes.
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinDialog.c,v 1.22.2.2 2002/06/10 05:38:28 wolfsuit Exp $
 *
 */

#include "tkWinInt.h"
#include "tkFileFilter.h"

#include <commdlg.h>    /* includes common dialog functionality */
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
	    /* 
	     * Set the title string of the dialog.
	     */

	    ccPtr = (CHOOSECOLOR *) lParam;
	    title = (const char *) ccPtr->lCustData;
	    if ((title != NULL) && (title[0] != '\0')) {
		Tcl_WinUtfToTChar(title, -1, &ds);
		(*tkWinProcs->setWindowText)(hDlg,
			(TCHAR *) Tcl_DStringValue(&ds));
		Tcl_DStringFree(&ds);
	    }
	    if (tsdPtr->debugFlag) {
		tsdPtr->debugInterp = (Tcl_Interp *) ccPtr->lpTemplateName;
		Tcl_DoWhenIdle(SetTkDialog, (ClientData) hDlg);
	    }
	    return TRUE;







<

|







389
390
391
392
393
394
395

396
397
398
399
400
401
402
403
404
	    /* 
	     * Set the title string of the dialog.
	     */

	    ccPtr = (CHOOSECOLOR *) lParam;
	    title = (const char *) ccPtr->lCustData;
	    if ((title != NULL) && (title[0] != '\0')) {

		(*tkWinProcs->setWindowText)(hDlg,
			Tcl_WinUtfToTChar(title, -1, &ds));
		Tcl_DStringFree(&ds);
	    }
	    if (tsdPtr->debugFlag) {
		tsdPtr->debugInterp = (Tcl_Interp *) ccPtr->lpTemplateName;
		Tcl_DoWhenIdle(SetTkDialog, (ClientData) hDlg);
	    }
	    return TRUE;
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507

508
509
510
511
512
513
514
    ClientData clientData;	/* Main window associated with interpreter. */
    Tcl_Interp *interp;		/* Current interpreter. */
    int objc;			/* Number of arguments. */
    Tcl_Obj *CONST objv[];	/* Argument objects. */
    int open;			/* 1 to call GetOpenFileName(), 0 to 
				 * call GetSaveFileName(). */
{
    Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode");
    OPENFILENAMEW ofn;
    WCHAR file[TK_MULTI_MAX_PATH];
    int result, winCode, oldMode, i, multi = 0;
    char *extension, *filter, *title;
    Tk_Window tkwin;
    HWND hWnd;
    Tcl_DString utfFilterString, utfDirString;
    Tcl_DString extString, filterString, dirString, titleString;

    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    static CONST char *saveOptionStrings[] = {
	"-defaultextension", "-filetypes", "-initialdir", "-initialfile",
	"-parent", "-title", NULL
    };
    static CONST char *openOptionStrings[] = {







<








>







491
492
493
494
495
496
497

498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
    ClientData clientData;	/* Main window associated with interpreter. */
    Tcl_Interp *interp;		/* Current interpreter. */
    int objc;			/* Number of arguments. */
    Tcl_Obj *CONST objv[];	/* Argument objects. */
    int open;			/* 1 to call GetOpenFileName(), 0 to 
				 * call GetSaveFileName(). */
{

    OPENFILENAMEW ofn;
    WCHAR file[TK_MULTI_MAX_PATH];
    int result, winCode, oldMode, i, multi = 0;
    char *extension, *filter, *title;
    Tk_Window tkwin;
    HWND hWnd;
    Tcl_DString utfFilterString, utfDirString;
    Tcl_DString extString, filterString, dirString, titleString;
    Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding();
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
    static CONST char *saveOptionStrings[] = {
	"-defaultextension", "-filetypes", "-initialdir", "-initialfile",
	"-parent", "-title", NULL
    };
    static CONST char *openOptionStrings[] = {
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434

2435
2436
2437
2438
2439
2440
2441
int
Tk_MessageBoxObjCmd(clientData, interp, objc, objv)
    ClientData clientData;	/* Main window associated with interpreter. */
    Tcl_Interp *interp;		/* Current interpreter. */
    int objc;			/* Number of arguments. */
    Tcl_Obj *CONST objv[];	/* Argument objects. */
{
    Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode");
    Tk_Window tkwin, parent;
    HWND hWnd;
    char *message, *title;
    int defaultBtn, icon, type;
    int i, oldMode, flags, winCode;
    Tcl_DString messageString, titleString;

    static CONST char *optionStrings[] = {
	"-default",	"-icon",	"-message",	"-parent",
	"-title",	"-type",	NULL
    };
    enum options {
	MSG_DEFAULT,	MSG_ICON,	MSG_MESSAGE,	MSG_PARENT,
	MSG_TITLE,	MSG_TYPE







<






>







2420
2421
2422
2423
2424
2425
2426

2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
int
Tk_MessageBoxObjCmd(clientData, interp, objc, objv)
    ClientData clientData;	/* Main window associated with interpreter. */
    Tcl_Interp *interp;		/* Current interpreter. */
    int objc;			/* Number of arguments. */
    Tcl_Obj *CONST objv[];	/* Argument objects. */
{

    Tk_Window tkwin, parent;
    HWND hWnd;
    char *message, *title;
    int defaultBtn, icon, type;
    int i, oldMode, flags, winCode;
    Tcl_DString messageString, titleString;
    Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding();
    static CONST char *optionStrings[] = {
	"-default",	"-icon",	"-message",	"-parent",
	"-title",	"-type",	NULL
    };
    enum options {
	MSG_DEFAULT,	MSG_ICON,	MSG_MESSAGE,	MSG_PARENT,
	MSG_TITLE,	MSG_TYPE
Changes to win/tkWinEmbed.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkWinEmbed.c --
 *
 *	This file contains platform specific procedures for Windows platforms
 *	to provide basic operations needed for application embedding (where
 *	one application can use as its main window an internal window from
 *	another application).
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinEmbed.c,v 1.4 2000/07/06 03:17:44 mo Exp $
 */

#include "tkWinInt.h"


/*
 * One of the following structures exists for each container in this













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkWinEmbed.c --
 *
 *	This file contains platform specific procedures for Windows platforms
 *	to provide basic operations needed for application embedding (where
 *	one application can use as its main window an internal window from
 *	another application).
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinEmbed.c,v 1.4.6.1 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"


/*
 * One of the following structures exists for each container in this
144
145
146
147
148
149
150

151
152
153
154
155
156
157
				 * if string is bogus. */
    Tk_Window tkwin;		/* Tk window that does not yet have an
				 * associated X window. */
    char *string;		/* String identifying an X window to use
				 * for tkwin;  must be an integer value. */
{
    TkWindow *winPtr = (TkWindow *) tkwin;

    int id;
    HWND hwnd;
    Container *containerPtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (winPtr->window != None) {







>







144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
				 * if string is bogus. */
    Tk_Window tkwin;		/* Tk window that does not yet have an
				 * associated X window. */
    char *string;		/* String identifying an X window to use
				 * for tkwin;  must be an integer value. */
{
    TkWindow *winPtr = (TkWindow *) tkwin;
    TkWindow *usePtr;
    int id;
    HWND hwnd;
    Container *containerPtr;
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
            Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    if (winPtr->window != None) {
172
173
174
175
176
177
178









179
180
181
182
183
184
185
    if (!IsWindow(hwnd)) {
        if (interp != (Tcl_Interp *) NULL) {
            Tcl_AppendResult(interp, "window \"", string,
                    "\" doesn't exist", (char *) NULL);
        }
        return TCL_ERROR;
    }










    /*
     * Store the parent window in the platform private data slot so
     * TkWmMapWindow can use it when creating the wrapper window.
     */

    winPtr->privatePtr = (struct TkWindowPrivate*) hwnd;







>
>
>
>
>
>
>
>
>







173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
    if (!IsWindow(hwnd)) {
        if (interp != (Tcl_Interp *) NULL) {
            Tcl_AppendResult(interp, "window \"", string,
                    "\" doesn't exist", (char *) NULL);
        }
        return TCL_ERROR;
    }

    usePtr = (TkWindow *) Tk_HWNDToWindow(hwnd);
    if (usePtr != NULL) {
        if (!(usePtr->flags & TK_CONTAINER)) {
	    Tcl_AppendResult(interp, "window \"", usePtr->pathName,
                    "\" doesn't have -container option set", (char *) NULL);
	    return TCL_ERROR;
	}
    }

    /*
     * Store the parent window in the platform private data slot so
     * TkWmMapWindow can use it when creating the wrapper window.
     */

    winPtr->privatePtr = (struct TkWindowPrivate*) hwnd;
Changes to win/tkWinFont.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkWinFont.c --
 *
 *	Contains the Windows implementation of the platform-independant
 *	font package interface.
 *
 * Copyright (c) 1994 Software Research Associates, Inc. 
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinFont.c,v 1.14 2001/09/26 21:36:19 pspjuth Exp $
 */

#include "tkWinInt.h"
#include "tkFont.h"

/*
 * The following structure represents a font family.  It is assumed that













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkWinFont.c --
 *
 *	Contains the Windows implementation of the platform-independant
 *	font package interface.
 *
 * Copyright (c) 1994 Software Research Associates, Inc. 
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinFont.c,v 1.14.2.1 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"
#include "tkFont.h"

/*
 * The following structure represents a font family.  It is assumed that
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Information cached about the system at startup time.
 */
 
static Tcl_Encoding unicodeEncoding;
static Tcl_Encoding systemEncoding;

/*
 * Procedures used only in this file.
 */

static FontFamily *	AllocFontFamily(HDC hdc, HFONT hFont, int base);







<







176
177
178
179
180
181
182

183
184
185
186
187
188
189
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;

/*
 * Information cached about the system at startup time.
 */
 

static Tcl_Encoding systemEncoding;

/*
 * Procedures used only in this file.
 */

static FontFamily *	AllocFontFamily(HDC hdc, HFONT hFont, int base);
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
 *-------------------------------------------------------------------------
 */

void
TkpFontPkgInit(
    TkMainInfo *mainPtr)	/* The application being created. */
{
    unicodeEncoding = Tcl_GetEncoding(NULL, "unicode");
    if (TkWinGetPlatformId() == VER_PLATFORM_WIN32_NT) {
	/*
	 * If running NT, then we will be calling some Unicode functions 
	 * explictly.  So, even if the Tcl system encoding isn't Unicode, 
	 * make sure we convert to/from the Unicode char set. 
	 */

	systemEncoding = unicodeEncoding;
    }
}

/*
 *---------------------------------------------------------------------------
 *
 * TkpGetNativeFont --







<







|







243
244
245
246
247
248
249

250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
 *-------------------------------------------------------------------------
 */

void
TkpFontPkgInit(
    TkMainInfo *mainPtr)	/* The application being created. */
{

    if (TkWinGetPlatformId() == VER_PLATFORM_WIN32_NT) {
	/*
	 * If running NT, then we will be calling some Unicode functions 
	 * explictly.  So, even if the Tcl system encoding isn't Unicode, 
	 * make sure we convert to/from the Unicode char set. 
	 */

	systemEncoding = TkWinGetUnicodeEncoding();
    }
}

/*
 *---------------------------------------------------------------------------
 *
 * TkpGetNativeFont --
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
    fontPtr->pixelSize	= tm.tmHeight - tm.tmInternalLeading;

    fontPtr->numSubFonts 	= 1;
    fontPtr->subFontArray	= fontPtr->staticSubFonts;
    InitSubFont(hdc, hFont, 1, &fontPtr->subFontArray[0]);

    encoding = fontPtr->subFontArray[0].familyPtr->encoding;
    if (encoding == unicodeEncoding) {
	GetCharWidthW(hdc, 0, BASE_CHARS - 1, fontPtr->widths);
    } else {
	GetCharWidthA(hdc, 0, BASE_CHARS - 1, fontPtr->widths);
    } 
    Tcl_DStringFree(&faceString);

    SelectObject(hdc, oldFont);







|







1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
    fontPtr->pixelSize	= tm.tmHeight - tm.tmInternalLeading;

    fontPtr->numSubFonts 	= 1;
    fontPtr->subFontArray	= fontPtr->staticSubFonts;
    InitSubFont(hdc, hFont, 1, &fontPtr->subFontArray[0]);

    encoding = fontPtr->subFontArray[0].familyPtr->encoding;
    if (encoding == TkWinGetUnicodeEncoding()) {
	GetCharWidthW(hdc, 0, BASE_CHARS - 1, fontPtr->widths);
    } else {
	GetCharWidthA(hdc, 0, BASE_CHARS - 1, fontPtr->widths);
    } 
    Tcl_DStringFree(&faceString);

    SelectObject(hdc, oldFont);
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
    }
    if (familyPtr->startCount != NULL) {
	ckfree((char *) familyPtr->startCount);
    }
    if (familyPtr->endCount != NULL) {
	ckfree((char *) familyPtr->endCount);
    }
    if (familyPtr->encoding != unicodeEncoding) {
	Tcl_FreeEncoding(familyPtr->encoding);
    }
    
    /* 
     * Delete from list. 
     */
         







|







1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
    }
    if (familyPtr->startCount != NULL) {
	ckfree((char *) familyPtr->startCount);
    }
    if (familyPtr->endCount != NULL) {
	ckfree((char *) familyPtr->endCount);
    }
    if (familyPtr->encoding != TkWinGetUnicodeEncoding()) {
	Tcl_FreeEncoding(familyPtr->encoding);
    }
    
    /* 
     * Delete from list. 
     */
         
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681

    subFontPtr->fontMap[row] = (char *) ckalloc(FONTMAP_BITSPERPAGE / 8);
    memset(subFontPtr->fontMap[row], 0, FONTMAP_BITSPERPAGE / 8);

    familyPtr = subFontPtr->familyPtr;
    encoding = familyPtr->encoding;

    if (familyPtr->encoding == unicodeEncoding) {
	/*
	 * Font is Unicode.  Few fonts are going to have all characters, so 
	 * examine the TrueType character existence metrics to determine 
	 * what characters actually exist in this font.
	 */

	segCount    = familyPtr->segCount;







|







1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679

    subFontPtr->fontMap[row] = (char *) ckalloc(FONTMAP_BITSPERPAGE / 8);
    memset(subFontPtr->fontMap[row], 0, FONTMAP_BITSPERPAGE / 8);

    familyPtr = subFontPtr->familyPtr;
    encoding = familyPtr->encoding;

    if (familyPtr->encoding == TkWinGetUnicodeEncoding()) {
	/*
	 * Font is Unicode.  Few fonts are going to have all characters, so 
	 * examine the TrueType character existence metrics to determine 
	 * what characters actually exist in this font.
	 */

	segCount    = familyPtr->segCount;
Changes to win/tkWinImage.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkWinImage.c --
 *
 *	This file contains routines for manipulation full-color images.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinImage.c,v 1.3 2000/01/06 02:22:51 hobbs Exp $
 */

#include "tkWinInt.h"

static int		DestroyImage _ANSI_ARGS_((XImage* data));
static unsigned long	ImageGetPixel _ANSI_ARGS_((XImage *image, int x, int y));
static int		PutPixel _ANSI_ARGS_((XImage *image, int x, int y,










|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 
 * tkWinImage.c --
 *
 *	This file contains routines for manipulation full-color images.
 *
 * Copyright (c) 1995 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinImage.c,v 1.3.8.1 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"

static int		DestroyImage _ANSI_ARGS_((XImage* data));
static unsigned long	ImageGetPixel _ANSI_ARGS_((XImage *image, int x, int y));
static int		PutPixel _ANSI_ARGS_((XImage *image, int x, int y,
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
    imagePtr->width = width;
    imagePtr->height = height;
    imagePtr->xoffset = offset;
    imagePtr->format = format;
    imagePtr->data = data;
    imagePtr->byte_order = LSBFirst;
    imagePtr->bitmap_unit = 8;
    imagePtr->bitmap_bit_order = MSBFirst;
    imagePtr->bitmap_pad = bitmap_pad;
    imagePtr->bits_per_pixel = depth;
    imagePtr->depth = depth;

    /*
     * Under Windows, bitmap_pad must be on an LONG data-type boundary.
     */







|







217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
    imagePtr->width = width;
    imagePtr->height = height;
    imagePtr->xoffset = offset;
    imagePtr->format = format;
    imagePtr->data = data;
    imagePtr->byte_order = LSBFirst;
    imagePtr->bitmap_unit = 8;
    imagePtr->bitmap_bit_order = LSBFirst;
    imagePtr->bitmap_pad = bitmap_pad;
    imagePtr->bits_per_pixel = depth;
    imagePtr->depth = depth;

    /*
     * Under Windows, bitmap_pad must be on an LONG data-type boundary.
     */
Changes to win/tkWinInit.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkWinInit.c --
 *
 *	This file contains Windows-specific interpreter initialization
 *	functions.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinInit.c,v 1.4.8.2 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkWinInt.h"

/*
 * The Init script (common to Windows and Unix platforms) is
 * defined in tkInitScript.h











|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 
 * tkWinInit.c --
 *
 *	This file contains Windows-specific interpreter initialization
 *	functions.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinInit.c,v 1.4.8.3 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"

/*
 * The Init script (common to Windows and Unix platforms) is
 * defined in tkInitScript.h
121
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136
137
138
139
 */

void
TkpDisplayWarning(msg, title)
    CONST char *msg;		/* Message to be displayed. */
    CONST char *title;		/* Title of warning. */
{
    Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode");
    Tcl_DString msgString, titleString;


    Tcl_UtfToExternalDString(unicodeEncoding, msg, -1, &msgString);
    Tcl_UtfToExternalDString(unicodeEncoding, title, -1, &titleString);
    MessageBoxW(NULL, (WCHAR *) Tcl_DStringValue(&msgString),
	    (WCHAR *) Tcl_DStringValue(&titleString),
	    MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
	    | MB_SETFOREGROUND | MB_TOPMOST);
    Tcl_DStringFree(&msgString);
    Tcl_DStringFree(&titleString);
}







<

>










121
122
123
124
125
126
127

128
129
130
131
132
133
134
135
136
137
138
139
 */

void
TkpDisplayWarning(msg, title)
    CONST char *msg;		/* Message to be displayed. */
    CONST char *title;		/* Title of warning. */
{

    Tcl_DString msgString, titleString;
    Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding();

    Tcl_UtfToExternalDString(unicodeEncoding, msg, -1, &msgString);
    Tcl_UtfToExternalDString(unicodeEncoding, title, -1, &titleString);
    MessageBoxW(NULL, (WCHAR *) Tcl_DStringValue(&msgString),
	    (WCHAR *) Tcl_DStringValue(&titleString),
	    MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
	    | MB_SETFOREGROUND | MB_TOPMOST);
    Tcl_DStringFree(&msgString);
    Tcl_DStringFree(&titleString);
}
Changes to win/tkWinInt.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkWinInt.h --
 *
 *	This file contains declarations that are shared among the
 *	Windows-specific parts of Tk, but aren't used by the rest of
 *	Tk.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinInt.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#ifndef _TKWININT
#define _TKWININT

#ifndef _TKINT
#include "tkInt.h"













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * tkWinInt.h --
 *
 *	This file contains declarations that are shared among the
 *	Windows-specific parts of Tk, but aren't used by the rest of
 *	Tk.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinInt.h,v 1.11.2.2 2002/06/10 05:38:28 wolfsuit Exp $
 */

#ifndef _TKWININT
#define _TKWININT

#ifndef _TKINT
#include "tkInt.h"
188
189
190
191
192
193
194
195





196

197
198
199
	    HINSTANCE hInstance, LPVOID lpParam);
} TkWinProcs;

EXTERN TkWinProcs *tkWinProcs;

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT






extern Tcl_Encoding TkWinGetKeyInputEncoding _ANSI_ARGS_((void));


#endif /* _TKWININT */









>
>
>
>
>

>



188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
	    HINSTANCE hInstance, LPVOID lpParam);
} TkWinProcs;

EXTERN TkWinProcs *tkWinProcs;

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT

/*
 * The following allows us to cache these encoding for multiple functions.
 */


extern Tcl_Encoding TkWinGetKeyInputEncoding _ANSI_ARGS_((void));
extern Tcl_Encoding TkWinGetUnicodeEncoding _ANSI_ARGS_((void));

#endif /* _TKWININT */

Changes to win/tkWinTest.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkWinTest.c --
 *
 *	Contains commands for platform specific tests for
 *	the Windows platform.
 *
 * Copyright (c) 1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 by Scriptics Corporation.
 * Copyright (c) 2001 by ActiveState Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinTest.c,v 1.5 2001/10/01 21:20:36 hobbs Exp $
 */

#include "tkWinInt.h"

HWND tkWinCurrentDialog;
 
/*













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
 * tkWinTest.c --
 *
 *	Contains commands for platform specific tests for
 *	the Windows platform.
 *
 * Copyright (c) 1997 Sun Microsystems, Inc.
 * Copyright (c) 2000 by Scriptics Corporation.
 * Copyright (c) 2001 by ActiveState Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinTest.c,v 1.5.2.1 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"

HWND tkWinCurrentDialog;
 
/*
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
	    sprintf(msgBuf, "unknown error: %ld", error);
	    msg = msgBuf;
	}
    } else {
	Tcl_Encoding encoding;

	encoding = Tcl_GetEncoding(NULL, "unicode");
	Tcl_ExternalToUtfDString(encoding, (char *) wMsgPtr, -1, &ds);
	Tcl_FreeEncoding(encoding);
	LocalFree(wMsgPtr);

	msg = Tcl_DStringValue(&ds);
	length = Tcl_DStringLength(&ds);

	/*
	 * Trim the trailing CR/LF from the system message.
	 */
	if (msg[length-1] == '\n') {
	    msg[--length] = 0;







|



<







117
118
119
120
121
122
123
124
125
126
127

128
129
130
131
132
133
134
	    sprintf(msgBuf, "unknown error: %ld", error);
	    msg = msgBuf;
	}
    } else {
	Tcl_Encoding encoding;

	encoding = Tcl_GetEncoding(NULL, "unicode");
	msg = Tcl_ExternalToUtfDString(encoding, (char *) wMsgPtr, -1, &ds);
	Tcl_FreeEncoding(encoding);
	LocalFree(wMsgPtr);


	length = Tcl_DStringLength(&ds);

	/*
	 * Trim the trailing CR/LF from the system message.
	 */
	if (msg[length-1] == '\n') {
	    msg[--length] = 0;
Changes to win/tkWinWm.c.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinWm.c,v 1.31.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkWinInt.h"

/*
 * Event structure for synthetic activation events.  These events are
 * placed on the event queue whenever a toplevel gets a WM_MOUSEACTIVATE







|







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinWm.c,v 1.31.2.2 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"

/*
 * Event structure for synthetic activation events.  These events are
 * placed on the event queue whenever a toplevel gets a WM_MOUSEACTIVATE
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
    } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
	    && (length >= 2)) {
	TkWindow **windows, **window_ptr;

	if ((argc != 3) && (argc != 5)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0],
		    " stackorder window ?isabove|isbelow? ?window?\"",
		    (char *) NULL);
	    return TCL_ERROR;
	}

	if (argc == 3) {
            windows = TkWmStackorderToplevel(winPtr);
            if (windows == NULL) {







|







3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
    } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
	    && (length >= 2)) {
	TkWindow **windows, **window_ptr;

	if ((argc != 3) && (argc != 5)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0],
		    " stackorder window ?isabove|isbelow window?\"",
		    (char *) NULL);
	    return TCL_ERROR;
	}

	if (argc == 3) {
            windows = TkWmStackorderToplevel(winPtr);
            if (windows == NULL) {
3257
3258
3259
3260
3261
3262
3263

3264
3265
3266
3267
3268
3269
3270
			(LPCTSTR) Tcl_DStringValue(&titleString));
		Tcl_DStringFree(&titleString);
	    }
	}
    } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0)
	    && (length >= 3)) {
	TkWindow *masterPtr = wmPtr->masterPtr;


	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " transient window ?master?\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (argc == 3) {







>







3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
			(LPCTSTR) Tcl_DStringValue(&titleString));
		Tcl_DStringFree(&titleString);
	    }
	}
    } else if ((c == 't') && (strncmp(argv[1], "transient", length) == 0)
	    && (length >= 3)) {
	TkWindow *masterPtr = wmPtr->masterPtr;
	WmInfo *wmPtr2;

	if ((argc != 3) && (argc != 4)) {
	    Tcl_AppendResult(interp, "wrong # arguments: must be \"",
		    argv[0], " transient window ?master?\"", (char *) NULL);
	    return TCL_ERROR;
	}
	if (argc == 3) {
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304


























3305
3306
3307
3308
3309
3310
3311
	if (argv[3][0] == '\0') {
	    wmPtr->masterPtr = NULL;
	} else {
	    masterPtr = (TkWindow*) Tk_NameToWindow(interp, argv[3], tkwin);
	    if (masterPtr == NULL) {
		return TCL_ERROR;
	    }
	    if (masterPtr == winPtr) {
		wmPtr->masterPtr = NULL;
	    } else if (masterPtr != wmPtr->masterPtr) {
		Tk_MakeWindowExist((Tk_Window)masterPtr);

		/*
		 * Ensure that the master window is actually a Tk toplevel.
		 */

		while (!(masterPtr->flags & TK_TOP_LEVEL)) {
		    masterPtr = masterPtr->parentPtr;
		}


























		wmPtr->masterPtr = masterPtr;
		masterPtr->wmInfoPtr->numTransients++;

		/*
		 * Bind a visibility event handler to the master window,
		 * to ensure that when it is mapped, the children will
		 * have their state set properly.







<
<
<
<
|
|
|
|

<
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







3287
3288
3289
3290
3291
3292
3293




3294
3295
3296
3297
3298

3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
	if (argv[3][0] == '\0') {
	    wmPtr->masterPtr = NULL;
	} else {
	    masterPtr = (TkWindow*) Tk_NameToWindow(interp, argv[3], tkwin);
	    if (masterPtr == NULL) {
		return TCL_ERROR;
	    }




	    while (!(masterPtr->flags & TK_TOP_LEVEL)) {
	        /*
	         * Ensure that the master window is actually a Tk toplevel.
	         */


	        masterPtr = masterPtr->parentPtr;
	    }
	    Tk_MakeWindowExist((Tk_Window)masterPtr);

	    if (wmPtr->iconFor != NULL) {
	        Tcl_AppendResult(interp, "can't make \"", argv[2],
	    	        "\" a transient: it is an icon for ",
	                Tk_PathName(wmPtr->iconFor),
	                (char *) NULL);
	        return TCL_ERROR;
	    }

	    wmPtr2 = masterPtr->wmInfoPtr;

	    if (wmPtr2->iconFor != NULL) {
	        Tcl_AppendResult(interp, "can't make \"", argv[3],
	                "\" a master: it is an icon for ",
	                Tk_PathName(wmPtr2->iconFor),
	                (char *) NULL);
	        return TCL_ERROR;
	    }

	    if (masterPtr == winPtr) {
	        Tcl_AppendResult(interp, "can't make \"", Tk_PathName(winPtr),
	                "\" its own master",
	                (char *) NULL);
	        return TCL_ERROR;
	    } else if (masterPtr != wmPtr->masterPtr) {
		wmPtr->masterPtr = masterPtr;
		masterPtr->wmInfoPtr->numTransients++;

		/*
		 * Bind a visibility event handler to the master window,
		 * to ensure that when it is mapped, the children will
		 * have their state set properly.
4331
4332
4333
4334
4335
4336
4337
4338

4339
4340
4341
4342
4343
4344
4345
    Tcl_HashTable *table;		/* Table to maps HWND to TkWindow */
{
    TkWindow *childPtr;
    Tcl_HashEntry *hPtr;
    HWND wrapper;
    int newEntry;

    if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) {

        wrapper = TkWinGetWrapperWindow((Tk_Window) winPtr);

        /*fprintf(stderr, "Mapped HWND %d to %x (%s)\n", wrapper,
	  winPtr, winPtr->pathName);*/

        hPtr = Tcl_CreateHashEntry(table,
            (char *) wrapper, &newEntry);







|
>







4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
    Tcl_HashTable *table;		/* Table to maps HWND to TkWindow */
{
    TkWindow *childPtr;
    Tcl_HashEntry *hPtr;
    HWND wrapper;
    int newEntry;

    if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr) &&
            !Tk_IsEmbedded(winPtr)) {
        wrapper = TkWinGetWrapperWindow((Tk_Window) winPtr);

        /*fprintf(stderr, "Mapped HWND %d to %x (%s)\n", wrapper,
	  winPtr, winPtr->pathName);*/

        hPtr = Tcl_CreateHashEntry(table,
            (char *) wrapper, &newEntry);
Changes to win/tkWinX.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16











17
18
19
20
21
22
23
/* 
 * tkWinX.c --
 *
 *	This file contains Windows emulation procedures for X routines. 
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinX.c,v 1.15.2.1 2002/02/05 02:25:18 wolfsuit Exp $
 */

#include "tkWinInt.h"











#include <commctrl.h>

/*
 * The zmouse.h file includes the definition for WM_MOUSEWHEEL.
 */

#include <zmouse.h>












|



>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* 
 * tkWinX.c --
 *
 *	This file contains Windows emulation procedures for X routines. 
 *
 * Copyright (c) 1995-1996 Sun Microsystems, Inc.
 * Copyright (c) 1994 Software Research Associates, Inc.
 * Copyright (c) 1998-2000 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tkWinX.c,v 1.15.2.2 2002/06/10 05:38:28 wolfsuit Exp $
 */

#include "tkWinInt.h"

/*
 * The w32api 1.1 package (included in Mingw 1.1) does not define _WIN32_IE
 * by default. Define it here to gain access to the InitCommonControlsEx API
 * in commctrl.h.
 */

#ifndef _WIN32_IE
#define _WIN32_IE 0x0300
#endif

#include <commctrl.h>

/*
 * The zmouse.h file includes the definition for WM_MOUSEWHEEL.
 */

#include <zmouse.h>
69
70
71
72
73
74
75

76
77
78
79
80
81
82
static int childClassInitialized;   /* Registered child class? */
static WNDCLASS childClass;	    /* Window class for child windows. */
static int tkPlatformId = 0;	    /* version of Windows platform */
static Tcl_Encoding keyInputEncoding = NULL;/* The current character
				     * encoding for keyboard input */
static int keyInputCharset = -1;    /* The Win32 CHARSET for the keyboard
				     * encoding */


/*
 * Thread local storage.  Notice that now each thread must have its
 * own TkDisplay structure, since this structure contains most of
 * the thread-specific date for threads.
 */
typedef struct ThreadSpecificData {







>







80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
static int childClassInitialized;   /* Registered child class? */
static WNDCLASS childClass;	    /* Window class for child windows. */
static int tkPlatformId = 0;	    /* version of Windows platform */
static Tcl_Encoding keyInputEncoding = NULL;/* The current character
				     * encoding for keyboard input */
static int keyInputCharset = -1;    /* The Win32 CHARSET for the keyboard
				     * encoding */
static Tcl_Encoding unicodeEncoding = NULL; /* unicode encoding */

/*
 * Thread local storage.  Notice that now each thread must have its
 * own TkDisplay structure, since this structure contains most of
 * the thread-specific date for threads.
 */
typedef struct ThreadSpecificData {
263
264
265
266
267
268
269





270
271
272
273
274
275
276
     * Clean up our own class.
     */
    
    if (childClassInitialized) {
        childClassInitialized = 0;
        UnregisterClass(TK_WIN_CHILD_CLASS_NAME, hInstance);
    }






    /*
     * And let the window manager clean up its own class(es).
     */
    
    TkWinWmCleanup(hInstance);
}







>
>
>
>
>







275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
     * Clean up our own class.
     */
    
    if (childClassInitialized) {
        childClassInitialized = 0;
        UnregisterClass(TK_WIN_CHILD_CLASS_NAME, hInstance);
    }

    if (unicodeEncoding != NULL) {
	Tcl_FreeEncoding(unicodeEncoding);
	unicodeEncoding = NULL;
    }

    /*
     * And let the window manager clean up its own class(es).
     */
    
    TkWinWmCleanup(hInstance);
}
370
371
372
373
374
375
376


377
378
379
380
381
382
383
	    return tsdPtr->winDisplay;
	} else {
	    return NULL;
	}
    }

    display = (Display *) ckalloc(sizeof(Display));


    display->display_name = (char *) ckalloc(strlen(display_name)+1);
    strcpy(display->display_name, display_name);

    display->cursor_font = 1;
    display->nscreens = 1;
    display->request = 1;
    display->qlen = 0;







>
>







387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
	    return tsdPtr->winDisplay;
	} else {
	    return NULL;
	}
    }

    display = (Display *) ckalloc(sizeof(Display));
    ZeroMemory(display, sizeof(Display));

    display->display_name = (char *) ckalloc(strlen(display_name)+1);
    strcpy(display->display_name, display_name);

    display->cursor_font = 1;
    display->nscreens = 1;
    display->request = 1;
    display->qlen = 0;
466
467
468
469
470
471
472

473
474
475
476
477
478
479

    display->screens		= screen;
    display->nscreens		= 1;
    display->default_screen	= 0;
    screen->cmap = XCreateColormap(display, None, screen->root_visual,
	    AllocNone);
    tsdPtr->winDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay));

    tsdPtr->winDisplay->display = display;
    tsdPtr->updatingClipboard = FALSE;
    return tsdPtr->winDisplay;
}

/*
 *----------------------------------------------------------------------







>







485
486
487
488
489
490
491
492
493
494
495
496
497
498
499

    display->screens		= screen;
    display->nscreens		= 1;
    display->default_screen	= 0;
    screen->cmap = XCreateColormap(display, None, screen->root_visual,
	    AllocNone);
    tsdPtr->winDisplay = (TkDisplay *) ckalloc(sizeof(TkDisplay));
    ZeroMemory(tsdPtr->winDisplay, sizeof(TkDisplay));
    tsdPtr->winDisplay->display = display;
    tsdPtr->updatingClipboard = FALSE;
    return tsdPtr->winDisplay;
}

/*
 *----------------------------------------------------------------------
812
813
814
815
816
817
818









819
820
821
822
823
824
825
826








827
828
829
830
831
832
833
		if (winPtr == NULL) {
		    return;
		}
	    }
	    while (otherWinPtr && !(otherWinPtr->flags & TK_TOP_LEVEL)) {
		otherWinPtr = otherWinPtr->parentPtr;
	    }









	    if (otherWinPtr == winPtr) {
		return;
	    }

	    event.xany.window = winPtr->window;
	    event.type = (message == WM_SETFOCUS) ? FocusIn : FocusOut;
	    event.xfocus.mode = NotifyNormal;
	    event.xfocus.detail = NotifyNonlinear;








	    break;
	}

	case WM_DESTROYCLIPBOARD:
	    if (tsdPtr->updatingClipboard == TRUE) {
		/*
		 * We want to avoid this event if we are the ones that caused







>
>
>
>
>
>
>
>
>








>
>
>
>
>
>
>
>







832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
		if (winPtr == NULL) {
		    return;
		}
	    }
	    while (otherWinPtr && !(otherWinPtr->flags & TK_TOP_LEVEL)) {
		otherWinPtr = otherWinPtr->parentPtr;
	    }

	    /*
	     * Do a catch-all Tk_SetCaretPos here to make sure that the
	     * window receiving focus sets the caret at least once.
	     */
	    if (message == WM_SETFOCUS) {
		Tk_SetCaretPos((Tk_Window) winPtr, 0, 0, 0);
	    }

	    if (otherWinPtr == winPtr) {
		return;
	    }

	    event.xany.window = winPtr->window;
	    event.type = (message == WM_SETFOCUS) ? FocusIn : FocusOut;
	    event.xfocus.mode = NotifyNormal;
	    event.xfocus.detail = NotifyNonlinear;

	    /*
	     * Destroy the caret if we own it.  If we are moving to another Tk
	     * window, it will reclaim and reposition it with Tk_SetCaretPos.
	     */
	    if (message == WM_KILLFOCUS) {
		DestroyCaret();
	    }
	    break;
	}

	case WM_DESTROYCLIPBOARD:
	    if (tsdPtr->updatingClipboard == TRUE) {
		/*
		 * We want to avoid this event if we are the ones that caused
1217
1218
1219
1220
1221
1222
1223

























1224
1225
1226
1227
1228
1229
1230
{
    return keyInputEncoding;
}

/*
 *----------------------------------------------------------------------
 *

























 * HandleIMEComposition --
 *
 *      This function works around a definciency in some versions
 *      of Windows 2000 to make it possible to entry multi-lingual
 *      characters under all versions of Windows 2000.
 *
 *      When an Input Method Editor (IME) is ready to send input







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
{
    return keyInputEncoding;
}

/*
 *----------------------------------------------------------------------
 *
 * TkWinGetUnicodeEncoding --
 *
 *	Returns the cached unicode encoding.
 *
 * Results:
 *	The unicode encoding.
 *
 * Side effects:
 *	None.
 *
 *----------------------------------------------------------------------
 */

Tcl_Encoding
TkWinGetUnicodeEncoding()
{
    if (unicodeEncoding == NULL) {
	unicodeEncoding = Tcl_GetEncoding(NULL, "unicode");
    }
    return unicodeEncoding;
}

/*
 *----------------------------------------------------------------------
 *
 * HandleIMEComposition --
 *
 *      This function works around a definciency in some versions
 *      of Windows 2000 to make it possible to entry multi-lingual
 *      characters under all versions of Windows 2000.
 *
 *      When an Input Method Editor (IME) is ready to send input
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279

1280


1281
1282
1283

1284
























1285
1286
1287
1288
1289
1290
1291
                                         * message */
{
    HIMC hIMC;
    int i, n;
    XEvent event;
    char * buff;
    TkWindow *winPtr;

    if (TkWinGetPlatformId() != VER_PLATFORM_WIN32_NT) {
        /*
         * The ImmGetCompositionStringW function works only on WinNT.
         */

        return 0;
    }

    if ((lParam & GCS_RESULTSTR) == 0) {
        /*
         * Composition is not finished yet.
         */

        return 0;
    }

    hIMC = ImmGetContext(hwnd);
    if (hIMC) {

        n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, NULL, 0);



        if (n > 0) {
            buff = (char*)ckalloc(n);

            n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, buff, n);

























	    /*
	     * Set up the fields pertinent to key event.
             *
             * We set send_event to the special value of -2, so that
             * TkpGetString() in tkWinKey.c knows that trans_chars[]
             * already contains a UNICODE char and there's no need to







|
|
<
<
<
<
<
<











>
|
>
>
|
|
|
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1316
1317
1318
1319
1320
1321
1322
1323
1324






1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
                                         * message */
{
    HIMC hIMC;
    int i, n;
    XEvent event;
    char * buff;
    TkWindow *winPtr;
    Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding();
    BOOL isWinNT = (TkWinGetPlatformId() == VER_PLATFORM_WIN32_NT);







    if ((lParam & GCS_RESULTSTR) == 0) {
        /*
         * Composition is not finished yet.
         */

        return 0;
    }

    hIMC = ImmGetContext(hwnd);
    if (hIMC) {
	if (isWinNT) {
	    n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, NULL, 0);
	} else {
	    n = ImmGetCompositionStringA(hIMC, GCS_RESULTSTR, NULL, 0);
	}

        if ((n > 0) && ((buff = (char *) ckalloc(n)) != NULL)) {
	    if (isWinNT) {
		n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, buff, n);
	    } else {
		Tcl_DString utfString, unicodeString;

		n = ImmGetCompositionStringA(hIMC, GCS_RESULTSTR, buff, n);
		Tcl_DStringInit(&utfString);
		Tcl_ExternalToUtfDString(keyInputEncoding, buff, n,
			&utfString);
		Tcl_UtfToExternalDString(unicodeEncoding,
			Tcl_DStringValue(&utfString), -1, &unicodeString);
		i = Tcl_DStringLength(&unicodeString);
		if (n < i) {
		    /*
		     * Only alloc more space if we need, otherwise just
		     * use what we've created.  Don't realloc as that may
		     * copy data we no longer need.
		     */
		    ckfree((char *) buff);
		    buff = (char *) ckalloc(i);
		}
		n = i;
		memcpy(buff, Tcl_DStringValue(&unicodeString), n);
		Tcl_DStringFree(&utfString);
		Tcl_DStringFree(&unicodeString);
	    }

	    /*
	     * Set up the fields pertinent to key event.
             *
             * We set send_event to the special value of -2, so that
             * TkpGetString() in tkWinKey.c knows that trans_chars[]
             * already contains a UNICODE char and there's no need to
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_FreeXId --
 *
 *	This inteface is not needed under Windows.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	None.
 *







|







1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_FreeXId --
 *
 *	This interface is not needed under Windows.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	None.
 *
1463
1464
1465
1466
1467
1468
1469






























































































TkWinUpdatingClipboard(int mode)
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    tsdPtr->updatingClipboard = mode;
}





































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
TkWinUpdatingClipboard(int mode)
{
    ThreadSpecificData *tsdPtr = (ThreadSpecificData *) 
	    Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));

    tsdPtr->updatingClipboard = mode;
}

/*
 *----------------------------------------------------------------------
 *
 * Tk_SetCaretPos --
 *
 *	This enables correct movement of focus in the MS Magnifier, as well
 *	as allowing us to correctly position the IME Window.  The following
 *	Win32 APIs are used to work with MS caret:
 *
 *	CreateCaret	DestroyCaret	SetCaretPos	GetCaretPos
 *
 *	Only one instance of caret can be active at any time
 *	(e.g. DestroyCaret API does not take any argument such as handle).
 *	Since do-it-right approach requires to track the create/destroy
 *	caret status all the time in a global scope among windows (or
 *	widgets), we just implement this minimal setup to get the job done.
 *
 * Results:
 *	None
 *
 * Side effects:
 *	Sets the global Windows caret position.
 *
 *----------------------------------------------------------------------
 */

void
Tk_SetCaretPos(Tk_Window tkwin, int x, int y, int height)
{
    static HWND caretHWND = NULL;
    static int lastX = -1, lastY = -1;
    Window win;

    /*
     * We adjust to the toplevel to get the coords right, as setting
     * the IME composition window is based on the toplevel hwnd, so
     * ignore height.
     */

    while (!Tk_IsTopLevel(tkwin)) {
	x += Tk_X(tkwin);
	y += Tk_Y(tkwin);
	tkwin = Tk_Parent(tkwin);
	if (tkwin == NULL) {
	    return;
	}
    }

    win = Tk_WindowId(tkwin);
    if (win) {
	HIMC hIMC;
	HWND hwnd = Tk_GetHWND(win);

	if ((hwnd == caretHWND) && (lastX == x) && (lastY == y)) {
	    /*
	     * Prevent processing anything if the values haven't changed.
	     */
	    return;
	}

	lastX = x;
	lastY = y;

	if (hwnd != caretHWND) {
	    DestroyCaret();
	    if (CreateCaret(hwnd, NULL, 0, 0)) {
		caretHWND = hwnd;
	    }
	}

	if (!SetCaretPos(x, y) && CreateCaret(hwnd, NULL, 0, 0)) {
	    caretHWND = hwnd;
	    SetCaretPos(x, y);
	}

	/*
	 * The IME composition window should be updated whenever the caret
	 * position is changed because a clause of the composition string may
	 * be converted to the final characters and the other clauses still
	 * stay on the composition window.  -- yamamoto
	 */
	hIMC = ImmGetContext(hwnd);
	if (hIMC) {
	    COMPOSITIONFORM cform;
	    cform.dwStyle = CFS_POINT;
	    cform.ptCurrentPos.x = x;
	    cform.ptCurrentPos.y = y;
	    ImmSetCompositionWindow(hIMC, &cform);
	    ImmReleaseContext(hwnd, hIMC);
	}

    }
}