Check-in [edb8c1c052]
Not logged in

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

Overview
Comment:Added contact detail form. Added main menu to project detail form. Added prototype code to add/edit/delete buttons for subprojects. Added prototype code to add contact to project.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:edb8c1c052f2e764b86c8d05ba20bfcdc2c7b8a3
User & Date: MCO 2014-07-07 19:26:05
Context
2014-07-09
17:18
Kept a reference to M_Main in the DPR, to prevent errors in the IDE. Added prototype for database-persistence of a class. check-in: ca9a02c2ab user: MCO tags: trunk
2014-07-07
19:26
Added contact detail form. Added main menu to project detail form. Added prototype code to add/edit/delete buttons for subprojects. Added prototype code to add contact to project. check-in: edb8c1c052 user: MCO tags: trunk
18:32
Added form for project properties. check-in: 846e5a063a user: MCO tags: trunk
Changes

Added Olam/src/F_Contact.dfm.





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
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
object frmContact: TfrmContact
  Left = 0
  Top = 0
  Caption = 'Contact'
  ClientHeight = 282
  ClientWidth = 418
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  Icon.Data = {
    000001000800101000000100080068050000860000001818000001000800C806
    0000EE0500002020000001000800A8080000B60C00003030000001000800A80E
    00005E1500001010000001002000680400000624000018180000010020008809
    00006E2800002020000001002000A8100000F63100003030000001002000A825
    00009E4200002800000010000000200000000100080000000000400100000000
    000000000000000000000000000000000000FFFFFF002572E50083CCFF007D6E
    91000615A700016FA3003B43AF00488AB0004FACFC007AA9CF000099CC00184B
    CB005C5CA3004984D700278BC200308EF800202DA800167FAB001134BC0036A6
    FF000087BA006EBEFF005971B0006AAEE000469AD300459AF40096D6FF001D5C
    D700283EB6004A4FA700635890002A82A9003D81A2000924B500151B9F0086B4
    D5005FB7FF002A7FED001C3FBF001A73A3001427AC003B3EA2000D77A60079C3
    FC002249C300007FB1001B63E0002587B20054B5FF001C53D2008CD1FF00081E
    AD001440C500192FAF0072ABDB00226AE000102DB6002B87F5001F3DB6002B3D
    AE003346B000282BA8000A70A6002062DA00123AC0004A8AA9002879EA002D8D
    C5001379A7001645C7000D28B5001329B10091D3FF0064B9FF00494AA6001950
    CF0072BFFC00373DA5002B84F1007BC6FF0088CFFF000B24B1001B56D5002065
    DD005D5EA6001748C900246FE30077C3FF000E2FB8002888C1001C59D5001543
    C50070C0FF001238BE005A5AA3000717A8001228AF001033BA000271A4001A52
    D0001E61DB008ED2FF008AD0FF000E2DB700202EAA00236CE0002066DB0061B7
    FF00194ACC007AC5FF001133BB00007EB2001C62E0002571E40089D0FF001440
    C4002F8EF8000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00001E3C366129114E0D000000000000076838401C326D351360053E00000000
    3B02576A541C644641595223000000003D4F2643726B5B0C7462472A00000000
    5F10753A2F71654C5C5E340000000000002D1427041F3953566F4B0000000000
    00001D692437172248550000000000000000001A256C310E0000000000000000
    00000A5D6E5816090000000000000000000018036667504A0800000000000000
    00005A331B492C3F06000000000000000000284D517319152E00000000000000
    00004263440F700B3000000000000000000000212B4512200000000000000000
    0000000000000000000000000000FFFF0000F00F0000C0030000C0030000C003
    0000C0070000E0070000F00F0000F83F0000F03F0000F01F0000F01F0000F01F
    0000F01F0000F83F0000FFFF0000280000001800000030000000010008000000
    0000A00200000000000000000000000000000000000000000000FFFFFF00196F
    EA007FC8FF0002049C00C8BA9E007076AB00006293003D3DA30042A6FF002E88
    AE0077A6C9001042CA000097CA003F5CCC005897B3001126AD004284EA00077A
    B10067AAEB00C7C2C2008DB2E2005B5BAB009CDAFF00379EC6006788CD00789F
    AB005170BF001E5BD60027279B002174A1004DA6E6002882F30068BAFF001B85
    BD00D7C9B2004752A4003296FD000E10AC0030819A0056B0FF004287AA002F67
    D200578AA4000070A1003A78DD000089BB001033BB004B70D100288FC6002C2C
    AB008ED1FF003697ED001D82AD003793B6001C46C000171FA0002777E800194E
    CD0071ABD6002267DE0059A1E900297DA90073C1FF0065B6F300091BAA00060E
    A3005264BD001E28A3002F35A4000892C3001861DF002D8CF600143CC1004BAD
    FF0037A0FF00338EC6003960D4007EADCD000E79A9004A4AAA003D8BB9000077
    AA000081B40056ABE7002E7DEC003E92EA001E8AB500246FE3000F12A3001049
    D0005C5CA2000D2AB4001F80B70044A0F90086CDFF00008FC20060B7FF000A23
    B0001847C9005F61AE001B56D1001F61DA0094D5FF003D3D9C001542C4000406
    A200068BBD00277DEF0000669800007DAF001C78A10062B5F8006EBEFF00216F
    E8001538BD001C1D9F00097BAA000F2DB80050A8E2004D6DBD0075ABD3002B86
    F300288BC300091FAE0042A4F800226BE20054ACFF001138BF001B52CF000094
    C7008ACEFF0082CCFF0077C2FF000C26B40064B8FF001122AD000718A9000F31
    B8001645C6003193FB00484FA600184BCB005E5EAC001C58D4007CC6FF00007A
    AC002A82F000143FC3006BBBFF00080DA10000709E002F8DF800297CED002777
    EB002675E6000091C400007FB200008DC0000083B6001135BC001543C7001749
    CA001A53D1002570E5002166DC00236EE10092D4FF0090D2FF0084CBFF0081CA
    FF006DBCFF0067B8FF000C28B30063B6FF001338BE00007BAE00194FCF002A84
    F1001E5DD7007DC8FF0075C1FF0073BFFF006EC0FF0054B0FF001338C000184D
    CB001F63DA002779E800133DC200236AE10089CFFF0087CEFF0085CCFF0074C2
    FF001032BA0057AFFF001339BF000095C8001748C9003297FC00194CCB001A51
    CF001A52D0001C57D3001C59D5001D59D4001D5BD7001F60D9002061DB002778
    EA002167DD002677E7002878E800246EE2008DD1FF0087CDFF0085CDFF0084CC
    FF0083CBFF007FC7FF007DC7FF000A1FAE0073C0FF000D28B30067B9FF0054AD
    FF00143DC1001541C4001543C6000080B2001645C7000088BB001749C9001D58
    D400246EE3000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000068D454438741D685B0000
    00000000000000000000004373E9EAB3CC81C98BAFE004595000000000000000
    00000EE7CF3CBBB390A38EA1492F42AD896A00000000000000004DA4EBA6BED3
    D0CECAA269C58AE0DE26000000000000000030BCD5399BD63C66CC3AE7BDC35C
    6232000000000000000019D2B29399D458A51CCBC794A076418F000000000000
    0000009A98487A6C727ED1658EE4802F960000000000000000000011C825202A
    78375ACDBAE5E37C160000000000000000000000558C02142305240CB1638608
    000000000000000000000000002D4715133D0B10B98864000000000000000000
    0000000000005609B8284A4B1B000000000000000000000000000000003BC495
    21E1AE617D000000000000000000000000000000005EC23FB53FABAC7F790000
    00000000000000000000000000E291DCAAB48571E15400000000000000000000
    000000004E87DBBF338303B5DF340F0000000000000000000000000051B7C0A7
    17A8C1DD1F1275000000000000000000000000001E70D83367D75F772C6EE600
    0000000000000000000000003E4CC0DA5FA95F31E89E9F000000000000000000
    00000000290740D9A984B692609C6B000000000000000000000000001A976D5D
    7B22B09E82C618000000000000000000000000000027529D532E60820D460000
    00000000000000000000000000002B6F4F350A57360000000000000000000000
    00000000000000000000000000000000000000000000FFFFFF00FE00FF00F800
    1F00F0000F00F0000F00F0000F00F0000F00F8001F00F8001F00FC003F00FE00
    7F00FF01FF00FE01FF00FE00FF00FE00FF00FC007F00FC007F00FC007F00FC00
    7F00FC007F00FC007F00FE00FF00FF01FF00FFFFFF0028000000200000004000
    0000010008000000000080040000000000000000000000000000000000000000
    0000FFFFFF002573E6009E9997000000970084CEFF00005D8E005F68AC002634
    B7006DACC20042A9FF000087BA003B93B500B3B5B300528BE5001750D1007586
    C1001A77A20065B8FF00091EAC004674CC003F49A90046A9CE00298DFA002121
    9800BDAF97000733C100548CA80088A5BF004461B6003197D0001B86BC000071
    A30067ACDC006B99B0003B81A20033339C009BD9FF000099CC0052A9EA007878
    AE00688ED3003E95E2000F109C002560D6005252AC002FA0FF001541C40077A4
    D1005668BD005083D20075C2FF004276DE00127AC6002828AA003939AD00132F
    B5002A8BC3002B81EF005E9FB9001A64E2001818A80057AFFF00077AAF003991
    F900278AB30083AECA006F6FA6005D76B1002181AA004A6FBD0076A1B200040C
    A3004D90B30047A3EF003F8BAB004E4EA0000090C30090D3FF003079E6009492
    99006BA3BA0000689B001921A1000C26B4001236BE00308AF100168FB800236B
    E00014709C003B93CE001E7EB400B6AD9F002831A4001D59D400399EFD004EAB
    FF000080B3001749CA003D70CD007EC7FF005595B20016169A006FB0D9003195
    FC001A5EDB00086DA2006EBDFF000717A7002D92CA003A99F6000077A900287A
    EA0002059D005FB4FF006ABAF80082A9D0001934B6002064DC0000649500388E
    B000308FF8001377A4002B9AFF000067A2004346AE00206EE60042A2FF004F8D
    AD003D3DA900041AAE001031BB0011169E00007BAE00286DDE00143DC100339A
    FF00B7AD99008ACFFF002984F3001A4FCD001F5FD900558FAD0096D7FF001882
    B9004E4EAB001B54D0000094C700008BBD000511A4000D2BB60053ABE5000B21
    B0006796AE002D88F40083CAFF001637BB00379AFA001645C700246FE30070C0
    FF00006B9F0034A0FF003BA2FF0000019C00277FF10079C4FF0069BBFF000084
    B70005059A000174A6002C84F0002067DF00619DB7000819AA001960DE001D5C
    D600297FED002778E9008DD1FF0002089F0062B6FF005BB2FF000F2FB80040A5
    FF00007EB0001549CD002D8DF8001035BC0034349F001239C000184BCB001A51
    CF0094D4FF0087CDFF0080CAFF007BC6FF000716AA000B24B20051ABFF006AAC
    DB000092C6002062DB0037A0FF001846C9001C56D200246DE100006193000096
    C900008EC1000089BC0003039C002929AC00143FC3001440C6001643C5003394
    FD003093FB002F91F900194DCD002A83F1001C57D5001E5DD7002675E7002265
    DD002268DE0000009A0084CBFF0081C8FF00040EA20077C3FF006FBEFF006BBD
    FF0067B9FF000C26B2000D28B40060B5FF000E2DB7005AB0FF001239BE00006C
    9D000078AB00007AAC000082B4001747C900194FCF002E8AF5001883BB002A8C
    C5008CCFFF0087CFFF0089CDFF0082CBFF007FC8FF0072C0FF0063B8FF000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000007155D53842B6618244C43000000000000000000000000
    00000000000031758387CCDB8C8CBF9EBEED1395E23D91000000000000000000
    00000000109C55CACA8DDEDD92F5BFF4D787BEBE71EA95A43600000000000000
    00000000D65EBEE176CA8DDE5ECDC0BF9E2FBEEF04EDC613E5D4000000000000
    00000000BFCEE0CE58E1E1768D5ECDC0629ED5BEB796C6139537000000000000
    000000008C020202029FCEE1768D5E92DBF42FBEBCEDEA98E52D000000000000
    000000002C70707070B2DF9F5876DE5EC0629E8755B7EBC6B428000000000000
    0000000034B23A3A3AB170029FE1CAB092DB9ED5EF8396EAA900000000000000
    0000000029029A9A9AABB170DFCE76DECD8C622FBE83B76C8100000000000000
    00000000009F79DA79F6DC7EAF69ACCADDC0622FBEBCB7D30000000000000000
    00000000000EAB8868BB3C46441D1A0FB0C0622F87BE482D0000000000000000
    0000000000004F79D98B63195C890338BA92629E2FAEBD000000000000000000
    000000000000004F3AA5140D74301C5082C0DB87C57D00000000000000000000
    000000000000000032E1177BCBA3A22E86545408000000000000000000000000
    0000000000000000006E60FFB5EC72B60A560000000000000000000000000000
    000000000000000027C7A7A7E912FFECECB86700000000000000000000000000
    00000000000000005FA06BE7A0E76BE912729D00000000000000000000000000
    00000000000000213E33E6A6A6E633E7A7127F42000000000000000000000000
    000000000000004AE7C4FDE4FCE4C433E7A760C8000000000000000000000000
    000000000000004064FDC28AF9FBE3A6FEE8EE2A650000000000000000000000
    00000000000000D8E3E38AC18F4EC2FDA6E6B5F0AA0000000000000000000000
    0000000000001B35C29BB38F25C1C2C36490F76F854700000000000000000000
    000000000000807CFA9B8A4EC1B3C29B9720F2F361AD00000000000000000000
    0000000000008E0673C3E3C28AC2E4FC6D6194D1A83B00000000000000000000
    00000000000099775B056464FDFDC4E46F94D1D10B5100000000000000000000
    0000000000000052CF5A05C3C3FDFC1EB94D4DC9A80000000000000000000000
    0000000000000059AA776A39F81F3FF24D4D9393570000000000000000000000
    0000000000000022A1B9F26F85F3D24D4DD026C9090000000000000000000000
    000000000000000049A1F1F3A80B0B944D4DD116000000000000000000000000
    0000000000000000000023117A454B78410C0000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FFFFFFE003FFFF00007FFC00001FFC00000FFC00000FFC00000FFC00000FFC00
    001FFC00001FFE00003FFE00003FFF00007FFF8000FFFFC003FFFFE00FFFFFC0
    07FFFFC007FFFF8003FFFF8003FFFF8001FFFF8001FFFF0000FFFF0000FFFF00
    00FFFF0000FFFF8001FFFF8001FFFF8001FFFFC003FFFFF00FFFFFFFFFFF2800
    000030000000600000000100080000000000800A000000000000000000000000
    00000000000000000000FFFFFF002573E500A6A39A000000970084CEFF00005D
    8E006264A9002842B5006DACC20048A6FF000287BA003B9BC000BFBFBE00528B
    E5001750D1006F89C2001974A40065B8FF00091EAC004F76CE003A49A80049A3
    D600298DFA0027279C00BDAF97000733C1004D89A60095A5BF00335BC2003197
    D0001B88C0000070A30063AAE0007398AE003780A50030309E009BDAFF000098
    CB0054A3E9007579AA00668FD0003E95E2000D0D99002F65CE005656A4002FA0
    FF001541C4007AA4CE005668BD004C87DA0075C2FF003C7BDD00127AC6002828
    AA002F42B600132FB5002A8BC3002A81EF004FA0BD001A64E2001818A20056AF
    FF000B79B3003991F9002795BA009AB1C8006B6DA9006576AB002B7BA4004A6F
    BD0075A0B100040CA2005192B1004BA0EC004489A8005555A2000090C30091D3
    FF003079E6008A8E9F006BA3BA0001689B001D1DA1000C27B3001137BE00308A
    F100168FB800226BE000126F9C004096C7001E7EB400ABA9A5002831A4001D59
    D4003C9CFD004DA8FE000080B3001749CA003A6BCE007EC7FF005898B3001616
    9A006FB0D9003295FB001A60DC000B6B9C006EBDFF000716A700298ED1003F99
    F3000076A900287AEB0001059C005EB3FE0068B7ED0082A9D0001934B6002165
    DC0000629600388EB0002F8FF8001175A6002C98FF000067A2003F4AB000206E
    E60045A4FF004A87A5003F3FA400041AAE001032BB0011169E00007CAE002D6F
    DB00143DC200339BFE00B7AD99008BCFFF002984F3001C4FCA001F60D9005691
    AB0097D8FF001882B9004E4EA7001B54D1000095C800008BBE000511A4000E2B
    B50052A6E2000A21B0006797AB002D89F30083CAFF001637BB003699FB001645
    C700246FE30070BFFF00006C9F0034A0FF003DA0FF0000019C00277FF10079C4
    FF006ABBFF000084B700060699000074A7002C85F1001F67DF00659DB300081A
    AA001C62DC001E5CD600297EED002778E9008DD1FF0002089E0063B6FF005BB2
    FF000F2FB80040A5FF00007EB0001549CD002E8DF7001135BC003636A200123A
    C000184CCB001A51CF0093D4FF0087CDFF0080C9FF007CC6FF000716AA000B24
    B10052ACFE006AACDB000093C6002062DA0037A0FF001746C8001C56D200246D
    E200006193000097CA00008EC100038ABC0001039A002929AC00143FC3001241
    C6001643C5003394FD003193FB002F90F900194DCD002B83F1001C57D5001E5D
    D7002776E7002166DD002268DE0000009A0085CCFF0081C9FF00050EA10077C3
    FF0070BEFF006CBCFF0067B9FF000D26B1000D28B40061B5FF000E2DB7005AB1
    FF001238BD00006A9D000078AB00007AAD000082B5001748C8001A4FCF002E8B
    F5001883BB00208EC3008CD0FF0087CFFF008BC8F80082CBFF007FC8FF0073C0
    FF0063B7FF000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000002807072D4C2D0743000000000000000000000000000000
    0000000000000000000000000000000000000000077DEA6C1398EAEAEA9813AE
    6C48D3A953810700000000000000000000000000000000000000000000000000
    002837EABCD7F5CD9292F5DB62F49ED7D587EF83EAAEB4043D91000000000000
    0000000000000000000000000000000008B7BFDEDEB05E5ECD92C0F5DB62CCD7
    D587BEBC83B76C9513E5045307000000000000000000000000000000000010BC
    F4BCCA8D8D8DDEB05E5ECD92C0DB62F4D7D587EFBC83956CEA981395712B2800
    0000000000000000000000000000EF8D5EBCAC7676CACA8D8DDE5ECD92C0DB62
    9E2FD5BE55BCB413EB9813AE6CB42D000000000000000000000000000000D5E1
    CA9258E1E1E1ACE0CACADEB05E92C0DB629E2F87BE55C696EB9813AE6CB40700
    0000000000000000000000000000D758CE9F9F9F9FCE5858E176CA8DB05E928C
    BFF49ED5BE55BCB796EA9813AE71280000000000000000000000000000008CCE
    9F02020202029F9F58E1E0CA8DB0CD928CBF9E2F87BEBCB796549813AE040000
    000000000000000000000000000063CEDFDFB2B2B2B2DF029FCEE1E0CADE5ECD
    C0DBF49ED5BE5583EDEBC613AE2B000000000000000000000000000000001458
    707070B1B17070B2029FCEE1768DB05E928C629E2F87EF83B796C69895BD0000
    000000000000000000000000000010E1B13A3A3A3A3AB170B2029F58ACCADE5E
    928CBFF42F87BEBCB796EA98B4430000000000000000000000000000000000CA
    DCABAB9AABAB3AB170DF029FE1768DB0CDC0DBF4D7D5BEBCB796EB98A9000000
    000000000000000000000000000000863A9AF6F6F69AAB3AB1B2DF9F58E0CAB0
    CD92DB629ED5BE558396EBE59100000000000000000000000000000000000029
    DFBB79DA79F69AAB3A0258AC5858CADE5E92DB629E2FBE5583B7C6A900000000
    0000000000000000000000000000000086BBD9686879F6B1692C631D2FD6B08D
    5E928C629E2FBE5583B771070000000000000000000000000000000000000000
    297068686879F6AC1C0D0D5C5C4483BFB0CD8C629E2FBE55BCE5BD0000000000
    0000000000000000000000000000000000343AD979BBAB860D0D0D0D0D5C50EB
    BF92DB629ED687BE951800000000000000000000000000000000000000000000
    000034B1F6F6B1340D0D0D0D0D5C032898C0F5629E2FEFE52400000000000000
    000000000000000000000000000000000000003202B13AE1010D0D0D421C5C03
    15838CBF2FEAE507000000000000000000000000000000000000000000000000
    000000003063E1AFFB607B88887B7B4A22AEBE96AE7D00000000000000000000
    0000000000000000000000000000000000000000000010BB880AC7C7C760607F
    8802154300000000000000000000000000000000000000000000000000000000
    0000000000006E0AEE3E3E3E3EC7C7C760A34A00000000000000000000000000
    0000000000000000000000000000000000000000004A0A72B6B6B6EEEE3E3EC7
    C7C7A39700000000000000000000000000000000000000000000000000000000
    0000000030A3B5ECECECEC7272B6EE3E3EC7C788000000000000000000000000
    00000000000000000000000000000000000000006EB6E91212121212B5EC72B6
    EE3E3E0A4A000000000000000000000000000000000000000000000000000000
    000000005FE8A7A7A7A7A7A7E912B5EC72EE3E3E880000000000000000000000
    0000000000000000000000000000000000000021C7E76BE7E7E76B6BE8A7E912
    EC72EE3EA3300000000000000000000000000000000000000000000000000000
    0000004AFFFEFE333333FEFEA06BA7A712EC72B67F2100000000000000000000
    000000000000000000000000000000000000009DFEE6E6A6A6A6A6E633FEE7E8
    A712ECB660270000000000000000000000000000000000000000000000000000
    00000088C4C4C464646464C4A633FEE7E8E9FFECC76E23490000000000000000
    000000000000000000000000000000000000009DE4FDE49B9B9BE4FD64A633FE
    6BA712B53E3F6F7A000000000000000000000000000000000000000000000000
    00002368E39BE3C2C2FBC29BC364A633A06BA772C720F3AA0000000000000000
    000000000000000000000000000000000000596D8AC28AF9B3F98AC2E3E4C4E6
    FEE73F201FF2A8F2220000000000000000000000000000000000000000000000
    00006A3FB38AB34EC14EB3F9C29B64A6E697AAA8F1F30BB96500000000000000
    00000000000000000000000000000000000059779BB34EC18F8F4EB3C29BFDA6
    A66DB90BD2D2D2F3650000000000000000000000000000000000000000000000
    0000117716C1C18F258FC1B3FBE3FDA6C43F0B94949494A86500000000000000
    00000000000000000000000000000000000045F06A4EC18F8F8FC1B3C2E3FDC4
    73F1949494D1D1A8AD0000000000000000000000000000000000000000000000
    000080A1525A8FC1C1C14E8AC29B64E4F8A8D1D14D4D4D0B0000000000000000
    0000000000000000000000000000000000002252AA775A8FC14EB38AC2E3E316
    F2D14D4D4D4D4D0B000000000000000000000000000000000000000000000000
    0000006AAA6F527A1673732197161FF2944D4DC9C9934D0C0000000000000000
    000000000000000000000000000000000000001BA16FF26F202020AAF1B9A8D1
    D14DC99393D09400000000000000000000000000000000000000000000000000
    000000005920F285B961F3A80BD294D14D4D93D0264D0C000000000000000000
    000000000000000000000000000000000000000000592085B961A8A80B9494D1
    4DC993D04D410000000000000000000000000000000000000000000000000000
    000000000000235220F285B9B9B985610B9494D23B0000000000000000000000
    000000000000000000000000000000000000000000000000991B4B4B8E220000
    99AD470000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000FFFFFFFFFFFF0000FFFFE01FFFFF0000FFFC00007FFF0000FFE0
    00000FFF0000FFC0000001FF0000FF000000007F0000FF000000007F0000FF00
    0000007F0000FF000000007F0000FF00000000FF0000FF00000000FF0000FF00
    000000FF0000FF00000000FF0000FF80000001FF0000FF80000001FF0000FF80
    000003FF0000FFC0000003FF0000FFC0000007FF0000FFE000000FFF0000FFF0
    00001FFF0000FFF800003FFF0000FFFC0000FFFF0000FFFF0003FFFF0000FFFF
    0007FFFF0000FFFE0003FFFF0000FFFC0003FFFF0000FFFC0001FFFF0000FFFC
    0001FFFF0000FFF80000FFFF0000FFF80000FFFF0000FFF80000FFFF0000FFF8
    00003FFF0000FFF800003FFF0000FFF000003FFF0000FFF000001FFF0000FFF0
    00001FFF0000FFF000001FFF0000FFF000001FFF0000FFF000001FFF0000FFF0
    00003FFF0000FFF000003FFF0000FFF800003FFF0000FFF800007FFF0000FFFC
    00007FFF0000FFFE0000FFFF0000FFFF0001FFFF0000FFFFC0C7FFFF0000FFFF
    FFFFFFFF00002800000010000000200000000100200000000000400400000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000009E42040C
    A3960B21AFCC0D25B1EA0C23B1F40A1FAEEE0817A9D8040DA2B1000098780000
    A12C00000000000000000000000000000000000000000713B2AE0F2EB9FE226A
    E0FF2062DAFF1D5CD7FF1C53D2FF194ACCFF1440C5FF1134BCFF0717A8FF0716
    A9FE0105A8C4000000000000000000000000000000000F31B9E42572E5FF246F
    E3FF236CE0FF2065DDFF1D5CD7FF1A52D0FF1645C7FF123AC0FF0E2FB8FF0B24
    B1FF030A9FE3000000000000000000000000000000000D26B3C12B84F1FF2A7F
    EDFF2879EAFF2571E4FF2066DBFF1C59D5FF184BCBFF1440C4FF1033BAFF0D28
    B5FF01059DA8000000000000000000000000000000000000977C308EF8FF2F8E
    F8FF2B87F5FF1B63E0FF1C62E0FF1E61DBFF1950CFFF1543C5FF1238BEFF091F
    AFFE0000A2400000000000000000000000000000000000009A131440C7E736A6
    FFFF1C3FBFFF7D6E91FF635890FF102DB6FF1B56D5FF1748C9FF1133BBFF0103
    A1940000000000000000000000000000000000000000000000000000A92D0D28
    B9D3202EAAFF86B4D5FF72ABDBFF5971B0FF0924B5FF0B22B3F100039F770000
    FF01000000000000000000000000000000000000000000000000000000002A9B
    FF0D3B99FDE75FB7FFFF61B7FFFF54B5FFFF2776E7BD0000910C000000000000
    00000000000000000000000000000000000000000000000000000000000034A4
    FF6B70C0FFFF7AC5FFFF77C3FFFF6EBEFFFF4FAEFFFB36B1FF16000000000000
    00000000000000000000000000000000000000000000000000000000000044B0
    FFA183CCFFFF8ED2FFFF8AD0FFFF7BC6FFFF64B9FFFF0574B498000000000000
    0000000000000000000000000000000000000000000000000000000000001885
    C5E38CD1FFFF96D6FFFF91D3FFFF79C3FCFF0A70A6FF0070A4FD007CAC0C0000
    0000000000000000000000000000000000000000000000000000000000000069
    A2D972BFFCFF88CFFFFF89D0FFFF469AD3FF0087BAFF0080B3FE0067A70E0000
    0000000000000000000000000000000000000000000000000000000000000071
    A7930271A4FF2D8DC5FF278BC2FF007EB2FF0099CCFF007DB4C9000000000000
    0000000000000000000000000000000000000000000000000000000000000061
    9D0E006A9DA50073A6EC0074A8E30079ACDF0076A9C10068A127000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000FFFF0000F00F0000C0030000C0030000C003
    0000C0070000E0070000F00F0000F83F0000F03F0000F01F0000F01F0000F01F
    0000F01F0000F83F0000FFFF0000280000001800000030000000010020000000
    0000600900000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000001CBB120816A75E0410A298050DA2BE030F
    A3D5020BA0DE02039ED7000098C5000094A6000097780000983B000087040000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000002FDB0D0F2FCA931035BFF61749C9FF1D58D4FF1E5DD7FF1C57
    D3FF1B52CFFF194CCBFF1645C6FF1338BEFF0D28B3FF02049CFF0205A4EA0000
    AA920000B8270000000000000000000000000000000000000000000000000000
    000000000000153EDAB81645C7FF1D5BD7FF2267DEFF1F63DAFF1E5DD7FF1C58
    D4FF1A53D1FF184BCBFF1543C7FF143CC1FF1033BBFF060EA3FF0C28B3FF0718
    A9FF0003A3F90000A30400000000000000000000000000000000000000000000
    000000000000184BE1C52570E5FF246EE3FF236EE1FF236AE1FF2167DDFF1F60
    D9FF1D59D4FF1A51CFFF1749CAFF1542C4FF1339BFFF0F31B8FF0D28B3FF0A1F
    AEFF0103ADEA0000000000000000000000000000000000000000000000000000
    0000000000001B53E5AB2779E8FF2878E8FF2777E8FF2675E6FF246EE2FF2267
    DEFF1F61DAFF1C57D3FF194ECDFF1645C7FF133DC2FF1032BAFF0D2AB4FF0A23
    B0FF0000ACBE0000000000000000000000000000000000000000000000000000
    0000000000001F62EF7E2778EAFF2A84F1FF2A82F0FF297CEDFF2677E7FF246F
    E3FF2166DCFF1E5BD6FF1A52D0FF1748C9FF143FC3FF1135BCFF0F2DB8FF091B
    AAFF0000AA760000000000000000000000000000000000000000000000000000
    0000000000002672FF382878EDFE2F8DF8FF2D8CF6FF2B86F3FF277DEFFF216F
    E8FF226BE2FF2061DBFF1B56D1FF184BCBFF1541C4FF1138BFFF1033BBFF0308
    A3F50000B4180000000000000000000000000000000000000000000000000000
    00000000000000000000277AFCCA3297FCFF3296FDFF2882F3FF2F67D2FF4D6D
    BDFF1C46C0FF1049D0FF1C59D5FF184DCBFF1543C6FF143DC1FF091FAEFF0000
    A97A000000000000000000000000000000000000000000000000000000000000
    000000000000000000002A8FFF32297CF1F43193FBFF196FEAFFC7C2C2FFD7C9
    B2FFC8BA9EFF4752A4FF1042CAFF194FCFFF1847C9FF0C26B4FF00009FA50000
    9702000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000002D89FF37266FE7D91861DFFF8DB2E2FF67AA
    EBFF59A1E9FF77A6C9FF1126ADFF1338C0FF091BAFF10205B074000096020000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000001A9FFF092B8FF7D842A6FFFF54B0
    FFFF56B0FFFF4BADFFFF37A0FFFF1749CC9B0000A01000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000034A8FF8057AFFFFF6BBBFFFF68BA
    FFFF67B9FFFF63B6FFFF60B7FFFF3AA4FFEC41C8FF1300000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000020C3FF083EA0FFF074C2FFFF73C1FFFF75C1
    FFFF73C1FFFF6DBCFFFF67B8FFFF54ACFFFF33A9FF7600000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000034ACFF3F54ADFFFF7CC6FFFF7FC7FFFF81CA
    FFFF7DC8FFFF77C2FFFF6EBEFFFF67B9FFFF35ABFFB700000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000033ACFF6364B8FFFF83CBFFFF89CFFFFF8ED1
    FFFF8ACEFFFF7FC8FFFF75C1FFFF73C0FFFF2C96F5EA0080B97F000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000027AC1A76EC0FFFF87CEFFFF92D4FFFF9CDA
    FFFF90D2FFFF85CCFFFF7DC7FFFF4DA6E6FF077AB1FF007AACF10061D1030000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000068A0CE62B5F8FF87CDFFFF8ED1FFFF94D5
    FFFF8DD1FFFF86CDFFFF50A8E2FF0070A1FF007DAFFF0080B2FF008EC11B0000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000006FA9C3338EC6FF87CEFFFF84CCFFFF86CD
    FFFF84CBFFFF86CDFFFF288FC6FF0088BBFF008DC0FF0083B6FF0091CC1E0000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000071AA9E006293FF65B6F3FF85CDFFFF84CB
    FFFF82CCFFFF73BFFFFF007AACFF008FC2FF0091C4FF008BC0F5009BCE060000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000007DA55000709EFF006698FF1F80B7FF288B
    C3FF1B85BDFF007BAEFF008DC0FF0094C7FF0095C8FF0098D3AE000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000FF01007194B80077AAFF007FB2FF0081
    B4FF0089BBFF008FC2FF0094C7FF0097CAFF0092C6F200A6E82B000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000005D970900679B80006FA1D50076
    AAEA007AAED4007CB0BB0084B8D30088BBAE009AD53000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000FFFFFF00FE00FF00F800
    1F00F0000F00F0000F00F0000F00F0000F00F8001F00F8001F00FC003F00FE00
    7F00FF01FF00FE01FF00FE00FF00FE00FF00FC007F00FC007F00FC007F00FC00
    7F00FC007F00FC007F00FE00FF00FF01FF00FFFFFF0028000000200000004000
    0000010020000000000080100000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000A4050822B23E081AAA790614A8A70510A3C9030CA1DD03089EE80002
    9BE9000098DF000095CE000096B40000958D0000995D0000AB23000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000B2FE1190D2F
    CA8C0D2AB8EA1031BBFF133CC1FF1846C9FF194DCDFF1A50CDFF1A4FCDFF184B
    CCFF1644C6FF123AC0FF0F2CB7FF091EACFF0511A4FF00009CFE0000A8DC0000
    AA8D0000B8310000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000001340E35D0F32BEF21236
    BEFF2061DAFF2062DBFF205FD9FF1E5CD6FF1C57D5FF1B54D0FF194FCFFF184C
    CBFF1647C9FF1643C5FF143DC1FF1239C0FF1238BFFF02059DFF0C25B2FF0510
    A4FF01029EFE0000AAC40000BC49000000000000000000000000000000000000
    0000000000000000000000000000000000001745E9281440C8FD1E5AD5FF133A
    C0FF2169DFFF2065DBFF2062DAFF1F60D9FF1E5DD7FF1D59D4FF1B55D2FF1A50
    CEFF184BCBFF1645C7FF1440C3FF123ABFFF1139BEFF000097FF0E2DB6FF0B24
    B1FF091DADFF040DA2FF0000ADC2000000000000000000000000000000000000
    000000000000000000000000000000000000164ADF27184BCBFF236DE1FF2265
    DDFF246DE1FF236BE0FF2269DFFF2167DDFF2063DBFF1F5FD8FF1D5AD5FF1B55
    D2FF1A50CEFF184ACAFF1644C6FF143EC2FF1138C0FF0E2FB8FF0D2BB6FF0B24
    B1FF091FACFF0511A5FF0000ADAC000000000000000000000000000000000000
    0000000000000000000000000000000000000F55E7121B50CEFE2674E6FF2573
    E6FF2574E5FF2572E5FF2570E4FF246DE2FF2269DFFF2165DCFF1F5FDAFF1D5A
    D5FF1B54D1FF194ECDFF1747C8FF1541C4FF133AC0FF1034BBFF0E2DB7FF0C26
    B2FF0B21B0FF040EA2FF0000AB88000000000000000000000000000000000000
    00000000000000000000000000000000000000008B021C5BDBED287AEAFF2779
    E9FF287AEAFF2879EAFF2777E8FF2675E6FF246FE3FF226BDFFF2064DCFF1E5E
    D7FF1C58D3FF1A51CFFF184ACBFF1644C6FF133DC2FF1136BDFF0F2FB8FF0D28
    B4FF0B24B2FF02089FFF0000AF50000000000000000000000000000000000000
    000000000000000000000000000000000000000000002165F0C12778E9FF2B82
    EFFF2A81EFFF2A80EEFF297FECFF2879EAFF2674E6FF246EE2FF2268DEFF2061
    DAFF1D5BD5FF1B54D1FF194DCCFF1646C8FF143FC3FF1238BEFF0F31BAFF0D2B
    B5FF0B26B2FF00009BF70000AD10000000000000000000000000000000000000
    00000000000000000000000000000000000000000000236FF9802673E6FF2D89
    F4FF2D88F5FF2C87F4FF2B83F0FF297FEEFF277AEAFF2675E7FF246DE1FF2065
    DBFF1E5DD7FF1C56D2FF194FCDFF1748C9FF1541C4FF123ABFFF1032BBFF0F2E
    B8FF0717A7FF0000A9A500000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000247EFF2A246FE6FD3090
    F9FF2F91F9FF308FF8FF2E8AF5FF2A83F1FF206EE6FF1960DEFF1A5EDBFF2067
    DFFF2061DBFF1C57D4FF1A50CEFF1749C9FF1542C5FF133AC0FF1035BCFF0F2F
    B9FF01009DFA0000BE2B00000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000287CFFAF2C84
    F0FF339AFFFF3195FCFF2D8DF8FF1A64E2FF4A6FBDFF5D76B1FF4461B6FF0733
    C1FF1750D1FF1C5CD6FF1A50D0FF1749CAFF1542C5FF143CC1FF1339C0FF040C
    A3FF0000AB870000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000268DFF1F2676
    ECEC2F8FF8FF3093FBFF2984F3FF3D70CDFFBDAF97FFB6AD9FFFB7AD99FF9E99
    97FF132FB5FF1549CDFF1B53D0FF174ACBFF1644C7FF1440C3FF0819AAFF0000
    9AB3000095040000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000308E
    FF3A2676ECEC2B80EFFF277FF1FF4674CCFFB3B5B3FF82A9D0FF77A4D1FF88A5
    BFFF949299FF041AAEFF1951D0FF194ECDFF143CC1FF0817ACFE0308AF9F0000
    D506000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00002589FF1F246FE5AD2169E0FC298DFAFF2B9AFFFF37A0FFFF3BA2FFFF34A0
    FFFF2FA0FFFF286DDEFF0C26B4FF0C26B6FE0819BAD00316CB4E000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000038A9FF1F3099FFE84EABFFFF63B7FFFF61B6FFFF60B6FFFF5EB4
    FFFF5BB2FFFF42A9FFFF2B8AF7F20D24C33F0000000100000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000033A8FFBF51ABFFFF6ABBFFFF68BAFFFF67B9FFFF66B8FFFF63B8
    FFFF60B5FFFF5FB5FFFF40A5FFFF39B2FF890000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000039BBFF3F3AA0FFFE70BFFFFF6EBDFFFF6FBEFFFF70C0FFFF70BEFFFF6DBC
    FFFF67B9FFFF64B7FFFF5FB3FFFF339BFFF42EB3FF1300000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000036ADFF9557AFFFFF75C1FFFF77C2FFFF78C4FFFF79C4FFFF77C3FFFF75C1
    FFFF6EBEFFFF68BBFFFF65B8FFFF42A2FFFF38AFFF5B00000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000033A3FFD26EBEFFFF7BC6FFFF7FC7FFFF81C9FFFF82CBFFFF81C8FFFF7BC7
    FFFF75C2FFFF6FBDFFFF69BAFFFF4EAAFFFF35ABFF8F00000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000FF
    FF013391FFF07DC7FFFF7FC7FFFF86CDFFFF8BD0FFFF8CCFFFFF89CDFFFF83CB
    FFFF7AC5FFFF72C0FFFF6BBDFFFF5AB0FFFF2490F1CD007FB882000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000869
    BB1A3295FFFC83CBFFFF83CBFFFF8BD0FFFF94D4FFFF96D7FFFF8FD2FFFF86CC
    FFFF7FC7FFFF78C4FFFF77C3FFFF62B6FFFF006C9DFF0074A7FD008BD21B0000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000006D
    A484127AC6FF86CEFFFF83CAFFFF8DD1FFFF96D6FFFF9BD9FFFF93D4FFFF87CD
    FFFF80CAFFFF7EC7FFFF1882B9FF1883BBFF0077A9FF007BAEFF0087BD520000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000073
    AC8C0067A2FF87CFFFFF83CAFFFF8ACFFFFF90D3FFFF93D4FFFF8DD1FFFF86CD
    FFFF83C9FFFF53ABE5FF0071A3FF007AACFF0081B4FF0080B3FF0089C5710000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000073
    AC83005D8EFF6ABAF8FF81CAFFFF84CBFFFF88CEFFFF89CFFFFF86CDFFFF81C8
    FFFF82CAFFFF2D92CAFF007FB2FF008BBEFF008DC0FF0083B6FF0090C8750000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000075
    AF69006395FF1E7EB4FF84CEFFFF7EC6FFFF7EC7FFFF7FC8FFFF7EC8FFFF7CC6
    FFFF80C8FFFF0076A8FF008BBDFF008EC1FF008EC1FF0086B9FF0092CD630000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000072
    AA3600689BFF006193FF3B93CEFF84CDFFFF80CAFFFF80C9FFFF7FC8FFFF82CB
    FFFF3197D0FF007EB0FF0091C4FF0090C3FF0092C5FF0087B8FE0097CB320000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000065
    D50300699BE10074A6FF006495FF086DA2FF2A8BC3FF2A8CC5FF1B86BCFF077A
    AFFF007AACFF0090C2FF0091C4FF0093C6FF0094C7FF008CBBDE009AFF020000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000078B563006B9FFF007DB0FF007AACFF0077A9FF007BADFF0082B4FF0089
    BCFF0090C3FF0091C4FF0096C9FF0099CCFF0091C6FF00A9E460000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000079B78F006BA0FE0078ABFF0081B4FF0085B8FF0087BAFF0086
    B9FF008ABDFF0090C3FF0091C4FF0090C4FE00A8E69800000001000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000071AE43006B9DA9006EA1D90072A5E20077AACF0079
    ACA20080B2AD0081B6C50087BAA8009AD44F0000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FFFFFFE003FFFF00007FFC00001FFC00000FFC00000FFC00000FFC00000FFC00
    001FFC00001FFE00003FFE00003FFF00007FFF8000FFFFC003FFFFE00FFFFFC0
    07FFFFC007FFFF8003FFFF8003FFFF8001FFFF8001FFFF0000FFFF0000FFFF00
    00FFFF0000FFFF8001FFFF8001FFFF8001FFFFC003FFFFF00FFFFFFFFFFF2800
    0000300000006000000001002000000000008025000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000BA317040C9F3B020AA15702089E6B02059E790001
    9A83000098830000977C000097700000995D0000984800009B290000AA080000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000822C4200A1B
    B66E071AB4B00717B0E70817A9FE0A1EADFF0B23B0FF0C26B2FF0C26B2FF0C27
    B2FF0B23B0FF091EADFF0819AAFF0614A6FF040CA2FF02049CFE000099FA0000
    A1D50000A1A20000A16C0000A827000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000A8050C2BBF5A0B24BAC50C25B3FC1034
    BCFF1642C5FF194FCEFF1B56D3FF1B54D1FF1B53D0FF1A4FCFFF194DCDFF184A
    CAFF1748C8FF1645C8FF1543C4FF143EC3FF133CC1FF1238BEFF1032BBFF0B27
    B2FF091AAAFF02089EFF000098FE0000A1DC0000A38C0000AC32000000010000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000D32CB3D0D2DB9D20F31BAFE194CCBFF1E5DD6FF1E5C
    D7FF1E5CD6FF1D5AD4FF1C59D3FF1C56D2FF1B54D1FF1A52CFFF194FCEFF194D
    CCFF184ACAFF1746C8FF1543C6FF1440C3FF133CC1FF1239BFFF1136BCFF0F32
    BBFF0F30B9FF0614A6FF0510A3FF091DACFF040DA2FF01029AFE0000A0D30000
    A36B0000A20E0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000001237CE6F1134BCFA1748C9FF1135BBFF2063DAFF1F60DAFF1F5F
    D8FF1F5FD8FF1E5ED7FF1E5CD6FF1D5AD5FF1D58D4FF1C56D2FF1B53D1FF1A50
    CFFF194DCDFF184ACAFF1747C8FF1543C6FF143FC3FF133CC1FF1238BEFF1034
    BBFF1032BBFF0510A3FF0716A7FF0C25B1FF0B20AFFF091CABFF0511A5FF0105
    9CFF000099EA0000AB5200000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00001339DB1E1238BFFD1F5FD8FF1D58D3FF1135BDFF2167DEFF2164DCFF2164
    DCFF2063DBFF2062DAFF1F61D9FF1F5FD8FF1E5DD7FF1D5AD5FF1C57D3FF1B54
    D1FF1A51CFFF194ECDFF184ACAFF1646C8FF1542C5FF143FC3FF133BC0FF1137
    BDFF1134BBFF02089EFF091CACFF0D27B3FF0A21AFFF091DACFF071AAAFF0715
    A7FF02079EFF0000A28400000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000153EC51A143FC4FD2268DEFF1F62D9FF1B53D0FF236AE0FF2269DFFF2269
    DFFF2268DEFF2167DEFF2165DDFF2063DBFF1F61DAFF1E5ED8FF1D5BD6FF1C58
    D4FF1B55D1FF1A51CFFF194DCCFF1749CAFF1645C7FF1541C4FF133DC2FF1239
    BFFF1236BDFF0B25B1FF0E2AB5FF0C28B3FF0B23B0FF091FADFF081AAAFF0817
    A7FF02079EFF0000A37200000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000143CD40E1544C5FA236ADFFF246DE2FF236EE2FF246EE2FF246EE2FF246E
    E2FF246DE2FF236CE1FF226ADFFF2268DEFF2165DCFF2062DAFF1F5FD8FF1E5C
    D6FF1C58D3FF1B54D1FF1A50CEFF184CCCFF1748C9FF1644C6FF1440C3FF133B
    C0FF1137BFFF1033BCFF0F2FB9FF0D2AB5FF0C25B2FF0A21AFFF091CABFF0719
    A9FF01059CFF0000A05300000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000FF02184AC8EE236CE2FF2670E4FF2572E5FF2573E5FF2673E6FF2573
    E5FF2572E5FF2570E4FF246EE2FF236CE1FF2269DFFF2166DDFF2063DBFF1F5F
    D8FF1D5BD6FF1C57D3FF1B53D0FF194FCDFF184ACBFF1646C8FF1542C5FF133D
    C2FF1239BFFF1134BCFF0F30B9FF0E2BB6FF0C27B3FF0B22B0FF091EADFF071B
    AAFF00019AFE0000A52B00000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000001953D9CE246CE1FF2676E8FF2776E8FF2778E9FF2778E9FF2778
    E9FF2777E8FF2675E7FF2573E5FF2470E3FF236DE1FF2269DFFF2166DDFF2062
    DAFF1E5ED7FF1D5AD5FF1C55D2FF1A51CFFF194DCCFF1748C9FF1644C6FF143F
    C3FF133BC0FF1136BDFF1031BAFF0E2DB7FF0D28B4FF0B24B1FF0B1FADFF0818
    A9FF000099EE0000AC0500000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000001D58E0A6226AE0FF297AEAFF287BEBFF297CECFF297DECFF297D
    ECFF287BEBFF2879EAFF2777E8FF2674E6FF2570E4FF236DE1FF2269DFFF2165
    DCFF1F60D9FF1E5CD6FF1C58D3FF1B53D0FF194FCDFF184ACAFF1645C7FF1541
    C4FF133CC1FF1238BEFF1033BBFF0F2EB8FF0D2AB5FF0B25B1FF0A21AFFF0511
    A4FF0000A0B30000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000001E60E3762167DDFF2A7EEDFF2A80EEFF2A81EFFF2B82EFFF2A81
    EFFF2A80EEFF297FEDFF287BEBFF2777E8FF2673E6FF246FE3FF236BE0FF2167
    DEFF2063DBFF1E5ED8FF1D59D5FF1B55D1FF1A50CEFF184CCBFF1747C8FF1542
    C5FF143DC2FF1239BFFF1034BCFF0F2FB8FF0D2BB5FF0C26B2FF0B23B0FF0207
    9EFF0000A3640000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000001E63EA372063DBFE2B83F1FF2B84F1FF2C86F2FF2C88F2FF2C86
    F2FF2B84F1FF2A82EFFF297EEDFF287AEAFF2776E8FF2572E5FF246EE2FF2269
    DFFF2164DCFF1F60D9FF1D5BD6FF1C56D2FF1A52CFFF194DCCFF1748C9FF1543
    C6FF143FC3FF123ABFFF1135BCFF0F30B9FF0E2CB6FF0C28B4FF0A20AFFF0000
    99F10000AE120000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000042D3042166DEE32A81EEFF2E89F3FF2D8AF5FF2E8BF6FF2F8C
    F5FF2D88F4FF2C85F1FF2A81EFFF297EECFF2778E9FF2775E6FF2470E3FF236C
    E0FF2166DDFF1F61DAFF1E5CD6FF1C57D3FF1B53D0FF194ECDFF1749CAFF1644
    C6FF143FC3FF133BC0FF1136BDFF0F31BAFF0E2CB6FF0D29B4FF040EA2FF0000
    A190000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000002370EF882776E8FF2F8DF7FF2F90F8FF2F90F9FF2F8F
    F8FF2E8CF6FF2D89F3FF2C84F1FF2A80EFFF2573E6FF216BE1FF2067DEFF2269
    E0FF226ADFFF2163DBFF1E5DD7FF1C58D4FF1B53D0FF194ECDFF184ACAFF1645
    C7FF1440C4FF133BC0FF1136BDFF1031BAFF0F2EB8FF0B23B1FF000099F10000
    A41A000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000267BFF1E2470E3F52E8CF7FF3193FBFF3296FDFF3094
    FCFF2F8EF7FF2D8AF5FF297FEFFF1A60DCFF2F65CEFF4069C5FF335BC2FF1441
    C3FF1042C7FF1D5CD6FF1F5FD8FF1D5AD4FF1B54D1FF194FCDFF184ACAFF1645
    C7FF1440C4FF133BC0FF1136BDFF1133BAFF0E2EB8FF02069EFE0000A46D0000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000297BF485287BEBFF3194FCFF3296FDFF3094
    FCFF308EF7FF2E8BF5FF1D66E0FF8B9FC4FFC0BBB3FFB7B4AFFFB2AFA8FFAAA7
    A3FF6576ABFF0F31BAFF174CCCFF1E5BD6FF1B55D2FF194FCDFF184ACAFF1645
    C7FF1440C4FF133BC0FF1137BEFF1034BCFF050FA3FF00009BAD000057030000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000002268F9082676EAC92A81EFFF3193FAFF2F90
    F8FF2E8DF7FF2B84F1FF2E6EDBFFCFCAC2FFC0C0BFFFB9B9B9FFB2B2B2FFACAC
    ABFFA9A7A3FF8A8E9FFF0D2AB4FF184CCCFF1C54D1FF194ECDFF184ACAFF1645
    C7FF1440C5FF143CC1FF1239BFFF0611A5FF000098C60000A10E000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000002C82F91A2576EAD7297EEDFF2E8C
    F6FF2E8BF5FF297FEFFF3773DBFFD8D4CDFFC9C9C8FFC2C2C1FFBCBBBAFFB4B3
    B2FFABAAA9FFA4A39FFF777D9FFF0520B3FF1A51CFFF194FCEFF1749CBFF1745
    C7FF1541C5FF1138BDFF040EA2FE00009AB80000A00E00000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000002888FF15277AEDB82674
    E6FE2A7FEEFF2981EFFF2368DDFFE4DFD6FFDAD4D0FFC5C8CBFFA6B9CDFF9AB1
    C8FF9EABBAFFA8A5A4FFA8A295FF3E4BA3FF0E32BCFF1A50CEFF184ACBFF1542
    C5FF0C26B2FF030BA1F50006A67A00008B040000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000008202277D
    F65D256CE0DA236ADFFE1C62DCFF90BCEBFF4BA3F9FF2996FFFF309AFFFF329B
    FFFF2F9AFFFF2D98FFFF4E9BE7FF7790B0FF081AABFF123BC0FF0D2AB5FF0716
    A9F70411AE9F0007B92200000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000054FF032674E6662E8FF9FD359CFFFF48A7FFFF53ACFFFF53ACFFFF52AB
    FFFF4FABFFFF4CA9FFFF41A2FFFF329DFFFF2573E7FE0A21AEBC0515A8680019
    BC15000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000031A2FF223299FFE247A6FFFF5AB1FFFF58B0FFFF56AFFFFF56AEFFFF54AD
    FFFF53ADFFFF52ABFFFF50ABFFFF4EAAFFFF3CA1FFFF33A0FFCB39ABFF0F0000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000026A2
    FF07339AFFCC48A6FFFF5EB4FFFF5CB2FFFF5CB2FFFF5BB2FFFF5AB1FFFF59B0
    FFFF57AFFFFF56AEFFFF53ADFFFF52ABFFFF50ABFFFF3D9FFFFF33A0FFAE0000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000035A0
    FF743EA0FFFF62B6FFFF60B5FFFF61B5FFFF61B5FFFF60B5FFFF5FB4FFFF5EB3
    FFFF5CB2FFFF5AB1FFFF58AFFFFF55AEFFFF52ACFFFF50ACFFFF359CFFFE35A9
    FF4F000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000026A2FF073299
    FFE55BB1FFFF66B9FFFF65B8FFFF66B8FFFF65B8FFFF65B8FFFF64B7FFFF62B6
    FFFF61B5FFFF5EB4FFFF5CB2FFFF59B0FFFF56AFFFFF54AEFFFF47A6FFFF34A2
    FFC90000FF010000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000034A0FF4E3D9E
    FFFE6BBCFFFF69BBFFFF6ABBFFFF6ABBFFFF6ABBFFFF6ABBFFFF69BAFFFF67B9
    FFFF65B8FFFF63B6FFFF60B5FFFF5DB3FFFF5AB1FFFF58AFFFFF54ADFFFF349A
    FFFD37A7FF290000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000034A1FF9852AB
    FFFF6FBEFFFF6EBEFFFF6FBEFFFF6FBEFFFF6FBEFFFF6EBEFFFF6DBDFFFF6CBC
    FFFF69BBFFFF67B9FFFF64B7FFFF61B5FFFF5EB3FFFF5AB1FFFF58B0FFFF3EA0
    FFFF34A3FF6B0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000032A1FFD063B7
    FFFF73C1FFFF73C0FFFF74C1FFFF74C1FFFF74C1FFFF73C1FFFF72C0FFFF70BF
    FFFF6EBDFFFF6BBBFFFF68BAFFFF65B7FFFF61B5FFFF5DB3FFFF5AB2FFFF48A5
    FFFF35A3FF9B0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000002E8BFF063099FFF172BF
    FFFF77C2FFFF78C3FFFF79C4FFFF79C4FFFF79C4FFFF78C4FFFF76C3FFFF74C1
    FFFF72C0FFFF6FBEFFFF6CBCFFFF68BAFFFF64B7FFFF60B5FFFF5DB2FFFF4EAA
    FFFF34A0FFBC0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000033AAFF15339AFFFD7BC6
    FFFF7CC5FFFF7CC6FFFF7EC7FFFF7EC7FFFF7EC7FFFF7DC7FFFF7BC5FFFF79C4
    FFFF76C2FFFF73C0FFFF6FBEFFFF6BBCFFFF67B9FFFF63B7FFFF60B5FFFF53AD
    FFFF2E97FDD90072A6B8007BB588000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000034A4FF20379BFFFE81C9
    FFFF7FC8FFFF81C9FFFF84CAFFFF83CAFFFF83CAFFFF81C9FFFF7FC8FFFF7DC6
    FFFF7AC4FFFF76C2FFFF72C0FFFF6EBDFFFF6BBBFFFF65B8FFFF63B6FFFF56AF
    FFFF0877B6FF0076A8FF0072A6E70071AB050000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000006A9FAF3397F7FF86CB
    FFFF83CAFFFF85CCFFFF87CDFFFF88CEFFFF89CDFFFF86CCFFFF83CBFFFF80C9
    FFFF7DC7FFFF79C4FFFF75C2FFFF70BFFFFF6DBDFFFF6ABAFFFF5FB3FAFF51AA
    F8FF0071A2FF0082B5FF0075A8FE0079B02D0000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000699EE62589D7FF8ACE
    FFFF88CEFFFF8BCFFFFF8CD0FFFF8DD1FFFF8CD0FFFF8ACFFFFF87CDFFFF84CB
    FFFF80C8FFFF7BC6FFFF77C3FFFF72C0FFFF71BEFFFF0C7BAFFF0071A2FF1A86
    C1FF0079ACFF0085B8FF007AADFF007FB55C0000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000097930200659BEC0F76B8FF8CD1
    FFFF8BD0FFFF8DD1FFFF90D3FFFF92D4FFFF92D3FFFF8ED1FFFF8CCFFFFF86CD
    FFFF82CAFFFF7DC7FFFF79C4FFFF77C3FFFF4DA7E4FF0075A7FF0085B8FF0078
    ABFF0081B4FF0086B9FF007EB1FF0080B8790000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000001006CA1E8006298FF83CA
    FFFF8ED1FFFF90D3FFFF95D5FFFF98D8FFFF96D7FFFF91D3FFFF8ED2FFFF88CE
    FFFF83CBFFFF7FC8FFFF7AC5FFFF7AC5FFFF2C93CBFF007EB0FF0088BBFF0089
    BCFF0089BCFF0089BCFF0081B4FF0083BA820000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000006CA4DA006396FF51A5
    D7FF92D4FFFF93D3FFFF96D8FFFF9BDAFFFF98D8FFFF94D4FFFF8ED1FFFF89CE
    FFFF84CBFFFF7FC8FFFF7AC5FFFF7CC5FFFF087DB0FF0086B9FF008BBEFF008A
    BDFF008ABDFF008ABDFF0083B6FF0086BC7F0000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000006BA2C0006A9DFF096D
    9FFF91D4FFFF92D4FFFF96D7FFFF98D8FFFF97D7FFFF93D5FFFF8DD1FFFF88CE
    FFFF84CBFFFF7FC8FFFF7CC7FFFF61B4F0FF0078ABFF008CBFFF008CBFFF008C
    BFFF008DC0FF008DC0FF0085B8FF008AC16A0000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000006CA192006C9FFF0066
    99FF3B93C4FF97D8FFFF92D4FFFF94D4FFFF93D5FFFF90D2FFFF8BCFFFFF87CD
    FFFF82CAFFFF7FC7FFFF81C9FFFF208EC3FF0083B6FF008EC1FF008EC1FF008F
    C2FF008FC2FF0090C3FF0086B9FF008CC4400000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000069A25700689BFF0074
    A7FF006295FF4499CAFF96D7FFFF92D4FFFF90D3FFFF8ED1FFFF8BCFFFFF87CD
    FFFF84CCFFFF85CCFFFF44A4DBFF007AADFF008EC1FF008FC2FF0090C3FF0091
    C4FF0091C4FF0091C4FF0087BBF5008ECC0E0000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000073AC0F00669AF00073
    A6FF0075A8FF006699FF1274A7FF4DA2D3FF6BB8EAFF6DBAECFF61B3E6FF50A9
    DDFF409FD4FF1C89BFFF007AADFF008CBFFF0090C3FF0091C4FF0092C5FF0093
    C6FF0095C8FF0090C3FF0090C6AF000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000006AA18E006B
    9EFF0077AAFF0079ACFF0075A8FF006FA2FF006EA1FF006FA3FF0073A6FF0078
    ABFF007DB0FF0085B8FF008DC0FF008EC1FF0090C3FF0092C5FF0094C7FF0095
    C8FF0096C9FF008DC0FD0099D23C000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000006A9F100066
    99DE0071A4FF0079ACFF007CAFFF007EB1FF0080B3FF0082B5FF0085B8FF0087
    BAFF0089BCFF008CBFFF008DC0FF008FC2FF0091C4FF0094C7FF0097CAFF0098
    CBFF0090C3FF0094CDA300000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000006D
    A72C006698E3006FA2FF007BAEFF007EB1FF0080B3FF0083B6FF0085B8FF0087
    BAFF008ABDFF008CBFFF008EC1FF0090C3FF0093C6FF0095C8FF0096C9FF008F
    C2FF008FC0C50099C30D00000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000072AC19006BA3A5006A9EFB0072A5FF0079ACFF007CAFFF007DB0FF007E
    B1FF007EB1FF007DB0FE0082B5FE0087BAFF008ABDFF008ABDFF008ABDF60095
    CA8C008DE60A0000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000006AA31C006C9F65006FA18E0070A49E0073A79A0076
    AA810078AB59007CAA27007DB1450080B26B0084B76E0085B954008EC6130000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000FFFFFFFFFFFF0000FFFFE01FFFFF0000FFFC00007FFF0000FFE0
    00000FFF0000FFC0000001FF0000FF000000007F0000FF000000007F0000FF00
    0000007F0000FF000000007F0000FF00000000FF0000FF00000000FF0000FF00
    000000FF0000FF00000000FF0000FF80000001FF0000FF80000001FF0000FF80
    000003FF0000FFC0000003FF0000FFC0000007FF0000FFE000000FFF0000FFF0
    00001FFF0000FFF800003FFF0000FFFC0000FFFF0000FFFF0003FFFF0000FFFF
    0007FFFF0000FFFE0003FFFF0000FFFC0003FFFF0000FFFC0001FFFF0000FFFC
    0001FFFF0000FFF80000FFFF0000FFF80000FFFF0000FFF80000FFFF0000FFF8
    00003FFF0000FFF800003FFF0000FFF000003FFF0000FFF000001FFF0000FFF0
    00001FFF0000FFF000001FFF0000FFF000001FFF0000FFF000001FFF0000FFF0
    00003FFF0000FFF000003FFF0000FFF800003FFF0000FFF800007FFF0000FFFC
    00007FFF0000FFFE0000FFFF0000FFFF0001FFFF0000FFFFC0C7FFFF0000FFFF
    FFFFFFFF0000}
  KeyPreview = True
  OldCreateOrder = False
  Position = poOwnerFormCenter
  OnKeyDown = FormKeyDown
  DesignSize = (
    418
    282)
  PixelsPerInch = 96
  TextHeight = 13
  object lblCode: TLabel
    Left = 8
    Top = 11
    Width = 29
    Height = 13
    Caption = 'Code:'
  end
  object lblName: TLabel
    Left = 8
    Top = 38
    Width = 31
    Height = 13
    Caption = 'Name:'
  end
  object imgPhoto: TImage
    Left = 305
    Top = 169
    Width = 105
    Height = 105
    Anchors = [akRight, akBottom]
    Center = True
    Proportional = True
    Stretch = True
    Transparent = True
    OnClick = imgPhotoClick
  end
  object lblOrganisation: TLabel
    Left = 8
    Top = 65
    Width = 65
    Height = 13
    Caption = 'Organisation:'
  end
  object Label1: TLabel
    Left = 8
    Top = 93
    Width = 32
    Height = 13
    Caption = 'E-mail:'
  end
  object Label2: TLabel
    Left = 8
    Top = 120
    Width = 34
    Height = 13
    Caption = 'Phone:'
  end
  object Label3: TLabel
    Left = 8
    Top = 147
    Width = 34
    Height = 13
    Caption = 'Mobile:'
  end
  object Label4: TLabel
    Left = 8
    Top = 171
    Width = 45
    Height = 13
    Caption = 'Remarks:'
  end
  object Label5: TLabel
    Left = 267
    Top = 171
    Width = 32
    Height = 13
    Alignment = taRightJustify
    Anchors = [akTop, akRight]
    Caption = 'Photo:'
  end
  object edtCode: TEdit
    Left = 96
    Top = 8
    Width = 65
    Height = 21
    TabOrder = 0
  end
  object edtName: TEdit
    Left = 96
    Top = 35
    Width = 314
    Height = 21
    Anchors = [akLeft, akTop, akRight]
    TabOrder = 2
  end
  object cbxOrganisation: TComboBoxEx
    Left = 96
    Top = 62
    Width = 314
    Height = 22
    ItemsEx = <>
    Anchors = [akLeft, akTop, akRight]
    TabOrder = 3
    DropDownCount = 16
  end
  object edtEmail: TButtonedEdit
    Left = 96
    Top = 90
    Width = 314
    Height = 21
    Anchors = [akLeft, akTop, akRight]
    Images = dmMain.imlMain
    RightButton.ImageIndex = 1283
    RightButton.Visible = True
    TabOrder = 4
    OnRightButtonClick = edtEmailRightButtonClick
  end
  object edtPhone: TEdit
    Left = 96
    Top = 117
    Width = 314
    Height = 21
    Anchors = [akLeft, akTop, akRight]
    TabOrder = 5
  end
  object edtMobile: TEdit
    Left = 96
    Top = 144
    Width = 314
    Height = 21
    Anchors = [akLeft, akTop, akRight]
    TabOrder = 6
  end
  object mmoRemarks: TMemo
    Left = 8
    Top = 192
    Width = 291
    Height = 82
    Anchors = [akLeft, akTop, akRight, akBottom]
    ScrollBars = ssVertical
    TabOrder = 7
  end
  object pnlRole: TPanel
    Left = 176
    Top = -3
    Width = 234
    Height = 38
    BevelOuter = bvNone
    TabOrder = 1
    Visible = False
    object lblRole: TLabel
      Left = 0
      Top = 14
      Width = 25
      Height = 13
      Caption = '&Role:'
    end
    object cbxRole: TComboBoxEx
      Left = 31
      Top = 11
      Width = 202
      Height = 22
      AutoCompleteOptions = [acoAutoSuggest, acoAutoAppend, acoUpDownKeyDropsList]
      ItemsEx = <
        item
        end>
      TabOrder = 0
      DropDownCount = 16
    end
  end
