030006000E000C000C001C001C001C001C001C0008000B117E900F>I<1F003F8061C060C060
C0
79C03F801F803FC063E0C0E0C060C06060C03F801F000B107F8F0F>I<1F003F8060C0C0C0C0
60
C060C060C0E07FE03F60006000C070C071807F003E000B107F8F0F>I E
/Fi 28 121
df<000078007C7800FC7801FC7803C4000380000780000780000780000780000780
00078000078000078000FFFC78FFFC78FFFC780780780780780780780780780780780780780
780
780780780780780780780780780780780780780780780780780780780780780780780780781
524
80A31A>12 D<F0F0F0F004047B830E>46
D<00C001C007C0FFC0FFC0FBC003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C00
3C0
03C0FFFFFFFFFFFF10227CA118>49
D<03F0000FFC001FFE003C1F003807807007C07003C0F003
E0E001E06001E02001E00001E00001E00001E00003C00003C0000780000780000F00001E000
03C
0000780000F00001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0F
FFF
E013227EA118>I<01F00007FC001FFF003E0F003807807003C02003C02003C00003C00003C0
00
03C0000780000780000F00001E0003FC0003F80003FE00000F000007800003C00003C00001E
000
01E00001E00001E00001E08001E0C003C0E003C07007803C0F801FFF000FFC0003F00013237
EA1
18>I<FFFFE0FFFFE0FFFFE00001E00003C0000380000780000F00000E00001E00001C00003C
00
00380000780000780000F00000F00000E00001E00001E00001E00003C00003C00003C00003C
000
03C00007800007800007800007800007800007800007800013217EA018>55
D<000FF000007FFC0000FFFF0001F01F0003C00700078002000F0000001E0000003E0000003
C00
00003C000000780000007800000078000000F0000000F0000000F0000000F0000000F000000
0F0
000000F0000000F0000000F00000007800000078000000780000003C0000003C0000003E000
000
1E0000000F0000800780018003C0038001F00F8000FFFF00007FFC00000FF00019257DA31F>
67
D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF70001DEF70001DEF78003DEF380039EF
380
039EF3C0079EF3C0079EF1C0071EF1C0071EF1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1
EF0
701C1EF0783C1EF0783C1EF038381EF03C781EF03C781EF01C701EF01C701EF01EF01EF00EE
01E
F00EE01EF00FE01EF007C01EF007C01EF007C01EF000001E1F237BA22A>77
D<FFFE00FFFF80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF
000
3CF00078F00078F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F
000
00F00000F00000F00000F00000F00000F00000F00000F00000F0000016237BA21F>80
D<FFFC00FFFF80FFFFC0F003E0F000F0F00078F00038F0003CF0003CF0003CF0003CF0003CF
000
38F00078F000F0F003E0FFFFC0FFFF80FFFE00F01E00F00F00F00700F00780F00380F003C0F
001
E0F001E0F000F0F000F0F00078F00038F0003CF0001EF0001EF0000F18237BA21F>82
D<00FF0003FFC007FFF00F83F01E00F03C00203C00007800007800007800007800007800007
C00
003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F00000F00000F80000780
000
78000078000078000078400078E000F0F000F0F801E07F07C03FFF800FFF0001FC0015257EA
31B
>I<07E01FF83FFC3C1E301E200F000F000F000F01FF0FFF3FFF7F0F780FF00FF00FF00FF80F
7C
3F7FFF3FFF1F8F10167E9517>97
D<F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC1F00F80F00F00780F00780F00
3C0
F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F00780F80F00FC3E00FFFE00F7F
800
F3F00012237CA219>I<01FC0007FF000FFF801F07803C0180780000780000700000F00000F0
00
00F00000F00000F00000F000007800007800007800403C00C01F07C00FFFC007FF8001FC001
216
7E9516>I<0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
00
03C00003C003F3C00FFFC01FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0F003C
0F0
03C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>
I<
03F00007FC001FFE003E0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00
000
F000007000007800007800003C00801F07800FFF8007FF0001F80012167E9516>I<01F0F807
FF
F80FFFF81F1F801E0F003C07803C07803C07803C07803C07801E0F001F1F001FFE001FFC003
9F0
003800003800003C00003FFE001FFFC01FFFE03FFFF07801F0F800F8F00078F00078F00078F
000
787800F03E03E01FFFC00FFF8001FC0015217F9518>103
D<F0F0F0F0000000000000000000F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>105
D<F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>108
D<F0F807C0F3FE1FF0FFFF7FF8FE0FF078FC0FE07CF807C03CF807C03CF007803CF007803CF
007
803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803
CF0
07803CF007803CF007803C1E167C9529>I<F1F8F7FCFFFEFE1EF80FF80FF00FF00FF00FF00F
F0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF
80
1F07C03C01E07800F07800F0700070F00078F00078F00078F00078F00078F000787800F0780
0F0
7C01F03E03E01F07C00FFF8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F8
0F
00F00780F00780F007C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F
80F
00FC3E00FFFE00F7F800F3F000F00000F00000F00000F00000F00000F00000F00000F00000F
000
00F0000012207C9519>I<F0E0F3E0F7E0FFE0FF00FC00F800F800F000F000F000F000F000F0
00
F000F000F000F000F000F000F000F0000B167C9511>114
D<07F01FFE3FFF3C0F780378007800
7C003F003FF01FF80FFC01FE001F000F000F400FE00FF81EFFFE3FFC0FF010167F9513>I<0F
00
0F000F000F000F000F00FFF8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F0
00F
000F000F000F080F1C07FC07F803E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00F
F0
0FF00FF00FF00FF00FF00FF00FF00FF00FF01FF83F7FFF7FEF1F8F10167C9519>I<7801F07C
01
E03E03C01E07C00F0780078F0007DE0003FC0001FC0000F80000700000F80001FC0003DC000
39E
00078F000F07801E07801E03C03C01E07800F0F800F81516809516>120
D E /Fj 3 107
df<001F003F00F800E001C001C001C001C001C001C001C001C001C001C001C0
01C001C001C001C003800700FE00F800FE000700038001C001C001C001C001C001C001C001C
001
C001C001C001C001C001C001C000E000F8003F001F102D7DA117>102
D<F800FE000F00038001
C001C001C001C001C001C001C001C001C001C001C001C001C001C001C000E00070003F000F0
03F
007000E001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C003800F0
0FE
00F800102D7DA117>I<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0022D7BA10D>106 D E /Fk 51 123
df<00F8F001F8F003F8F00780F00700F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0
FF
F8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F
00F
00F00F00F00F00F00F00F00F00F00F00F00F00F01420809F18>13
D<007000E001C00380078007
000E001E001E003C003C003C0078007800780078007000F000F000F000F000F000F000F000F
000
F000F000F000F000700078007800780078003C003C003C001E001E000E0007000780038001C
000
E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E0
01E001E000E000F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E
001
E003C003C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<787878781830
30
6060E0050A7D830D>44
D<FFC0FFC0FFC00A037F8B0F>I<03F00007F8001FFE001E1E003C0F00
380700780780780780700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00
3C0
F003C0F003C0F003C0F003C0F003C07807807807807807803807003C0F001E1E001FFE000FF
C00
03F00012207E9E17>48
D<07F0000FFC001FFE00383F00700F00600780E00780E003C04003C040
03C00003C00003C00003C0000780000780000F00000E00001C00003C0000780000E00001C00
003
80000700000E00001C0000380000700000FFFFC0FFFFC0FFFFC0121F7E9E17>50
D<F0F0F0F0000000000000000000000000F0F0F0F004147C930D>58
D<FFFFFFF0FFFFFFF00000
000000000000000000000000000000000000000000000000000000000000FFFFFFF0FFFFFFF
01C
0C7D9023>61
D<001F0000001F0000003F8000003B8000003B8000007BC0000073C0000071C000
00F1E00000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C0780003807800078
03C
0007803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C0007803
C00
0780780007C0780003C0780003C0F00003E01B207F9F1E>65
D<001FC000FFF801FFFC03E03C07
800C0F00001E00003E00003C00007C0000780000780000780000F00000F00000F00000F0000
0F0
0000F00000F00000F000007800007800007800007C00003C00003E00001E00000F000207800
E03
E03E01FFFC00FFF0001FC017227DA01D>67
D<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F000
78F0003CF0003CF0001EF0001EF0000EF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
000
0FF0000FF0001EF0001EF0001EF0003CF0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC001
820
7B9F21>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000
F0
0000F00000F00000FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F0000
0F0
0000F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFF
C0
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFF
F00
FFFF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000
F00000F00000F0000012207B9F1A>I<001FE000FFF801FFFE03E03E07800E0F00001E00003E
00
003C00007C0000780000780000780000F00000F00000F00000F00000F00000F00000F003FEF
003
FE7803FE78001E78001E7C001E3C001E3E001E1E001E0F001E07801E03E03E01FFFE00FFF80
01F
C017227DA01E>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0
F004207C9F0D>73
D<F0003EF0007CF000F8F001F0F003E0F007C0F00780F00F00F01F00F03E00
F07C00F0F800F1F000F3F800F3F800F7FC00FFBC00FF1E00FE1F00FC0F00F80780F00780F00
3C0
F003E0F001E0F000F0F000F8F00078F0003CF0003CF0001EF0001F18207B9F20>75
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
000
00F00000F00000F00000FFFF80FFFF80FFFF8011207B9F19>I<F80001F8FC0003F8FC0003F8
F4
000378F6000778F6000778F6000778F7000F78F3000E78F3000E78F3801E78F3801E78F1801
C78
F1C03C78F1C03C78F1C03C78F0C03878F0E07878F0E07878F0607078F070F078F070F078F03
0E0
78F039E078F039E078F019C078F019C078F019C078F00F8078F00F8078F00F8078F00000781
D20
7B9F28>I<FC0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1C078
F1
E078F1E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F01E78F00E7
8F0
0E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<003F000000FFC000
03
FFF00007E1F8000F807C001F003E001E001E003C000F003C000F00780007807800078078000
780
F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F80
007
C07800078078000780780007803C000F003C000F001E001E001F003E000F807C0007E1F8000
3FF
F00000FFC000003F00001A227DA021>I<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0
F0
00F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F0000
0F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000014207
B9F
1D>I<003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F
00
780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00
003
C0F00003C0F00003C0F00003C07800078078000780781E07803C0F0F003C0F8F001E079E001
F03
FE000F83FC0007E1F80003FFF00000FFF800003F780000007C0000003E0000001E0000001F0
000
000F801A277DA021>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0F0
00
F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00F00F00F00F00F
007
80F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C16207B9F1D>I<01FC00
07
FF800FFFC01F03C03C00C03C00007800007800007800007800007800007C00003C00003F000
01F
E0000FFC0007FE0001FF00003F800007C00003C00003E00001E00001E00001E00001E00001E
000
01C0C003C0F007C0FC0F807FFF001FFE0003F80013227EA019>I<FFFFFFC0FFFFFFC0FFFFFF
C0
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001
E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00000
01E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000
01A
207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F00
0F0
F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F0007C00
0F
F0007E000FF0007E000F78006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E
780
3C3C01C7803C3C01C3803C1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0
781
E0F00F0701E0F0070700E0E0078700E1E0078F00F1E0078E00F1E0038E0071C0038E0071C00
3CE
0073C001DC007B8001DC003B8001DC003B8001DC003B8000F8003F0000F8001F0000F8001F0
028
207F9F2B>87
D<F80000F87C0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F00
03C01F0003E01E0001F03C0000F07C00007878000078F000003CF000001DE000001FE000000
FC0
000007800000078000000780000007800000078000000780000007800000078000000780000
007
8000000780000007800000078000000780001D20809F1E>89
D<07E03FF87FFC701E401F000F00
0F000F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97
D<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F000780078003C013E0F1FFF0
FFE
03F010147E9314>99
D<0007800007800007800007800007800007800007800007800007800007
8000078000078007C7800FF7801FFF803E1F807C0780780780F80780F00780F00780F00780F
007
80F00780F00780F00780780780780F803E1F801FFF800FF78007C78011207E9F17>I<03F000
0F
FC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F00000F00000F0000070000
078
00003C01003E07001FFF0007FE0001F80011147F9314>I<007E01FE03FE078007000F000F00
0F
000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000
F00
0F000F000F000F000F000F20809F0E>I<03E0F00FFFF01FFFF03E3E003C1E00780F00780F00
78
0F00780F00780F003C1E003E3E001FFC003FF80033E0003000003800003FFE003FFF801FFFC
03F
FFE07803F0F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000
F0
00F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF
00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F00000000000
00
0000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0F0F0F0F0F0F0F0F0
F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>108
D<F0FC07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF007803CF007803CF
007
803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803
CF0
07803C1E147D9327>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00F
F0
0FF00FF00FF00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E07801
E0
F000F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001F
800
14147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F00780F0
07
80F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F00000F00000F
000
00F00000F00000F00000F00000F00000111D7D9317>I<03C7800FF7801FFF803E1F807C0F80
78
0780780780F00780F00780F00780F00780F00780F00780F807807807807C0F803E1F801FFF8
00F
F78007C780000780000780000780000780000780000780000780000780000780111D7E9317>
I<
F0E0F3E0F7E0FF00FC00FC00F800F800F000F000F000F000F000F000F000F000F000F000F00
0F0
000B147D9310>I<07F01FFC3FFC780C7800780078007C003FC01FF00FF803F8007C003C003C
C0
3CF07CFFF87FF00FC00E147F9311>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E00
1E
001E001E001E001E001E001E001E001E001E001E001E201FF00FF007C00C1A7F9910>I<F00F
F0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F1
014
7D9317>I<F003C0F003C07803807807807807803C0F003C0F003C0F001E0E001E1E001E1E00
0F
1C000F3C000F3C0007380007380007B80003F00003F00001E00012147F9315>I<7801E07C03
C0
3E07801E0F000F0F00079E0003FC0003F80001F80000F00001F00001F80003FC00079E000F0
F00
0E0F001E07803C03C07801E0F801F01414809315>120
D<F003C0F003C07807807807807C0780
3C0F003C0F001E0F001E1E000E1E000F1C000F1C00073C0007380003B80003B80003B00001F
000
01F00000E00000E00001C00001C00003C0000380000780007F00007E00007C0000121D7F931
5>
I<7FFF7FFF7FFF003E003C007800F800F001E003E007C007800F001F001E003C007C00FFFFF
FFF
FFFF10147F9314>I E /Fl 20 123 df<F8F8F8F8F805057B8410>46
D<00180000380000F800
07F800FFF800FFF800FFF800F8F80000F80000F80000F80000F80000F80000F80000F80000F
800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
800
00F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFFF07FFFF014287CA71
D>
49
D<00FE0003FF800FFFC01FFFE01F07F03C01F87800FC78007C70007CF0003EF0003E60003E
20003E00003E00003E00003E00007C00007C0000780000F80001F00001E00003E00007C0000
F80
001F00003E00007C0000F80001F00003E00003C0000780000F00001E00003C00007FFFFE7FF
FFE
7FFFFE7FFFFE17287EA71D>I<FFFFFFFFFFFFFFFFFFFFFFFF00000F00001E00003C00007800
00
780000F00001F00001E00003E00003C00007C0000F80000F80000F00001F00001E00003E000
03E
00003C00007C00007C00007C0000F80000F80000F80000F80000F80000F00001F00001F0000
1F0
0001F00001F00001F00001F00018277EA61D>55
D<0003F000000003F000000007F800000007F8
00000007780000000F7C0000000F3C0000000F3C0000001F3E0000001E3E0000001E1E00000
03E
1F0000003C1F0000007C0F8000007C0F800000780F800000F807C00000F807C00000F007C00
001
F003E00001F003E00001E003E00003E001F00003E001F00003C001F00007C000F80007FFFFF
800
07FFFFF8000FFFFFFC000FFFFFFC000F00007C001F00003E001F00003E001E00003E003E000
01F
003E00001F003C00001F007C00000F807C00000F80F800000FC0F8000007C0F8000007C0222
A7E
A927>65
D<0003FE00000FFFC0003FFFF8007FFFFC01FE01FC03F8007C07E0001807C000000F80
00001F8000001F0000003E0000003E0000007E0000007C0000007C0000007C000000F800000
0F8
000000F8000000F8000000F8000000F8000000F8000000F8003FFCF8003FFCF8003FFC7C003
FFC
7C00007C7C00007C7E00007C3E00007C3E00007C1F00007C1F80007C0F80007C07C0007C07E
000
7C03F8007C01FE01FC007FFFFC003FFFF8000FFFC00003FE001E2C7CAA27>71
D<FFFFE000FFFFFC00FFFFFE00FFFFFF80F8003FC0F8000FE0F80003F0F80001F0F80000F0F
800
00F8F80000F8F80000F8F80000F8F80000F8F80000F0F80001F0F80003F0F8000FE0F8003FC
0FF
FFFF80FFFFFE00FFFFFC00FFFFE000F801F000F801F000F800F800F800F800F8007C00F8003
C00
F8003E00F8001E00F8001F00F8000F80F8000F80F80007C0F80007C0F80003E0F80001E0F80
001
F0F80000F8F80000F8F800007C1E2A7BA926>82
D<01FC000FFF003FFF803FFFC03C07E03003E0
0001F00001F00001F00001F00001F00003F001FFF007FFF01FFFF03FC1F07E01F0FC01F0F80
1F0
F801F0F801F0FC03F07E0FF07FFFF03FFFF01FF9F00FE1F0141B7E9A1C>97
D<00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
000
7C00007C00007C00FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E007C7C007C7C007CFC007CF
800
7CF8007CF8007CF8007CF8007CF8007CF8007CF8007C7C007C7C007C7E00FC3F00FC1F83FC1
FFF
FC0FFF7C03FE7C01F87C162A7EA91E>100
D<00FC0003FF0007FF800FFFC01F87E03F01E03E00
F07C00F07C0070F80078FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800007800007C00007
C00
003E00003F00181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<F8F8F8F8F800000000
00
0000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>
105
D<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8052A7CA90E>108
D<F87E00F9FF00FBFF80FFFFC0FF0FC0FE07E0FC03E0FC03E0
F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F80
3E0
F803E0F803E0F803E0F803E0F803E0F803E0131B7B9A1E>110
D<00FC7C03FF7C07FFFC0FFFFC
1FC1FC3F00FC3E00FC7E007C7C007CFC007CF8007CF8007CF8007CF8007CF8007CF8007CF80
07C
FC007C7C007C7C007C7E007C3F00FC1FC3FC1FFFFC0FFF7C03FE7C01F87C00007C00007C000
07C
00007C00007C00007C00007C00007C00007C00007C00007C00007C16277E9A1E>113
D<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F800F800F800F
800
F800F800F800F800F800F800F800F8000D1B7B9A14>I<07F8001FFF003FFF807FFF807C0780
F8
0100F80000F80000F80000FC00007F00007FF0003FFC001FFE0007FF0000FF80001FC0000FC
000
07C00007C04007C0E007C0FC1F80FFFF807FFF001FFE0007F800121B7E9A16>I<07C00007C0
00
07C00007C00007C00007C00007C000FFFF80FFFF80FFFF80FFFF8007C00007C00007C00007C
000
07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C
000
07C08007E38003FFC003FFC001FF0000FC0012227FA115>I<F803E0F803E0F803E0F803E0F8
03
E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F
803
E0F803E0F803E0F807E0F807E0FC1FE0FFFFE07FFBE03FF3E01F83E0131B7B9A1E>I<F8001F
F8
001F7C003E7C003E7C003E3E007C3E007C3E007C1F00F81F00F81F00F80F81F00F81F00F81F
007
C3E007C3E007C3E003C3C003E7C001E78001E78001E78000E70000F70000FF00007E00007E0
018
1B7F9A1B>I<FFFFF0FFFFF0FFFFF0FFFFE00007E00007C0000F80001F80001F00003E00007E
00
007C0000F80001F80001F00003E00007E00007C0000F80001F80001F00003E00007E00007FF
FF8
FFFFF8FFFFF8FFFFF8151B7E9A19>122 D E /Fm 12 121
df<FFFFFFFFFFFFFFFC00FFFFFFFF
FFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFFE00001FFF80000
3FF
FE00001FFF8000003FFE00001FFF8000000FFE00001FFF80000003FE00001FFF80000001FE0
000
1FFF80000000FE00001FFF80000000FE00001FFF800000007E00001FFF800000007F00001FF
F80
0000003F00001FFF800000003F00001FFF800000001F00001FFF800000001F00001FFF80000
000
1F00001FFF800000001F00001FFF8000F8001F00001FFF8000F8000F80001FFF8000F8000F8
000
1FFF8000F8000F80001FFF8000F8000F80001FFF8000F8000000001FFF8001F8000000001FF
F80
01F8000000001FFF8001F8000000001FFF8003F8000000001FFF8007F8000000001FFF803FF
800
0000001FFFFFFFF8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFFFFFFF800000
000
1FFFFFFFF8000000001FFF803FF8000000001FFF8007F8000000001FFF8003F8000000001FF
F80
01F8000000001FFF8001F8000000001FFF8001F8000000001FFF8000F80001F0001FFF8000F
800
01F0001FFF8000F80001F0001FFF8000F80003E0001FFF8000F80003E0001FFF8000F80003E
000
1FFF8000000003E0001FFF8000000003E0001FFF8000000007E0001FFF8000000007E0001FF
F80
00000007C0001FFF8000000007C0001FFF800000000FC0001FFF800000000FC0001FFF80000
000
1FC0001FFF800000001FC0001FFF800000003FC0001FFF800000007F80001FFF80000000FF8
000
1FFF80000001FF80001FFF80000007FF80001FFF8000001FFF80001FFF800001FFFF80FFFFF
FFF
FFFFFFFF80FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF00FFFFFFFFFFF
FFF
FF0044477CC64C>69
D<FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFC000FFFC0
00000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000
FFF
C000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC0000
00F
FFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC00
000
0FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC
000
000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FF
FC0
00000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000
FFF
C000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC0000
00F
FFC000000FFFC000000FFFC000000FFFC000000FFFC000000FFFC000FFFFFFFFFCFFFFFFFFF
CFF
FFFFFFFCFFFFFFFFFCFFFFFFFFFC26477EC62B>73
D<0003FFF0000000003FFFFF00000000FFFF
FFE0000001FFFFFFF8000003FF003FFC000007FF800FFE000007FF8007FF000007FF8003FF8
000
07FF8003FFC00007FF8001FFC00007FF8001FFC00003FF0000FFE00001FE0000FFE00000FC0
000
FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00
000
0000FFFFE00000007FFFFFE0000007FFFFFFE000003FFFFCFFE00000FFFE00FFE00003FFF00
0FF
E00007FFC000FFE0000FFF0000FFE0001FFE0000FFE0003FFC0000FFE0007FFC0000FFE0007
FF8
0000FFE000FFF80000FFE000FFF00000FFE000FFF00000FFE000FFF00000FFE000FFF00001F
FE0
00FFF00001FFE000FFF80003FFE0007FFC0007FFE0007FFC000FFFE0003FFE001F7FF8001FF
F80
FE7FFFF007FFFFFC3FFFF003FFFFF01FFFF0007FFFC00FFFF00007FE0003FFF0342E7DAD38>
97
D<00001FFF80000001FFFFF8000007FFFFFE00001FFFFFFF00007FF801FF8000FFE003FFC00
3FF
C003FFC007FF8003FFC007FF0003FFC00FFE0003FFC01FFE0003FFC01FFC0001FF803FFC000
0FF
003FFC00007E007FFC000000007FF8000000007FF800000000FFF800000000FFF800000000F
FF8
00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000
000
00FFF800000000FFF800000000FFF8000000007FFC000000007FFC000000007FFC000000003
FFC
000000003FFE000000001FFE000001F01FFF000001F00FFF000003F007FF800007E007FFC00
007
C003FFE0000FC000FFF8003F80007FFF00FF00001FFFFFFC000007FFFFF0000001FFFFC0000
000
1FFC00002C2E7CAD34>99
D<00003FFE00000001FFFFC000000FFFFFF800003FFFFFFC00007FFC
0FFE0000FFE003FF0001FF8000FF8003FF0000FFC007FF00007FE00FFE00003FF01FFE00003
FF0
1FFC00003FF03FFC00001FF83FFC00001FF87FFC00001FF87FF800001FFC7FF800000FFC7FF
800
000FFCFFF800000FFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFF800000
000
FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007FF
C00
0000007FFC000000003FFC000000003FFC0000007C1FFE0000007C0FFE000000FC0FFF00000
0F8
07FF800001F803FFC00003F001FFE00007E000FFF8001FC0007FFF00FF80001FFFFFFF00000
7FF
FFFC000000FFFFF00000000FFF00002E2E7DAD35>101
D<0000007FE000000007FFF80000003F
FFFC000000FFFFFE000001FFC3FF000007FF03FF80000FFE07FF80001FFC07FF80001FFC07F
F80
003FF807FF80003FF807FF80007FF003FF00007FF003FF00007FF000FC00007FF0003000007
FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000
000
007FF0000000007FF0000000007FF0000000007FF0000000FFFFFFFE0000FFFFFFFE0000FFF
FFF
FE0000FFFFFFFE0000FFFFFFFE0000007FF0000000007FF0000000007FF0000000007FF0000
000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007
FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000
000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007
FF0
000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000
000
007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000003FF
FFF
F800003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF8000029487DC724>I<007FC000
FF
FFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC
000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001F
FC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0000
1FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00
001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC
000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001F
FC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80F
FFF
FF80FFFFFF80FFFFFF8019487CC720>108
D<00FF8007FE0000FFFF803FFFC000FFFF80FFFFF0
00FFFF81FFFFFC00FFFF87F01FFC00FFFF8FC00FFE0003FF9F0007FF0001FF9E0007FF0001F
FBC
0007FF0001FFF80003FF8001FFF80003FF8001FFF00003FF8001FFE00003FF8001FFE00003F
F80
01FFE00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC
000
03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8
001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00
003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF800
1FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF80FFFFFF81F
FFF
FFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFF382E7BAD41>110
D<00FF807F00FFFF81FFC0FFFF87FFF0FFFF8FFFF8FFFF9F8FFCFFFF9F1FFE03FFBE1FFE01F
FBC
1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE003F001FFE000000
1FF
E0000001FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000
001
FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC00
000
01FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC
000
0001FFC0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000272
E7C
AD2F>114
D<000FFE01C000FFFFC7C003FFFFFFC007FFFFFFC01FF001FFC03FC0007FC03F8000
3FC07F00001FC07E00000FC0FE00000FC0FE000007C0FE000007C0FF000007C0FF800007C0F
FC0
000000FFF8000000FFFFC000007FFFFE00007FFFFFE0003FFFFFF8001FFFFFFE000FFFFFFF0
007
FFFFFF8001FFFFFFC0007FFFFFE0001FFFFFF00000FFFFF0000007FFF00000007FF80000001
FF8
F800000FF8F8000007F8FC000007F8FC000003F8FC000003F8FE000003F8FF000003F0FF000
007
F0FF800007F0FFC0000FE0FFF0001FC0FFFC00FF80FFFFFFFF00FC7FFFFC00F01FFFF000E00
3FF
8000252E7CAD2E>I<0001F000000001F000000001F000000001F000000001F000000001F000
00
0003F000000003F000000003F000000007F000000007F000000007F00000000FF00000000FF
000
00001FF00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFF
FFF
FFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0007FF00000007FF00000007FF00000007FF000000
07F
F00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0000
000
7FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00
000
007FF00000007FF00000007FF00000007FF001F0007FF001F0007FF001F0007FF001F0007FF
001
F0007FF001F0007FF001F0007FF001F0007FF001F0007FF003F0003FF803E0003FF807E0001
FFC
07C0001FFE0F80000FFFFF800003FFFE000000FFFC0000001FE00024427EC12D>I<FFFFFF00
3F
FFFCFFFFFF003FFFFCFFFFFF003FFFFCFFFFFF003FFFFCFFFFFF003FFFFC00FFF00003F8000
07F
F80003F000003FFC0007E000001FFE000FE000000FFE001FC000000FFF003F80000007FF807
F00
000003FFC07E00000001FFE0FC00000000FFE1F800000000FFF3F8000000007FFFF00000000
03F
FFE0000000001FFFC0000000000FFF80000000000FFF000000000007FF800000000003FFC00
000
000001FFE00000000001FFE00000000003FFF00000000007FFF8000000000FFFFC000000001
FDF
FE000000003F8FFE000000007F07FF000000007E07FF80000000FC03FFC0000001F801FFE00
000
03F800FFE0000007F0007FF000000FE0007FF800000FC0003FFC00001F80001FFE00003F000
00F
FE00007F000007FF00FFFFF0007FFFFFFFFFF0007FFFFFFFFFF0007FFFFFFFFFF0007FFFFFF
FFF
F0007FFFFF382E7EAD3D>120 D E /Fn 8 117
df<3C00000000003E00000000003FE000000000
3FFFFFFFFF803FFFFFFFFF803FFFFFFFFF803FFFFFFFFF803FFFFFFFFF007FFFFFFFFE007FF
FFF
FFFC007FFFFFFFF8007FFFFFFFF0007FFFFFFFF0007FFFFFFFE0007C000007C0007800000F8
000
7800000F0000F800001F0000F000003E0000F000007C0000F00000F80000F00001F00000000
001
E00000000003E00000000007C00000000007C0000000000F80000000001F80000000001F000
000
00003F00000000003F00000000007F00000000007E0000000000FE0000000000FE000000000
1FE
0000000001FE0000000001FE0000000003FE0000000003FC0000000003FC0000000007FC000
000
0007FC0000000007FC0000000007FC0000000007FC000000000FFC000000000FFC000000000
FFC
000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC000
000
000FFC0000000007F80000000007F80000000001E0000000293B7BB930>55
D<0000001FFE0000E0000003FFFFE001E000001FFFFFF803E000007FFFFFFE07E00001FFFC0
0FF
0FE00007FFC0001FDFE0000FFF000007FFE0003FFC000001FFE0007FF0000000FFE000FFE00
000
007FE001FFC00000003FE003FF800000001FE007FF800000001FE007FF000000000FE00FFE0
000
000007E00FFE0000000007E01FFC0000000007E01FFC0000000003E03FFC0000000003E03FF
800
00000003E07FF80000000001E07FF80000000001E07FF80000000001E07FF0000000000000F
FF0
000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000000
0FF
F0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000
000
FFF0000000000000FFF0000000000000FFF00000000000007FF00000000000007FF80000000
000
007FF80000000001E07FF80000000001E03FF80000000001E03FFC0000000001E01FFC00000
000
01E01FFC0000000003E00FFE0000000003C00FFE0000000007C007FF0000000007C007FF800
000
000F8003FF800000000F8001FFC00000001F0000FFE00000003E00007FF00000007C00003FF
C00
0000F800000FFF000003F0000007FFC0000FE0000001FFFC007FC00000007FFFFFFF0000000
01F
FFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67
D<003FFF00000001FFFFE0
000007FFFFFC00000FF007FE00001FF801FF80001FF800FFC0001FF8007FE0001FF8007FE00
01F
F8007FF0000FF0003FF00007E0003FF00003C0003FF0000000003FF0000000003FF00000000
03F
F0000000003FF0000000FFFFF000000FFFFFF000007FF83FF00003FF803FF00007FE003FF00
01F
FC003FF0003FF8003FF0007FF0003FF0007FE0003FF000FFE0003FF000FFC0003FF000FFC00
03F
F000FFC0003FF000FFC0007FF000FFC0007FF000FFE000FFF0007FE001DFF0003FF003DFFC0
01F
FC0F9FFFE00FFFFE0FFFE001FFF807FFE0003FE001FFE02B267DA52F>97
D<0003FF8000001FFFF000007FFFFC0000FF83FF0003FE00FF8007FC003F800FF8003FC01FF
800
1FE01FF0001FE03FF0001FF03FF0000FF07FE0000FF07FE0000FF87FE0000FF8FFE0000FF8F
FE0
000FF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE000000
0FF
E00000007FE00000007FE00000007FF00000003FF00000783FF00000781FF80000F80FF8000
0F0
07FC0001F003FE0003E001FF000FC000FFC07F80003FFFFE00000FFFFC000001FFC00025267
DA5
2C>101
D<00FF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF00000000
0007FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003F
F00
0000000003FF000000000003FF000000000003FF000000000003FF000000000003FF0000000
000
03FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF0
000
00000003FF003FE0000003FF01FFFC000003FF07FFFE000003FF0F81FF800003FF3C00FF800
003
FF3800FFC00003FF7000FFC00003FFE0007FE00003FFC0007FE00003FFC0007FE00003FF800
07F
E00003FF80007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE0000
3FF
00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007
FE0
0003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003F
F00
007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE
000
03FF00007FE000FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80313C7
DBB
36>104
D<00FF00FF8000FFFF0FFFF800FFFF3FFFFE00FFFFFE03FF00FFFFF000FFC007FFE000
7FE003FFC0003FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000FF
E03
FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF0
000
07FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF00000FF
E03
FF00000FFE03FF00000FFE03FF00000FFC03FF00001FFC03FF00001FF803FF80003FF003FFC
000
7FF003FFE000FFE003FFF001FF8003FFFE07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000
003
FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0
000
000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000
0FF
FFFC000000FFFFFC000000FFFFFC000000FFFFFC00000030377EA536>112
D<00FE01F800FFFE07FF00FFFE1FFF80FFFE3E3FC0FFFE787FE007FE707FE003FEE07FE003F
EE0
7FE003FFC07FE003FFC03FC003FF801F8003FF800F0003FF80000003FF80000003FF0000000
3FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000
003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000
000
03FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000023267
EA5
28>114
D<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F
0000003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF
0FF
FFFFF0FFFFFFF0FFFFFFF003FF000003FF000003FF000003FF000003FF000003FF000003FF0
000
03FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003F
F00
0003FF000003FF000003FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF003C0
3FF
003C01FF807801FF807800FFC0F000FFE1F0003FFFE0000FFF800001FE001E377EB626>116
D E /Fo 65 123
df<000FC3E0007FEFF000E07C7801C0F8780380F83007007000070070000700
700007007000070070000700700007007000FFFFFF80FFFFFF8007007000070070000700700
007
007000070070000700700007007000070070000700700007007000070070000700700007007
000
0700700007007000070070007FE3FF007FE3FF001D20809F1B>11
D<001F80007FC001E0E00381
E00381E00701E0070000070000070000070000070000070000FFFFE0FFFFE00700E00700E00
700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700
E07FC3FE7FC3FE1720809F19>I<000F80F800007FE7FE0000E06E060001C0FC0F000380F80F
00
0700F00F00070070000007007000000700700000070070000007007000000700700000FFFFF
FFF
00FFFFFFFF00070070070007007007000700700700070070070007007007000700700700070
070
070007007007000700700700070070070007007007000700700700070070070007007007000
700
70070007007007007FE3FE3FF07FE3FE3FF02420809F26>14
D<7038F87CFC7EFC7E7C3E0C060C
060C06180C180C381C3018603040200F0E7E9F17>34
D<006000C001800300070006000C001C00
180038003800300070007000700060006000E000E000E000E000E000E000E000E000E000E00
0E0
00E0006000600070007000700030003800380018001C000C00060007000300018000C000600
B2E
7DA112>40
D<C0006000300018001C000C0006000700030003800380018001C001C001C000C000
C000E000E000E000E000E000E000E000E000E000E000E000E000C000C001C001C001C001800
380
03800300070006000C001C00180030006000C0000B2E7DA112>I<70F8FCFC7C0C0C0C181838
30
6040060E7C840D>44
D<FFC0FFC0FFC00A037F8A0F>I<70F8F8F87005057C840D>I<0003000300
0700060006000E000C000C001C0018001800380030003000700060006000E000C000C001C00
180
018001800380030003000700060006000E000C000C001C00180018003800300030007000600
060
00E000C000C000102D7DA117>I<018003801F80FF80E3800380038003800380038003800380
03
80038003800380038003800380038003800380038003800380038003800380FFFEFFFE0F1E7
C9D
17>49
D<03F0000FFC00183E00300F00600F80C00780F007C0F807C0F803C0F803C02003C00007
C0000780000780000F00000E00001C0000380000700000E00001C0000380000300000600C00
C00
C01800C03001807FFF80FFFF80FFFF80121E7E9D17>I<03F0000FFC001C1E00300F00780F80
78
0F80780780380F80000F80000F00000F00001E00003C0003F80003F000001C00000E00000F0
000
07800007800007C02007C0F807C0F807C0F807C0F00780600F80700F003C1E001FFC0003F00
012
1F7E9D17>I<000E00000E00001E00003E00003E00006E0000EE0000CE00018E00038E00030E
00
060E000E0E000C0E00180E00380E00300E00600E00E00E00FFFFF0FFFFF0000E00000E00000
E00
000E00000E00000E00000E0000FFE000FFE0141E7F9D17>I<3803003FFF003FFE003FF8003F
E0
0030000030000030000030000030000030000031F00037FC003E0E003C07003807803003800
003
800003C00003C00003C06003C0F003C0F003C0F00380C00780600700700E003C1E000FF8000
7E0
00121F7E9D17>I<007C0001FE000783000E03800C07801C0780380300380000780000700000
70
0000F3F800F7FE00FC0E00F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C
070
03C07003803803803807001C07000E1E0007FC0001F000121F7E9D17>I<6000007FFFC07FFF
C0
7FFF80600180C00300C00600C00600000C0000180000180000300000600000600000E00000C
000
01C00001C00001C000038000038000038000038000078000078000078000078000078000078
000
078000030000121F7D9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D
>
58
D<70F8F8F8700000000000000000000070F8F8F878181818183030606040051D7C930D>I<00
03800000038000000380000007C0000007C0000007C000000DE000000DE000000DE0000018F
000
0018F0000018F00000307800003078000030780000603C0000603C0000603C0000E01E0000C
01E
0000FFFE0001FFFF0001800F0001800F0003800F800300078003000780070007C0070003C00
F80
03C0FFE03FFEFFE03FFE1F207F9F22>65
D<FFFFE000FFFFF80007803E0007801F0007800F0007
800F8007800F8007800F8007800F8007800F8007800F0007801F0007803E0007807C0007FFF
800
07FFFC0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C0078
007
C00780078007800F8007801F0007803E00FFFFFC00FFFFF0001A1F7E9E20>I<001FC040007F
F0
C001F839C003C00DC0078007C00F0003C01E0003C03E0001C03C0001C07C0001C07C0000C07
800
00C0F80000C0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
078
0000C07C0000C07C0000C03C0000C03E0001801E0001800F0003000780030003C00E0001F81
C00
007FF000001FC0001A217D9F21>I<FFFFFF00FFFFFF0007801F000780070007800300078003
00
0780038007800180078001800780C1800780C1800780C0000780C0000781C00007FFC00007F
FC0
000781C0000780C0000780C0000780C0600780C06007800060078000C0078000C0078000C00
780
01C0078001C0078003C007800F80FFFFFF80FFFFFF801B1F7E9E1F>69
D<FFFFFF00FFFFFF0007
801F000780070007800300078003000780038007800180078001800780C1800780C1800780C
000
0780C0000781C00007FFC00007FFC0000781C0000780C0000780C0000780C0000780C000078
000
0007800000078000000780000007800000078000000780000007800000FFFE0000FFFE00001
91F
7E9E1E>I<000FC020007FF86001F81CE003E006E0078003E00F0001E01E0001E01E0000E03C
00
00E07C0000E07C00006078000060F8000060F8000000F8000000F8000000F8000000F800000
0F8
000000F8007FFCF8007FFC780001E07C0001E07C0001E03C0001E01E0001E01E0001E00F000
1E0
078003E003E003E001F80E60007FFC20000FE0001E217D9F24>I<FFF8FFF8FFF8FFF807800F
00
07800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00078
00F
0007800F0007FFFF0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F000
780
0F0007800F0007800F0007800F0007800F0007800F0007800F00FFF8FFF8FFF8FFF81D1F7E9
E22
>I<FFFCFFFC0780078007800780078007800780078007800780078007800780078007800780
07
800780078007800780078007800780078007800780FFFCFFFC0E1F7F9E10>I<FFFC1FFCFFFC
1F
FC078007C0078007000780060007800C000780180007803000078070000780E0000781C0000
783
80000787000007878000078F8000079BC00007B1E00007E1E00007C0F0000780F0000780780
007
803C0007803C0007801E0007801E0007800F000780078007800780078007C0FFFC3FFCFFFC3
FFC
1E1F7E9E23>75
D<FFFE00FFFE0007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800607800607800607800
607
800E07800E07800C07801C07803C0780FCFFFFFCFFFFFC171F7E9E1C>I<FF80001FF8FFC000
3F
F807C0003F0007C0003F0006E0006F0006E0006F0006E0006F00067000CF00067000CF00067
000
CF000638018F000638018F000638018F00061C030F00061C030F00061C030F00060E060F000
60E
060F00060E060F0006070C0F0006070C0F0006070C0F000603980F000603980F000603980F0
006
01F00F000601F00F000601F00F000F00E00F00FFF0E1FFF8FFF0E1FFF8251F7E9E2A>I<FF80
7F
F8FFC07FF807C0078007E0030007E0030006F0030006F0030006780300063C0300063C03000
61E
0300061E0300060F0300060F0300060783000607C3000603C3000601E3000601E3000600F30
006
00F30006007B0006007B0006003F0006001F0006001F0006000F0006000F000F000700FFF00
700
FFF003001D1F7E9E22>I<001F800000FFF00001E0780007C03E000F801F000F000F001E0007
80
3C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F80001F0F80
001
F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03E0007C01
E00
07800F000F000F801F0007C03E0001F0F80000FFF000001F80001C217D9F23>I<FFFFE000FF
FF
F80007807C0007801E0007801F0007800F0007800F8007800F8007800F8007800F8007800F8
007
800F0007801F0007801E0007807C0007FFF80007FFE00007800000078000000780000007800
000
0780000007800000078000000780000007800000078000000780000007800000FFFC0000FFF
C00
00191F7E9E1F>I<FFFF8000FFFFF0000780F80007803C0007803E0007801E0007801F000780
1F
0007801F0007801F0007801E0007803E0007803C000780F80007FFF00007FF80000781C0000
780
E000078070000780700007807800078078000780780007807C0007807C0007807C0007807C0
C07
807E0C07803E0CFFFC1F18FFFC0FF0000003E01E207E9E21>82
D<07E0800FF9801C1F80300F80
700780600380E00380E00180E00180E00180F00000F000007800007F00003FF0001FFC000FF
E00
03FF00001F800007800003C00003C00001C0C001C0C001C0C001C0C001C0E00180F00380F80
700
FE0E00CFFC0081F80012217D9F19>I<7FFFFFE07FFFFFE0780F01E0700F00E0600F0060600F
00
60E00F0070C00F0030C00F0030C00F0030C00F0030000F0000000F0000000F0000000F00000
00F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000
000
0F0000000F0000000F0000000F000007FFFE0007FFFE001C1F7E9E21>I<FFFC7FF8FFFC7FF8
07
800780078003000780030007800300078003000780030007800300078003000780030007800
300
078003000780030007800300078003000780030007800300078003000780030007800300078
003
0007800300078003000380020003C0060003C0060001C00C0000E0180000783000003FE0000
00F
C0001D207E9E22>I<FFF07FF83FF0FFF07FF83FF00F0007800F800F00078003000F00078003
00
07800FC0060007800FC0060007800FC00600078019E00E0003C019E00C0003C019E00C0003C
039
E00C0001E030F0180001E030F0180001E030F0180000F06078300000F06078300000F060783
000
00F0E07C30000078C03C60000078C03C60000078C03C6000003D801EC000003D801EC000003
D80
1EC000003F000FC000001F000F8000001F000F8000001F000F8000000E00070000000E00070
000
000E000700002C207F9E2F>87
D<7FF83FF87FF83FF807C00F8003C0060001E00E0001F00C0000
F0180000783800007C3000003C7000003E6000001EC000000FC000000F8000000780000007C
000
0007E000000DE000001DF0000018F8000038780000307C0000603C0000E01E0000C01F00018
00F
0003800780030007C00F8007C0FFE01FFEFFE01FFE1F1F7F9E22>I<0804180C301870386030
60
30C060C060C060F87CFC7EFC7E7C3E381C0F0E7B9F17>92
D<1FE0003FF000783800781C00300E
00000E00000E00000E0003FE001FFE003E0E00780E00F80E00F00E30F00E30F00E30F01E307
83F
703FEFE00F878014147E9317>97
D<0E0000FE0000FE00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E3F000EFF800FC3C00F00E00E00F00E00700E00780E00780E0
078
0E00780E00780E00780E00780E00700E00F00F00F00F01E00FC3C00CFF800C3E0015207F9F1
9>
I<03F80FFC1E1E3C1E380C78007000F000F000F000F000F000F0007000780038033C031F0E0
FFC
03F010147E9314>I<000380003F80003F800003800003800003800003800003800003800003
80
00038000038003E3800FFB801E0F803C0780780380780380700380F00380F00380F00380F00
380
F00380F003807003807003807807803807801E1F800FFBF803E3F815207E9F19>I<03F0000F
FC
001E1E003C0F00380700780700700380F00380FFFF80FFFF80F00000F00000F000007000007
800
003801801C03800F070007FE0001F80011147F9314>I<003C00FE01CF038F03060700070007
00
0700070007000700FFF0FFF0070007000700070007000700070007000700070007000700070
007
00070007007FF07FF01020809F0E>I<0001E003E3F00FFF701C1C703C1E00380E00780F0078
0F
00780F00780F00380E003C1E001C1C003FF80033E0003000003000003800003FFE001FFF803
FFF
C07003E07000F0E00070E00070E00070F000F07801E03E07C00FFF0003FC00141F7F9417>I<
0E
0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E0
00E
FF000FC3800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C
00E
01C00E01C00E01C00E01C0FFE7FCFFE7FC16207F9F19>I<1C001E003E001E001C0000000000
00
000000000000000E007E007E000E000E000E000E000E000E000E000E000E000E000E000E000
E00
0E000E00FFC0FFC00A1F809E0C>I<0E0000FE0000FE00000E00000E00000E00000E00000E00
00
0E00000E00000E00000E00000E1FF00E1FF00E0F800E0E000E0C000E18000E30000E70000EF
000
0FF8000F38000E1C000E1E000E0E000E07000E07800E03800E03C0FFCFF8FFCFF815207F9F1
8>
107
D<0E00FE00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B20809F0C>I<0E3F03
F0
00FEFF8FF800FFC1DC1C000F80F80E000F00F00E000E00E00E000E00E00E000E00E00E000E0
0E0
0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000
E00
E00E000E00E00E00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E3E00FEFF00FFC3800F01C00F
01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00
E01
C0FFE7FCFFE7FC16147F9319>I<01F80007FE001E07803C03C03801C07000E07000E0F000F0
F0
00F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE0001F80014147
F93
17>I<0E3F00FEFF80FFC3C00F01E00E00F00E00F00E00780E00780E00780E00780E00780E00
78
0E00780E00700E00F00F00F00F01E00FC3C00EFF800E3E000E00000E00000E00000E00000E0
000
0E00000E0000FFE000FFE000151D7F9319>I<03E1800FF9801E1F803C078078078078038070
03
80F00380F00380F00380F00380F00380F003807003807803807807803C0F801E1F800FF3800
3E3
80000380000380000380000380000380000380000380003FF8003FF8151D7E9318>I<0E78FE
FC
FF9E0F1E0F0C0F000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00F1
47F
9312>I<1F903FF07070E030E030E030F00078007F803FE00FF000F0C078C038C038E038E038
F0
70DFE08F800D147E9312>I<06000600060006000E000E001E003E00FFF8FFF80E000E000E00
0E
000E000E000E000E000E000E000E180E180E180E180E18073007E003C00D1C7F9B12>I<0E01
C0
FE1FC0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E0
1C0
0E01C00E03C00E03C0070FC007FDFC01F1FC16147F9319>I<FF87F8FF87F81E01E00E01C00E
01
800E0180070300070300070300038600038600038E0001CC0001CC0001FC0000F80000F8000
070
0000700000700015147F9318>I<FF9FF3FCFF9FF3FC1C0780F01C0780601C07C0E00E0FC0C0
0E
0CC0C00E0CE0C0070CE18007186180071871800398730003B0330003B0330003B03F0001F03
E00
01E01E0001E01E0000E01C0000C00C001E147F9321>I<7FC7FC7FC7FC0703E0070380038300
01
C70000EE0000EC00007800003800003C00007C0000EE0001C7000187000303800701C00F01E
0FF
87FEFF87FE1714809318>I<FF87F8FF87F81E01E00E01C00E01800E01800703000703000703
00
038600038600038E0001CC0001CC0001FC0000F80000F800007000007000007000006000006
000
00600000C000F0C000F18000F380007F00003C0000151D7F9318>I<3FFF3FFF380E301C703C
60
38607060F001E001C0038007830F030E031C073C063806701EFFFEFFFE10147F9314>I
E /Fp 47 122
df<0030006000C001800300070006000E000C001C001800380038003000700070
0070006000E000E000E000E000E000E000E000E000E000E000E000E000E000E000600070007
000
700030003800380018001C000C000E00060007000300018000C0006000300C327DA413>40
D<C0006000300018000C000E000600070003000380018001C001C000C000E000E000E000600
070
0070007000700070007000700070007000700070007000700070006000E000E000E000C001C
001
C0018003800300070006000E000C00180030006000C0000C327DA413>I<70F8FCFC7C0C0C0C
0C
181830306040060F7C840E>44
D<FFE0FFE0FFE00B037F8B10>I<70F8F8F87005057C840E>I<01
8003800F80FF80F380038003800380038003800380038003800380038003800380038003800
380
03800380038003800380038003800380038003800380FFFEFFFE0F217CA018>49
D<03F0000FFC001C1F00300F806007806003C0C003C0F003E0F801E0F801E0F801E02003E00
003
E00003C00003C0000780000780000F00001E00001C0000380000700000E00001C0000380000
700
600E00600C00601800E03000C07FFFC0FFFFC0FFFFC013217EA018>I<000E00000E00001E00
00
1E00003E00003E00006E0000EE0000CE0001CE00018E00030E00070E00060E000E0E000C0E0
018
0E00180E00300E00700E00600E00E00E00FFFFF8FFFFF8000E00000E00000E00000E00000E0
000
0E00000E0001FFF001FFF015217FA018>52
D<1000801C07801FFF001FFE001FFC001FF0001800
0018000018000018000018000018000018F8001BFE001F0F001C07801803801803C00001C00
001
E00001E00001E00001E06001E0F001E0F001E0F001C0C003C06003C06003803007001C1E000
FFC
0003F00013227EA018>I<6000007000007FFFE07FFFE07FFFC06000C0E00180C00300C00300
C0
0600000C00000C0000180000180000300000300000600000600000E00000E00000E00001C00
001
C00001C00001C00001C00003C00003C00003C00003C00003C00003C00003C00003C00001800
013
237DA118>55
D<01F00007FC000E0F001807803803803001C07001C07001C07001C07801C07803
803E03803F07001FCE000FFC0003F80003FC000F7F001C3F80380F807007C07003C0E001E0E
000
E0E000E0E000E0E000E0E000E07001C07001C03803801E0F000FFE0003F00013227EA018>I<
01
F00007FC000E0E001C0700380380780380700380F001C0F001C0F001C0F001E0F001E0F001E
0F0
01E0F001E07001E07003E07803E03807E01C0DE00FF9E007F1E00081C00001C00003C000038
000
0380300700780700780E00701C003838001FF0000FC00013227EA018>I<000180000003C000
00
03C0000003C0000007E0000007E0000007E000000FF000000CF000000CF000001CF80000187
800
0018780000383C0000303C0000303C0000601E0000601E0000601E0000C00F0000C00F0000C
00F
0001FFFF8001FFFF8001800780030003C0030003C0030003C0060001E0060001E0060001E00
E00
00F01F0001F0FFC00FFFFFC00FFF20237EA225>65
D<000FE010003FF83000F81C7001E0067003
C003F0078001F00F0000F01E0000F03E0000703C0000707C0000707C0000307800003078000
030
F8000030F8000000F8000000F8000000F8000000F8000000F8000000F800000078000030780
000
307C0000307C0000303C0000603E0000601E0000600F0000C0078000C003C0018001E003000
0F8
0E00003FF800000FE0001C247DA223>67
D<FFFFF000FFFFFE0007801F00078007C0078003C007
8001E0078000F0078000F8078000780780007C0780003C0780003C0780003C0780003E07800
03E
0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C078
000
7C0780007807800078078000F0078001E0078003E0078007C007801F00FFFFFE00FFFFF8001
F22
7EA125>I<FFFFFFC0FFFFFFC007800FC0078003C0078001C0078000C0078000E0078000E007
80
0060078060600780606007806060078060000780E0000781E00007FFE00007FFE0000781E00
007
80E000078060000780600007806018078060180780001807800030078000300780003007800
030
07800070078000F0078001F0078007E0FFFFFFE0FFFFFFE01D227EA121>I<FFFFFFC0FFFFFF
C0
07800FC0078003C0078001C0078000C0078000E0078000E0078000600780006007806060078
060
6007806000078060000780E0000781E00007FFE00007FFE0000781E0000780E000078060000
780
600007806000078060000780000007800000078000000780000007800000078000000780000
007
800000FFFE0000FFFE00001B227EA120>I<FFFC3FFFFFFC3FFF078001E0078001E0078001E0
07
8001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007800
1E0
07FFFFE007FFFFE0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078
001
E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0FFFC3FFFFFFC3FFF2
022
7EA125>72
D<FFFCFFFC0780078007800780078007800780078007800780078007800780078007
80078007800780078007800780078007800780078007800780078007800780FFFCFFFC0E227
EA1
12>I<03FFF003FFF0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00
000F00700F00F80F00F80F00F80F00F01E00601C003878001FF00007C00014237EA119>I<FF
C0
0003FFFFE00007FF07E00007E007E00007E006F0000DE006F0000DE006F0000DE006780019E
006
780019E006780019E0063C0031E0063C0031E0063C0031E0061E0061E0061E0061E0061E006
1E0
060F00C1E0060F00C1E006078181E006078181E006078181E00603C301E00603C301E00603C
301
E00601E601E00601E601E00601E601E00600FC01E00600FC01E00600FC01E006007801E01F8
078
01E0FFF0783FFFFFF0303FFF28227EA12D>77
D<FF800FFFFFC00FFF07C001F807E0006007F000
6006F000600678006006780060063C0060063E0060061E0060060F0060060F0060060780600
607
C0600603C0600601E0600601E0600600F060060078600600786006003C6006003C6006001E6
006
000F6006000F60060007E0060007E0060003E0060001E0060001E01F8000E0FFF000E0FFF00
060
20227EA125>I<FFFFF000FFFFFC0007803F0007800F8007800780078003C0078003C0078003
E0
078003E0078003E0078003E0078003E0078003C0078003C00780078007800F8007803F0007F
FFC
0007FFF00007800000078000000780000007800000078000000780000007800000078000000
780
000007800000078000000780000007800000FFFC0000FFFC00001B227EA121>80
D<FFFFE00000FFFFF8000007803E000007800F00000780078000078007C000078003E000078
003
E000078003E000078003E000078003E000078003E000078007C000078007800007800F00000
780
3E000007FFF8000007FFF00000078078000007803C000007801E000007800E000007800F000
007
800F000007800F000007800F000007800F800007800F800007800F800007800F818007800FC
180
078007C180FFFC03E300FFFC01FE000000007C0021237EA124>82
D<03F0200FFC601C0EE03803
E07001E07001E0E000E0E000E0E00060E00060E00060F00000F000007800007F00003FF0001
FFE
000FFF0003FF80003FC00007E00001E00000F00000F0000070C00070C00070C00070C00070E
000
60E000E0F000C0F801C0EF0380C7FF0081FC0014247DA21B>I<7FFFFFF87FFFFFF87C0780F8
70
0780386007801860078018E007801CC007800CC007800CC007800CC007800CC007800C00078
000
000780000007800000078000000780000007800000078000000780000007800000078000000
780
000007800000078000000780000007800000078000000780000007800000078000000780000
3FF
FF0003FFFF001E227EA123>I<0FE0001FF8003C1C003C0E00180700000700000700000F0003
FF
000FFF003F07007C0700780700F00700F00718F00718F00F18780F187C3FB83FF3F00FC3C01
515
7E9418>97
D<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E1F800E7FE00FC0F00F00780E00380E003C0E001C0E001E0E001E0E0
01E
0E001E0E001E0E001E0E001E0E001C0E003C0F00380F80700FC1F00C7FC00C1F0017237FA21
B>
I<01FE0007FF000F07801C0780380300780000700000F00000F00000F00000F00000F00000F
000
00F000007800007800C03C00C01E01800F030007FE0001F80012157E9416>I<0000E0000FE0
00
0FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E003F0E
007
FEE01F07E03C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E
070
00E07800E03801E03C03E01E0EF00FFCFE03F0FE17237EA21B>I<01FC0007FF000F07801C03
C0
3801C07801E07000E0FFFFE0FFFFE0F00000F00000F00000F00000F000007800007800603C0
060
1E00C00F838007FF0000FC0013157F9416>I<003C00FE01CF038F038F070007000700070007
00
0700070007000700FFF8FFF8070007000700070007000700070007000700070007000700070
007
000700070007007FF87FF8102380A20F>I<0000F001F1F807FFB80F1F381E0F001C07003C07
80
3C07803C07803C07803C07801C07001E0F000F1E001FFC0019F0001800001800001C00001FF
F00
0FFFC01FFFE03801F0700070E00038E00038E00038E000387000707800F01E03C00FFF8001F
C00
15217F9518>I<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E
00
000E00000E00000E00000E1F800E7FC00FC1E00F80F00F00700E00700E00700E00700E00700
E00
700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF18237FA
21B
>I<1C001E003E001E001C00000000000000000000000000000000000E00FE00FE001E000E00
0E
000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0FFC00A227FA10E>I<
01
C003E003E003E001C00000000000000000000000000000000001E00FE00FE001E000E000E00
0E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
060
C0F1C0F1807F003E000B2C82A10F>I<0E0000FE0000FE00001E00000E00000E00000E00000E
00
000E00000E00000E00000E00000E00000E00000E0FFC0E0FFC0E07E00E03800E07000E0E000
E18
000E30000E78000EF8000F9C000F1E000E0E000E07000E07800E03C00E01C00E01E00E01F0F
FE3
FEFFE3FE17237FA21A>I<0E1FC07F00FE7FE1FF80FEC0F303C01F807E01E00F003C00E00E00
38
00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00
E00
3800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFEFFE3FF8FF
E27
157F942A>109
D<0E1F80FE7FC0FFC1E01F80F00F00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF18157F941B>
I<
01FC0007FF000F07801C01C03800E07800F0700070F00078F00078F00078F00078F00078F00
078
F000787000707800F03800E01C01C00F078007FF0001FC0015157F9418>I<0E1F80FE7FE0FF
C1
F00F00780E00780E003C0E003C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0
E00
3C0F00780F80700FC1F00E7FC00E1F000E00000E00000E00000E00000E00000E00000E00000
E00
00FFE000FFE000171F7F941B>I<0E3CFEFEFFCF1F8F0F060F000E000E000E000E000E000E00
0E
000E000E000E000E000E000E00FFF0FFF010157F9413>114
D<0F883FF87078E038E018E018E0
18F0007F003FE01FF001F8003CC01CC01CE01CE01CF018F878DFF08FC00E157E9413>I<0600
06
000600060006000E000E000E001E003E00FFF8FFF80E000E000E000E000E000E000E000E000
E00
0E000E0C0E0C0E0C0E0C0E0C0E08071803F001E00E1F7F9E13>I<0E0070FE07F0FE07F01E00
F0
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0
0F0
0E01F007037803FE7F01F87F18157F941B>I<FF8FF9FFFF8FF9FF1E01C07C1C03C0380E03E0
30
0E03E0300E0660300706706007067060070E7060038C30C0038C38C0039C38C001D8198001D
81D
8001D81D8001F00F8000F00F0000F00F0000E007000060060020157F9423>119
D<FFC3FEFFC3FE1E00F80E00600E00600700C00700C00700C003818003818003C38001C3000
1C3
0000E60000E60000E600007C00007C00007C000038000038000030000030000070000060000
060
00F0C000F1C000F380007F00003E0000171F7F941A>121 D E /Fq 20 118
df<FFFF80FFFF80FFFF8011037F9016>45
D<FFFFFFE00000FFFFFFFC000007E0007F000003E0
000F800003E00007C00003E00001E00003E00000F00003E00000780003E000007C0003E0000
03E
0003E000003E0003E000001F0003E000001F0003E000000F8003E000000F8003E000000FC00
3E0
00000FC003E0000007C003E0000007C003E0000007E003E0000007E003E0000007E003E0000
007
E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E00
3E0
000007E003E0000007C003E0000007C003E0000007C003E000000FC003E000000F8003E0000
00F
8003E000000F8003E000001F0003E000001F0003E000003E0003E000007C0003E0000078000
3E0
0000F80003E00001F00003E00007E00003E0000F800007E0007F0000FFFFFFFC0000FFFFFFE
000
002B317CB033>68
D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E
000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E
000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00007F000FFFF80FFF
F80
11317DB017>73
D<FFF00000007FF8FFF8000000FFF807F8000000FF0003F8000000FE00037C00
0001BE00037C000001BE00037C000001BE00033E0000033E00033E0000033E00033E0000033
E00
031F0000063E00031F0000063E00031F0000063E00030F80000C3E00030F80000C3E00030F8
000
0C3E000307C000183E000307C000183E000307C000183E000303E000303E000303E000303E0
003
03E000303E000301F000603E000301F000603E000301F000C03E000300F800C03E000300F80
0C0
3E0003007C01803E0003007C01803E0003007C01803E0003003E03003E0003003E03003E000
300
3E03003E0003001F06003E0003001F06003E0003001F06003E0003000F8C003E0003000F8C0
03E
0003000F8C003E00030007D8003E00030007D8003E00030007D8003E00030003F0003E00030
003
F0003E00030003F0003E00078001E0003E000FC001E0007F00FFFC01E00FFFF8FFFC00C00FF
FF8
35317CB03D>77
D<FFFFFFC000FFFFFFF80007E000FE0003E0001F0003E0000F8003E00007C003
E00003E003E00003F003E00001F003E00001F003E00001F803E00001F803E00001F803E0000
1F8
03E00001F803E00001F803E00001F003E00001F003E00003F003E00003E003E00007C003E00
00F
8003E0001F0003E000FE0003FFFFF80003FFFFC00003E000000003E000000003E000000003E
000
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000000
3E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000000
003
E000000007F0000000FFFF800000FFFF80000025317CB02D>80
D<007F802001FFE06007C0F860
0F001CE01E000FE03C0007E0380003E0780001E0700001E0700000E0F00000E0F00000E0F00
000
60F0000060F0000060F8000060F80000007C0000007E0000003F0000003FC000001FF800000
FFF
800007FFF80003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F
000
0000F0000000F8000000F8C0000078C0000078C0000078C0000078C0000078E0000078E0000
070
F00000F0F00000E0F80000E0FC0001C0FE000380E7800700C1F01E00C07FFC00800FF0001D3
37C
B125>83
D<01FE00000FFFC0001C03E0003C00F0003E0078003E003C003E001C0008001E000000
1E0000001E0000001E0000001E000001FE00003FFE0001FF1E0007F01E000F801E001F001E0
03E
001E007C001E007C001E00F8001E0CF8001E0CF8001E0CF8003E0CF8003E0C7C007E0C3E00D
F1C
1F038FB80FFF07F003F803C01E1F7D9E21>97
D<003FC000FFF803E01C07801E0F003E1E003E1E
003E3C00087C00007C0000780000F80000F80000F80000F80000F80000F80000F80000F8000
0F8
00007C00007C00007C00003E00031E00031F00060F800E07C01C03F03800FFE0003F80181F7
D9E
1D>99
D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001
E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
000
01E0003F81E000FFE1E003E079E007800DE00F0007E01E0003E01E0001E03C0001E07C0001E
07C
0001E0780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F8000
1E0
F80001E0780001E07C0001E07C0001E03C0001E03E0003E01E0007E00F000FE007801DE003E
071
F001FFE1FF003F01FF20327DB125>I<003F800000FFE00003E0F80007803C000F001E001E00
1E
001E000F003C000F007C000F007C000F8078000780F8000780FFFFFF80FFFFFF80F8000000F
800
0000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0001801E00018
00F
0003000F80060007C00E0001F03C0000FFF000001FC000191F7E9E1D>I<0003E0001FF8003C
38
00707C00F07C01E07C01E03803C00003C00003C00003C00003C00003C00003C00003C00003C
000
03C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C
000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
000
03C00003C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000000F0007F03
F8
01FFCF1C03C1FC1C0780F8180F0078001F007C001E003C003E003E003E003E003E003E003E0
03E
003E003E003E003E003E003E001E003C001F007C000F0078000780F0000FC1E0000DFFC0001
C7F
000018000000180000001C0000001C0000001E0000000FFFF8000FFFFF0007FFFF800FFFFFC
01E
0007E0380001F07000007070000078E0000038E0000038E0000038E0000038E000003870000
070
780000F03C0001E01E0003C007C01F0001FFFC00003FE0001E2F7E9F21>I<07000F801F801F
80
0F800700000000000000000000000000000000000000000000000780FF80FF800F800780078
007
800780078007800780078007800780078007800780078007800780078007800780078007800
780
078007800FC0FFF8FFF80D307EAF12>105
D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8
000F9803E3007C0007B001E6003C0007E000FC001E0007C000F8001E0007C000F8001E0007C
000
F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001
E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007800
0F0
001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0
007
8000F0001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FF
F83
FFF0341F7E9E38>109
D<0781FE0000FF87FF8000FF8E07C0000F9803E00007B001E00007E000
F00007C000F00007C000F00007C000F000078000F000078000F000078000F000078000F0000
780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00
007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001F
800
FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000FFF80001E03C0007800F000F0007801E
00
03C01E0003C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F
8F8
0000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E000
3C0
1E0003C00F00078007C01F0001F07C0000FFF800001FC0001D1F7E9E21>I<0783E0FF8FF8FF
9C
7C0FB07C07F07C07E03807C00007C00007C0000780000780000780000780000780000780000
780
000780000780000780000780000780000780000780000780000780000780000780000780000
FC0
00FFFE00FFFE00161F7E9E19>114
D<01FC100FFF301E03F03800F0700070E00070E00030E000
30E00030F00030F800007E00003FF0001FFF000FFF8003FFE0003FF00003F8000078C0003CC
000
3CC0001CE0001CE0001CF0001CF00018F80038FC0070EF01E0C3FFC080FE00161F7E9E1A>I<
00
C00000C00000C00000C00000C00001C00001C00001C00003C00003C00007C0000FC0001FC00
0FF
FFE0FFFFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00
003
C00003C00003C00003C00003C00003C03003C03003C03003C03003C03003C03003C03003C03
001
E06001E06000F0C0007F80001F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F80
01
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000
780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00
007
8000F000078000F000078000F000078000F000078001F000078001F000078003F000038007F
000
03C00EF00001F03CF80000FFF0FF80003FC0FF80211F7E9E25>I E /Fr
5 85
df<00000000600000000000E00000000000E00000000001E00000000001F00000000003F0
0000000003F00000000007F0000000000FF0000000000FF0000000001BF0000000001BF0000
000
0033F00000000033F00000000063F00000000063F000000000C3F000000001C3F0000000018
3F0
0000000303F00000000303F00000000603F80000000603F80000000C01F80000000C01F8000
000
1801F80000003801F80000003001F80000006001F80000006001F8000000C001F8000000C00
1F8
0000018001F8000001FFFFF8000003FFFFF80000070001F80000060001F800000C0001F8000
00C
0001F80000180001FC0000180001FC0000300000FC0000300000FC0000600000FC0000E0000
0FC
0000C00000FC0001C00000FC0003C00000FC000FE00003FC00FFFC003FFFE0FFF8003FFFE02
B33
7CB234>65
D<000FFFFFFC00000FFFFFFF8000007F000FC000007E0003E000007E0001F000007E
0000F800007E00007C0000FC00007C0000FC00003E0000FC00003E0000FC00003E0001F8000
01E
0001F800001F0001F800001F0001F800001F0003F000001F0003F000001F0003F000001F000
3F0
00001F0007E000003F0007E000003F0007E000003F0007E000003F000FC000003E000FC0000
07E
000FC000007E000FC000007E001F8000007C001F800000FC001F800000FC001F800000F8003
F00
0001F8003F000001F0003F000003F0003F000003E0007E000007E0007E000007C0007E00000
F80
007E00000F0000FC00001F0000FC00003E0000FC00007C0000FC0000F80001F80001F00001F
800
07C00001F8000F800003F8007E0000FFFFFFF80000FFFFFFC0000030317BB035>68
D<000FFFFFFFF8000FFFFFFFF800007F0003F800007E0000F800007E00007800007E0000780
000
7E0000300000FC0000300000FC0000300000FC0000300000FC0000300001F80000300001F80
000
300001F80000300001F80000600003F00180600003F00180000003F00180000003F00180000
007
E00300000007E00300000007E00700000007E01F0000000FFFFE0000000FFFFE0000000FC01
E00
00000FC00E0000001F800C0000001F800C0000001F800C0000001F800C0000003F001800000
03F
00180000003F00000000003F00000000007E00000000007E00000000007E00000000007E000
000
0000FC0000000000FC0000000000FC0000000000FC0000000001F80000000001F8000000000
1F8
0000000003F800000000FFFFF0000000FFFFF00000002D317BB02E>70
D<000FFFFFE000000FFF
FFFC0000007F003F0000007E000F8000007E0007C000007E0003E000007E0003F00000FC000
1F0
0000FC0001F00000FC0001F00000FC0001F00001F80003F00001F80003F00001F80003F0000
1F8
0003E00003F00007E00003F00007C00003F0000FC00003F0001F800007E0003F000007E0007
C00
0007E000F8000007E007E000000FFFFF8000000FFFFF0000000FC00FC000000FC007E000001
F80
03F000001F8001F000001F8001F800001F8001F800003F0001F800003F0001F800003F0001F
800
003F0001F800007E0003F000007E0003F000007E0003F000007E0003F00000FC0007E00000F
C00
07E00000FC0007E00000FC0007E01801F80007E03001F80007E03001F80007E06003F80003E
060
FFFFE001F1C0FFFFC000FF80000000003E002D327BB033>82
D<07FFFFFFFFF007FFFFFFFFF00F
E007F007F00F8007E001F00E0007E000E00C0007E000E01C0007E000E018000FC000E018000
FC0
00E030000FC000C030000FC000C030001F8000C060001F8000C060001F8000C060001F8000C
0C0
003F00018000003F00000000003F00000000003F00000000007E00000000007E00000000007
E00
000000007E0000000000FC0000000000FC0000000000FC0000000000FC0000000001F800000
000
01F80000000001F80000000001F80000000003F00000000003F00000000003F00000000003F
000
00000007E00000000007E00000000007E00000000007E0000000000FC0000000000FC000000
000
0FC0000000000FC0000000001F80000000001F80000000001F80000000003F800000007FFFF
F80
00007FFFFF8000002C3174B032>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 75 361 a Fn(Chapter)31 b(7)75 568 y Fm(External)40 b(In)m(terfaces)75
809 y Fl(7.1)59 b(Generalized)20 b(Requests)75 910 y Fo(The)11
b(goal)f(of)h(this)g Fk(MPI-2)f Fo(extension)h(is)g(to)f(allo)o(w)h(users)g
(to)f(de\014ne)i(new)f(non)o(blo)q(c)o(king)h(op)q(erations.)18
b(Suc)o(h)75 967 y(an)11 b(outstanding)h(non)o(blo)q(c)o(king)g(op)
q(eration)
g(is)f(represen)o(ted)h(b)o(y)f(a)g(\(generalized\))i(request.)18
b(The)12 b(request)75 1023 y(is)j(created)g(b)o(y)g(a)f(call)i(to)e
Fk(MPI)p 602 1023 14 2 v 16 w(GR)p 677 1023 V 17 w(ST)l(ART)p
Fo(.)h(The)g(call)h(asso)q(ciates)e(with)h(the)g(request)g(callbac)o(ks)g
(func-)75 1080 y(tions)f(that)f(are)g(in)o(v)o(ok)o(ed)h(b)o(y)g(MPI)g(for)
f
(progressing,)g(cancelling)j(and)e(completing)h(the)f(request.)19
b(Suc)o(h)75 1136 y(request,)f(once)g(created,)h(can)f(b)q(e)g(manipulated)
h
(as)f(a)f(regular,)i(nonp)q(ersisten)o(t)f(request:)25 b(The)19
b(main)75 1193 y(user)c(co)q(de)g(determines)g(when)g(a)f(generalized)j
(request)d(is)h(complete,)g(determines)g(the)g(status)f(of)g(that)75
1249 y(request,)h(and)g(deallo)q(cates)i(it,)e(b)o(y)g(using)h
Fk(MPI)p 891 1249 V 16 w Fj(f)p Fk(TEST)p Fj(j)p Fk(W)l(AIT)p
Fj(gf)p Fk(ANY)p Fj(j)p Fk(SOME)p Fj(j)p Fk(ALL)p Fj(g)p Fo(.)j(It)c(can)g
(test)g(the)75 1306 y(status)f(of)h(the)h(request,)f(without)g(deallo)q
(cating)i(it,)e(with)h(a)f(call)h(to)f Fk(MPI)p 1358 1306 V
15 w(REQUEST)p 1576 1306 V 18 w(GET)p 1682 1306 V 17 w(ST)l(A)l(TUS)p
Fo(.)75 1362 y(It)g(can)h(cancel)g(it,)f(with)h(a)e(call)j(to)d
Fk(MPI)p 767 1362 V 16 w(CANCEL)p Fo(.)166 1418 y(A)f(fundamen)o(tal)
h(prop)q
(ert)o(y)f(of)g(non)o(blo)q(c)o(king)i(op)q(erations)e(is)h(that)
f(progress)g
(to)o(w)o(ard)e(the)j(comple-)75 1475 y(tion)g(of)f(suc)o(h)g(op)q(eration)
h
(o)q(ccurs)g(async)o(hronously)l(,)g(with)g(no)f(explicit)j(in)o(v)o(olv)o
(emen)o(t)d(of)g(the)h(main)g(user)75 1531 y(program.)28 b(The)19
b(basic)g(design)h(of)e(generalized)i(requests)e(statis\014es)g(this)
h(prop)q
(ert)o(y)l(.)30 b(A)18 b(generalized)75 1588 y(request)d(ma)o(y)l(,)g(at)f
(an)o(y)h(p)q(oin)o(t)h(in)g(time,)f(progress)f(using)i(one)g(of)e(the)i
(follo)o(wing)g(t)o(w)o(o)d(mec)o(hanisms,)131 1682 y(1.)22
b(Progress)c(is)i(triggered)f(b)o(y)g(an)h(\\MPI)f(ev)o(en)o(t";)h(namely)l
(,)h(the)e(completion)i(of)e(a)g(non)o(blo)q(c)o(king)189 1738
y(op)q(eration.)g(The)13 b(generalized)i(request)e(is)g(asso)q(ciated)
g(with)
h(a)e(list)i(of)e(requests.)19 b(Up)q(on)14 b(comple-)189 1795
y(tion)h(of)f(one)h(of)f(the)h(a)f(requests)h(in)g(the)g(list,)g(the)g
(progress)f(handler)i(is)f(in)o(v)o(ok)o(ed.)20 b(This)15 b(handler)189
1851 y(can)j(start)g(new)h(comm)o(unications,)h(asso)q(ciate)e(the)h
(generalized)i(request)d(with)i(a)e(new)h(list)g(of)189 1907
y(requests,)14 b(or)h(mark)g(the)g(generalized)i(request)e(as)g(done.)131
2001 y(2.)22 b(Progress)13 b(is)i(triggered)f(b)o(y)g(ev)o(en)o(ts)g(that)g
(are)g(external)g(to)g(MPI.)g(E.g.,)f(progress)g(can)i(b)q(e)g(due)g(to)189
2058 y(the)d(completion)g(of)g(an)g(I/O)g(op)q(eration)g(that)f(in)o(v)
o(ok)o
(es)h(a)f(signal)i(handler)g(or)e(w)o(ak)o(es)g(up)h(a)f(thread;)189
2114 y(or)h(it)i(can)g(b)q(e)g(e\013ected)f(b)o(y)g(a)g(p)q(olling)
j(thread)d
(or)g(a)g(timer)g(signal.)20 b(In)14 b(suc)o(h)g(a)f(case,)g(the)h(user)f
(will)189 2171 y(use)j(mec)o(hanisms)g(external)g(to)f(MPI)g(\(signal)h
(handlers,)g(threads\))f(to)g(cause)h(the)g(execution)g(of)189
2227 y(handling)k(co)q(de)f(when)f(the)h(ev)o(en)o(t)f(o)q(ccurs.)29
b(The)19 b(t)o(w)o(o)e(MPI)h(functions)h Fk(MPI)p 1557 2227
V 16 w(GR)p 1632 2227 V 17 w(CONTINUE)189 2284 y Fo(and)e Fk(MPI)p
364 2284 V 16 w(GR)p 439 2284 V 17 w(COMPLETE)g Fo(can)h(b)q(e)g(used)g(in)
g
(suc)o(h)f(handling)i(co)q(de)f(to)f(c)o(hange)g(the)h(progress)189
2340 y(mec)o(hanims)12 b(of)g(a)g(generalized)i(request)e(or)g(to)
f(indicate)
j(to)d(MPI)h(that)g(the)g(request)g(is)h(complete.)75 2462
y Fi(7.1.1)49 b(Calls)75 2548 y Fo(A)15 b(new)h(generalized)h(request)e(is)
h
(created)f(with)-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498
y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)964 2828 y Fo(1)p eop
%%Page: 2 2
bop 75 -100 a Fo(2)894 b Fg(CHAPTER)15 b(7.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 49 y Fk(MPI)p 160 49 14 2 v 16 w(GR)p
235 49 V 17 w(ST)l(ART\(count,)13 b(a)o(rra)o(y)p 638 49 V
14 w(of)p 689 49 V 16 w(requests,)g(p)o(rogress)p 1037 49 V
16 w(fn,)e(complete)p 1286 49 V 15 w(fn,)g(cancel)p 1478 49
V 17 w(fn,)g(extra)p 1651 49 V 16 w(state,)i(gen)p 1850 49
V 16 w(request\))117 183 y Ff(IN)155 b Fk(count)482 b Ff(Num)o(b)q(er)14
b(of)f(requests)j(in)d(arra)o(y)h(\(nonnegativ)o(e)g(in)o(teger\))117
258 y(IN)155 b Fk(a)o(rra)o(y)p 416 258 V 15 w(of)p 468 258
V 16 w(requests)272 b Ff(List)14 b(of)g(requests)i(whic)o(h)d(completion)g
(triggers)h(progress)i(of)905 315 y(the)f(generalized)f(request)117
390 y(IN)155 b Fk(p)o(rogress)p 475 390 V 17 w(fn)379 b Ff(Request)10
b(progress)h(or)e(completion)f(marking)f(callbac)o(k)i(func-)905
446 y(tion)14 b(for)f Fe(gen)p 1116 446 13 2 v 16 w(request)i
Ff(\(function\))117 521 y(IN)155 b Fk(complete)p 493 521 14
2 v 15 w(fn)363 b Ff(Request)10 b(complete)f(callbac)o(k)g(function)g(for)f
Fe(gen)p 1663 521 13 2 v 16 w(request)j Ff(\(func-)905 578
y(tion\))117 653 y(IN)155 b Fk(cancel)p 437 653 14 2 v 18 w(fn)416
b Ff(Request)10 b(cancel/failure)f(callbac)o(k)g(function)g(for)g
Fe(gen)p 1748 653 13 2 v 15 w(request)905 709 y Ff(\(function\))117
784 y(IN)155 b Fk(extra)p 416 784 14 2 v 17 w(state)384 b Ff(extra)15
b(state)117 860 y(OUT)108 b Fk(gen)p 387 860 V 17 w(request)369
b Fe(MPI)13 b Ff(generalized)i(request)h(\(handle\))166 984
y Fo(The)f(call)i(starts)d(a)g(generalized)j(request)f(and)f(returns)g(a)g
(handle)h(to)f(it)g(in)h Fk(gen)p 1553 984 V 17 w(request)p
Fo(.)166 1040 y(The)i(callbac)o(k)i(function)f Fk(p)o(rogress)p
778 1040 V 16 w(fn)g Fo(is)g(in)o(v)o(ok)o(ed)f(when)h(one)f(of)g(the)h
Fk(count)g Fo(requests)g(listed)g(in)75 1097 y Fk(a)o(rra)o(y)p
173 1097 V 15 w(of)p 225 1097 V 16 w(requests)e Fo(completes.)j(It)c(is)f
(de\014ned)i(in)f(C)f(b)o(y)75 1178 y Fd(typedef)23 b(int)g(progress)p
556 1178 15 2 v 16 w(fn\(int)g(index,)h(void)f(*extra)p 1170
1178 V 16 w(state,)g(int)h(*count,)393 1235 y(MPI)p 468 1235
V 17 w(Request*)f(request\);)166 1321 y Fo(The)12 b(function)g(is)g(passed)
g
(b)o(y)f Fk(MPI)g Fo(the)h Fk(index)g Fo(of)f(a)h(request)f(in)i(the)
e(attac)
o(hed)g(list)i(that)d(completed,)75 1378 y(and)16 b(triggered)f(the)h
(callbac)o(k.)22 b(It)16 b(is)g(passed)g(in)h Fk(extra)p 1021
1378 14 2 v 16 w(state)g Fo(the)e(argumen)o(t)g(that)g(w)o(as)g(passed)
h(to)f
(the)75 1434 y Fk(MPI)p 160 1434 V 16 w(GR)p 235 1434 V 17
w(ST)l(ART)k Fo(call.)31 b(It)18 b(returns)g(in)h Fk(count)h
Fo(and)f Fk(a)o(rra)o(y)p 1104 1434 V 14 w(of)p 1155 1434 V
16 w(requests)i Fo(a)d(new)g(list)h(of)f(requests)h(that)75
1491 y(cause)c(progress)g(of)g(the)g(generalized)i(request.)166
1547 y(The)f(user)h(should)g(not)f(p)q(ost)g(a)g Fk(MPI)p 810
1547 V 16 w Fj(f)p Fk(TEST)p Fj(j)p Fk(W)l(AIT)p Fj(gf)p Fk(ANY)p
Fj(j)p Fk(SOME)p Fj(j)p Fk(ALL)p Fj(g)p Fo(,)f Fk(MPI)p 1591
1547 V 16 w(GET)p 1695 1547 V 17 w(ST)l(A)l(TUS)75 1603 y Fo(or)e
Fk(MPI)p 214 1603 V 16 w(REQUEST)p 433 1603 V 18 w(FREE)g Fo(call)i(on)e(a)
g
(request)g(in)i Fk(a)o(rra)o(y)p 1055 1603 V 14 w(of)p 1106
1603 V 16 w(requests)p Fo(.)22 b(The)13 b(request)g(status)g(should)h(b)
q(e)
75 1660 y(retriev)o(ed)i(and)g(the)g(request)g(should)g(b)q(e)h(deallo)q
(cated)g(b)o(y)f(the)g Fk(p)o(rogress)p 1338 1660 V 16 w(fn)g
Fo(callbac)o(k)h(function.)22 b(\()p Fk(MPI)75 1716 y Fo(do)q(es)16
b(not)e(deallo)q(cate)j(suc)o(h)e(requests)g(automatically)l(.\))166
1773 y(A)g(request)g(can)h(b)q(e)g(in)g(the)f(\\progress)f(list")i(of)f(at)
f
(most)h(one)g(generalized)i(request.)166 1829 y(The)23 b(function)g
Fk(MPI)p 537 1829 V 16 w(GR)p 612 1829 V 17 w(ST)l(ART)g Fo(can)g(b)q(e)g
(passed)g Fk(count)h(=)f(0)p Fo(,)g(and)g(the)g(callbac)o(k)g(function)75
1886 y Fk(MPI)p 160 1886 V 16 w(p)o(rogress)p 330 1886 V 16
w(fn)17 b Fo(ma)o(y)g(return)g Fk(count)h(=)g(0)p Fo(.)25 b(In)18
b(suc)o(h)g(a)e(case,)i(progress)e(to)o(w)o(ard)g(completion)i(of)f(the)75
1942 y(generalized)c(request)e(is)h(not)f(triggered)h(b)o(y)f(the)g
(completion)i(of)e(a)g(non)o(blo)q(c)o(king)h(MPI)g(comm)o(unication,)75
1999 y(but,)i(rather,)g(b)o(y)h(an)f(ev)o(en)o(t)h(external)g(to)f
Fk(MPI)p Fo(.)f(The)i(external)g(ev)o(en)o(t)g(handler)g(will)i(use)d(the)h
(functions)75 2055 y Fk(MPI)p 160 2055 V 16 w(GR)p 235 2055
V 17 w(CONTINUE)20 b Fo(or)f Fk(MPI)p 642 2055 V 16 w(GR)p
717 2055 V 17 w(COMPLETE)h Fo(to)f(inform)g Fk(MPI)g Fo(ab)q(out)h(the)
f(new)
h(status)f(of)g(the)75 2112 y(generalized)e(request.)166 2168
y(The)e(callbac)o(k)i(function)f Fk(complete)p 787 2168 V 14
w(fn)g Fo(is)f(in)o(v)o(ok)o(ed)h(b)o(y)f(successful)i(calls)f(to)75
2224 y Fk(MPI)p 160 2224 V 16 w Fj(f)p Fk(TEST)p Fj(j)p Fk(W)l(AIT)p
Fj(gf)p Fk(ANY)p Fj(j)p Fk(SOME)p Fj(j)p Fk(ALL)p Fj(g)f Fo(or)g
Fk(MPI)p 984 2224 V 16 w(GET)p 1088 2224 V 17 w(ST)l(A)l(TUS)i
Fo(on)f(the)g(generalized)i(request.)k(It)75 2281 y(is)16 b(de\014ned)g(in)
g
(C)f(b)o(y)75 2362 y Fd(typedef)23 b(int)g(complete)p 556 2362
15 2 v 16 w(fn\(void)g(*extra)p 907 2362 V 17 w(state,)g(MPI)p
1163 2362 V 17 w(Status*)f(status\);)166 2449 y Fo(The)16 b(function)i(is)e
(passed)h(the)f(status)g(argumen)o(t)f(pro)o(vided)i(b)o(y)g(the)f(T)
l(est,)g
(W)l(ait)g(or)g(Get)p 1743 2449 14 2 v 16 w(status)75 2505
y(function.)30 b(It)19 b(can)f(use)h(the)f(v)m(arious)h(status)f(setting)g
(functions)h(\()p Fk(MPI)p 1333 2505 V 16 w(ST)l(A)l(TUS)p
1514 2505 V 17 w(SET)p 1614 2505 V 17 w(ELEMENTS,)75 2562 y(MPI)p
160 2562 V 16 w(ST)l(A)l(TUS)p 341 2562 V 18 w(SET)p 442 2562
V 16 w(CANCELLED)p Fo(\))c(to)g(set)g(the)g(status)f(to)h(b)q(e)h(returned)
f
(b)o(y)g(these)h(calls.)166 2665 y Fc(Missing:)h Ff(Need)d(to)g(add)g
Fe(MPI)p 671 2665 13 2 v 14 w(ST)m(A)m(TUS)p 838 2665 V 14
w(SET)p 928 2665 V 15 w(CANCELLED)g Ff(somewhere.)1967 46 y
Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 3 3
bop 75 -100 a Fg(7.1.)34 b(GENERALIZED)16 b(REQUESTS)1071 b
Fo(3)166 49 y(The)15 b(callbac)o(k)i(function)f Fk(cancel)p
731 49 14 2 v 17 w(fn)f Fo(is)h(in)o(v)o(ok)o(ed)f(b)o(y)h(calls)g(to)e
Fk(MPI)p 1313 49 V 16 w(CANCEL)i Fo(on)f(the)g(generalized)75
106 y(request.)20 b(It)15 b(is)h(de\014ned)g(in)g(C)f(b)o(y)75
184 y Fd(typedef)23 b(int)g(cancel)p 508 184 15 2 v 17 w(fn\(void)
g(*extra)p
860 184 V 16 w(state\);)166 270 y Fo(.)166 327 y(The)12 b(follo)o(wing)h
Fk(MPI)e Fo(functions)i(can)f(b)q(e)g(used)h(to)e(c)o(hange)h(the)
g(progress)
f(mec)o(hanism)i(of)e(a)h(request)75 383 y(or)j(mark)f(it)i(complete.)75
534 y Fk(MPI)p 160 534 14 2 v 16 w(GR)p 235 534 V 17 w(CONTINUE\(gen)p
564 534 V 17 w(request,)h(count,)f(a)o(rra)o(y)p 975 534 V
14 w(of)p 1026 534 V 16 w(requests\))117 612 y Ff(INOUT)62
b Fk(gen)p 387 612 V 17 w(request)369 b Ff(generalized)15 b(request)g
(\(handle\))117 685 y(IN)155 b Fk(count)482 b Ff(n)o(um)o(b)q(er)13
b(of)h(requests)i(in)d(arra)o(y)h(\(p)q(ositiv)o(e)f(in)o(teger\))117
759 y(IN)155 b Fk(a)o(rra)o(y)p 416 759 V 15 w(of)p 468 759
V 16 w(requests)272 b Ff(List)14 b(of)g(requests)i(whic)o(h)d(completion)g
(triggers)h(progress)i(of)905 815 y(the)f(generalized)f(request)166
940 y Fo(This)g(function)g(should)g(b)q(e)h(in)o(v)o(ok)o(ed)e(only)h(if)g
(the)f(generalized)j(request)d(is)h(curren)o(tly)g(attac)o(hed)f(to)75
996 y(an)k(empt)o(y)g(list)h(of)e(requests)h(\(i.e.,)g(the)g(last)g(call)i
(to)d Fk(MPI)p 1092 996 V 16 w(GR)p 1167 996 V 17 w(ST)l(ART)i
Fo(or)e(to)h(the)g(callbac)o(k)h(function)75 1053 y Fk(p)o(rogress)p
232 1053 V 16 w(fn)d Fo(pro)o(vided)g(to)e Fk(MPI)h(count)h(=)g(0)p
Fo(\).)k(It)14 b(sets)g(the)g(list)h(of)f(requests)g(whic)o(h)h(completion)
h
(causes)75 1109 y(the)c(in)o(v)o(o)q(cation)g(of)f(the)h(progress)
f(callbac)o
(k)i(function.)19 b(This)13 b(function)f(can)g(b)q(e)g(in)o(v)o(ok)o(ed,)h
(in)f(a)g(situation)75 1166 y(where)17 b(progress)g(on)g(the)h(generalized)
h
(request)e(is)h(done)f(outsided)h Fk(MPI)p Fo(,)f(to)f(handle)j(bac)o(k)e
(resp)q(onsi-)75 1222 y(bilit)o(y)i(to)f(progress)f(to)g Fk(MPI)p
Fo(.)g(\(E.g.,)g(supp)q(ose)i(that)e(the)h(co)q(de)h(for)e(generalized)j
(request)e(consists)g(of)75 1278 y(p)q(erformining)e(an)e(I/O)h(op)q
(eration,)f(next)h(sending)g(an)g Fk(MPI)f Fo(non)o(blo)q(c)o(king)
h(message)
f(when)h(the)g(I/O)f(is)75 1335 y(complete.)20 b(Then)15 b
Fk(MPI)p 487 1335 V 16 w(GR)p 562 1335 V 17 w(CONTINUE)g Fo(w)o(ould)f(b)
q(e)
h(in)o(v)o(ok)o(ed)f(after)g(the)g(I/O)g(w)o(as)g(complete)h(and)f(the)75
1391 y(non)o(blo)q(c)o(king)j(send)e(w)o(as)g(started.\))75
1542 y Fk(MPI)p 160 1542 V 16 w(GR)p 235 1542 V 17 w(COMPLETE\(gen)p
577 1542 V 16 w(request\))117 1619 y Ff(INOUT)62 b Fk(gen)p
387 1619 V 17 w(request)369 b Ff(generalized)15 b(request)g(\(handle\))166
1744 y Fo(Marks)f(the)h(generalized)i(request)f(as)e(complete.)21
b(After)15 b(this)g(call)i(returns,)e(calls)h(to)75 1800 y
Fk(MPI)p 160 1800 V 16 w Fj(f)p Fk(TEST)p Fj(j)p Fk(W)l(AIT)p
Fj(gf)p Fk(ANY)p Fj(j)p Fk(SOME)p Fj(j)p Fk(ALL)p Fj(g)c Fo(or)h
Fk(MPI)p 979 1800 V 16 w(GET)p 1083 1800 V 17 w(ST)l(A)l(TUS)i
Fo(on)e(the)h(generalized)h(request)e(will)75 1857 y(succeed.)44
b Fk(MPI)p 365 1857 V 16 w(GR)p 440 1857 V 17 w(COMPLETE)23
b Fo(can)g(b)q(e)h(in)o(v)o(ok)o(ed)f(either)g(b)o(y)g(the)g(progress)f
(callbac)o(k)i(function)75 1913 y Fk(p)o(rogress)p 232 1913
V 16 w(fn)p Fo(,)15 b(or)g(externally)l(.)189 2009 y Fb(A)n(dvic)n(e)f(to)h
(users.)39 b Fo(The)14 b(design)g(implies)i(that,)d(at)g(an)o(y)h(p)q(oin)o
(t)g(in)h(time,)f(progress)f(of)g(a)g(general-)189 2065 y(ized)j(request)f
(is)g(either)h(external)f(to)f Fk(MPI)p Fo(,)g(or)h(is)g(tied)h(to)e(the)h
(completion)h(of)f(one)g(out)f(of)h(a)f(list)189 2122 y(of)h
Fk(MPI)g Fo(requests.)22 b(On)16 b(the)g(face)f(of)h(it,)g(one)f(can)h(not)
g
(ha)o(v)o(e)f(a)g(\\select")h(statemen)o(t,)f(where)h(the)189
2178 y(progress)11 b(function)i(will)g(b)q(e)g(in)o(v)o(ok)o(ed)f(either)h
(when)f(an)g(in)o(ternal)h Fk(MPI)e Fo(request)h(completes,)h(or)e(an)189
2235 y(external)h(ev)o(en)o(t)f(\(suc)o(h)h(as)f(I/O\))h(completes.)19
b(Ho)o(w)o(ev)o(er,)11 b(suc)o(h)h(mixed)g(\\select")g(can)g(b)q(e)g
(obtained)189 2291 y(indirectly)l(,)k(since)g(requests)f(in)g
Fk(a)o(rra)o(y)p 837 2291 V 15 w(of)p 889 2291 V 16 w(requests)h
Fo(can,)f(themselv)o(es,)g(b)q(e)g(generalized)h(requests.)189
2348 y(Th)o(us,)e(one)h(could)g(ha)o(v)o(e)f(generalized)i(request)f(A,)f
(whic)o(h)i(completes)f(when)g(an)f(ev)o(en)o(t)h(external)189
2404 y(to)k Fk(MPI)g Fo(o)q(ccurs,)i(and)f(generalized)h(request)f(B,)
g(whic)
o(h)g(mak)o(es)f(progress)g(\(has)h(the)g(progress)189 2461
y(callbac)o(k)h(function)g(in)o(v)o(ok)o(ed\))g(either)g(when)g(A)f
(completes,)i(or)e(when)h(another)f(non)o(blo)q(c)o(king)189
2517 y Fk(MPI)14 b Fo(call)j(completes.)189 2591 y Fk(MPI)f
Fo(sp)q(eci\014es)i(that,)e(when)h Fk(MPI)p 782 2591 V 16 w(CANCEL)g
Fo(is)g(in)o(v)o(ok)o(ed,)g(then)g(request)g(completion)g(b)q(ecomes)189
2647 y(lo)q(cal,)i(and)f(do)q(es)g(not)g(dep)q(end)h(an)o(ymore)e(on)h(the)
g
(state)f(of)h(other)f(pro)q(cesses.)29 b(Either)18 b(the)g(re-)189
2704 y(quest)g(completes)h(normally)l(,)g(or)f(the)g(request)h(is)f
(cancelled)j(and)d(state)g(is)g(restored)g(as)g(if)h(the)-32
46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 4 4
bop 75 -100 a Fo(4)894 b Fg(CHAPTER)15 b(7.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)189 49 y Fo(request)18 b(nev)o(er)g(executed.)30
b(It)18 b(is)h(up)g(to)e(the)i(user)f(to)g(decide)i(whether)e(he)h(or)
e(she)i
(w)o(an)o(ts)e(the)189 106 y(same)12 b(seman)o(tics)i(for)e(a)
h(generalized)i
(request)e(and,)g(if)g(so,)g(to)g(pro)o(vide)g(appropriate)g(co)q(de)h(in)g
(the)189 162 y(cancel)k(and)f(complete)h(callbac)o(k)h(functions.)26
b(Pro)o(viding)18 b(the)f(prop)q(er)h(cancel)g(seman)o(tics)g(ma)o(y)189
219 y(not)g(b)q(e)h(alw)o(a)o(ys)e(p)q(ossible)k(or)c(e\016cien)o(t,)j(for)
e
(generalized)i(requests:)26 b(Supp)q(ose,)20 b(e.g.,)e(that)g(the)189
275 y(completion)e(of)f(a)h(generalized)h(request)e(requires)i(the)e
(completion)i(of)e(t)o(w)o(o)f(non)o(blo)q(c)o(king)j(com-)189
332 y(m)o(unications.)i(The)13 b(user)f(ma)o(y)g(attempt)f(to)h(cancel)i
(these)e(t)o(w)o(o)f(non)o(blo)q(c)o(king)j(comm)o(unications;)189
388 y(he)j(or)f(she)i(cannot)e(guaran)o(tee)h(that)f(either)i(b)q(oth)f
(cancelations)h(succeed)g(or)e(b)q(oth)h(comm)o(uni-)189 444
y(cations)g(complete.)27 b(Instead,)18 b(one)f(comm)o(unication)h(ma)o(y)f
(complete)h(and)f(the)h(other)f(ma)o(y)f(b)q(e)189 501 y(cancelled.)22
b(In)15 b(order)f(to)g(implemen)o(t)i(prop)q(er)f(cancelling)i(seman)
o(tics,)
d(the)h(user)f(w)o(ould)h(ha)o(v)o(e)g(to)189 557 y(use)j(a)f(complex)
h(and)g
(exp)q(ensiv)o(e)h(distributed)g(commit)f(proto)q(col.)26 b(In)19
b(general,)f(the)f Fk(cancel)p 1823 557 14 2 v 18 w(fn)189
614 y Fo(callbac)o(k)c(function)h(will)g(attempt)e(to)g(cancel)i(all)g(p)q
(ending)g(non)o(blo)q(c)o(king)g(comm)o(unications)g(that)189
670 y(where)i(issued)i(as)e(part)g(of)g(the)g(generalize)i(request;)f(the)f
Fk(complete)p 1384 670 V 15 w(fn)h Fo(callbac)o(k)g(function)g(will)189
727 y(test)12 b(whic)o(h)i(of)e(these)h(cancel)h(calls)g(succeeded,)g(p)q
(erform)f(further)g(clean)o(up)h(as)e(needed,)i(and)f(will)189
783 y(return)i(a)g(suitable)h(status.)189 858 y(The)i Fk(extra)p
383 858 V 17 w(state)i Fo(supplied)h(in)e Fk(MPI)p 832 858
V 16 w(GR)p 907 858 V 17 w(ST)l(ART)g Fo(will)i(b)q(e)e(passed)g(to)f(the)g
(callbac)o(k)i(routines.)189 915 y(One)13 b(should)g(tak)o(e)f(care)h(that)
f
(an)o(y)g(information)g(attac)o(hed)g(with)h Fk(extra)p 1417
915 V 17 w(state)g Fo(b)q(e)h(in)f(appropriate)189 971 y(memory)l(.)18
b(The)11 b(lo)q(cal)i(stac)o(k)d(asso)q(ciated)i(with)f(an)g(earlier)h
(callbac)o(k)h(ma)o(y)d(ha)o(v)o(e)h(disapp)q(eared)i(and)189
1028 y(callbac)o(ks)j(can)g(o)q(ccur)g(on)g(di\013eren)o(t)g(threads.)21
b(As)15 b(a)h(result,)g(the)f(memory)h(used)g(in)g Fk(extra)p
1769 1028 V 17 w(state)189 1084 y Fo(should)21 b(b)q(e)g(globally)g(a)o(v)m
(ailable)h(\(heap\))e(for)f(the)i(duration)f(of)g(time)g(that)g(an)o(y)g
(callbac)o(k)h(can)189 1141 y(o)q(ccur.)27 b(Users)18 b(should)g(also)g(k)o
(eep)g(in)h(mind)f(the)g(p)q(oten)o(tial)g(problem)h(with)f(F)l(ortran)e
(registers)189 1197 y(discussed)g(in)g(Section)g Fa(??)k Fo(on)15
b(P)o(age)g Fa(??)p Fo(.)k(\()p Fb(End)c(of)i(advic)n(e)f(to)h(users.)p
Fo(\))75 1319 y Fi(7.1.2)49 b(Restrictions)75 1405 y Fo(There)18
b(are)g(no)g(restrictions)g(on)g(the)g Fk(cancel)p 858 1405
V 17 w(fn)h Fo(and)f Fk(complete)p 1194 1405 V 14 w(fn)h Fo(functions.)29
b(On)18 b(the)g(other)g(hand,)75 1461 y(v)o(endors)h(ma)o(y)g(imp)q(ose)h
(restrictions)g(on)f(the)g Fk(p)o(rogress)p 1052 1461 V 16
w(fn)h Fo(function.)33 b(Non)o(blo)q(c)o(king)21 b Fk(MPI)d
Fo(calls)j(and)75 1517 y(lo)q(cal)15 b Fk(MPI)e Fo(calls)h(should)h(b)q(e)f
(supp)q(orted.)20 b(On)14 b(the)g(other)f(hand,)h(v)o(endors)f(ma)o(y)
g(not)g
(supp)q(ort)h(blo)q(c)o(king)75 1574 y Fk(MPI)f Fo(calls)i(in)f
Fk(p)o(rogress)p 478 1574 V 16 w(fn)p Fo(.)20 b(Implemen)o(tations)15
b(ma)o(y)d(also)i(prohibit)h(the)e(use)h(of)g(system)f(calls)h(that)f(are)
75
1630 y(not)i(thread-safe.)166 1734 y Fc(Discussion:)60 b Ff(V)m(endors)21
b(should)f(carefully)g(c)o(hec)o(k)i(whether)f(these)h(restrictions)g(are)f
(su\016cien)o(t.)38 b(It)75 1791 y(should)20 b(b)q(e)h(p)q(ossible)g(to)f
(call)g Fe(p)o(rogress)p 721 1791 13 2 v 15 w(fn)h Ff(inside)f(the)h
Fe(MPI)f Ff(progress)h(engine)g(\(as)g(a)f(callbac)o(k...\),)f(without)75
1847 y(risking)14 b(deadlo)q(c)o(k)h(or)g(corrupting)g(in)o(ternal)g(data)g
(structures.)23 b(In)15 b(a)g(m)o(ultithreaded)f(en)o(vironmen)o(t,)g(it)g
(should)75 1903 y(b)q(e)d(p)q(ossible)h(to)e(execute)j(the)e(callbac)o(k)g
(function)f(on)h(an)o(y)f(thread)i(that)f(in)o(v)o(ok)o(es)f(the)
h(progress)h
(engine.)18 b(E.g.,)10 b(can)75 1960 y(w)o(e)15 b(call)f Fe(MPI)p
291 1960 V 14 w(CANCEL)g Ff(from)f(within)h Fe(p)o(rogress)p
846 1960 V 15 w(fn)p Ff(?)21 b(Can)14 b(w)o(e)h(free)h(a)e(request?)22
b(Can)15 b(w)o(e)f(free)i(the)f(generalized)75 2016 y(request)g(that)f(the)
h
(callbac)o(k)e(is)h(attac)o(hed)g(to?)189 2170 y Fb(R)n(ationale.)61
b Fo(The)19 b(functions)h Fk(cancel)p 868 2170 14 2 v 17 w(fn)f
Fo(and)g Fk(complete)p 1205 2170 V 15 w(fn)g Fo(are)f(called)j(sync)o
(hronously)l(,)f(as)e(a)189 2226 y(con)o(tin)o(uation)h(of)f(the)h(user)f
(execution)i(thread.)30 b(Th)o(us,)19 b(no)g(sp)q(ecial)h(restrictions)
f(are)
g(needed)189 2283 y(on)14 b(these)g(calls.)20 b(On)15 b(the)f(other)
g(hand,)g
Fk(p)o(rogress)p 1036 2283 V 16 w(fn)g Fo(is)h(called)g(async)o(hronously)l
(,)g(p)q(ossibly)g(while)189 2339 y(the)e(user)h(pro)q(cess)f(\(or)g(some)g
(threads)g(of)g(it\))g(are)h(blo)q(c)o(k)o(ed.)20 b(Also,)13
b(the)h(callbac)o(k)g(call)h(ma)o(y)e(o)q(ccur)189 2396 y(within)h
Fk(MPI)e Fo(co)q(de)i(whic)o(h)g(is)f(on)g(the)g(critical)i(path)e(of)
f(the)i
Fk(MPI)e Fo(library:)20 b(namely)l(,)14 b(the)f(progress)189
2452 y(engine)i(that)e(p)q(olls)i(for)e(completed)i(requests.)20
b(Restrictions)15 b(on)e(the)h Fk(p)o(rogress)p 1555 2452 V
16 w(fn)h Fo(functions)f(are)189 2509 y(required)i(to)e(allo)o(w)i(for)e
(e\016cien)o(t)i(implemen)o(tations.)22 b(\()p Fb(End)15 b(of)h(r)n
(ationale.)p Fo(\))189 2615 y Fb(A)n(dvic)n(e)e(to)h(users.)39
b Fo(The)14 b(callbac)o(k)h(function)f Fk(p)o(rogress)p 1139
2615 V 16 w(fn)h Fo(m)o(ust)e(b)q(e)h(k)o(ept)g(short,)f(since)i(progress)
189
2671 y(on)23 b(lo)q(cal)h(computation)g(and)f(on)g(data)g(mo)o(v)o(emen)
o(t)f
(to)h(or)g(from)f(the)i(no)q(de)f(executing)i(the)1967 46 y
Fh(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 5
bop 75 -100 a Fg(7.1.)34 b(GENERALIZED)16 b(REQUESTS)1071 b
Fo(5)189 49 y(progress)19 b(handler)i(ma)o(y)e(b)q(e)h(susp)q(ended)
i(while)f
(the)f(handler)h(executes.)34 b(\()p Fb(End)20 b(of)g(advic)n(e)h(to)189
106 y(users.)p Fo(\))75 225 y Fi(7.1.3)49 b(Mutual)17 b(exclusion)75
311 y Fo(The)c Fk(p)o(rogress)p 323 311 14 2 v 16 w(fn)g Fo(callbac)o(k)h
(function)g(ma)o(y)e(con)o(tain)h(critical)i(co)q(de)e(that)f(up)q(dates,)i
(atomically)l(,)g(shared)75 367 y(data)i(structures.)26 b(It)17
b(ma)o(y)f(b)q(e)i(necessary)g(to)e(prev)o(en)o(t)h(the)g(execution)i(of)d
(other)h(callbac)o(k)h(functions)75 424 y(or)d(of)f(the)i(main)f(user)h(co)
q
(de)g(while)g(suc)o(h)g(critical)g(section)g(executes.)166
480 y(There)f(are)g(t)o(w)o(o)f(situations)i(to)e(tak)o(e)h(care)g(of:)131
560 y(1.)22 b(A)13 b(m)o(ultithreaded)h(en)o(vironmen)o(t,)f(where)h(m)o
(ultiple)g(callbac)o(k)h(functions)e(ma)o(y)g(execute)g(concur-)189
617 y(ren)o(tly)l(.)20 b(In)c(suc)o(h)f(a)g(case,)g(m)o(utexes)g(will)i(b)q
(e)f(used)g(to)e(enforce)i(m)o(utual)f(exclusion.)131 705 y(2.)22
b(An)14 b(en)o(vironmen)o(t)h(where)f(only)h(one)f(progress)g(callbac)o(k)h
(function)g(ma)o(y)f(execute)h(at)e(a)h(time.)20 b(In)189 762
y(suc)o(h)15 b(a)g(case,)g(m)o(utual)g(exclusion)i(is)f(ac)o(hiev)o(ed)g(b)
o
(y)f(disabling)i(progress)e(callbac)o(ks.)189 849 y Fb(R)n(ationale.)38
b Fo(The)13 b Fk(MPI)g Fo(forum)g(has)f(not)h(found)g(a)g(w)o(a)o(y)f(of)h
(de\014ning)h(a)f(common)g(mec)o(hanism)h(for)189 905 y(b)q(oth)d(en)o
(vironmen)o(ts)h(that)f(w)o(ould)h(not)f(seriously)i(handicap)g(one)f(or)f
(the)g(other.)19 b(Th)o(us,)11 b(p)q(ortable)189 962 y(co)q(de)21
b(will)i(ha)o(v)o(e)e(to)g(a)o(v)o(oid)g(critical)h(sections)g(or)f(to)
g(use)
g(either)h(mec)o(hanism)g(for)f(exclusion,)189 1018 y(according)15
b(to)g(the)g(curren)o(t)g(en)o(vironmen)o(t.)20 b(\()p Fb(End)c(of)g(r)n
(ationale.)p Fo(\))166 1105 y(An)10 b(attribute)g(with)h(prede\014ned)h(k)o
(ey)e Fe(MPI)p 890 1105 13 2 v 14 w(SINGLE)p 1043 1105 V 15
w(THREAD)g Fo(is)g(asso)q(ciated)h(with)f Fk(MPI)p 1668 1105
14 2 v 16 w(COMM)p 1826 1105 V 17 w(W)o(ORLD)p Fo(.)75 1162
y(If)h(set,)h(it)f(indicates)i(that)d(all)i Fk(MPI)f Fo(calls)h(are)f
(executed)h(on)f(a)g(single)h(thread.)19 b(Note)11 b(that)f(it)h(ma)o(y)
g(b)q
(e)h(p)q(os-)75 1218 y(sible)17 b(for)e(a)h(m)o(ultithreaded)h(execution)g
(that)e(uses)h(a)f(thread-complain)o(t)i Fk(MPI)e Fo(library)h(to)f(b)q(e)i
(\\single)75 1275 y(mpi)f(thread".)166 1331 y(The)f(follo)o(wing)h(t)o(w)
o(o)
e(functions)i(can)f(b)q(e)h(used)g(in)g(a)f(single)h(mpi)g(thread)f(en)o
(vironmen)o(t.)75 1482 y Fk(MPI)p 160 1482 V 16 w(GR)p 235
1482 V 17 w(LOCK\(\))75 1680 y(MPI)p 160 1680 V 16 w(GR)p 235
1680 V 17 w(UNLOCK)166 1784 y Fo(Progress)g(callbac)o(k)j(functions)f(will)
h
(not)e(b)q(e)h(in)o(v)o(ok)o(ed)g(b)o(y)f Fk(MPI)g Fo(after)g
Fk(MPI)p 1478 1784 V 16 w(GR)p 1553 1784 V 17 w(LOCK)g Fo(is)h(called,)75
1840 y(un)o(til)h Fk(MPI)p 269 1840 V 16 w(GR)p 344 1840 V
17 w(UNLOCK)f Fo(is)h(called.)27 b(These)18 b(t)o(w)o(o)d(functions)
j(should)
g(not)f(b)q(e)h(called)h(from)d(within)i(a)75 1897 y Fk(p)o(rogress)p
232 1897 V 16 w(fn)e Fo(callbac)o(k)g(function.)166 1953 y(No)10
b Fk(MPI)f Fo(calls)j(should)f(b)q(e)g(executed)g(within)g(a)f(critical)h
(section)g(delineated)h(b)o(y)e(calls)i(to)d Fk(MPI)p 1764
1953 V 16 w(GR)p 1839 1953 V 17 w(LOCK)75 2010 y Fo(and)k Fk(MPI)p
246 2010 V 16 w(GR)p 321 2010 V 17 w(UNLOCK)p Fo(.)f(Similarly)l(,)j(in)
e(a)g
(m)o(ultithreaded)g(en)o(vironmen)o(t,)g(critical)h(section)f(co)q(de)
h(that)
75 2066 y(requires)h(m)o(utual)f(exclusion)i(with)f(sections)f(in)h
Fk(p)o(rogress)p 1074 2066 V 16 w(fn)g Fo(callbac)o(k)g(functions)g(should)
g
(not)f(con)o(tain)75 2123 y(an)o(y)h Fk(MPI)f Fo(calls.)189
2210 y Fb(R)n(ationale.)39 b Fo(The)15 b(last)g(restriction)g(allo)o(ws)g
(one)g(to)f(in)o(v)o(ok)o(e)g(the)h Fk(p)o(rogress)p 1473 2210
V 16 w(fn)g Fo(callbac)o(k)h(function)189 2266 y(without)i(spa)o(wning)g(a)
g
(separate)f(thread,)i(in)g(a)e(m)o(ultithreaded)i(en)o(vironmen)o(t:)26
b(m)o(utexes)18 b(will)189 2323 y(enforce)11 b(m)o(utual)h(exclusion)
h(with)f
(other)f(threads;)h(the)f(callbac)o(k)i(functions)f(will)h(not)e(b)q(e)
h(in)o
(v)o(ok)o(ed)189 2379 y(within)h(a)f(critical)i(section,)f(if)g(the)g
Fk(MPI)e Fo(progress)h(engine)i(is)f(kic)o(k)o(ed)g(on)f(threads)
g(executing)
i(user)189 2436 y(co)q(de)h(only)h(b)o(y)f(explicit)j Fk(MPI)c
Fo(calls.)21 b(\()p Fb(End)16 b(of)g(r)n(ationale.)p Fo(\))189
2523 y Fb(A)n(dvic)n(e)11 b(to)i(implementors.)37 b Fo(Implemen)o(tors)12
b(ma)o(y)e(disable)i(new)g(progress)e(callbac)o(ks)i(while)h(suc)o(h)189
2579 y(a)k(callbac)o(k)i(executes;)g(they)f(m)o(ust)g(disable)h(new)f
(progress)f(callbac)o(ks)i(while)g(suc)o(h)f(a)g(callbac)o(k)189
2636 y(executes)j(a)f(critical)h(section,)h(in)g(a)e(single)h(mpi)g(thread)
g
(en)o(vironmen)o(t.)35 b(\()p Fb(End)21 b(of)g(advic)n(e)g(to)189
2692 y(implementors.)p Fo(\))-32 46 y Fh(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 6 6
bop 75 -100 a Fo(6)894 b Fg(CHAPTER)15 b(7.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 49 y Fl(7.2)59 b(Alternatives)75 152
y Fi(7.2.1)49 b(Simpli\014cations)16 b(on)g(current)f(p)o(rop)q(osal)75
238 y Fk(W)o(ait)g(on)g(only)g(one)h(event)75 324 y Fo(The)10
b Fk(count,)i(a)o(rra)o(y)p 391 324 14 2 v 15 w(of)p 443 324
V 16 w(request)g Fo(argumen)o(ts)d(are)h(replaced)h(b)o(y)f(a)g(unique)i
Fk(request)g Fo(argumen)o(t,)e(in)h Fk(MPI)p 1790 324 V 16
w(GR)p 1865 324 V 17 w(ST)l(ART)p Fo(.)75 380 y(A)17 b(similar)h(c)o(hange)
f
(is)h(made)f(in)g Fk(p)o(rogress)p 811 380 V 16 w(fn)p Fo(,)h(and)f(in)h
Fk(MPI)p 1122 380 V 16 w(GR)p 1197 380 V 17 w(CONTNUE)p Fo(.)f(An)h(empt)
o(y)
e(list)i(\()p Fk(count)75 437 y(=)e(0)p Fo(\))e(is)i(indicated)h(b)o(y)
e(pro)
o(viding)h Fk(request)h(=)e(MPI)p 976 437 V 16 w(REQUEST)p
1195 437 V 18 w(NULL)p Fo(.)75 536 y Fa(Pros:)21 b Fo(Simpli\014es)d(the)d
(implemen)o(tation)i(\(somewhat\).)75 627 y Fa(Cons:)22 b Fo(Cannot)15
b(ha)o(v)o(e)g(an)o(ymore)f(a)i(\\select")f(statemen)o(t,)f(where)
i(progress)
f(is)h(triggered)f(b)o(y)h(an)o(y)f(one)189 684 y(ev)o(en)o(t)g(in)h(the)f
(progress)f(list.)75 803 y Fk(No)h(MPI)p 230 803 V 16 w(GR)p
305 803 V 17 w(CONTINUE)75 889 y Fo(User)21 b(has)f(to)g(decide)j(up)
e(fron)o
(t)f(whether)h(progress)f(is)h(triggered)g(b)o(y)g Fk(MPI)f
Fo(in)o(ternal)h(ev)o(en)o(ts)g(or)f(b)o(y)75 945 y(external)e(ev)o(en)
o(ts.)
27 b(One)18 b(can)g(still)h(ac)o(hiev)o(e)f(the)g(same)f(functionalit)o(y)i
(as)f(b)q(efore,)g(using)g(the)g(tric)o(k)f(of)75 1001 y(ha)o(ving)12
b(a)g(generalized)i(request)e(in)h(the)g(progress)e(list)i(of)f(another)f
(generalized)j(request,)f(so)e(that)h(there)75 1058 y(is)18
b(no)f(loss)g(of)f(functionalit)o(y)l(,)j(but)e(some)g(loss)g(of)g(p)q
(erformance,)g(p)q(erhaps.)26 b(There)17 b(is)h(a)f(clear)g(loss)g(of)75
1114 y(con)o(v)o(enience.)75 1233 y Fk(No)e(generalized)g(requests)j(in)d
(the)h(p)o(rogress)f(list)75 1319 y Fo(Restrict)h(requests)f(in)h
Fk(a)o(rra)o(y)p 575 1319 V 14 w(of)p 626 1319 V 16 w(requests)i
Fo(to)c(b)q(e)i(regular)f(requests.)75 1418 y Fa(Pros:)21 b
Fo(Simpli\014es)d(implemen)o(tation)75 1510 y Fa(Cons:)k Fo(Cannot)13
b(mix)i(in)o(ternal)g(and)g(external)f(ev)o(en)o(ts)g(in)h(one)g(list.)20
b(Lo)q(ose)14 b(some)g(elegance)i(of)d(design.)75 1630 y Fi(7.2.2)49
b(P)o(olling)18 b(based)e(design)75 1716 y Fo(This)j(alternativ)o(e)
f(design)
h(is)g(en)o(tirely)g(based)f(on)g(p)q(olling)i(as)e(the)g(progress)
f(engine)j
(for)d(generalized)75 1773 y(requests.)166 1829 y(A)e(new)h(generalized)h
(request)e(is)g(created)h(with)75 1980 y Fk(MPI)p 160 1980
V 16 w(GR)p 235 1980 V 17 w(ST)l(ART\(p)o(rogress)p 566 1980
V 17 w(fn,)f(complete)p 820 1980 V 14 w(fn,)h(cancel)p 1016
1980 V 17 w(fn,)f(extra)p 1193 1980 V 16 w(state,)h(gen)p 1395
1980 V 17 w(request\))117 2057 y Ff(IN)155 b Fk(p)o(rogress)p
475 2057 V 17 w(fn)379 b Ff(Request)10 b(progress)h(or)e(completion)f
(marking)f(callbac)o(k)i(func-)905 2114 y(tion)14 b(for)f Fe(request)j
Ff(\(function\))117 2188 y(IN)155 b Fk(complete)p 493 2188
V 15 w(fn)363 b Ff(Request)11 b(complete)e(callbac)o(k)f(function)i(for)f
Fe(meta)p 1694 2188 13 2 v 12 w(req)i Ff(\(func-)905 2244 y(tion\))117
2318 y(IN)155 b Fk(cancel)p 437 2318 14 2 v 18 w(fn)416 b Ff(Request)17
b(cancel/failure)f(callbac)o(k)f(function)h(for)g Fe(meta)p
1811 2318 13 2 v 12 w(req)905 2375 y Ff(\(function\))117 2449
y(IN)155 b Fk(extra)p 416 2449 14 2 v 17 w(state)384 b Ff(extra)15
b(state)117 2523 y(OUT)108 b Fk(gen)p 387 2523 V 17 w(request)369
b Fe(MPI)13 b Ff(generalized)i(request)h(\(handle\))166 2647
y Fo(The)23 b Fk(complete)p 442 2647 V 14 w(fn)g Fo(and)g Fk(cancel)p
728 2647 V 17 w(fn)g Fo(functions)g(are)g(as)f(b)q(efore.)42
b(The)23 b Fk(p)o(rogress)p 1586 2647 V 16 w(fn)g Fo(function)g(is)75
2704 y(de\014ned)17 b(in)f(C)f(as)1967 46 y Fh(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 7 7
bop 75 -100 a Fg(7.2.)34 b(AL)l(TERNA)l(TIVES)1313 b Fo(7)75
49 y Fd(typedef)23 b(int)g(progress)p 556 49 15 2 v 16 w(fn\(void)
g(*extra)p
907 49 V 17 w(state,)g(int)g(*flag\);)166 136 y Fk(MPI)f Fo(is)g(calling)i
(the)f Fk(p)o(rogress)p 716 136 14 2 v 16 w(fn)f Fo(function)h(p)q(erio)q
(dicall)q(y)l(,)j(un)o(til)e(the)e(generalized)i(request)e(is)75
192 y(complete.)e(This)14 b(function)g(returns)g Fk(\015ag)f(=)h(false)g
Fo(if)g(the)f(generalized)j(request)d(has)g(not)h(complete)g(y)o(et,)75
249 y Fk(\015ag)h(=)h(true)f Fo(if)h(it)g(is)f(complete.)75
369 y Fk(Progress)f(rule:)45 b Fo(the)15 b Fk(p)o(rogress)p
613 369 V 16 w(fn)g Fo(function)g(m)o(ust)f(b)q(e)i(in)o(v)o(ok)o(ed)e(b)
o(y)
h Fk(MPI)p Fo(,)f(ev)o(en)g(if)h(no)g Fk(MPI)f Fo(call)i(o)q(ccurs)75
425 y(on)f(the)g(lo)q(cal)i(pro)q(cess.)189 531 y Fb(R)n(ationale.)40
b Fo(This)16 b(is)f(consisten)o(t)h(with)f(the)h(strict)f(in)
o(terpretation)g
(of)g(the)g Fk(MPI)g Fo(progress)f(rule:)189 588 y(progress)g(on)g(non)
o(blo)
q(c)o(king)i(calls)g(m)o(ust)e(o)q(ccur,)h(ev)o(en)g(of)f(the)h(in)o(v)
o(olv)
o(ed)g(pro)q(cess)g(mak)o(es)f(no)h Fk(MPI)189 644 y Fo(call.)24
b(F)l(urthermore,)15 b(while)j(the)f(di\013erence)g(b)q(et)o(w)o(een)g(a)f
(strict)g(and)g(lenien)o(t)i(in)o(terpretation)e(of)189 701
y(the)h(progress)f(rule)i(seems)g(no)f(to)f(matter)g(m)o(uc)o(h)h(in)h
(practice,)g(for)f(regular)g(non)o(blo)q(c)o(king)i Fk(MPI)189
757 y Fo(calls,)h(it)e(can)h(lead)g(to)f(a)g(v)o(ery)g(di\013eren)o(t)h(b)q
(eha)o(vior)g(for)f(generalized)i(requests.)30 b(Imagine,)20
b(for)189 814 y(example,)h(an)f Fk(MPI)f Fo(program)g(where)h(a)f(pro)
q(cess)
i(is)f(used)g(as)g(a)f(serv)o(er.)34 b Fk(MPI)p 1593 814 V
16 w(GR)p 1668 814 V 17 w(ST)l(ART)20 b Fo(is)189 870 y(in)o(v)o(ok)o(ed)g
(on)g(this)g(serv)o(er)g(pro)q(cess)g(to)g(p)q(ost)g(the)g
Fk(p)o(rogress)p 1226 870 V 16 w(fn)g Fo(handler)h(that)f(will)h(b)q(e)g
(used)g(to)189 927 y(handle)14 b(incoming)g(service)g(requests.)19
b(No)13 b(further)g Fk(MPI)f Fo(calls)i(o)q(ccur)f(on)g(this)h(pro)q(cess,)
f
(and)g(it)g(is)189 983 y(exp)q(ected)j(that)e(the)h(handler)h(p)q(erio)q
(dically)i(kic)o(ks)d(in)h(and)f(handles)h(p)q(ending)h(service)
e(requests.)
189 1039 y(This)20 b(w)o(okds)f(OK)i(with)f(a)f(strict)h(progress)f(rules)i
(and)f(totally)g(breaks)f(do)o(wn)h(without)g(suc)o(h)189 1096
y(progress)15 b(rule.)25 b(Th)o(us,)17 b(the)f(issue)i(of)e(progress)g
(cannot)g(b)q(e)h(fudged)g(for)f(generalized)i(requests.)189
1152 y(\()p Fb(End)d(of)i(r)n(ationale.)p Fo(\))166 1259 y(The)d(calls)i
Fk(MPI)p 444 1259 V 15 w(GR)p 518 1259 V 17 w(CONTINUE)f Fo(and)g
Fk(MPI)p 948 1259 V 16 w(GR)p 1023 1259 V 17 w(COMPLETE)f Fo(are)g(not)g
(needed.)20 b(Same)15 b(restric-)75 1315 y(tions)f(apply)g(to)f
Fk(p)o(rogress)p 519 1315 V 16 w(fn)h Fo(callbac)o(k)h(functions)f(as)f(b)q
(efore,)h(and)f(m)o(utual)h(exclusion)h(is)f(ac)o(hiev)o(ed)h(the)75
1372 y(same)g(w)o(a)o(y)f(as)h(b)q(efore.)75 1478 y Fa(Pros:)21
b Fo(The)16 b(design)h(is)f(simpler:)22 b(few)o(er)15 b(functions)h(and)g
(one)g(unique)h(progress)e(mec)o(hanism)h(for)f(gen-)189 1534
y(eralized)21 b(requests.)32 b(The)20 b(design)g(pro)o(vides)g(the)f(same)h
(functionalit)o(y)l(,)h(and)f(more,)f(since)i(the)189 1591
y(p)q(olling)c(function)f(can)f(test)g(for)f(an)o(y)h(n)o(um)o(b)q(er)h(of)
f
(requests)g(and)g(external)h(ev)o(en)o(ts.)75 1685 y Fa(Cons:)22
b Fo(The)17 b(implemen)o(tation)h(of)e(generalized)j(requests)d(b)q(ecomes)
i
(less)f(e\016cien)o(t.)25 b(Supp)q(ose)18 b(a)f(gen-)189 1741
y(eralized)g(request)g(progresses)e(when)i(a)f(non)o(blo)q(c)o(king)i(comm)
o
(unication)f(completes.)23 b(With)17 b(the)189 1797 y(previous)h(design)
g(it)
g(is)f(p)q(ossible)i(to)e(ha)o(v)o(e)g(no)g(additional)i(o)o(v)o(erhead)
e(in)
h(the)f(progress)g(engine,)189 1854 y(except)k(when)h(the)f(generalized)i
(request)e(is)g(p)q(osted)g(and)h(when)f(the)g(comm)o(unication)h(com-)189
1910 y(pletes.)30 b(With)19 b(the)g(new)f(design,)i(there)f(will)h(b)q(e)f
(an)g(additional)h(function)f(call)h(at)e(eac)o(h)g(pass)189
1967 y(through)d(the)g(progress)g(engine.)21 b(Same)16 b(for)f(external)
g(ev)
o(en)o(ts,)g(e.g.,)f(I/O.)i(It)f(seems)h(inne\014cien)o(t)189
2023 y(to)e(o)o(v)o(erloads)h(the)g(in)o(ternal)h Fk(MPI)e
Fo(progress)g(engine,)i(that)f(is)g(called)i(quite)f(frequen)o(tly)f(in)h
(order)189 2080 y(to)c(mo)o(v)o(e)h(b)o(ytes)f(on)i(a)e(fast)h(net)o(w)o
(ork,)f(with)h(callbac)o(ks)h(that)f(p)q(oll)h(for)f(high)h(latency)g(ev)o
(en)o(ts,)f(suc)o(h)189 2136 y(as)h(I/O:)i(w)o(e)f(lo)q(ose)g(the)h(c)o
(hoice)g(of)e(using)i(in)o(terrupt-driv)o(en)h(handlers)f(for)f(suc)o(h)
g(ev)
o(en)o(ts.)189 2211 y(The)g(issue)h(of)f(progress)f(cannot)h(b)q(e)
h(fudged.)
-32 46 y Fh(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF