forked from kenjihiranabe/The-Art-of-Linear-Algebra
-
Notifications
You must be signed in to change notification settings - Fork 0
/
4-Subspaces-j.eps
3033 lines (2993 loc) · 182 KB
/
4-Subspaces-j.eps
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 136 273 451 539
%%HiResBoundingBox: 137 274 450 538.5
%APL_DSC_Encoding: UTF8
%APLProducer: (Version 12.4 (Build 21F79) Quartz PS Context)
%%Title: (Illustrations-j)
%%Creator: (PowerPoint: cgpdftops CUPS filter)
%%CreationDate: (Saturday, August 13 2022 12:39:12 JST)
%%For: (hiranabe)
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%PageOrder: Ascend
%RBINumCopies: 1
%%EndComments
% EPSF created by ps2eps 1.68
%%BeginProlog
save
countdictstack
mark
newpath
/showpage {} def
/setpagedevice {pop} def
%%EndProlog
%%Page 1 1
userdict/dscInfo 5 dict dup begin
/Title(Illustrations-j)def
/Creator(PowerPoint: cgpdftops CUPS filter)def
/CreationDate(Saturday, August 13 2022 12:39:12 JST)def
/For(hiranabe)def
/Pages 21 def
end put
%%BeginProlog
%%BeginFile: lw8_errorhandler-2.0
/currentpacking where
{ pop /oldpack currentpacking def /setpacking where
{
pop false setpacking
}if
}if
/$brkpage 64 dict def $brkpage begin
/prnt
{dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def
currentpoint/toy exch def/tox exch def 1 setgray newpath
tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto
closepath fill tox toy moveto 0 setgray show}bind def
/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def
/=={/cp 0 def typeprint nl}def
/typeprint{dup type exec}readonly def
/lmargin 72 def
/rmargin 72 def
/tprint
{dup length cp add rmargin gt{nl/cp 0 def}if
dup length cp add/cp exch def prnt}readonly def
/cvsprint{=string cvs tprint( )tprint}readonly def
/integertype{cvsprint}readonly def
/realtype{cvsprint}readonly def
/booleantype{cvsprint}readonly def
/operatortype{(--)tprint =string cvs tprint(-- )tprint}readonly def
/marktype{pop(-mark- )tprint}readonly def
/dicttype{pop(-dictionary- )tprint}readonly def
/nulltype{pop(-null- )tprint}readonly def
/filetype{pop(-filestream- )tprint}readonly def
/savetype{pop(-savelevel- )tprint}readonly def
/fonttype{pop(-fontid- )tprint}readonly def
/nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def
/stringtype
{dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse
}readonly def
/arraytype
{dup rcheck{dup xcheck
{({)tprint{typeprint}forall(})tprint}
{([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse
}readonly def
/packedarraytype
{dup rcheck{dup xcheck
{({)tprint{typeprint}forall(})tprint}
{([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse
}readonly def
/courier/Courier findfont 10 scalefont def
end %$brkpage
errordict/handleerror
{systemdict begin $error begin $brkpage begin newerror
{/newerror false store
vmstatus pop pop 0 ne{grestoreall}if initgraphics courier setfont
lmargin 720 moveto(ERROR: )prnt errorname prnt
nl(OFFENDING COMMAND: )prnt/command load prnt
$error/ostack known{
$error/ostack get type dup/arraytype eq exch /packedarraytype eq or
{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if}if
systemdict/showpage get exec(%%[ Error: )print
errorname =print(; OffendingCommand: )print/command
load =print( ]%%)= flush}if end end end}
dup 0 systemdict put dup 4 $brkpage put bind readonly put
/currentpacking where
{ pop /setpacking where
{
pop oldpack setpacking
}if
}if
%%EndFile
%%BeginFile: cg-pdf.ps
%%Copyright: Copyright 2000-2004 Apple Computer Incorporated.
%%Copyright: All Rights Reserved.
currentpacking true setpacking
/cg_md 141 dict def
cg_md begin
/L3? languagelevel 3 ge def
/bd{bind def}bind def
/ld{load def}bd
/xs{exch store}bd
/xd{exch def}bd
/cmmtx matrix def
mark
/sc/setcolor
/scs/setcolorspace
/dr/defineresource
/fr/findresource
/T/true
/F/false
/d/setdash
/w/setlinewidth
/J/setlinecap
/j/setlinejoin
/M/setmiterlimit
/i/setflat
/rc/rectclip
/rf/rectfill
/rs/rectstroke
/f/fill
/f*/eofill
/sf/selectfont
/s/show
%/as/ashow
/xS/xshow
/yS/yshow
/xyS/xyshow
/S/stroke
/m/moveto
/l/lineto
/c/curveto
/h/closepath
/n/newpath
/q/gsave
/Q/grestore
counttomark 2 idiv
%dup (number of ld's = )print == flush % *** how many
{ld}repeat pop
/SC{ % CSname
/ColorSpace fr scs
}bd
/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld
/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld
/cgmtx matrix def
/sdmtx{cgmtx currentmatrix pop}bd
/CM {cgmtx setmatrix}bd % pop the ctm: our gstate ctm on host is now identity
/cm {cmmtx astore CM concat}bd % reset the matrix and then concat
/W{clip newpath}bd
/W*{eoclip newpath}bd
statusdict begin product end dup (HP) anchorsearch{
pop pop pop % pop off the search results
true
}{
pop % previous search result
(hp) anchorsearch{
pop pop true
}{
pop false
}ifelse
}ifelse
{ % HP is the product: we use this method of stroking because of a bug in their clone printers with certain T3 fonts
{
{ % charCode Wx Wy
pop pop % charCode
(0)dup 0 4 -1 roll put
F charpath
}cshow
}
}{
{F charpath}
}ifelse
/cply exch bd
/cps {cply stroke}bd
/pgsave 0 def
/bp{/pgsave save store}bd
/ep{pgsave restore showpage}def % dont' bind
/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd
/scrdict 10 dict def
/scrmtx matrix def
/patarray 0 def
/createpat{patarray 3 1 roll put}bd
/makepat{
scrmtx astore pop
gsave
initgraphics
CM
patarray exch get
scrmtx
makepattern
grestore
setpattern
}bd
/cg_BeginEPSF{
userdict save/cg_b4_Inc_state exch put
userdict/cg_endepsf/cg_EndEPSF load put
count userdict/cg_op_count 3 -1 roll put
countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put
3 sub{end}repeat
/showpage {} def
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin
10 setmiterlimit [] 0 setdash newpath
false setstrokeadjust false setoverprint % don't use F
}bd
/cg_EndEPSF{
countdictstack 3 sub { end } repeat
cg_dict_array 3 1 index length 3 sub getinterval
{begin}forall
count userdict/cg_op_count get sub{pop}repeat
userdict/cg_b4_Inc_state get restore
F setpacking
}bd
/cg_biproc{currentfile/RunLengthDecode filter}bd
/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd
/ImageDataSource 0 def
L3?{
/cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd
/cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd
}{
/ImageBandMask 0 def
/ImageBandData 0 def
/cg_mibiproc{
string/ImageBandMask xs
string/ImageBandData xs
/ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx
/pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
}bd
/cg_miaiproc{
string/ImageBandMask xs
string/ImageBandData xs
/ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter
dup ImageBandMask/readstring cvx
/pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
}bd
}ifelse
/imsave 0 def
/BI{save/imsave xd mark}bd
/EI{imsave restore}bd
/ID{
counttomark 2 idiv
dup 2 add % leave room for imagetype and imagematrix
dict begin
{def} repeat
pop % remove mark
/ImageType 1 def
/ImageMatrix[Width 0 0 Height neg 0 Height]def
currentdict dup/ImageMask known{ImageMask}{F}ifelse exch
% currentdict on stack
L3?{
dup/MaskedImage known
{
pop
<<
/ImageType 3
/InterleaveType 2
/DataDict currentdict
/MaskDict
<< /ImageType 1
/Width Width
/Height Height
/ImageMatrix ImageMatrix
/BitsPerComponent 1
/Decode [0 1]
currentdict/Interpolate known
{/Interpolate Interpolate}if
>>
>>
}if
}if
exch
{imagemask}{image}ifelse
end % pop imagedict from dict stack
}bd
/cguidfix{statusdict begin mark version end
{cvr}stopped{cleartomark 0}{exch pop}ifelse
2012 lt{dup findfont dup length dict begin
{1 index/FID ne 2 index/UniqueID ne and
{def} {pop pop} ifelse}forall
currentdict end definefont pop
}{pop}ifelse
}bd
/t_array 0 def
/t_i 0 def
/t_c 1 string def
/x_proc{ % x y
exch t_array t_i get add exch moveto
/t_i t_i 1 add store
}bd
/y_proc{ % x y
t_array t_i get add moveto
/t_i t_i 1 add store
}bd
/xy_proc{
% x y
t_array t_i 2 copy 1 add get 3 1 roll get
4 -1 roll add 3 1 roll add moveto
/t_i t_i 2 add store
}bd
/sop 0 def % don't bind sop
/cp_proc/x_proc ld % default moveto proc is for xwidths only
/base_charpath % string array
{
/t_array xs
/t_i 0 def
{ % char
t_c 0 3 -1 roll put
currentpoint
t_c cply sop
cp_proc
}forall
/t_array 0 def
}bd
/sop/stroke ld % default sop is stroke. Done here so we don't bind in /base_charpath
% default sop is stroke
/nop{}def
/xsp/base_charpath ld
/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd
/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd
/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd
/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd
/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd
/refnt{ % newname encoding fontname
findfont dup length dict copy dup
/Encoding 4 -1 roll put
definefont pop
}bd
/renmfont{ % newname fontname
findfont dup length dict copy definefont pop
}bd
L3? dup dup{save exch}if
% languagelevel2 ONLY code goes here
/Range 0 def
/DataSource 0 def
/val 0 def
/nRange 0 def
/mulRange 0 def
/d0 0 def
/r0 0 def
/di 0 def
/ri 0 def
/a0 0 def
/a1 0 def
/r1 0 def
/r2 0 def
/dx 0 def
/Nsteps 0 def
/sh3tp 0 def
/ymax 0 def
/ymin 0 def
/xmax 0 def
/xmin 0 def
/setupFunEval % funDict -- % this calculates and sets up a function dict for evaulation.
{
begin
/nRange Range length 2 idiv store
/mulRange % precompute the range data needed to map a sample value from the table to a range value
% this data looks like [ range0mul range0min range1mul range1min ... rangeN-1mul rangeN-1min ]
[
0 1 nRange 1 sub
{ % index
2 mul/nDim2 xd % 2*dimension# we are dealing with
Range nDim2 get % ymin
Range nDim2 1 add get % ymin ymax
1 index sub % ymin (ymax-ymin)
% xmin = 0, xmax = 255 (2^bitspersample - 1)
255 div % ymin (ymax-ymin)/(xmax - xmin)
exch % (ymax-ymin)/(xmax - xmin) ymin
}for
]store
end
}bd
/FunEval % val1 fundict -> comp1 comp2 ... compN
{
begin
% the value passed in is the base index into the table
nRange mul /val xd % compute the actual index to the table
% since there are nRange entries per base index
0 1 nRange 1 sub
{
dup 2 mul/nDim2 xd % dim
val % base value to use to do our lookup
add DataSource exch get % lookedupval
mulRange nDim2 get mul % lookedupval*(ymax-ymin)/(xmax-xmin)
mulRange nDim2 1 add get % lookedupval*(ymax-ymin)/(xmax-xmin) ymin
add % interpolated result
}for % comp1 comp2 ... compN
end
}bd
/max % a b -> max(a, b)
{
2 copy lt
{exch pop}{pop}ifelse
}bd
/sh2
{ % emulation of shading type 2. Assumes shading dictionary is top dictionary on the dict stack
/Coords load aload pop % x0 y0 x1 y1
3 index 3 index translate % origin is now at beginning point of shading
% x0 y0 x1 y1
3 -1 roll sub % x0 x1 y1-y0
3 1 roll exch % y1-y0 x1 x0
sub % y1-y0 x1-x0
2 copy
dup mul exch dup mul add sqrt % length of segment between two points
dup
scale
atan % atan (dy/dx)
%dup (rotation angle = )print ==
rotate % now line between 0,0 and 1,0 is the line perpendicular to which the axial lines are drawn
/Function load setupFunEval % may need to setup function dictionary by calling setupFunEval
% this is now specific to axial shadings. Compute the maximum bounds to fill
clippath {pathbbox}stopped {0 0 0 0}if newpath % x0 y0 x1 y1
/ymax xs
/xmax xs
/ymin xs
/xmin xs
currentdict/Extend known
{
/Extend load 0 get
{
0/Function load FunEval sc % evaluate the function to get a color and set it
xmin ymin xmin abs ymax ymin sub rectfill
}if
}if
% paint the rects. The sampling frequency is that of our table
/Nsteps/Function load/Size get 0 get 1 sub store
/dx 1 Nsteps div store
gsave
/di ymax ymin sub store
/Function load
% loop Nsteps + 1 times, incrementing the index by 1 each time
0 1 Nsteps
{
1 index FunEval sc
0 ymin dx di rectfill
dx 0 translate
}for
pop % pop our function
grestore % origin is back to start point
currentdict/Extend known
{
/Extend load 1 get
{
Nsteps/Function load FunEval sc % last element
1 ymin xmax 1 sub abs ymax ymin sub rectfill
}if
}if
}bd
/shp % this paints our shape for shading type 3
{ % x1 r1 x0 r0 -
4 copy
% fill interior arc
dup 0 gt{
0 exch a1 a0 arc
}{
pop 0 moveto
}ifelse
dup 0 gt{
0 exch a0 a1 arcn
}{
pop 0 lineto
}ifelse
fill
% fill exterior arc
dup 0 gt{
0 exch a0 a1 arc
}{
pop 0 moveto
}ifelse
dup 0 gt{
0 exch a1 a0 arcn
}{
pop 0 lineto
}ifelse
fill
}bd
/calcmaxs
{ % calculate maximum distance vector from origin to corner points
% of bbox
xmin dup mul ymin dup mul add sqrt % (xmin2 + ymin2)
xmax dup mul ymin dup mul add sqrt % (xmax2 + ymin2)
xmin dup mul ymax dup mul add sqrt % (xmin2 + ymax2)
xmax dup mul ymax dup mul add sqrt % (xmax2 + ymax2)
max max max % maximum value
}bd
/sh3
{ % emulation of shading type 3. Assumes shading dictionary is top dictionary on the dict stack
/Coords load aload pop % x0 y0 r1 x1 y1 r2
5 index 5 index translate % origin is now at first circle origin
3 -1 roll 6 -1 roll sub % y0 r1 y1 r2 dx
3 -1 roll 5 -1 roll sub % r1 r2 dx dy
2 copy dup mul exch dup mul add sqrt
/dx xs % r1 r2 dx dy
2 copy 0 ne exch 0 ne or
{
% r1 r2 dx dy
exch atan rotate % we are now rotated so dy is zero and positive values of dx move us as expected
}{
pop pop
}ifelse
% r1 r2
/r2 xs
/r1 xs
/Function load
dup/Size get 0 get 1 sub % this is the size of our table minus 1
/Nsteps xs % at some point we should optimize this better so NSteps is based on needed steps for the device
setupFunEval % may need to setup function dictionary by calling setupFunEval
% determine the case:
% case 0: circle1 inside circle2
% case 1: circle 2 inside circle 1
% case 2: r1 = r2
% case 3: r1 != r2
dx r2 add r1 lt{
% circle 2 inside of circle 1
0
}{
dx r1 add r2 le
{ % circle 1 inside of circle 2
1
}{ % circles don't contain each other
r1 r2 eq
{ % equal
2
}{ % r1 != r2
3
}ifelse
}ifelse
}ifelse
/sh3tp xs % sh3tp has the number of our different cases
clippath {pathbbox}stopped {0 0 0 0}if
newpath % x0 y0 x1 y1
/ymax xs
/xmax xs
/ymin xs
/xmin xs
% Arc angle atan( sqrt((dx*dx + dy*dy) - dr*dr), dr)
dx dup mul r2 r1 sub dup mul sub dup 0 gt
{
sqrt r2 r1 sub atan
/a0 exch 180 exch sub store
/a1 a0 neg store
}{
pop
/a0 0 store
/a1 360 store
}ifelse
currentdict/Extend known
{
/Extend load 0 get r1 0 gt and % no need to extend if the radius of the first end is 0
{
0/Function load FunEval sc % evaluate the function to get a color and set it
% case 0: circle1 inside circle2
% case 1: circle 2 inside circle 1
% case 2: circles don't contain each other and r1 == r2
% case 3: circles don't contain each other and r1 != r2
{
{ % case 0
dx 0 r1 360 0 arcn
xmin ymin moveto
xmax ymin lineto
xmax ymax lineto
xmin ymax lineto
xmin ymin lineto
eofill % for the bigger radius we fill everything except our circle
}
{ % case 1
r1 0 gt{0 0 r1 0 360 arc fill}if
}
{ % case 2
% r1 == r2, extend 0
% r3 = r, x3 = -(abs(minx) + r), x1 = 0
% x(i+1) r(i+1) x(i) r(i) shp
0 r1 xmin abs r1 add neg r1 shp
}
{ % case 3
% no containment, r1 != r2
r2 r1 gt{ % the endpoint we are drawing is that with a circle of zero radius
% x(i+1) r(i+1) x(i) r(i) shp
0 r1
r1 neg r2 r1 sub div dx mul % this is point of beginning circle
0 % point of ending circle
shp % takes x(i+1) r(i+1) x(i) r(i)
}{ % the first circle is the bigger of the two
% we find a circle on our line which is outside the bbox in the
% negative direction
% x(i+1) r(i+1) x(i) r(i) shp
0 r1 calcmaxs % 0 r1 maxs
dup
% calculating xs: (-(maxs+r2)*x2)/(x2-(r1-r2))
r2 add dx mul dx r1 r2 sub sub div
neg % maxs xs'
exch 1 index % xs' maxs xs'
abs exch sub
shp
}ifelse
}
}sh3tp get exec % execute the extend at beginning proc for our shading type
}if
}if
% now do the shading
/d0 0 store
/r0 r1 store
/di dx Nsteps div store
/ri r2 r1 sub Nsteps div store
/Function load
0 1 Nsteps
{ % function t(i)
1 index FunEval sc
d0 di add r0 ri add d0 r0 shp
{
% fill interior arc
d0 0 r0 a1 a0 arc
d0 di add 0 r0 ri add a0 a1 arcn
fill
% fill exterior arc
d0 0 r0 a0 a1 arc
d0 di add 0 r0 ri add a1 a0 arcn
fill
}pop
% advance to next
/d0 d0 di add store
/r0 r0 ri add store
}for
pop % pop our function dict
% handle Extend
currentdict/Extend known
{
/Extend load 1 get r2 0 gt and % no need to extend if the radius of the last end is 0
{
Nsteps/Function load FunEval sc % last element
% case 0: circle1 inside circle2
% case 1: circle 2 inside circle 1
% case 2: circles don't contain each other and r1 == r2
% case 3: circles don't contain each other and r1 != r2
{
{
dx 0 r2 0 360 arc fill
}
{
dx 0 r2 360 0 arcn
xmin ymin moveto
xmax ymin lineto
xmax ymax lineto
xmin ymax lineto
xmin ymin lineto
eofill % for the bigger radius we fill everything except our circle
}
{ % r1 == r2, extend 1
% r3 = r, x3 = (abs(xmax) + r), x1 = dx
% x(i+1) r(i+1) x(i) r(i) shp
xmax abs r1 add r1 dx r1 shp
}
{ % no containment, r1 != r2
r2 r1 gt{
% we find a circle on our line which is outside the bbox in the
% positive direction
% x(i+1) r(i+1) x(i) r(i) shp
calcmaxs dup % maxs maxs
% calculating xs: ((maxs+r1)*x2)/(x2-(r2-r1))
r1 add dx mul dx r2 r1 sub sub div % maxs xs
exch 1 index % xs maxs xs
exch sub
dx r2
shp
}{ % the endpoint we are drawing is that with a circle of zero radius
% x(i+1) r(i+1) x(i) r(i) shp
r1 neg r2 r1 sub div dx mul % this is point of ending circle
0 % radius of ending circle
dx % point of starting circle
r2 % radius of starting circle
shp
}ifelse
}
}
sh3tp get exec % execute the extend at end proc for our shading type
}if
}if
}bd
/sh % emulation of shfill operator for type 2 and type 3 shadings based on type 0 functions
{ % shadingDict --
begin
/ShadingType load dup dup 2 eq exch 3 eq or
{ % shadingtype
gsave
newpath
/ColorSpace load scs
currentdict/BBox known
{
/BBox load aload pop % llx lly urx ury
2 index sub % llx lly urx ury-lly
3 index % llx lly urx ury-lly llx
3 -1 roll exch sub
exch rectclip
}if
2 eq
{sh2}{sh3}ifelse
grestore
}{
% shadingtype
pop
(DEBUG: shading type unimplemented\n)print flush
}ifelse
end
}bd
% end of language level 2 ONLY code
{restore}if not dup{save exch}if
% languagelevel3 ONLY code goes here
L3?{ % we do these loads conditionally or else they will fail on a level 2 printer
/sh/shfill ld
/csq/clipsave ld
/csQ/cliprestore ld
}if
{restore}if
%currentdict dup maxlength exch length sub (number of extra slots in md = )print == flush % *** how many entries are free
end
setpacking
% count 0 ne { pstack(***extras on stack during prolog execution***\n)print flush}if % *** BARK if anything is left on stack
%%EndFile
%%EndProlog
%%BeginSetup
% Disable CTRL-D as an end-of-file marker...
userdict dup(\004)cvn{}put (\004\004)cvn{}put
[{
%%BeginFeature: *OKMultiOutputMode False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *Collate True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKAboutDriver Name
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKAlwaysKToner True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKBlackFinish Gloss
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKColorBrightness 0
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKColorContrast 0
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKColorRenderStyle Auto
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKControl Auto
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKDrumCleaning False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKDuplex None
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKHardCollate True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKLongEdgeFeed True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKMPTPaperSizeCheck True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKMediaType PrinterDefault
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKOptionTray 0
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKOutputToFile False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKPaperSizeCheck True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKPaperSource Auto
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKPhotoMode False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKResolution 600x600dpi
<< /HWResolution [600 600] >> setpagedevice
<< /cupsColorOrder 0/cupsColorSpace 1/cupsBitsPerColor 8 >> setpagedevice
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKTraySwitch True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *PageSize A4
<</PageSize[595 842]/ImagingBBox null>>setpagedevice
%%EndFeature
} stopped cleartomark
userdict/ESPrc/rectclip where{pop/rectclip load}
{{newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
neg 0 rlineto closepath clip newpath}bind}ifelse put
userdict/ESPrf/rectfill where{pop/rectfill load}
{{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
neg 0 rlineto closepath fill grestore}bind}ifelse put
userdict/ESPrs/rectstroke where{pop/rectstroke load}
{{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
neg 0 rlineto closepath stroke grestore}bind}ifelse put
userdict/ESPwl{}bind put
%%EndSetup
%%Page: 6 1
%%PageBoundingBox: 0 0 595 842
%%BeginPageSetup
%%EndPageSetup
cg_md begin
bp
sdmtx
%RBIBeginFontSubset: YNFLUN+CambriaMath
%!FontType1-1.0: YNFLUN+CambriaMath 1.0000.6.9000
14 dict begin
/FontName /YNFLUN+CambriaMath def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid2 put
dup 34 /gid7 put
dup 35 /gid17 put
dup 36 /gid18 put
dup 37 /gid28 put
dup 38 /gid1 put
dup 39 /gid16 put
dup 40 /gid15 put
dup 41 /gid27 put
dup 42 /gid14 put
dup 43 /gid5 put
dup 44 /gid29 put
dup 45 /gid30 put
dup 46 /gid6 put
dup 47 /gid3 put
dup 48 /gid26 put
dup 49 /gid4 put
dup 50 /gid21 put
dup 51 /gid22 put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -3020 1 index div -5046 2 index div 5873 3 index div 6383 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C000000046670676D00000000000000A000000004676C796600000000000000A4000009A4686561640000000000000A4800000036686865610000000000000A8000000024686D74780000000000000AA4000000506C6F63610000000000000AF40000002A6D6178700000000000000B2000000020707265700000000000000B40000000040000000000000000000400BE0000048605540028002C0030003400000135343E02373E0335342623220E020723353E0133321E0215140E02070E031D01171523350111211101112111023706162A2417261B0F413E2030241909603C894346633E1C0F243C2C20261507129001FCFD060361FC3801E71616252A3527192F3339234B521424321E821E2E1D334629263E3D462D212C27281C066EA1A1FEE4049AFB6604F7FAAC055400020081FFF003ED0565000D001C00000522021134123E013332121110020110123332121134022623220E02022CD8D34175A461DBD6E5FE3C797F79753C6B4C455D3918100154015AB8010CAF54FEAEFEAAFE9EFE9502CCFEBAFECF011F012DE6011D7C529ADD0000040079000005F505550030004F0053005E00001321321E01151405151E011F011E031715212E0127032E032B0111141E02171521353E023511342E0227012411342627071E0115140607151E021F011E011733352E012F012E012701331123051133323E01353426232279029ECCE873FEF53352384A1A282C2E1FFE1A0E1E1D93162F1F2326120B16272DFD903E2A0D0A17262E03200131ACA905584E75821826201E7615280EC714300F5F2F6049FDC4A8A80117515664286B6B45055553A37AF9750A1B6266882F4236200A31133337011C2958210EFEB4484121160C31311027484A0361453F23150DFD695301057D98170A369A6891A6270C10293339E12A48150A144B1DB559661AFDEC04A510FDBD4A815F8F8C0001009100000469049A001F00000115211E0333211521222E0435343E0233211521220E03070469FCC6052C598D7C01A7FE556290746740203E92CCA2019AFE65637B5243260502988B5D9065308B18366D84A6619ECFA1468B16315A8353000001007C000004D204FB0007000033352111331121157C01E48E01E4850476FB8A8500010076FFF004500565001E00000111232E0123220211101233323E013733110E0123222402353412243332160450881868549EA2948F495C3714896EB662D0FEF97D93011EC765A40536FEDE716BFED1FED6FEEBFEE3316259FED11A1896012FE8D90141AE16000001006C0000052B0555002F000001150E0315112301262723161511141E01171521353E023511342E01273521011E011733261135342E022735052B2821170CFEFE3E5B2B090A0F2736FE8635270F0D2935
01950162216A29100B0A16212A0555420D121E3D3FFBA6030A9E5AD7EFFEBE4B3C230E42420E253A4B03614B39260E42FD993AC658EF011BBA42391E130D42000002FFF3000004A10565001D0024000021373E0135342F0121070E011514170721373E02370133131E0217070121032E01352302F60B3B3A0307FE48372724650BFE670B1F373E3802819748051A2D2B0BFD4B01871103040B31055267272E816245632654103131042953600454FBA54F592B0631021C014242C62C00010018FFF0069D03CD00510000013E013332161D0114073E01333216151407030615141633323637170E0123222635343F013E0135342623220E02070323133E0135342623220E02070323133635342623220607273E0133321615140701B85CB65D60640156AB5C5C641D411B1A1C1E443E39568052414E212C180F2E342A606A43145BAD73150F333626616E3E155FAD92161A1C1F453C39587F4C3F491702BE89856D670E07087A776A603F74FEFA6D2D28243145385B565D48417EAD5E5A1C453D3F85815DFE4B01FC5D5920483D3F8B805CFE4F027A603428243343385C555343373E00010018FFF0047F03CD003A0000013635342623220607273E01333216151407173E01333216151407030615141633323637170E0123222635343F013E0135342623220E020703230111161A1C1F453C395C7A4D3F49180C62B15E5D641D411B1A1C1E443E39568052414E212C180F2E342A616D42155FAD027A60342824334338605153433541048A856B5F3F74FEFA6D2D28243145385C555D48417EAD5E5A1C453D43877F5DFE4F0000010017000003AA03CD00250000013E0133321707232E0223220E02070323133E0135342623220607273E0133321615140701BC62B55D4931306706161E1724556A3F155FAD910E081A1C1F453C395C7C4B3F491302CB857C0BE02A2E123E847A5EFE4F027A3C421628243343386051534332350001001EFFF0042403CD004C0000012E0423220E0107273E0133321E0417333E0333321707232623220E030F011E0533323637170E0123222E01272627230E0323222737331633323E0201DD0F202216191315222821413F744F1F2F241C1A17090A6063443F342F1E2846061D09141D384625441220191316170F1B33304146714E2B3C2C111F070A6A67433F342F1E2846061D0E1F3A6601C44F927E270F132F322B5F5E0E1D2E4F753F877D3D190CB52A06143A542E55608C5D361B0B2A4A2B68551F4448804495823E190CB52A0F397A00010007FE4C045C03CC00360000052627022726272623220607273E013332171E0317161217361236353426273721170607060706070607062322262737331433323601E91D32351115170E152038294145784A291D14281F170E182D1061873B28300A01071B4C8280A59E6949
44363D15370F2B4F2C3A9A02AFF701083F4C150D34402B67550B082542524D81FEE37A8C010CC63E2F22033132D0EDE8E6DB62431D160706C240910000010087FFF004E70565002200000103232E022322060A0115141E013332363733030E0123222635343736123E01333204E74083031E403754A48B551F4D44688937834061C06ED5E4121D86CBFD93AB0534FEDC595A2D84FEF5FE9492546E3C687FFED91C19E9DB536CAB0122C5600000010037000005DB0555002F000001211316173336371336353426273721070E01070323032E012F01060B010E01151416170721373E0137133635342627014A017CC14F2E0D1D2F460D272C0E01700E393618F1E4F01C2C1F0F1242480706272C0EFE900E393618B60D272C0555FDCAE7B1ADD201413C392A2706424210506CFBB902BB528F6E0190FED9FEBA202F262A2706424210506C03393B3A2A27060000010095FFC7056504CC000B000001112311213521113311211503448EFDDF02218E02210207FDC00240850240FDC0850001009502070565028C00030000133521159504D00207858500000300950137058F035B00030007000800001335211501352115139504D0FB3004D02A02D68585FE618585011200000100B4FE3C032C05A5000D000001101217072400111000251706020161E1E718FEDBFEC8013901241BEAE101FAFEA2FE3A4D4D4D01FD016A016901FF4D4D4DFE4100010026FE3C029E05A5000D0000011002273704001110000527361201F1E0EB1B01240139FEC8FEDB18E7E101FA015201BF4D4D4DFE01FE97FE96FE034D4D4D01C6000100000006E66638EF545C5F0F3CF5001B080000000000B9E6983D00000000D18D01E4F434EC4A16F118EF00000009000200000000000000010000079AFE390000175AF434FDA416F1000100000000000000000000000000000014054400BE046E008105F5007904FC0091054E007C04B40076058D006C0511FFF306B500180497001803CE00170442001E047A0007050500870614003705FA009505FA009505FA0095035200B403520026000000500084011001400151018501CE020C027F02D4030E037703CC04040454046C0479049004B104D20000000100000014005F00040000000000020010002F0086000009A411280000000000000000
00>] def
/CharStrings 20 dict dup begin
/.notdef 0 def
/gid1 1 def
/gid2 2 def
/gid3 3 def
/gid4 4 def
/gid5 5 def
/gid6 6 def
/gid7 7 def
/gid14 8 def
/gid15 9 def
/gid16 10 def
/gid17 11 def
/gid18 12 def
/gid21 13 def
/gid22 14 def
/gid26 15 def
/gid27 16 def
/gid28 17 def
/gid29 18 def
/gid30 19 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] readonly def
/FontBBox {-3020 -5046 5873 6383} readonly def
/UniqueID 4480348 def
currentdict end
currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA55675454E59AEC12A68086DDD95476477C46AE143377694529C58844212FC811560E27EEE2CF00BCB281E2150EE8A95E8E056CF63C096EC954E9AB4D39A5004249114C46FAE277AB81A3D6A4AED40F170AFC7E8DFB9E059B8F6C53C0033EDB8B5B02775EBCD71DC0A1D4811462ED12BB0D3CA8B3855B6BA68D0DF2809A5EAFDE97610C3BECBBA1DDCC5F3493A9C153B0CEF50BB543F9F0F1793C6E8E1D53953BD4A43CCFF02BCC92661B9386101B96534C0F5AAB457D8AD94F472A22EF8F39D45FCA5ADB5FC440387795AE6CD1E420C80EB8202F449921DA0A40FC14208F804E153C40195419E378187279956442B47F490E28EA1882729AB4D52869695D269AADD1F203D8A3601DE2BDC35729682FA6C73664029FF98409E52DD0088ADFD439875E98E24A041C9286A981DE36C91877AD7B3752D45A99C541C1B18B2BF2AC244589CD537FC45AD4167E335559B5108D192269D4012F7205E29E555F8B607BBAF82A85A9BA9088F0D2A21DF433DB1D12BD73961940795D674E4F97E56BD10A3190D4016B30444D2966F09A568DF31BFD57FD2E0038FA7FCA21B65A1998B57E0E3711CAFB002A7C0622E6848493D70F603F5B570C37318B2F56E7DB0AA6860E931DB576A6EF753B2D609A035C392856705CBE0B8EB56765BD6AA72A7C4763011074D57E80DFEAB778F3EDAAF208F7AC0256E5BBD5D92EB95AEE495BF5C541BECB89BFD00D72C157CE4D5766A090093B2DF50C9FA647041DD4D94B98FF790236AF2C8541E725CA5DF9485B79DFE00D7A8C736FD78D75DAAA989AD7ACCD3403173BCA62322CF6273293AB7D8EB2D9
591929568033CA7651ED821283140C019F5286195DB4D51E12B5F844A982017A6C35FB51A8F289C6BC85962C8029BCA9E3F3513E3F8A7D8B93879464671B7DB4D87305A32EA39C6EEE56529754A84B615C5F6A238062295FC3B2AB4012AB6077B2CA2477230EDB35523919B28F16727E8329300F7A9C038BB81585EEF22CAA0C4398A064580F7D7D1A288401316E59D8A0E4E5BB2A401BC66AE9C67AE29B49B1ED65D336BCDE3ABC34196D4A63D916767E3FA7D557B5AD54C0D3EC7637CFD8C8E5E5F6584B9957AA17A99C5EBC023822D3B0EB6960667EC254423515396C66B5B29E7406D5B241B714B2BE5273C431CD043CBDE071CA979943C0E0F10329D848D7077A1877FB7C4CCD8BDCAD010C191269C626E6DBB06F112D7A4300FE059AE422F341ACA18F02DCC5CB2D860BA63D47F234F80A9D8E80C50DFB499266E6226E470D8BF9B489DC50555FB9798B687A65CE9C87EE28914F0581A11D08DF30FCBF9EA5F72732FC560C03DBFF5F8690D69732135BCC6808119502CF71E5D3176208FFE9A638A58E2DDB6C09ECA72EA9C49DAA617F2A665F37D763DDFE4684A94042C6A19D62A28DE555D0F7CC7D3ACE8BB01931944DE2E92D3997BF78EE20AA21C886FD154662799C81AFB9770224A3A1705179132E1E7BBB6F6B2958210635C2638A6536CE39E5AF34FCEB05FEF6EB30A7442FB7ED2B04E593209A2A9E292D38817761B857239F9DC18A93DECC18368036EA8409FEC158983563528E324B0ECA1CC2828CA3981E309E5FE2111EC64B11907623BC8503CD0BB825DD802C4613E233B5AE78C331CBA0F0050E82AFCC77E7B6214CAD194734E95065D42954B32ABC4C4F157318D8E2299534489EA5E2567FE051B2F9046DC55279ABD6BD67A697DAB6A773FE6EFAD700B64A088C144398E0957878A76D690CBE0D8A9043C909A68FCEFF9FE15FFC288ACE8C236E0025850A3675AE37D6E69D788C4553B4EB0FF81C5A066F0ED442530CEB8390B2BF594CED8FF83A08A113268CA436A76DA607F3652F0FEFB406AEC3447E10A7A473A7FB00753820229CD6321E1A996EC483FE23D0D125ADD72BBF3FFC5D64E65DB703B76909BACC3B317FE4D1C98C8420BA1EE27BCA99389ED03D5137F5B25632BC1BF86F5212272AD81D080CF295A65DD88B495D37DF5CB08669B66905AEB78C02B5CFDA04E20B45B30D55D161676CDC238446B5EF6641B0FA0A0224D90F8D2A232D444D0684513A67B560CA9967BC81FE8209319678FAAF9143F3ACD6D7D75D33EA5C7B916F56983F42B33E493794BF7A259B9E43AF323B74B03042A782507797B13709747104EC267A975530823B8DD73EAD98C4E8ABEBD2F8964FDC6BB64748C3AB7917C7D0473F4B04143CFC29089E4D8D3B8CD079C7F04BC2B75577AF4229D76824629517C58BD0B8B10D2C0AA784171E6352
6F2AA5016D417721BE928A3E582DB60F51D4A550F77BBAA86F2A5A6F99B1792B6B920291169F0A4AB99A70BD49BD9B27B73919D530958CB2135B2E27A23405344A1C36D381B9F49DC81735BB202B5325ADA7FCFA72A941451E5270B35160B6A38DB2873026EA70D660595E726DEA419BB2CC851A31453DB44A5976DCBE756F36AD71BDAAE198E122D25B899049B9D200023572FA34B50E30763AF68A8EDA62355844DD217FFBD716AF0CE28888AE9B7B6B13C56BEA71B90A6FE0698D1310467E29345FC3FF0AC1D30C0075BD614F10C95629CF769D2A13B998F06B19D22290E3C72E4CD4A1CBD058C5AAF6452436EF3401496AA39E83E49A06AFE787CCAEEFFB9A0E08CD71DFFE66E9D64A97B5CC8C9FC6313FB1AF40F5A39CC03FD13E6A7C8A5651AB9CBE968AE1AD1F344738B0454D59FC4774D35AA44AA040B729C47DC28B1B82DAE9F24D8E1AA0531017BF74B90BC76EE2F33B899B49265CE04E9625BB81BB686871A78AFF1C605493819B571DAEFF43638B0E98A138AC28A11DD8E55FEDD430EEBF222622B4CC4FCBA4594875412C9E5EF4C86CE57F1CA8DB51C2D0CCA2EF9A78FDCE8DCEE9F4E38B088262732D8C6BF80D9AC086327CE2C7E07F9BF8191AE0021CB06C38C801741011A162A08F034D51546BACFAC303C68D4865D5C107467CF5CDBC2E42C60491344E5C331F1C5749A8EDF73CABCB1A319E18DC0D0AFF6D5A418E367E8E652A141DF499FFE460C0790F0B445B702181AE3FC228EC9AD2D9DBB9E8CFFAFBF308CB891DCF723CED1F516C3D5C68B02BC08DA0B75E02755A8FFFEF4AAFB84E7904AB8852264908511FA280C6F024AA3C021843B488AD483C30AFDA928529C9B5790A140AC92C02E2BE4F7CB58CA848E51EA61FF3FDF8DEDA83C596E69B8BA650B126F0857825EBD8B528DC4FAE6869A57E8636EF25C87017B5B32AA0DFAC746FB758990A6EE4A6F983F0E1EFBB609A8E3C05282CC22091A9EDBD23A9186D2D5F69D52C3C75B49F4EEA41EA058A0F079F9FA73F3C38B9C65E33C05777E50A89C238A83C403EB7165BDC2BE3CAF2C450A7893FFA5F36A5B1EDC6BB8578F293A7166614464AB2DD967FC4E9BD9CBDB2224FE9B64DC657BB4D7B5F5458C7C45DAEAABA1B469A0AE84127E36E6E2BD001A32F5060E009CF67F0553F889D7DFAE0093E74C6D0B8CAF290331FD34E0F3CCCD59FB1DE98EF10B6CA6402CB1D2B7EB9F49980D3A6CE648797A030C6FE8D904A83B2861DBE96DBFCEEE68F5AC13D6FC997B950EA6BB319DE27FE96A0F1976D1697EC22F016EF15AB58CD171916BEF2959F2B0468888862C6D0F9805D2246F6E883C7C7D5ABF9850EEF4F020553CCF64E4E263F3B63C33690B03B59AB9ED968B896839CA1793F8C90D4A64D643147E1E28A8BA745133D33055ACCC120AA9431672CEBA42686FBCB36FD64
8CB0BB908C2203C90909577A60D15EA6C4AD39B414997E90381014145DF453B6FE20B24613FD3A54C5ACFC81B8ED4C98A37BFDFE56B87D5AD4F2ADAA00E18FDB54962CF9CB3933FB4DE42B569F55EBD59D1446A68C4F9BF38E28F660DBCA26E09A584C7884DD2171F4BD94F65AA38B414A2511267B4B49ED58ACB82146EE801C9DC7511B040BBA560936C0287ABBCBCE65104F290DBF8DD4B410FE913F9F36B5693973A9B74CCD6519A3081BC297EE00D2D1A2EA2837697C401D649B20AC19EB659C9755A60CF2FB308156C7C0A3EA061C01F0435596F60FAAB96D170F83857D02C0C36DF0AB2DB6F0D5C6365D02327AFC389505076494F596453664B1007BE4968F07E40C2DB2CC881173F9645D60A43CFEAA53DBF5C93E96A91C885F7E1DF87DFE29BDD0483CA4881A626B7BE234331595EC67B0691C573037D58344311EFB0422586FC6812606CC077D8949152A1C406728CA7034E52BA584012CA357A5C68CEDC4107F3F75FC59A5CC220592A08B65FF52C3E73C5565B8E47216D029B204621C21AB76E84F2511183993E9B53EB63804921DCE100220348BEE26B9A3A8A8026F859C3D2ACB38147E3BB12F0B7E4002FB695A366B92192DF8369E05C0EFC3ACA6377CE53A2DA2EB1405032ABF45660F380DE8B6F119E5102D59BF5F27524C120AEF853DA45C7DC645A70756C7BBB6C82C2189A1AEA702B8A2CD2EA84C311E0731EA73798109115DFA45C4B5BF81CFBDC512AAB659A687548E2AAB2A43C6013EEC680F6AD1B58491B9142E5A8262DBCCA8A393E50B7B4803DB0A1571C34D8972B6F35C1EC8D0F9D05B1EF3F44BB8A20EAD64BEC3393638B885A3DEAA3972BCABC3FD7C4BEAB55FD1075E612BE9A97693CA7A33CCC5F5A556C0017A845C682DD7543242580494FB77A9D7C6766EB3A9D21BBBDD6C0726C029BC6F8C79CAB18A39BAC4DE4D62A1CCEE30191AC156C1CB73EC3AA890E79FFD9D895993BFF205C4BA607F2D902DF9851A0429A48C6ABD74991D1153CD13CF15E8A332007F064F1D2A4ED047FC4F914C79790B51E37EA344408BA981BB2D4820998D4D306A1FF13E5DEBB5179B58FBFD0DB46AAC3DDADEDA9054D1C4A8514C3C0B0C6FD37D2AD3DE892DD6A9ECC2CF1879EA992BCE0CA93E543D07B80DA9C64F95A464807B63628FD51E03F2BC075ED65D368B38C69CF16A13E1483C7A22D4C78F2870A568499C309A81335231055815ED4D59E2ED34DC86436FC9325CC73E7B30BC5612860C369DC6ADD4DDC2C0BA45BB8245C55A754426D509AB9507F1A2CFB2B713F701C368F183FB29C24E8EC70FE8BB70F7416402EC8AE09A411D4C43574C3BA4CB15CFA3257CA3002B2C46DED1A3ABE5420F0DCDACB8D5265F339ECBAE161702D9FD7C4A2796F22279396541873050C4F6816EF97E7DE1F32547CE771451F384728563668A
E581DC42BDC1663F3D694C5E5F553FE6511F4CF8EF2C66C5BBFD8549335908FCDA002C32D6FF149302D5C272F1638778C782D036668A9DC9C55FAE7E9FA2B3DC8A267F5CD1BEC86AA1D28C0ED766A3D7445A2355F6E052FC7E5D3E0EE6CB67D0557FFFA471339AE672A23BD07AF6A5F79F2BB1E65369147C43D68C78E92AB84D001752539D7EF15916FB7505C827917914CB95BC31C046FF358CEE3EC443DB8E881BB24957148C188363489E72F5F26E9A8CF0AE9D8818A4F09D1CA7C4DDA57DD5AB823B069AA2991674508D1ADC6B337816CC0497A26CF23FC7335504AE5B6BED0074DD20D0C75D1FFD27C071FFED90C6B0C1C522BD390A4B65C4D26E997D08056B10F2B6AC2B974817BFF87C1535221CC9A156DDFD90C0C2C5DCC4E9C564A446F6F3973BEE39A09CF0078EB23293ACF12A84FA8947D123EA043C7A2287A6E7165E5C7BEE726EE3B702738D656156E651DDF874B7F54F102953E5AB00189D7923A4A0AC3702DB4FBBA26EA9DC402B3EB9901042FAE5C28B60A66652AA3EA578EA8C3D7CA2B585BB009EE71911549040921E5AD140A2757AE2DEDAEF34716EA24E3546B25D47CCC9B0FA95202BD7E140433640DADF0D79615CE4567E897D8A7D55B3445E5884CD10F63C592863164A3328B76C5B16F510F7DE3E1E5ECB751AF2A629667BF628D4F6BD95307AB8D589EE09FBAA72EEA1276902FD8B0812B37DED9EC68CDD15DBE41426FB5BFCE530776CC6D3A90F55F86C8B60B254370BECDE8B2B82FB867A93F5D69483648F0DB2F2378F20BC1BBBBA805152B70D9C33D0AC7F9BEAF6E592127F729950165BA57464D01721807D886091450CF40754274867C359A8E0D96B280EA1594FEB0B136AA27437A6DCB16447CA6098F4777EDA82FED5A295F01569C6DA13DDC493EC51F448FB6D52980EF6E67FF2B20DE80D936AE3A60840AAA3920EC535CBB730BFBE072FD01B0574283B7D8AD7D8EB2E58DD781FD62EE935247170F5CF169973A0DD71BC02CF1350FC1FB68EDF525B4E999FD43FB984EF1483900B052807EA334567D9A582147D97DF7E5C1FA2E7C3FEBA1D44A70F891586DBACFD1857C505931985CB714E58B4388437C5F08C634EF5A3F5B5BD7B927FEDDB2DD9A73572CDE7C414F059EEBF3F0B3D235635F4481879FBE139219B67
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%APLT1End
%RBIEndFontSubset
/YNFLUN+CambriaMath cguidfix
/F1.1/YNFLUN+CambriaMath renmfont
%RBIBeginFontSubset: HJFNSQ+CambriaMath
%!FontType1-1.0: HJFNSQ+CambriaMath 1.0000.6.9000
14 dict begin
/FontName /HJFNSQ+CambriaMath def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid79 put
dup 34 /gid78 put
dup 35 /gid77 put
dup 36 /gid81 put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -3020 1 index div -5046 2 index div 5873 3 index div 6383 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C000000046670676D00000000000000A000000004676C796600000000000000A40000032E6865616400000000000003D40000003668686561000000000000040C00000024686D74780000000000000430000000146C6F636100000000000004440000000C6D617870000000000000045000000020707265700000000000000470000000040000000000000000000400BE0000048605540028002C0030003400000135343E02373E0335342623220E020723353E0133321E0215140E02070E031D01171523350111211101112111023706162A2417261B0F413E2030241909603C894346633E1C0F243C2C20261507129001FCFD060361FC3801E71616252A3527192F3339234B521424321E821E2E1D334629263E3D462D212C27281C066EA1A1FEE4049AFB6604F7FAAC055400010047000004EB055500220000132111232E032723111E03171521353E03351123220E02070E0107234704A47115273448368801081D3A34FE0227372411871D2B221C0D192C14730555FE8F4E63391602FC1B32412A190B4040071025473E03E5050C130D185F5A0000010029FFEE075703FD0068000021233E0535342623220E02070323133E01353423220E0207273E0333321615140607173E01333216151C0107333E0133321615140E02070E0315141633323E0237170E0323222E023534373E0335342623220E040703BBC30E2324211A103136306E634E1066C4960D0C3B122529301E4531534D4A284A5106080C5FBE646A6902045DB8646A69141D220F090B06021C1F122429311E4530534D4C2A263E2B1823131F160D2F321F4647443A2D0C409396927F651E3F3B4875934BFE24028C36501A490F1E2E1F4132492F17614F162A140585846D6A0911097F7B72671F697E873C273121180E26220E1E2F214232482F171C31432852814177654F1A3E3A20394E5B64330000010029FFEE050D03FD004B0000013E0133321615140E0415141633323E0237170E0323222E02353436373E0335342623220E04070323133E01353423220E0207273E0333321615140607020561BD656A69121C201C121C1F132528301E4531524D4C2B243D2C181111121F170D2F341E454643382B0A70C4960D0C3B122529301E4532534B4A294A51070902F4858472671F6E828974520A26220E1E2F214232482F171C314328286B404177654F1A3E3A1F374B555D2EFE0A028C34521A490F1E2E1F4133492F16614F142C14000100B4001E0503046D000B0000090107090127090137090117034201C164FE40FE325D01C9FE396401C501C55E0248FE3A6401C9FE3B5E01C801C164FE3C01C45D0000000100000006E66638EF545C5F0F3CF5001B080000000000B9E6983D00000000D18D01E4F434EC4A16F118EF
00000009000200000000000000010000079AFE390000175AF434FDA416F1000100000000000000000000000000000005054400BE05320047077B00290532002905B700B4000000500085010F01760197000100000005006900040000000000020010002F0086000009A411280000000000000000
00>] def
/CharStrings 5 dict dup begin
/.notdef 0 def
/gid77 1 def
/gid78 2 def
/gid79 3 def
/gid81 4 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] readonly def
/FontBBox {-3020 -5046 5873 6383} readonly def
/UniqueID 4480348 def
currentdict end
currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA55675454E59AEC12A68086DDD95476477C46AE143377694529C58844212FC811560E27EEE2CF00BCB286FAF7263B5B68DE54D4A7E5E5AE8FB225BCAC76913AC93E95998B5B364FFA8043716AF73C2CF345A3A7991E41B970288ADFA59B6933CD2E08646CE8521520E9BFDE3E63DECC5469BE153BD1399610C6E5F857CC135979D5516C8105695A49182D3263013CFE3E713C22E3B664F813F4D611D75D63909BFF2E9E5CD203592AC19CF224B9FD2E0298DD5872D5BF40F88BE9547A26ADBCEEBCDBF705D5A75A78682065B4FEC90A25DBB88B89F98A74FC15EBD10DFCFBC881CD584169C755271B9B5379F8B1E52CE96C8F7FACD3E16151C634D2F12FAB68D60E65B6134E53E4CF4E7F0CB2D161828B235D361BBE9F0FAF39830FB0C03EFE37ACF8B3B2B0AD67D2775D0FC72FA23C9C08F4E11B1018FA729C79F0DA5A459ED874E9390ABFAB5FB977A503E346A5B9B4C74841C8ADC1A22CCDB778FEA23A2CAA762C42C9BA56FE2644F1D33FC41A698E4102C0154FD54866C20542C5D33C0152885653BB42B4EDEE985E8ED1B095D2CA20922EDDD936641A2AD3887E99224F6431E4786E7B1262DC70922BA3484E1DE1C5CDD16EF58DC06F5A1E7440BD9AC4AD306CD629915B9BB173001C855DF3C80025B9BCB54951FDEC088367ADFEEF04F5DCB930844FD75506C6678C403A8398CD8765DE2CEA9545540978B7261C3400AB31480D4006A9DEEBEC728252741F9B10DCE38572AB104BA8B8654A5976E29177CA46E7EA9FEF9C3FBE6099B3D6482E047F8846F7CD7073905D375838F07FAA5D5A4265A49CCA172F69C3C8AC97
FCF0131352578B2B54370D5EBDFB31790562B69D10E22AF34A92982222575C78F36086BFA66FB1047430160057D174D08A54F3CAA48B3AD7736F35A69814FE0F31E939E80565B0880826E4A292784EE4289C9604004F3C78C7F103BFF4EB9774018A46D15E6C005CD39756E46D29229D9ABCD95A291EBCCE9271C29609BEA37F64EF3479531911ECFC9E54D2E5BB9AFBD4ECE5B18A1AB7126BC0A52D088EF86CD8AD1FDF1D2126BEC1573AC277F9747974316ABFB184C8A40C0E3FE27768399AB21C93B3276862816B81A16A672DE899D857EECC8D753D42AFE1ED0DB9FFEAD1D88A29AC8486709A270000CBAEF89BCC7FB24D24BF640796E9456F4A84022345490292C2D4225195768D934573D582E663B54310B5CD88111461FF41B3EAA45437B2C1B150FA0D13D909A96ECB1400649DE4EE0C5C8441A1F47296BF5FD5A8A255DC5606BBDF3FA8D698216EA4077A5914B40208384F9DFABBD695C25F811FE86F6032CE35EF134FF23491DBCE2B7A458C2E5258F4E28844A8AA2669D86CEA28723DB1B0504EE1A353AB63AA8321667A029070E8FF5AC75A20FFD2A66AA8AB1F956D1BF7CA65DB6D16987FE68C958B71F4E00F2FCDF2ED6F1C0EBE78E8541769ADB53DF27297EC16E35200E23F3DB9A26CF533B053BB3570A7113CC49B67C5645B97D487A39E529949732D4F1CDBD0118072726D5B37D3EEE7077158F880E8943E1EAE263FF075C05B45E7579EB77C7AF3616B5586B8D0F9D51BF756F76D94AEF2A42F1FDB9997029B9149EDED92EB24007D53120ECBA5A2F605075FA69698005E53949867E985809A024851BD701377954F0ED367591B03F3ABB166BFCDE521FBCAD712E5CF60A31CD2F843D70E041F17168CF64FF66C882CD9C31DC5D9E198CE961D8AF3A85F8EB5587429C1D0F90C2C393B60E61CA21D8F586536DFD40953D23D385B74120103FE78B0AE32F92AA26462CC6F59B82FA14663770399D92EDAFDCD9B46D9F53C8B181B0A96CD988F41BB70A3BF6671E86736D7B30926D7A8BF07E125F2B58237964BA2784FBF4A550698B2C970F78A118797F5FA8EB8A42A3D5EEA19FE6945BA14461B21D42D6E2F1600222B4C3AA1E4C5026AA4D732DC237AD420B48664132709B26383F49279ABBDD7CC25C96B502160ADB60810E36636885B761F3BAE8EEE7A384185D4B3BB2FF3D2E1E200FB325D9C18253C3449D59854535E416B3B5855BCE2A475A5AA6D4B6ED669FF2B3D057BB94FD36C3815C847B98E75FBED1D44CCBAC6AA2CE0164598829140C3F01C02856D55E0132FBC47A12848096AB904D4CC7A8BB5963AE77E4B66525369D0488E838AC2088FC790B9E10CA6385BBBA900C7902A3A2F2CDDA3D038C7778D82628F09312F5CDD1BD53DC46409576106746F2CF14D834D0D8B684BCBC3490F5B44ACF243E282DC1AE24B2740
3201ACE61B7E52434CD91E67D360072E3FA1ED1B268A7FEB34EFA661E4EC483511979F128AD3E6FF7C704A8EC89D387E64A89C47207F392C50027949A3512B980168A565400E797842BF9EAE169B9BFEBAFCE3FE8EBA0F1FE0B8B2C83B590300B5500BD44256A0B82C3B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%APLT1End
%RBIEndFontSubset
/HJFNSQ+CambriaMath cguidfix
/F2.1/HJFNSQ+CambriaMath renmfont
%RBIBeginFontSubset: QVCCHF+MS-Mincho
%!FontType1-1.0: QVCCHF+MS-Mincho 1.0000.5.3000
14 dict begin
/FontName /QVCCHF+MS-Mincho def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid10 put
dup 34 /gid16 put