end

Added Olam/src/F_Contact.pas.























































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
unit F_Contact;

interface

uses
  Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls,
  M_Main;

type
  TfrmContact = class(TForm)
    lblCode: TLabel;
    edtCode: TEdit;
    edtName: TEdit;
    lblName: TLabel;
    imgPhoto: TImage;
    lblOrganisation: TLabel;
    cbxOrganisation: TComboBoxEx;
    Label1: TLabel;
    edtEmail: TButtonedEdit;
    Label2: TLabel;
    edtPhone: TEdit;
    Label3: TLabel;
    edtMobile: TEdit;
    Label4: TLabel;
    mmoRemarks: TMemo;
    pnlRole: TPanel;
    lblRole: TLabel;
    cbxRole: TComboBoxEx;
    Label5: TLabel;
    procedure imgPhotoClick(Sender: TObject);
    procedure edtEmailRightButtonClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation
uses
  Winapi.Windows, Winapi.ShellAPI,
  IdURI,
  PNGImage, JPEG, GIFImg;

{$R *.dfm}

{ ---------------------------------------------------------------------------- }
procedure TfrmContact.edtEmailRightButtonClick(Sender: TObject);
var
  URL: string;
begin
  URL := 'mailto:' + TIdURI.ParamsEncode(Trim(edtEmail.Text));
  ShellExecute(Handle, nil, PChar(URL), nil, nil, SW_SHOWDEFAULT);
end {TfrmContact.edtEmailRightButtonClick};

{ ---------------------------------------------------------------------------- }
procedure TfrmContact.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then begin
    // TODO: perform a Tab, and give the focus to the next control
    Key := 0;
  end;
end {TfrmContact.FormKeyDown};

{ ---------------------------------------------------------------------------- }
procedure TfrmContact.imgPhotoClick(Sender: TObject);
begin
  if dmMain.dlgOpenPicture.Execute() then begin
    imgPhoto.Picture.LoadFromFile(dmMain.dlgOpenPicture.FileName);
  end;
end {TfrmContact.imgPhotoClick};

end.

Changes to Olam/src/F_Project.dfm.

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
...
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
...
988
989
990
991
992
993
994

995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
....
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
....
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
....
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
....
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
....
1205
1206
1207
1208
1209
1210
1211
1212








1213




































    000000070000F000000000070000E0000000000F0000E0000000001F0000C000
    0000003F0000C0000000007F00008000000000FF00008000000001FF00008000
    000003FF00008000000007FF0000800000000FFF0000800000001FFF00008000
    00003FFF0000C00000007FFF0000FC000000FFFF0000FFF00000FFFF0000FFFF
    8001FFFF0000FFFFFC03FFFF0000FFFFFFE7FFFF0000FFFFFFFFFFFF0000FFFF
    FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFF
    FFFFFFFF0000}

  OldCreateOrder = False
  Position = poOwnerFormCenter
  OnCreate = FormCreate

  PixelsPerInch = 96
  TextHeight = 13
  object pnlContents: TPanel
    Left = 0
    Top = 41
    Width = 494
    Height = 343
    Align = alClient
    BevelOuter = bvNone
    TabOrder = 0
    ExplicitLeft = 64
    ExplicitTop = 112
    ExplicitWidth = 185
    ExplicitHeight = 41
    DesignSize = (
      494
      343)
    object lblNaam: TLabel
      Left = 8
      Top = 8
      Width = 31
      Height = 13
      Caption = '&Name:'
      FocusControl = edtNaam
    end
    object Label1: TLabel
      Left = 8
      Top = 32
      Width = 57
      Height = 13
      Caption = '&Description:'
      FocusControl = mmoOmschrijving
    end
    object lblVerantwoordelijke: TLabel
      Left = 8
      Top = 128
      Width = 27
      Height = 13
      Caption = '&Lead:'
................................................................................
      Left = 104
      Top = 5
      Width = 382
      Height = 21
      Anchors = [akLeft, akTop, akRight]
      TabOrder = 0
    end
    object mmoOmschrijving: TMemo
      Left = 104
      Top = 32
      Width = 382
      Height = 89
      Anchors = [akLeft, akTop, akRight]
      ScrollBars = ssVertical
      TabOrder = 1


    end
    object edtVerantwoordelijke: TButtonedEdit
      Left = 104
      Top = 127
      Width = 382
      Height = 21
      Anchors = [akLeft, akTop, akRight]
      Images = dmMain.imlMain
      LeftButton.ImageIndex = 1787
      RightButton.ImageIndex = 1964
      RightButton.Visible = True
      TabOrder = 2

    end
    object pgcLijsten: TPageControl
      Left = 8
      Top = 176
      Width = 478
      Height = 159
      ActivePage = tshSubprojecten
      Anchors = [akLeft, akTop, akRight, akBottom]
      Images = dmMain.imlMain
      TabOrder = 4
      ExplicitHeight = 200
      object tshSubprojecten: TTabSheet
        Caption = '&Subprojects'
        ImageIndex = 125
        ExplicitLeft = 0
        ExplicitTop = 0
        ExplicitWidth = 0
        ExplicitHeight = 0
        DesignSize = (
          470
          130)
        object tvwSubprojects: TTreeView
          Left = 3
          Top = 3
          Width = 343
          Height = 123
          Anchors = [akLeft, akTop, akRight, akBottom]
          Indent = 19
          TabOrder = 0
          ExplicitHeight = 165

        end
        object btnAddProject: TButton
          Left = 352
          Top = 3
          Width = 115
          Height = 22
          Anchors = [akTop, akRight]
................................................................................
          Height = 23
          Anchors = [akTop, akRight]
          Caption = 'Edit project'
          Enabled = False
          ImageIndex = 128
          Images = dmMain.imlMain
          TabOrder = 3

        end
      end
      object tshPhases: TTabSheet
        Caption = '&Phases'
        ImageIndex = 956
        ExplicitHeight = 171
        DesignSize = (
          470
          130)
        object btnAddPhase: TButton
          Left = 352
          Top = 3
          Width = 115
................................................................................
          Images = dmMain.imlMain
          TabOrder = 2
        end
        object lvwPhases: TListView
          Left = 3
          Top = 3
          Width = 343
          Height = 123
          Anchors = [akLeft, akTop, akRight, akBottom]
          Columns = <
            item
              Caption = 'N'#176
              Width = 100
            end
            item
................................................................................
          TabOrder = 3
          ViewStyle = vsReport
        end
      end
      object tshContacts: TTabSheet
        Caption = '&Contacts'
        ImageIndex = 1970
        ExplicitTop = 24
        ExplicitHeight = 172
        DesignSize = (
          470
          130)
        object lvwContacts: TListView
          Left = 3
          Top = 3
          Width = 343
          Height = 123
          Anchors = [akLeft, akTop, akRight, akBottom]
          Columns = <
            item
              Caption = 'Name'
              Width = 150
            end
            item
................................................................................
              Caption = 'Organisation'
              Width = 100
            end>
          ReadOnly = True
          RowSelect = True
          TabOrder = 0
          ViewStyle = vsReport
          ExplicitHeight = 165
        end
        object btnAddContact: TButton
          Left = 352
          Top = 3
          Width = 115
          Height = 22
          Anchors = [akTop, akRight]
          Caption = 'Add contact'
          ImageIndex = 1947
          Images = dmMain.imlMain
          TabOrder = 1

        end
        object btnEditContact: TButton
          Left = 352
          Top = 31
          Width = 115
          Height = 23
          Anchors = [akTop, akRight]
................................................................................
    Left = 0
    Top = 0
    Width = 494
    Height = 41
    Align = alTop
    BevelOuter = bvNone
    TabOrder = 1
    ExplicitLeft = 152
    ExplicitTop = 176
    ExplicitWidth = 185
    object lblParent: TLabel
      Left = 9
      Top = 11
      Width = 145
      Height = 13
      Caption = 'This project is a subproject of '
      FocusControl = cbxParent
................................................................................
          SelectedImageIndex = 500
        end>
      Style = csExDropDownList
      TabOrder = 0
      Images = dmMain.imlMain
      DropDownCount = 16
    end
  end








end











































>



>










<
<
<
<











|





|







 







|







>
>












>










<



<
<
<
<







|



|
>







 







>





<







 







|







 







<
<







|







 







<











>







 







<
<
<







 








>
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
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
...
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
...
985
986
987
988
989
990
991
992
993
994
995
996
997

998
999
1000
1001
1002
1003
1004
....
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
....
1079
1080
1081
1082
1083
1084
1085


1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
....
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
....
1172
1173
1174
1175
1176
1177
1178



1179
1180
1181
1182
1183
1184
1185
....
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
    000000070000F000000000070000E0000000000F0000E0000000001F0000C000
    0000003F0000C0000000007F00008000000000FF00008000000001FF00008000
    000003FF00008000000007FF0000800000000FFF0000800000001FFF00008000
    00003FFF0000C00000007FFF0000FC000000FFFF0000FFF00000FFFF0000FFFF
    8001FFFF0000FFFFFC03FFFF0000FFFFFFE7FFFF0000FFFFFFFFFFFF0000FFFF
    FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFF
    FFFFFFFF0000}
  Menu = mmProject
  OldCreateOrder = False
  Position = poOwnerFormCenter
  OnCreate = FormCreate
  OnShow = FormShow
  PixelsPerInch = 96
  TextHeight = 13
  object pnlContents: TPanel
    Left = 0
    Top = 41
    Width = 494
    Height = 343
    Align = alClient
    BevelOuter = bvNone
    TabOrder = 0




    DesignSize = (
      494
      343)
    object lblNaam: TLabel
      Left = 8
      Top = 8
      Width = 31
      Height = 13
      Caption = '&Name:'
      FocusControl = edtNaam
    end
    object lblDescription: TLabel
      Left = 8
      Top = 32
      Width = 57
      Height = 13
      Caption = '&Description:'
      FocusControl = mmoDescription
    end
    object lblVerantwoordelijke: TLabel
      Left = 8
      Top = 128
      Width = 27
      Height = 13
      Caption = '&Lead:'
................................................................................
      Left = 104
      Top = 5
      Width = 382
      Height = 21
      Anchors = [akLeft, akTop, akRight]
      TabOrder = 0
    end
    object mmoDescription: TMemo
      Left = 104
      Top = 32
      Width = 382
      Height = 89
      Anchors = [akLeft, akTop, akRight]
      ScrollBars = ssVertical
      TabOrder = 1
      OnKeyDown = mmoDescriptionKeyDown
      OnKeyUp = mmoDescriptionKeyUp
    end
    object edtVerantwoordelijke: TButtonedEdit
      Left = 104
      Top = 127
      Width = 382
      Height = 21
      Anchors = [akLeft, akTop, akRight]
      Images = dmMain.imlMain
      LeftButton.ImageIndex = 1787
      RightButton.ImageIndex = 1964
      RightButton.Visible = True
      TabOrder = 2
      OnRightButtonClick = edtVerantwoordelijkeRightButtonClick
    end
    object pgcLijsten: TPageControl
      Left = 8
      Top = 176
      Width = 478
      Height = 159
      ActivePage = tshSubprojecten
      Anchors = [akLeft, akTop, akRight, akBottom]
      Images = dmMain.imlMain
      TabOrder = 4

      object tshSubprojecten: TTabSheet
        Caption = '&Subprojects'
        ImageIndex = 125




        DesignSize = (
          470
          130)
        object tvwSubprojects: TTreeView
          Left = 3
          Top = 3
          Width = 343
          Height = 118
          Anchors = [akLeft, akTop, akRight, akBottom]
          Indent = 19
          TabOrder = 0
          OnClick = tvwSubprojectsClick
          OnDblClick = tvwSubprojectsDblClick
        end
        object btnAddProject: TButton
          Left = 352
          Top = 3
          Width = 115
          Height = 22
          Anchors = [akTop, akRight]
................................................................................
          Height = 23
          Anchors = [akTop, akRight]
          Caption = 'Edit project'
          Enabled = False
          ImageIndex = 128
          Images = dmMain.imlMain
          TabOrder = 3
          OnClick = btnEditProjectClick
        end
      end
      object tshPhases: TTabSheet
        Caption = '&Phases'
        ImageIndex = 956

        DesignSize = (
          470
          130)
        object btnAddPhase: TButton
          Left = 352
          Top = 3
          Width = 115
................................................................................
          Images = dmMain.imlMain
          TabOrder = 2
        end
        object lvwPhases: TListView
          Left = 3
          Top = 3
          Width = 343
          Height = 118
          Anchors = [akLeft, akTop, akRight, akBottom]
          Columns = <
            item
              Caption = 'N'#176
              Width = 100
            end
            item
................................................................................
          TabOrder = 3
          ViewStyle = vsReport
        end
      end
      object tshContacts: TTabSheet
        Caption = '&Contacts'
        ImageIndex = 1970


        DesignSize = (
          470
          130)
        object lvwContacts: TListView
          Left = 3
          Top = 3
          Width = 343
          Height = 118
          Anchors = [akLeft, akTop, akRight, akBottom]
          Columns = <
            item
              Caption = 'Name'
              Width = 150
            end
            item
................................................................................
              Caption = 'Organisation'
              Width = 100
            end>
          ReadOnly = True
          RowSelect = True
          TabOrder = 0
          ViewStyle = vsReport

        end
        object btnAddContact: TButton
          Left = 352
          Top = 3
          Width = 115
          Height = 22
          Anchors = [akTop, akRight]
          Caption = 'Add contact'
          ImageIndex = 1947
          Images = dmMain.imlMain
          TabOrder = 1
          OnClick = btnAddContactClick
        end
        object btnEditContact: TButton
          Left = 352
          Top = 31
          Width = 115
          Height = 23
          Anchors = [akTop, akRight]
................................................................................
    Left = 0
    Top = 0
    Width = 494
    Height = 41
    Align = alTop
    BevelOuter = bvNone
    TabOrder = 1



    object lblParent: TLabel
      Left = 9
      Top = 11
      Width = 145
      Height = 13
      Caption = 'This project is a subproject of '
      FocusControl = cbxParent
................................................................................
          SelectedImageIndex = 500
        end>
      Style = csExDropDownList
      TabOrder = 0
      Images = dmMain.imlMain
      DropDownCount = 16
    end
  end
  object mmProject: TMainMenu
    Images = dmMain.imlMain
    Left = 120
    Top = 88
    object mnuProject: TMenuItem
      Caption = 'Project'
      object miProjectSave: TMenuItem
        Action = actProjectSave
      end
      object miProjectN1: TMenuItem
        Caption = '-'
      end
      object miProjectClose: TMenuItem
        Action = actWindowClose
      end
    end
    object mnuView: TMenuItem
      Caption = 'View'
      object miViewPage: TMenuItem
        Caption = '(page)'
        Visible = False
        OnClick = miViewPageClick
      end
    end
  end
  object aclProject: TActionList
    Images = dmMain.imlMain
    Left = 192
    Top = 89
    object actWindowClose: TAction
      Category = 'Window'
      Caption = 'C&lose'
      Hint = 'Close'
      ImageIndex = 2033
      ShortCut = 16499
      OnExecute = actWindowCloseExecute
    end
    object actProjectSave: TAction
      Category = 'Project'
      Caption = 'Save'
      ImageIndex = 454
      ShortCut = 16467
    end
  end
end

Changes to Olam/src/F_Project.pas.

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
..
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
..
78
79
80
81
82
83
84

85
86
87
88






























89
90
91
92
93
94
95
..
99
100
101
102
103
104
105
106










































107
unit F_Project;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
  M_Main, Vcl.ComCtrls;

type
  TfrmProject = class(TForm)
    pnlContents: TPanel;
    lblNaam: TLabel;
    Label1: TLabel;
    lblVerantwoordelijke: TLabel;
    lblContacten: TLabel;
    edtNaam: TEdit;
    mmoOmschrijving: TMemo;
    edtVerantwoordelijke: TButtonedEdit;
    pgcLijsten: TPageControl;
    tshSubprojecten: TTabSheet;
    tvwSubprojects: TTreeView;
    btnAddProject: TButton;
    btnDeleteProject: TButton;
    btnEditProject: TButton;
................................................................................
    btnDeleteContact: TButton;
    tshActivities: TTabSheet;
    tshStats: TTabSheet;
    lnkContacten: TLinkLabel;
    pnlParent: TPanel;
    lblParent: TLabel;
    cbxParent: TComboBoxEx;










    procedure lnkContactenLinkClick(Sender: TObject; const Link: string;
      LinkType: TSysLinkType);
    procedure FormCreate(Sender: TObject);
    procedure btnAddProjectClick(Sender: TObject);












  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmProject: TfrmProject;

implementation
uses
  ShellAPI;

{$R *.dfm}

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.FormCreate(Sender: TObject);




begin
  cbxParent.ItemIndex := 0;
  pnlParent.Visible := False;












end {TfrmProject.FormCreate};































{ ---------------------------------------------------------------------------- }
procedure TfrmProject.btnAddProjectClick(Sender: TObject);
var
  Form: TfrmProject;
  Item: TComboExItem;
begin
................................................................................
    Item.ImageIndex := tshSubprojecten.ImageIndex;
    Form.cbxParent.ItemIndex := Item.Index;
    Form.pnlParent.Visible := True;
    Form.Position := poDefaultPosOnly;
    if Form.ShowModal = mrOk then begin
      // TODO: refresh subproject list
    end;

  finally
    Form.Free;
  end;
end {TfrmProject.btnAddProjectClick};































{ ---------------------------------------------------------------------------- }
procedure TfrmProject.lnkContactenLinkClick(Sender: TObject; const Link: string;
  LinkType: TSysLinkType);
var
  ID: Int64;
begin
................................................................................
      if TryStrToInt64(Link, ID) then begin
        // TODO: open contact form, and load contact identified by ID
        // TODO: use ShowModal
      end;
    end;
  end;
end {TfrmProject.lnkContactenLinkClick};











































end.







|





|



|







 







>
>
>
>
>
>
>
>
>
>




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






<
<
<


|





>
>
>
>



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

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







 







>




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







 








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

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
..
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
...
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
...
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
unit F_Project;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
  M_Main, Vcl.ComCtrls, Vcl.Menus, System.Actions, Vcl.ActnList, Vcl.StdActns;

type
  TfrmProject = class(TForm)
    pnlContents: TPanel;
    lblNaam: TLabel;
    lblDescription: TLabel;
    lblVerantwoordelijke: TLabel;
    lblContacten: TLabel;
    edtNaam: TEdit;
    mmoDescription: TMemo;
    edtVerantwoordelijke: TButtonedEdit;
    pgcLijsten: TPageControl;
    tshSubprojecten: TTabSheet;
    tvwSubprojects: TTreeView;
    btnAddProject: TButton;
    btnDeleteProject: TButton;
    btnEditProject: TButton;
................................................................................
    btnDeleteContact: TButton;
    tshActivities: TTabSheet;
    tshStats: TTabSheet;
    lnkContacten: TLinkLabel;
    pnlParent: TPanel;
    lblParent: TLabel;
    cbxParent: TComboBoxEx;
    mmProject: TMainMenu;
    mnuProject: TMenuItem;
    mnuView: TMenuItem;
    miViewPage: TMenuItem;
    miProjectSave: TMenuItem;
    miProjectClose: TMenuItem;
    aclProject: TActionList;
    actWindowClose: TAction;
    actProjectSave: TAction;
    miProjectN1: TMenuItem;
    procedure lnkContactenLinkClick(Sender: TObject; const Link: string;
      LinkType: TSysLinkType);
    procedure FormCreate(Sender: TObject);
    procedure btnAddProjectClick(Sender: TObject);
    procedure miViewPageClick(Sender: TObject);
    procedure actWindowCloseExecute(Sender: TObject);
    procedure mmoDescriptionKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure mmoDescriptionKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnAddContactClick(Sender: TObject);
    procedure edtVerantwoordelijkeRightButtonClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure tvwSubprojectsClick(Sender: TObject);
    procedure btnEditProjectClick(Sender: TObject);
    procedure tvwSubprojectsDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;




implementation
uses
  ShellAPI, F_Contact;

{$R *.dfm}

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.FormCreate(Sender: TObject);
var
  mi: TMenuItem;
  i: Integer;
  Page: TTabSheet;
begin
  cbxParent.ItemIndex := 0;
  pnlParent.Visible := False;

  for i := 0 to pgcLijsten.PageCount - 1 do begin
    mi := TMenuItem.Create(mnuView);
    Page := pgcLijsten.Pages[i];
    mi.Caption := Page.Caption;
    mi.ImageIndex := Page.ImageIndex;
    mi.Hint := Page.Hint;
    mi.Tag := Page.TabIndex;
    mi.OnClick := miViewPageClick;
    mi.Visible := Page.TabVisible;
    mnuView.Insert(mnuView.IndexOf(miViewPage), mi);
  end;
end {TfrmProject.FormCreate};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.FormShow(Sender: TObject);
begin
  tvwSubprojects.ShowRoot := pnlParent.Visible;
end {TfrmProject.FormShow};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.actWindowCloseExecute(Sender: TObject);
begin
  Self.Close;
end {TfrmProject.actWindowCloseExecute};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.btnAddContactClick(Sender: TObject);
var
  Form: TfrmContact;
begin
  // TODO: instead of creating a new contact here, show the full list of
  // contacts to choose from, from where a new user can be created...
  Form := TfrmContact.Create(Self);
  try
    Form.pnlRole.Visible := True;
    if Form.ShowModal = mrOK then begin
      // TODO: refresh contact list
    end;
  finally
    Form.Free;
  end;
end {TfrmProject.btnAddContactClick};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.btnAddProjectClick(Sender: TObject);
var
  Form: TfrmProject;
  Item: TComboExItem;
begin
................................................................................
    Item.ImageIndex := tshSubprojecten.ImageIndex;
    Form.cbxParent.ItemIndex := Item.Index;
    Form.pnlParent.Visible := True;
    Form.Position := poDefaultPosOnly;
    if Form.ShowModal = mrOk then begin
      // TODO: refresh subproject list
    end;
    tvwSubprojects.Items.Add(nil, Form.edtNaam.Text);
  finally
    Form.Free;
  end;
end {TfrmProject.btnAddProjectClick};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.btnEditProjectClick(Sender: TObject);
var
  Form: TfrmProject;
  Item: TComboExItem;
begin
  Form := TfrmProject.Create(Self);
  try
    Item := Form.cbxParent.ItemsEx.Add;
    Item.Caption := edtNaam.Text; // TODO?
    Item.ImageIndex := tshSubprojecten.ImageIndex;
    Form.cbxParent.ItemIndex := Item.Index;
    Form.pnlParent.Visible := True;
    Form.Position := poDefaultPosOnly;
    Form.edtNaam.Text := tvwSubprojects.Selected.Text;
    if Form.ShowModal = mrOk then begin
      // TODO: refresh subproject list
    end;
    tvwSubprojects.Selected.Text := Form.edtNaam.Text;
  finally
    Form.Free;
  end;
end {TfrmProject.btnEditProjectClick};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.edtVerantwoordelijkeRightButtonClick(Sender: TObject);
begin
  // TODO: open list of contacts to choose from (which includes the possibility of adding one)
end;

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.lnkContactenLinkClick(Sender: TObject; const Link: string;
  LinkType: TSysLinkType);
var
  ID: Int64;
begin
................................................................................
      if TryStrToInt64(Link, ID) then begin
        // TODO: open contact form, and load contact identified by ID
        // TODO: use ShowModal
      end;
    end;
  end;
end {TfrmProject.lnkContactenLinkClick};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.miViewPageClick(Sender: TObject);
begin
  pgcLijsten.ActivePageIndex := TMenuItem(Sender).Tag;
end;

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.mmoDescriptionKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) and (Key = Ord('A')) then begin
    mmoDescription.SelectAll;
    Key := 0;
  end;
end {TfrmProject.mmoDescriptionKeyDown};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.mmoDescriptionKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) and (Key = Ord('A')) then begin
    Key := 0;
  end;
end {TfrmProject.mmoDescriptionKeyUp};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.tvwSubprojectsClick(Sender: TObject);
begin
  btnEditProject.Enabled := Assigned(tvwSubprojects.Selected);
  btnDeleteProject.Enabled := Assigned(tvwSubprojects.Selected);
end {TfrmProject.tvwSubprojectsClick};

{ ---------------------------------------------------------------------------- }
procedure TfrmProject.tvwSubprojectsDblClick(Sender: TObject);
begin
  if btnEditProject.Enabled then begin
    btnEditProject.Click;
  end else begin
    btnAddProject.Click;
  end;
end {TfrmProject.tvwSubprojectsDblClick};

end.

Changes to Olam/src/M_Main.dfm.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.....
68558
68559
68560
68561
68562
68563
68564
68565





68566

  Height = 150
  Width = 215
  object imlMain: TImageList
    ColorDepth = cd32Bit
    Left = 8
    Top = 8
    Bitmap = {
      494C01011A0828081C0010001000FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600
      0000000000003600000028000000400000007020000001002000000000000070
      2000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
................................................................................
      ImageIndex = 1633
    end
    object actProjectAddActivity: TAction
      Category = 'Project'
      Caption = '&Start activity...'
      ImageIndex = 1631
    end
  end





end








|







 








>
>
>
>
>
|
>
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.....
68558
68559
68560
68561
68562
68563
68564
68565
68566
68567
68568
68569
68570
68571
68572
  Height = 150
  Width = 215
  object imlMain: TImageList
    ColorDepth = cd32Bit
    Left = 8
    Top = 8
    Bitmap = {
      494C01011A082808200010001000FFFFFFFF2110FFFFFFFFFFFFFFFF424D3600
      0000000000003600000028000000400000007020000001002000000000000070
      2000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
................................................................................
      ImageIndex = 1633
    end
    object actProjectAddActivity: TAction
      Category = 'Project'
      Caption = '&Start activity...'
      ImageIndex = 1631
    end
  end
  object dlgOpenPicture: TOpenPictureDialog
    DefaultExt = '.jpg'
    OnTypeChange = dlgOpenPictureTypeChange
    Left = 144
    Top = 8
  end
end

Changes to Olam/src/M_Main.pas.

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
..
39
40
41
42
43
44
45
46














47
unit M_Main;

interface

uses
  System.SysUtils, System.Classes, Vcl.ImgList, Vcl.Controls, System.Actions,
  Vcl.ActnList;

type
  TdmMain = class(TDataModule)
    imlMain: TImageList;
    aclMain: TActionList;
    actProjectAdd: TAction;
    actProjectEdit: TAction;
    actProjectDelete: TAction;
    actActivityAdd: TAction;
    actActivityEdit: TAction;
    actActivityDelete: TAction;
    actProjectAddActivity: TAction;

    procedure actProjectAddExecute(Sender: TObject);

  private
    { Private declarations }
    FProject: TObject;  // TODO: actual project object
  public
    { Public declarations }
    property SelectedProject: TObject read FProject write FProject;
  end;
................................................................................
{$R *.dfm}

{ ---------------------------------------------------------------------------- }
procedure TdmMain.actProjectAddExecute(Sender: TObject);
begin
  TfrmProject.Create(Application).Show;
end {TdmMain.actProjectAddExecute};















end.






|












>

>







 








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

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
..
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
unit M_Main;

interface

uses
  System.SysUtils, System.Classes, Vcl.ImgList, Vcl.Controls, System.Actions,
  Vcl.ActnList, Vcl.Dialogs, Vcl.ExtDlgs;

type
  TdmMain = class(TDataModule)
    imlMain: TImageList;
    aclMain: TActionList;
    actProjectAdd: TAction;
    actProjectEdit: TAction;
    actProjectDelete: TAction;
    actActivityAdd: TAction;
    actActivityEdit: TAction;
    actActivityDelete: TAction;
    actProjectAddActivity: TAction;
    dlgOpenPicture: TOpenPictureDialog;
    procedure actProjectAddExecute(Sender: TObject);
    procedure dlgOpenPictureTypeChange(Sender: TObject);
  private
    { Private declarations }
    FProject: TObject;  // TODO: actual project object
  public
    { Public declarations }
    property SelectedProject: TObject read FProject write FProject;
  end;
................................................................................
{$R *.dfm}

{ ---------------------------------------------------------------------------- }
procedure TdmMain.actProjectAddExecute(Sender: TObject);
begin
  TfrmProject.Create(Application).Show;
end {TdmMain.actProjectAddExecute};

{ ---------------------------------------------------------------------------- }
procedure TdmMain.dlgOpenPictureTypeChange(Sender: TObject);
var
  Items: TArray<string>;
  Filter: string;
  CharPos: Integer;
begin
  Items := dlgOpenPicture.Filter.Split(['|']);
  Filter := Items[(dlgOpenPicture.FilterIndex - 1) * 2];
  CharPos := Pos('.', Filter);
  if CharPos > 0 then
    dlgOpenPicture.DefaultExt := Copy(Filter, CharPos + 1);
end {TdmMain.dlgOpenPictureTypeChange};

end.

Changes to Olam/src/Olam.dpr.

6
7
8
9
10
11
12
13
14
15
16
17
18
  F_Projects {frmProjects},
  F_Activities {frmActivities};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmProjects, frmProjects);
  Application.CreateForm(TdmMain, dmMain);
  Application.CreateForm(TfrmActivities, frmActivities);
  Application.Run;
end.







|





6
7
8
9
10
11
12
13
14
15
16
17
18
  F_Projects {frmProjects},
  F_Activities {frmActivities};

{$R *.res}

begin
  Application.Initialize;
//  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmProjects, frmProjects);
  Application.CreateForm(TdmMain, dmMain);
  Application.CreateForm(TfrmActivities, frmActivities);
  Application.Run;
end.